diff options
| -rw-r--r-- | src/emu/x64run.c | 5 |
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 { |