diff options
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_0f.c | 8 | ||||
| -rw-r--r-- | src/emu/x64run0f.c | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 3547b670..545a9554 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -2138,7 +2138,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin break; case 0xBC: INST_NAME("BSF Gd, Ed"); - SETFLAGS(X_ZF, SF_SUBSET); + SETFLAGS(X_ZF, SF_SET_DF); SET_DFNONE(x1); nextop = F8; GETED(0); @@ -2149,13 +2149,13 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin CLZxw(gd, x1); // x2 gets leading 0 == BSF MARK; IFX(X_ZF) { - CSETw(x1, cEQ); //ZF not set + CSETw(x1, cEQ); //other flags are undefined BFIw(xFlags, x1, F_ZF, 1); } break; case 0xBD: INST_NAME("BSR Gd, Ed"); - SETFLAGS(X_ZF, SF_SUBSET); + SETFLAGS(X_ZF, SF_SET_DF); SET_DFNONE(x1); nextop = F8; GETED(0); @@ -2167,7 +2167,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin NEGxw_REG(gd, gd); // complement MARK; IFX(X_ZF) { - CSETw(x1, cEQ); //ZF not set + CSETw(x1, cEQ); //other flags are undefined BFIw(xFlags, x1, F_ZF, 1); } break; diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index 2a2c78cb..8aa634ae 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -1543,7 +1543,7 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) } break; case 0xBC: /* BSF Ed,Gd */ - CHECK_FLAGS(emu); + RESET_FLAGS(emu); nextop = F8; GETED(0); GETGD; @@ -1570,7 +1570,7 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) } break; case 0xBD: /* BSR Ed,Gd */ - CHECK_FLAGS(emu); + RESET_FLAGS(emu); nextop = F8; GETED(0); GETGD; |