about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-10-26 19:40:26 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-10-26 19:40:26 +0200
commit9073e1d47e4ba655ecff2f46ca3a898286af9429 (patch)
tree6f53ddf3761f10194beb331e73649423c64036cb
parented1078dadf692112738d01d19e6e348417485f12 (diff)
downloadbox64-9073e1d47e4ba655ecff2f46ca3a898286af9429.tar.gz
box64-9073e1d47e4ba655ecff2f46ca3a898286af9429.zip
[DYNAREC] Fixed 0F BA opcodes
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_0f.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index 51c9e247..b1308b09 100755
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -1366,7 +1366,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     if(MODREG) {

                         ed = xRAX+(nextop&7)+(rex.b<<3);

                     } else {

-                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xff0<<2, 3, rex, NULL, 0, 1);

+                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 1);

                         LDRxw_U12(x1, wback, fixedaddress);

                         ed = x1;

                     }

@@ -1382,7 +1382,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         ed = xRAX+(nextop&7)+(rex.b<<3);

                         wback = 0;

                     } else {

-                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xff0<<2, 3, rex, NULL, 0, 1);

+                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 1);

                         LDRxw_U12(x1, wback, fixedaddress);

                         ed = x1;

                     }

@@ -1405,7 +1405,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         ed = xRAX+(nextop&7)+(rex.b<<3);

                         wback = 0;

                     } else {

-                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xff0<<2, 3, rex, NULL, 0, 1);

+                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 1);

                         LDRxw_U12(x1, wback, fixedaddress);

                         ed = x1;

                     }

@@ -1428,7 +1428,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         ed = xRAX+(nextop&7)+(rex.b<<3);

                         wback = 0;

                     } else {

-                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xff0<<2, 3, rex, NULL, 0, 1);

+                        addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 1);

                         LDRxw_U12(x1, wback, fixedaddress);

                         ed = x1;

                     }