about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-03-08 20:30:52 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-03-08 20:30:52 +0100
commit61a605a2dc381917c29b09812ff93613cc862709 (patch)
tree564745feef769a8b1cd359dc00ed2d3552436d5c /src
parent7a058c919480e67b94b4b84a1860871399c8db51 (diff)
downloadbox64-61a605a2dc381917c29b09812ff93613cc862709.tar.gz
box64-61a605a2dc381917c29b09812ff93613cc862709.zip
[ARM64_DYNAREC] Disabled inlined ClearCache as it seems not 100% efficient
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/dynarec_native.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c
index 6f4eb595..fdbeab47 100644
--- a/src/dynarec/dynarec_native.c
+++ b/src/dynarec/dynarec_native.c
@@ -508,7 +508,8 @@ static instruction_native_t static_insts[MAX_INSTS+2] = {0};
 
 void ClearCache(void* start, size_t len)
 {
-#if defined(ARM64)
+// disabled for now, seems to not clear some page correctly (happens with Celeste64 or CivBE for example)
+#if 0//defined(ARM64)
     // manually clear cache, I have issue with regular function on Ampere with kernel 6.12.4
     uintptr_t xstart = (uintptr_t)start;
     uintptr_t xend = (uintptr_t)start + len;
@@ -831,6 +832,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     *(dynablock_t**)next = block;
     *(void**)(next+3*sizeof(void*)) = native_next;
     CreateJmpNext(block->jmpnext, next+3*sizeof(void*));
+    ClearCache(block->jmpnext, 4*sizeof(void*));
     //block->x64_addr = (void*)start;
     block->x64_size = end-start;
     // all done...