diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-01-23 15:56:11 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-01-23 15:56:11 +0100 |
| commit | bc852aebeb9852801329f9576b4d5e3fa7df2efa (patch) | |
| tree | afa5f6e29bc226eb993b8d5972d533442734f42f /src/tools/box64stack.c | |
| parent | 89da530898fa08c23b59e3e3bf64f266f113e014 (diff) | |
| download | box64-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.c | 9 |
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); |