about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-24 15:17:56 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-24 15:17:56 +0200
commit73b3aec3ed479ca1599816c3fa9558dcb383d302 (patch)
treecc8f79d9982e4afdd32ca22567741f502f01571b /src
parent9568cbac0a8f12eaabf42e3119cf9b49356e06d6 (diff)
downloadbox64-73b3aec3ed479ca1599816c3fa9558dcb383d302.tar.gz
box64-73b3aec3ed479ca1599816c3fa9558dcb383d302.zip
[ARM64_DYNAREC] Fixed reset of rex on 67 prefixed opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_67.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index 50fdf824..117e090a 100644
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -55,12 +55,13 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         return addr;

     }

 

-    GETREX();

 

     while(opcode==0x67) opcode = F8;

     

+    // reset rex after 67

+    GETREX();

+

     rep = 0;

-    rex.rex = 0;    // reset rex after 67

     while((opcode==0xF2) || (opcode==0xF3) || (opcode>=0x40 && opcode<=0x4F)) {

         if((opcode==0xF2) || (opcode==0xF3))

             rep = opcode-0xF1;