From 7e8f8cf415cc554c5cbba4936abc3ee21b6803c7 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 12 Nov 2023 11:20:53 +0100 Subject: [ARM64_DYNAREC] Fixed sar8c usage --- src/dynarec/arm64/dynarec_arm64_00.c | 4 ++-- src/dynarec/arm64/dynarec_arm64_emit_shift.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') 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); -- cgit 1.4.1