493 |
EIP = PARAM1; |
EIP = PARAM1; |
494 |
} |
} |
495 |
|
|
496 |
|
void OPPROTO op_hlt(void) |
497 |
|
{ |
498 |
|
env->exception_index = EXCP_HLT; |
499 |
|
cpu_loop_exit(); |
500 |
|
} |
501 |
|
|
502 |
void OPPROTO op_raise_interrupt(void) |
void OPPROTO op_raise_interrupt(void) |
503 |
{ |
{ |
504 |
int intno; |
int intno; |
960 |
jmp_seg(T0 & 0xffff, T1); |
jmp_seg(T0 & 0xffff, T1); |
961 |
} |
} |
962 |
|
|
963 |
|
void OPPROTO op_iret_protected(void) |
964 |
|
{ |
965 |
|
helper_iret_protected(PARAM1); |
966 |
|
} |
967 |
|
|
968 |
void OPPROTO op_lldt_T0(void) |
void OPPROTO op_lldt_T0(void) |
969 |
{ |
{ |
970 |
helper_lldt_T0(); |
helper_lldt_T0(); |
994 |
helper_movl_crN_T0(0); |
helper_movl_crN_T0(0); |
995 |
} |
} |
996 |
|
|
997 |
|
void OPPROTO op_invlpg_A0(void) |
998 |
|
{ |
999 |
|
helper_invlpg(A0); |
1000 |
|
} |
1001 |
|
|
1002 |
void OPPROTO op_movl_T0_env(void) |
void OPPROTO op_movl_T0_env(void) |
1003 |
{ |
{ |
1004 |
T0 = *(uint32_t *)((char *)env + PARAM1); |
T0 = *(uint32_t *)((char *)env + PARAM1); |
1098 |
CC_OP = PARAM1; |
CC_OP = PARAM1; |
1099 |
} |
} |
1100 |
|
|
1101 |
#define FL_UPDATE_MASK32 (TF_MASK | AC_MASK | ID_MASK) |
#define FL_UPDATE_MASK16 (FL_UPDATE_MASK32 & 0xffff) |
|
#define FL_UPDATE_MASK16 (TF_MASK) |
|
1102 |
|
|
1103 |
void OPPROTO op_movl_eflags_T0(void) |
void OPPROTO op_movl_eflags_T0(void) |
1104 |
{ |
{ |
1107 |
CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
1108 |
DF = 1 - (2 * ((eflags >> 10) & 1)); |
DF = 1 - (2 * ((eflags >> 10) & 1)); |
1109 |
/* we also update some system flags as in user mode */ |
/* we also update some system flags as in user mode */ |
1110 |
env->eflags = (env->eflags & ~FL_UPDATE_MASK32) | (eflags & FL_UPDATE_MASK32); |
env->eflags = (env->eflags & ~FL_UPDATE_MASK32) | |
1111 |
|
(eflags & FL_UPDATE_MASK32); |
1112 |
} |
} |
1113 |
|
|
1114 |
void OPPROTO op_movw_eflags_T0(void) |
void OPPROTO op_movw_eflags_T0(void) |
1118 |
CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
CC_SRC = eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
1119 |
DF = 1 - (2 * ((eflags >> 10) & 1)); |
DF = 1 - (2 * ((eflags >> 10) & 1)); |
1120 |
/* we also update some system flags as in user mode */ |
/* we also update some system flags as in user mode */ |
1121 |
env->eflags = (env->eflags & ~FL_UPDATE_MASK16) | (eflags & FL_UPDATE_MASK16); |
env->eflags = (env->eflags & ~FL_UPDATE_MASK16) | |
1122 |
|
(eflags & FL_UPDATE_MASK16); |
1123 |
|
} |
1124 |
|
|
1125 |
|
void OPPROTO op_movl_eflags_T0_cpl0(void) |
1126 |
|
{ |
1127 |
|
load_eflags(T0, FL_UPDATE_CPL0_MASK); |
1128 |
|
} |
1129 |
|
|
1130 |
|
void OPPROTO op_movw_eflags_T0_cpl0(void) |
1131 |
|
{ |
1132 |
|
load_eflags(T0, FL_UPDATE_CPL0_MASK & 0xffff); |
1133 |
} |
} |
1134 |
|
|
1135 |
#if 0 |
#if 0 |