diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-06-23 20:22:02 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-06-23 20:22:02 +0200 |
| commit | c66be063aa30b8ec8e3366fa7767596ef2ecc8bb (patch) | |
| tree | c8f6088adaf96eaefe4eeeca48e76ab856a942b3 /src | |
| parent | 1f0165f895f577693f4e42eefd4ac8fe3f6ce22f (diff) | |
| download | box64-c66be063aa30b8ec8e3366fa7767596ef2ecc8bb.tar.gz box64-c66be063aa30b8ec8e3366fa7767596ef2ecc8bb.zip | |
Small improvment to 0F BC/BD opcodes ([ARM64_DYNAREC] too)
Diffstat (limited to 'src')
| -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; |