about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-21 20:35:49 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-21 20:35:49 +0100
commit3d4acc3aef2af0c7e7b0dcb251331da7bcab6bc7 (patch)
tree907209d2e12c33503b37d784b31d30e7d25ba48a
parent1349601269fadcfedd9c30f1eb9b274dc01d1f7f (diff)
downloadbox64-3d4acc3aef2af0c7e7b0dcb251331da7bcab6bc7.tar.gz
box64-3d4acc3aef2af0c7e7b0dcb251331da7bcab6bc7.zip
[DYNAREC] Foxed printer for STP/LDP
-rwxr-xr-xsrc/dynarec/arm64_printer.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/dynarec/arm64_printer.c b/src/dynarec/arm64_printer.c
index adf4f6f6..46e1feae 100755
--- a/src/dynarec/arm64_printer.c
+++ b/src/dynarec/arm64_printer.c
@@ -121,17 +121,17 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
     }

     // --- LDR / STR

     if(isMask(opcode, "f010100011iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         snprintf(buff, sizeof(buff), "LDP %s, %s, [%s], %s0x%x", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn], (offset<0)?"-":"", abs(offset));

         return buff;

     }

     if(isMask(opcode, "f010100111iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         snprintf(buff, sizeof(buff), "LDP %s, %s, [%s, %s0x%x]!", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn], (offset<0)?"-":"", abs(offset));

         return buff;

     }

     if(isMask(opcode, "f010100101iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         if(!offset)

             snprintf(buff, sizeof(buff), "LDP %s, %s, [%s]", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn]);

         else

@@ -139,17 +139,17 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
         return buff;

     }

     if(isMask(opcode, "f010100010iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         snprintf(buff, sizeof(buff), "STP %s, %s, [%s], %s0x%x", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn], (offset<0)?"-":"", abs(offset));

         return buff;

     }

     if(isMask(opcode, "f010100110iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         snprintf(buff, sizeof(buff), "STP %s, %s, [%s, %s0x%x]!", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn], (offset<0)?"-":"", abs(offset));

         return buff;

     }

     if(isMask(opcode, "f010100100iiiiiii22222nnnnnttttt", &a)) {

-        int offset = signExtend(imm, 9)<<(2+sf);

+        int offset = signExtend(imm, 7)<<(2+sf);

         if(!offset)

             snprintf(buff, sizeof(buff), "STP %s, %s, [%s]", sf?Xt[Rt]:Wt[Rt], sf?Xt[Rt2]:Wt[Rt2], XtSp[Rn]);

         else