Invalidate CPU I-cache on Apple Silicon

Call __builtin___clear_cache() after pthread_jit_write_protect_np() according to https://developer.apple.com/documentation/apple-silicon/porting-just-in-time-compilers-to-apple-silicon
This commit is contained in:
SChernykh 2022-11-30 10:53:57 +01:00
parent 261d58c77f
commit 7245f13c7e

View File

@ -189,6 +189,7 @@ void setPagesRX(void* ptr, size_t bytes) {
&& MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0
if (__builtin_available(macOS 11.0, *)) { if (__builtin_available(macOS 11.0, *)) {
pthread_jit_write_protect_np(1); pthread_jit_write_protect_np(1);
__builtin___clear_cache((char*)ptr, ((char*)ptr) + bytes);
} else { } else {
pageProtect(ptr, bytes, PAGE_EXECUTE_READ, &errfunc); pageProtect(ptr, bytes, PAGE_EXECUTE_READ, &errfunc);
} }