about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-04 11:00:43 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-04 11:00:43 +0200
commitee7b10f064326a657c13821d5f07cca41a45d4ae (patch)
tree2a23b841dfb31ede19da428ec36bd99a8e56832c /src/libtools
parentc1ad6b5829af34e5ff93d5f89b08a007b1a88f2e (diff)
downloadbox64-ee7b10f064326a657c13821d5f07cca41a45d4ae.tar.gz
box64-ee7b10f064326a657c13821d5f07cca41a45d4ae.zip
[BOX32] Small improvments on memory management
Diffstat (limited to 'src/libtools')
-rwxr-xr-xsrc/libtools/threads32.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c
index d99a085e..bd437633 100755
--- a/src/libtools/threads32.c
+++ b/src/libtools/threads32.c
@@ -29,6 +29,10 @@
 #include "dynablock.h"
 #endif
 
+#ifndef MAP_32BIT
+#define MAP_32BIT 0x40
+#endif
+
 typedef void (*vFppp_t)(void*, void*, void*);
 typedef void (*vFpi_t)(void*, int);
 //starting with glibc 2.34+, those 2 functions are in libc.so as versionned symbol only
@@ -205,7 +209,7 @@ EXPORT int my32_pthread_create(x64emu_t *emu, void* t, void* attr, void* start_r
 		own = 0;
 	} else {
 		//stack = malloc(stacksize);
-		stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+		stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN|MAP_32BIT, -1, 0);
 		own = 1;
 	}
 
@@ -250,7 +254,7 @@ void* my32_prepare_thread(x64emu_t *emu, void* f, void* arg, int ssize, void** p
 {
 	int stacksize = (ssize)?ssize:(2*1024*1024);	//default stack size is 2Mo
 	//void* stack = malloc(stacksize);
-	void* stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+	void* stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN|MAP_32BIT, -1, 0);
 	emuthread_t *et = (emuthread_t*)calloc(1, sizeof(emuthread_t));
     x64emu_t *emuthread = NewX64Emu(emu->context, (uintptr_t)f, (uintptr_t)stack, stacksize, 1);
 	SetupX64Emu(emuthread, emu);