about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-07-14 11:17:28 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-07-14 11:17:53 +0200
commit41e3b2b1a18b07a0633e52b7573e15ed1c681c0f (patch)
tree8d7cb6c68b2e829208b3f13bac0e9a1df60020e9 /src
parent3349757d0faec529b62ba62c99ee4d7adcc84d2c (diff)
downloadbox64-41e3b2b1a18b07a0633e52b7573e15ed1c681c0f.tar.gz
box64-41e3b2b1a18b07a0633e52b7573e15ed1c681c0f.zip
Added 66 9C/9D opcodes (mostly for 32bits)
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run66.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c
index 4300bcb1..b037de11 100644
--- a/src/emu/x64run66.c
+++ b/src/emu/x64run66.c
@@ -368,6 +368,16 @@ uintptr_t Run66(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
         R_DX=((R_AX & 0x8000)?0xFFFF:0x0000);

         break;

 

+    case 0x9C:                              /* PUSHFW */

+        CHECK_FLAGS(emu);

+        Push16(emu, (uint16_t)emu->eflags.x64);

+        break;

+    case 0x9D:                              /* POPFW */

+        CHECK_FLAGS(emu);

+        emu->eflags.x64 &=0xffff0000;

+        emu->eflags.x64 |= (Pop16(emu) & 0x3F7FD7) | 0x2;

+        break;

+

     case 0xA1:                      /* MOV EAX,Od */

         if(rex.is32bits) {

             R_AX = *(uint16_t*)(uintptr_t)F32;