diff --git a/src/virtual_memory.cpp b/src/virtual_memory.cpp index 2f3ee39..1a32f5f 100644 --- a/src/virtual_memory.cpp +++ b/src/virtual_memory.cpp @@ -35,6 +35,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #else #ifdef __APPLE__ #include +#include +#include #endif #include #include @@ -129,11 +131,19 @@ static inline void pageProtect(void* ptr, std::size_t bytes, int rules) { } void setPagesRW(void* ptr, std::size_t bytes) { +#if defined(__APPLE__) && defined(__aarch64__) && TARGET_OS_OSX + pthread_jit_write_protect_np(false); +#else pageProtect(ptr, bytes, PAGE_READWRITE); +#endif } void setPagesRX(void* ptr, std::size_t bytes) { +#if defined(__APPLE__) && defined(__aarch64__) && TARGET_OS_OSX + pthread_jit_write_protect_np(true); +#else pageProtect(ptr, bytes, PAGE_EXECUTE_READ); +#endif } void setPagesRWX(void* ptr, std::size_t bytes) {