about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-06-25 15:20:18 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-06-25 15:20:18 +0200
commit3880b7811b1c7393f6ece708f17e1fb2219a16e0 (patch)
treecc8514692343997dd0abce4089112f392bde44c2 /src
parent2604bb078cd6f554dcbe816b92dc344665f56afb (diff)
downloadbox64-3880b7811b1c7393f6ece708f17e1fb2219a16e0.tar.gz
box64-3880b7811b1c7393f6ece708f17e1fb2219a16e0.zip
[32BITS] Added 1E/1F opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 397fbed1..8f23eac4 100755
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -196,6 +196,22 @@ x64emurun:
         GO(0x30, xor)                   /* XOR 0x30 -> 0x35 */
         #undef GO
 
+        case 0x1E:                      /* PUSH DS */
+            if(!rex.is32bits) {
+                unimp = 1;
+                goto fini;
+            }
+            Push(emu, emu->segs[_DS]);  // even if a segment is a 16bits, a 32bits push/pop is done
+            break;
+        case 0x1F:                      /* POP DS */
+            if(!rex.is32bits) {
+                unimp = 1;
+                goto fini;
+            }
+            emu->segs[_DS] = Pop(emu);    // no check, no use....
+            emu->segs_serial[_DS] = 0;
+            break;
+
 	    case 0x2E:	    /* segments are ignored */
         case 0x26:
         case 0x36:          /* SS: (ignored) */