about summary refs log tree commit diff stats
path: root/src/tools/box64stack.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/tools/box64stack.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/tools/box64stack.c')
-rw-r--r--src/tools/box64stack.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c
index d1c55d07..7be31b4d 100644
--- a/src/tools/box64stack.c
+++ b/src/tools/box64stack.c
@@ -11,9 +11,7 @@
 #include "emu/x64emu_private.h"
 #include "emu/x64run_private.h"
 #include "auxval.h"
-
-// from src/wrapped/wrappedlibc.c
-void* my_mmap(x64emu_t* emu, void* addr, unsigned long length, int prot, int flags, int fd, int64_t offset);
+#include "custommem.h"
 
 EXPORTDYN
 int CalcStackSize(box64context_t *context)
@@ -24,11 +22,12 @@ int CalcStackSize(box64context_t *context)
         CalcStack(context->elfs[i], &context->stacksz, &context->stackalign);
 
     //if (posix_memalign((void**)&context->stack, context->stackalign, context->stacksz)) {
-    context->stack = my_mmap(NULL, NULL, context->stacksz, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+    context->stack = internal_mmap(NULL, context->stacksz, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
     if (context->stack==(void*)-1) {
         printf_log(LOG_NONE, "Cannot allocate aligned memory (0x%lx/0x%zx) for stack\n", context->stacksz, context->stackalign);
         return 1;
-    }
+    } else
+        setProtection((uintptr_t)context->stack, context->stacksz, PROT_READ|PROT_WRITE);
     //memset(context->stack, 0, context->stacksz);
     printf_log(LOG_DEBUG, "Stack is @%p size=0x%lx align=0x%zx\n", context->stack, context->stacksz, context->stackalign);