mirror of
https://github.com/ptitSeb/box86.git
synced 2024-11-23 14:50:29 +00:00
[DYNAREC] Fixed previous commit
This commit is contained in:
parent
25e1d8bae8
commit
4141748f9a
@ -1239,7 +1239,7 @@ uintptr_t dynarec00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
|
|||||||
break;
|
break;
|
||||||
case 0x9D:
|
case 0x9D:
|
||||||
INST_NAME("POPF");
|
INST_NAME("POPF");
|
||||||
SETFLAGS(X_ALL, SF_SET_DF);
|
SETFLAGS(X_ALL, SF_SET_NODF);
|
||||||
POP1(xFlags);
|
POP1(xFlags);
|
||||||
MOV32(x1, 0x3F7FD7);
|
MOV32(x1, 0x3F7FD7);
|
||||||
AND_REG_LSL_IMM5(xFlags, xFlags, x1, 0);
|
AND_REG_LSL_IMM5(xFlags, xFlags, x1, 0);
|
||||||
@ -1765,7 +1765,7 @@ uintptr_t dynarec00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
|
|||||||
|
|
||||||
case 0xCF:
|
case 0xCF:
|
||||||
INST_NAME("IRET");
|
INST_NAME("IRET");
|
||||||
SETFLAGS(X_ALL, SF_SET_DF); // Not a hack, EFLAGS are restored
|
SETFLAGS(X_ALL, SF_SET_NODF); // Not a hack, EFLAGS are restored
|
||||||
BARRIER(BARRIER_FLOAT);
|
BARRIER(BARRIER_FLOAT);
|
||||||
iret_to_epilog(dyn, ninst);
|
iret_to_epilog(dyn, ninst);
|
||||||
*need_epilog = 0;
|
*need_epilog = 0;
|
||||||
|
@ -444,7 +444,7 @@ uintptr_t dynarec0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
|
|||||||
// no special check...
|
// no special check...
|
||||||
case 0x2F:
|
case 0x2F:
|
||||||
if(opcode==0x2F) {INST_NAME("COMISS Gx, Ex");} else {INST_NAME("UCOMISS Gx, Ex");}
|
if(opcode==0x2F) {INST_NAME("COMISS Gx, Ex");} else {INST_NAME("UCOMISS Gx, Ex");}
|
||||||
SETFLAGS(X_ALL, SF_SET_DF);
|
SETFLAGS(X_ALL, SF_SET_NODF);
|
||||||
nextop = F8;
|
nextop = F8;
|
||||||
GETGX(v0, 0);
|
GETGX(v0, 0);
|
||||||
if(MODREG) {
|
if(MODREG) {
|
||||||
|
@ -637,7 +637,7 @@ uintptr_t dynarec66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
|
|||||||
break;
|
break;
|
||||||
case 0x9D:
|
case 0x9D:
|
||||||
INST_NAME("POPF (16b)");
|
INST_NAME("POPF (16b)");
|
||||||
SETFLAGS(X_ALL, SF_SET_DF); // lower 16bits is all flags handled in dynarec
|
SETFLAGS(X_ALL, SF_SET_NODF); // lower 16bits is all flags handled in dynarec
|
||||||
LDRHA_IMM8(x2, xESP, 2);
|
LDRHA_IMM8(x2, xESP, 2);
|
||||||
MOV32(x1, 0x7FD7);
|
MOV32(x1, 0x7FD7);
|
||||||
AND_REG_LSL_IMM5(x2, x2, x1, 0);
|
AND_REG_LSL_IMM5(x2, x2, x1, 0);
|
||||||
@ -1161,7 +1161,7 @@ uintptr_t dynarec66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
|
|||||||
INST_NAME("DIV Ew");
|
INST_NAME("DIV Ew");
|
||||||
if(arm_div) {
|
if(arm_div) {
|
||||||
GETEW(x1);
|
GETEW(x1);
|
||||||
SETFLAGS(X_ALL, SF_SET_DF);
|
SETFLAGS(X_ALL, SF_SET_NODF);
|
||||||
SET_DFNONE(x2);
|
SET_DFNONE(x2);
|
||||||
UXTH(x2, xEAX, 0);
|
UXTH(x2, xEAX, 0);
|
||||||
ORR_REG_LSL_IMM5(x2, x2, xEDX, 16);
|
ORR_REG_LSL_IMM5(x2, x2, xEDX, 16);
|
||||||
|
@ -276,7 +276,7 @@ uintptr_t dynarec660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nins
|
|||||||
// no special check...
|
// no special check...
|
||||||
case 0x2F:
|
case 0x2F:
|
||||||
if(opcode==0x2F) {INST_NAME("COMISD Gx, Ex");} else {INST_NAME("UCOMISD Gx, Ex");}
|
if(opcode==0x2F) {INST_NAME("COMISD Gx, Ex");} else {INST_NAME("UCOMISD Gx, Ex");}
|
||||||
SETFLAGS(X_ALL, SF_SET_DF);
|
SETFLAGS(X_ALL, SF_SET_NODF);
|
||||||
nextop = F8;
|
nextop = F8;
|
||||||
gd = (nextop&0x38)>>3;
|
gd = (nextop&0x38)>>3;
|
||||||
v0 = sse_get_reg(dyn, ninst, x1, gd, 0);
|
v0 = sse_get_reg(dyn, ninst, x1, gd, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user