about summary refs log tree commit diff stats
path: root/src/emu/x64run.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-01-23 15:56:11 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-01-23 15:56:11 +0100
commitbc852aebeb9852801329f9576b4d5e3fa7df2efa (patch)
treeafa5f6e29bc226eb993b8d5972d533442734f42f /src/emu/x64run.c
parent89da530898fa08c23b59e3e3bf64f266f113e014 (diff)
downloadbox64-bc852aebeb9852801329f9576b4d5e3fa7df2efa.tar.gz
box64-bc852aebeb9852801329f9576b4d5e3fa7df2efa.zip
Added a new option BOX64_MMAP32 to use 32bits mapping on external MMAP (help Snapdragon device running Vulkan with Wine/Wow64, active by default on SD845/SD888/SD8G2 profiles)
Diffstat (limited to 'src/emu/x64run.c')
-rw-r--r--src/emu/x64run.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 7bec6b91..986c371a 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -31,6 +31,7 @@ int my_setcontext(x64emu_t* emu, void* ucp);
 #ifdef TEST_INTERPRETER
 int RunTest(x64test_t *test)
 #else
+int running32bits = 0;
 int Run(x64emu_t *emu, int step)
 #endif
 {
@@ -440,6 +441,8 @@ x64emurun:
                 goto fini;
             }
             is32bits = (emu->segs[_CS]==0x23);
+            if(is32bits)
+                running32bits = 1;
             #endif
             break;
         case 0x65:                      /* GS: prefix */
@@ -456,6 +459,8 @@ x64emurun:
                 goto fini;
             }
             is32bits = (emu->segs[_CS]==0x23);
+            if(is32bits)
+                running32bits = 1;
             #endif
             break;
         case 0x66:                      /* 16bits prefix */
@@ -1426,6 +1431,10 @@ x64emurun:
             R_RIP = addr;
             STEP;
             is32bits = (emu->segs[_CS]==0x23);
+            #ifndef TEST_INTERPRETER
+            if(is32bits)
+                running32bits = 1;
+            #endif
             break;
         case 0xD0:                      /* GRP2 Eb,1 */
         case 0xD2:                      /* GRP2 Eb,CL */
@@ -1941,6 +1950,10 @@ x64emurun:
                         }
                         STEP2;
                         is32bits = (emu->segs[_CS]==0x23);
+                        #ifndef TEST_INTERPRETER
+                        if(is32bits)
+                            running32bits = 1;
+                        #endif
                     }
                     break;
                 case 4:                 /* JMP NEAR Ed */
@@ -1967,6 +1980,10 @@ x64emurun:
                         }
                         STEP2;
                         is32bits = (emu->segs[_CS]==0x23);
+                        #ifndef TEST_INTERPRETER
+                        if(is32bits)
+                            running32bits = 1;
+                        #endif
                     }
                     break;
                 case 6:                 /* Push Ed */