[DYNAREC] Fixed previous commit

This commit is contained in:
ptitSeb 2024-05-19 14:15:30 +02:00
parent 25e1d8bae8
commit 4141748f9a
4 changed files with 6 additions and 6 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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);

View File

@ -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);