about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-06-19 11:07:21 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-06-19 11:07:30 +0200
commit725316a5386eb713438625220b561bcd3710c8bc (patch)
tree3535222fdd3ec0c8b601df98006fa1736e9fb047 /src/wrapped
parentcc9ed708379b9b03e7a9b86f040f06f178606aef (diff)
downloadbox64-725316a5386eb713438625220b561bcd3710c8bc.tar.gz
box64-725316a5386eb713438625220b561bcd3710c8bc.zip
[DYNACACHE] Introduced DynaCache for ARM64 (disabled by default)
Diffstat (limited to 'src/wrapped')
-rw-r--r--src/wrapped/generated/functions_list.txt1
-rw-r--r--src/wrapped/wrappedlibc.c10
2 files changed, 7 insertions, 4 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 82b573e2..bf306cfa 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -3506,7 +3506,6 @@
 #() iFEpuvvppp -> iFEpuppp
 wrappedalure:
 wrappedalut:
-wrappedandroidshmem:
 wrappedanl:
 wrappedatk:
 - vFp:
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index ef9d96f3..b6e05fb3 100644
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -3145,6 +3145,9 @@ EXPORT int my_munmap(x64emu_t* emu, void* addr, size_t length)
     int ret = box_munmap(addr, length);
     int e = errno;
     #ifdef DYNAREC
+    if(!ret) {
+        WillRemoveMapping((uintptr_t)addr, length);
+    }
     if(!ret && BOX64ENV(dynarec) && length) {
         cleanDBFromAddressRange((uintptr_t)addr, length, 1);
     }
@@ -3168,9 +3171,10 @@ EXPORT int my_mprotect(x64emu_t* emu, void *addr, unsigned long len, int prot)
     int ret = mprotect(addr, len, prot);
     #ifdef DYNAREC
     if(BOX64ENV(dynarec) && !ret && len) {
-        if(prot& PROT_EXEC)
-            addDBFromAddressRange((uintptr_t)addr, len);
-        else
+        if(prot& PROT_EXEC) {
+            if(!IsAddrMappingLoadAndClean((uintptr_t)addr))
+                addDBFromAddressRange((uintptr_t)addr, len);
+        } else
             cleanDBFromAddressRange((uintptr_t)addr, len, (!prot)?1:0);
     }
     #endif