about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c8
-rw-r--r--src/emu/x64run0f.c4
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;