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 committed by wowario
parent c55226fd27
commit 607bad48f3
No known key found for this signature in database
GPG Key ID: 24DCBE762DE9C111

View File

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