about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-02-16 18:38:21 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-02-16 18:38:21 +0100
commit5924a8eca1873b3e38909fe39f4287f5f12210b3 (patch)
tree0ad6511a2742947f69013a3438c16d86f9cc6f7d /src
parentfc920b0838dd6838426cf0f0a683730487318dfa (diff)
downloadbox64-5924a8eca1873b3e38909fe39f4287f5f12210b3.tar.gz
box64-5924a8eca1873b3e38909fe39f4287f5f12210b3.zip
[ARM64_DYNAREC] Fixed 8C opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_00.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 90684fb0..6fe6fe4f 100644
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -1294,7 +1294,9 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             nextop=F8;
             u8 = (nextop&0x38)>>3;
             if((nextop&0xC0)==0xC0) {   // reg <= seg
-                LDRw_U12(xRAX+(nextop&7)+(rex.b<<3), xEmu, offsetof(x64emu_t, segs[u8]));
+                gd = xRAX+(nextop&7)+(rex.b<<3);
+                LDRH_U12(gd, xEmu, offsetof(x64emu_t, segs[u8]));
+                UXTHw(gd, gd);
             } else {                    // mem <= seg
                 LDRH_U12(x3, xEmu, offsetof(x64emu_t, segs[u8]));
                 addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, &unscaled, 0xfff<<1, 1, rex, NULL, 0, 0);