about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-09-08 11:53:21 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-09-08 11:53:21 +0200
commite5c1e3a2a26036c73e076bb4c7151f7c7d9d150b (patch)
tree574fe3bdb96917e383614b3d75f3de6363b4c864
parente7d2cf55389b45afe37beb6c4996c99412da1605 (diff)
downloadbox64-e5c1e3a2a26036c73e076bb4c7151f7c7d9d150b.tar.gz
box64-e5c1e3a2a26036c73e076bb4c7151f7c7d9d150b.zip
[INTERP] Small fixes in a few rarely used opcodes
-rw-r--r--src/emu/x64run.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 34bd0368..fc5188e2 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -371,7 +371,7 @@ x64emurun:
             if(rex.is32bits) {
                 R_AX = aas16(emu, R_AX);
             } else {
-                EmitSignal(emu, X64_SIGILL, (void*)R_RIP, 0);
+                unimp = 1;
                 goto fini;
             }
             break;
@@ -1813,6 +1813,7 @@ x64emurun:
                     addr += tmp8s;
             } else if(rex.is32bits || rex.is67) {
                 --R_ECX; // don't update flags
+                if(rex.is67) emu->regs[_CX].dword[1] = 0;
                 if(R_ECX && !ACCESS_FLAG(F_ZF))
                     addr += tmp8s;
             } else {
@@ -1831,6 +1832,7 @@ x64emurun:
                     addr += tmp8s;
             } else if(rex.is32bits || rex.is67) {
                 --R_ECX; // don't update flags
+                if(rex.is67) emu->regs[_CX].dword[1] = 0;
                 if(R_ECX && ACCESS_FLAG(F_ZF))
                     addr += tmp8s;
             } else {
@@ -1848,6 +1850,7 @@ x64emurun:
                     addr += tmp8s;
             } else if(rex.is32bits || rex.is67) {
                 --R_ECX; // don't update flags
+                if(rex.is67) emu->regs[_CX].dword[1] = 0;
                 if(R_ECX)
                     addr += tmp8s;
             } else {