about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-11-12 11:20:53 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-11-12 11:20:53 +0100
commit7e8f8cf415cc554c5cbba4936abc3ee21b6803c7 (patch)
treeca0a10e8ca86b327d63fadb3535f01a5f769f1ce
parent62634c6e1ec8b76894651fc5212ed52ef630aca2 (diff)
downloadbox64-7e8f8cf415cc554c5cbba4936abc3ee21b6803c7.tar.gz
box64-7e8f8cf415cc554c5cbba4936abc3ee21b6803c7.zip
[ARM64_DYNAREC] Fixed sar8c usage
-rw-r--r--src/dynarec/arm64/dynarec_arm64_00.c4
-rw-r--r--src/dynarec/arm64/dynarec_arm64_emit_shift.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 837cc8da..99686b1c 100644
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -1798,7 +1798,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     INST_NAME("SAR Eb, Ib");
                     if(geted_ib(dyn, addr, ninst, nextop)&0x1f) {
                         SETFLAGS(X_ALL, SF_SET_PENDING);
-                        GETEB(x1, 1);
+                        GETSEB(x1, 1);
                         u8 = (F8)&0x1f;
                         emit_sar8c(dyn, ninst, ed, u8, x3, x4);
                         EBBACK;
@@ -2129,7 +2129,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 7:
                     INST_NAME("SAR Eb, 1");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    GETEB(x1, 0);
+                    GETSEB(x1, 0);
                     emit_sar8c(dyn, ninst, ed, 1, x3, x4);
                     EBBACK;
                     break;
diff --git a/src/dynarec/arm64/dynarec_arm64_emit_shift.c b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
index b625604d..e9a1e88c 100644
--- a/src/dynarec/arm64/dynarec_arm64_emit_shift.c
+++ b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
@@ -454,7 +454,7 @@ void emit_sar8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         SET_DFNONE(s4);
     }
     IFX(X_CF) {
-        ASRx(s3, s1, c-1);
+        ASRw(s3, s1, c-1);
         BFIw(xFlags, s3, 0, 1);
     }
     ASRw(s1, s1, c);