654 |
env->eflags |= IF_MASK; |
env->eflags |= IF_MASK; |
655 |
} |
} |
656 |
|
|
657 |
|
#if 0 |
658 |
/* vm86plus instructions */ |
/* vm86plus instructions */ |
|
|
|
659 |
void OPPROTO op_cli_vm(void) |
void OPPROTO op_cli_vm(void) |
660 |
{ |
{ |
661 |
env->eflags &= ~VIF_MASK; |
env->eflags &= ~VIF_MASK; |
670 |
} |
} |
671 |
FORCE_RET(); |
FORCE_RET(); |
672 |
} |
} |
673 |
|
#endif |
674 |
|
|
675 |
void OPPROTO op_boundw(void) |
void OPPROTO op_boundw(void) |
676 |
{ |
{ |
940 |
EAX = 0x52b; |
EAX = 0x52b; |
941 |
EBX = 0; |
EBX = 0; |
942 |
ECX = 0; |
ECX = 0; |
943 |
EDX = CPUID_FP87 | CPUID_VME | CPUID_DE | CPUID_PSE | |
EDX = CPUID_FP87 | CPUID_DE | CPUID_PSE | |
944 |
CPUID_TSC | CPUID_MSR | CPUID_MCE | |
CPUID_TSC | CPUID_MSR | CPUID_MCE | |
945 |
CPUID_CX8; |
CPUID_CX8; |
946 |
} |
} |
1092 |
uint32_t e1, e2; |
uint32_t e1, e2; |
1093 |
uint8_t *ptr; |
uint8_t *ptr; |
1094 |
|
|
|
env->segs[seg_reg] = selector; |
|
1095 |
sc = &env->seg_cache[seg_reg]; |
sc = &env->seg_cache[seg_reg]; |
1096 |
if (env->eflags & VM_MASK) { |
if (env->eflags & VM_MASK) { |
1097 |
sc->base = (void *)(selector << 4); |
sc->base = (void *)(selector << 4); |
1118 |
selector, (unsigned long)sc->base, sc->limit, sc->seg_32bit); |
selector, (unsigned long)sc->base, sc->limit, sc->seg_32bit); |
1119 |
#endif |
#endif |
1120 |
} |
} |
1121 |
|
env->segs[seg_reg] = selector; |
1122 |
} |
} |
1123 |
|
|
1124 |
void OPPROTO op_movl_seg_T0(void) |
void OPPROTO op_movl_seg_T0(void) |
1318 |
env->eflags = (env->eflags & ~FL_UPDATE_MASK16) | (eflags & FL_UPDATE_MASK16); |
env->eflags = (env->eflags & ~FL_UPDATE_MASK16) | (eflags & FL_UPDATE_MASK16); |
1319 |
} |
} |
1320 |
|
|
1321 |
/* vm86 version */ |
#if 0 |
1322 |
|
/* vm86plus version */ |
1323 |
void OPPROTO op_movw_eflags_T0_vm(void) |
void OPPROTO op_movw_eflags_T0_vm(void) |
1324 |
{ |
{ |
1325 |
int eflags; |
int eflags; |
1357 |
} |
} |
1358 |
FORCE_RET(); |
FORCE_RET(); |
1359 |
} |
} |
1360 |
|
#endif |
1361 |
|
|
1362 |
/* XXX: compute only O flag */ |
/* XXX: compute only O flag */ |
1363 |
void OPPROTO op_movb_eflags_T0(void) |
void OPPROTO op_movb_eflags_T0(void) |
1376 |
T0 = eflags; |
T0 = eflags; |
1377 |
} |
} |
1378 |
|
|
1379 |
/* vm86 version */ |
/* vm86plus version */ |
1380 |
|
#if 0 |
1381 |
void OPPROTO op_movl_T0_eflags_vm(void) |
void OPPROTO op_movl_T0_eflags_vm(void) |
1382 |
{ |
{ |
1383 |
int eflags; |
int eflags; |
1388 |
eflags |= IF_MASK; |
eflags |= IF_MASK; |
1389 |
T0 = eflags; |
T0 = eflags; |
1390 |
} |
} |
1391 |
|
#endif |
1392 |
|
|
1393 |
void OPPROTO op_cld(void) |
void OPPROTO op_cld(void) |
1394 |
{ |
{ |