about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-01-29 14:44:18 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-01-29 14:46:36 +0100
commit30b83f4f9c1cf2e5b62d1b59f9f301f6081d601d (patch)
treea402a5746d4bffb4201b784834e366c6b6d1f798
parent265f969a44748a7341e00185c3be6db54ab1ec23 (diff)
downloadbox64-30b83f4f9c1cf2e5b62d1b59f9f301f6081d601d.tar.gz
box64-30b83f4f9c1cf2e5b62d1b59f9f301f6081d601d.zip
[ARM64_DYNAREC] Fixed 66 50-5F opcodes (helps Dave the Diver)
-rw-r--r--src/dynarec/arm64/dynarec_arm64_66.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c
index fa35e7b6..5da501c2 100644
--- a/src/dynarec/arm64/dynarec_arm64_66.c
+++ b/src/dynarec/arm64/dynarec_arm64_66.c
@@ -355,7 +355,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x56:

         case 0x57:

             INST_NAME("PUSH reg");

-            gd = xRAX+(opcode&0x07);

+            gd = xRAX+(opcode&0x07)+(rex.b<<3);

             if (gd==xRSP) {

                 MOVw_REG(x1, xRSP);

                 PUSH1_16(x1);

@@ -372,7 +372,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x5E:

         case 0x5F:

             INST_NAME("POP reg");

-            gd = xRAX+(opcode&0x07);

+            gd = xRAX+(opcode&0x07)+(rex.b<<3);

             POP1_16(x1);

             BFIw(gd, x1, 0, 16);

             break;