about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <seebastien.chev@gmail.com>2023-08-13 14:15:30 +0200
committerptitSeb <seebastien.chev@gmail.com>2023-08-13 14:15:30 +0200
commit692eb90dcdffeaf72c8769113a54770163eb3e24 (patch)
tree3b9cc391f1743afc3b30c38a1be7b7c883ea6de3 /src
parenteee1c62325ad9d3b4128a5635d42cec424f64713 (diff)
downloadbox64-692eb90dcdffeaf72c8769113a54770163eb3e24.tar.gz
box64-692eb90dcdffeaf72c8769113a54770163eb3e24.zip
Added 0F A0/A1 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run0f.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index caa4eb98..06424813 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -813,7 +813,19 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
             , EB->byte[0]=0;

             ,

         )                               /* 0x90 -> 0x9F SETxx Eb */

-

+        case 0xA0:                      /* PUSH FS */

+            if(rex.is32bits)

+                Push32(emu, emu->segs[_FS]);

+            else

+                Push64(emu, emu->segs[_FS]);

+            break;

+        case 0xA1:                      /* POP FS */

+            if(rex.is32bits)

+                emu->segs[_FS] = Pop32(emu);

+            else

+                emu->segs[_FS] = Pop64(emu);

+            emu->segs_serial[_FS] = 0;

+            break;

         case 0xA2:                      /* CPUID */

             tmp32u = R_EAX;

             my_cpuid(emu, tmp32u);