about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-24 14:46:17 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-24 14:46:17 +0200
commit6313a31668888b9999b663cdb1144551e1a86f73 (patch)
tree6360ac9d8bbd337846f7f1f5272c2966db61ad3c /src
parent15a4be2db14420b30de25a7386b4dab39be00ac2 (diff)
downloadbox64-6313a31668888b9999b663cdb1144551e1a86f73.tar.gz
box64-6313a31668888b9999b663cdb1144551e1a86f73.zip
[INTEPRETER] Added a check on CS for CA/CB opecodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 6d4742d7..276dd91f 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -1464,7 +1464,11 @@ x64emurun:
             }
             emu->segs_serial[_CS] = 0;
             R_RSP += tmp16u;
-            // need to check status of CS register!
+            is32bits = (R_CS==0x23);    // checking if CS changed
+            #ifndef TEST_INTERPRETER
+            if(is32bits)
+                running32bits = 1;
+            #endif
             STEP2;
             break;
         case 0xCB:                      /* FAR RET */
@@ -1476,7 +1480,11 @@ x64emurun:
                 emu->segs[_CS] = Pop64(emu);    // no check, no use....
             }
             emu->segs_serial[_CS] = 0;
-            // need to check status of CS register!
+            is32bits = (R_CS==0x23);    // checking if CS changed
+            #ifndef TEST_INTERPRETER
+            if(is32bits)
+                running32bits = 1;
+            #endif
             STEP2;
             break;
         case 0xCC:                      /* INT 3 */