about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-05 12:26:32 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-05 12:26:32 +0100
commitf0883cd465445e9ab07f2e1d33515eda1635fa38 (patch)
tree81f8772493a2e9101c9ad487b14f9ef29e5ec7ce /src
parent4081890a941f02315397d05402aaaa085429bedc (diff)
downloadbox64-f0883cd465445e9ab07f2e1d33515eda1635fa38.tar.gz
box64-f0883cd465445e9ab07f2e1d33515eda1635fa38.zip
Added REX 99 cd/cqo opcode
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index d7250aad..6889f353 100755
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -328,10 +328,16 @@ x64emurun:
 
         case 0x98:                      /* CWDE */
             if(rex.w)
-                emu->regs[_AX].q[0] = emu->regs[_AX].sdword[0];
+                emu->regs[_AX].sq[0] = emu->regs[_AX].sdword[0];
             else
                 emu->regs[_AX].sdword[0] = emu->regs[_AX].sword[0];
             break;
+        case 0x99:                      /* CDQ */
+            if(rex.w)
+                R_RDX=(R_RAX & 0x8000000000000000L)?0xFFFFFFFFFFFFFFFFL:0x0000000000000000L;
+            else
+                R_RDX=(R_EAX & 0x80000000)?0xFFFFFFFFFFFFFFFFL:0x0000000000000000L;
+            break;
 
         case 0xB8:                      /* MOV EAX,Id */
         case 0xB9:                      /* MOV ECX,Id */