From ad4cfb6e6417117db2ac245f94a58a7e2924196f Mon Sep 17 00:00:00 2001 From: Nadia Holmquist Pedersen Date: Mon, 24 Jul 2023 17:50:38 +0200 Subject: [PATCH] reserve space again when it's unmapped --- src/ARMJIT_Memory.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ARMJIT_Memory.cpp b/src/ARMJIT_Memory.cpp index 19eee197..5a0d7d47 100644 --- a/src/ARMJIT_Memory.cpp +++ b/src/ARMJIT_Memory.cpp @@ -72,6 +72,10 @@ using Platform::LogLevel; */ +#if defined(__APPLE__) || defined(__FreeBSD__) +#define NEEDS_ANON_MAP +#endif + namespace ARMJIT_Memory { struct FaultDescription @@ -334,6 +338,8 @@ bool UnmapFromRange(u32 addr, u32 num, u32 offset, u32 size) return R_SUCCEEDED(r); #elif defined(_WIN32) return UnmapViewOfFile(dst); +#elif defined(NEEDS_ANON_MAP) + return mmap(dst, size, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0) == 0; #else return munmap(dst, size) == 0; #endif @@ -751,7 +757,7 @@ void Init() // but something was bad about this so instead we take this vmem eating monster // which seems to work better. MemoryBase = (u8*)mmap(NULL, AddrSpaceSize*4, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0); -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(NEEDS_ANON_MAP) munmap(MemoryBase, AddrSpaceSize*4); #endif FastMem9Start = MemoryBase;