diff options
author | Valery Ushakov <uwe@stderr.spb.ru> | 2021-01-04 03:00:19 +0300 |
---|---|---|
committer | Valery Ushakov <uwe@stderr.spb.ru> | 2021-01-04 03:00:19 +0300 |
commit | e273317811820976dda632b0893960646d6e1119 (patch) | |
tree | 49fcdb1823fca336a6bb6d96b675d85fb867ca6e | |
parent | 8adc601ba8dfd68676fc702cd30075643967f2fd (diff) |
NetBSD/arm: segflush - use mprotect to add PROT_EXEC
ARM has separate read and execute protection bits so after writing out
JIT code we need to make it executable.
-rw-r--r-- | emu/NetBSD/segflush-arm.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/emu/NetBSD/segflush-arm.c b/emu/NetBSD/segflush-arm.c index f4529633..a03b438b 100644 --- a/emu/NetBSD/segflush-arm.c +++ b/emu/NetBSD/segflush-arm.c @@ -1,4 +1,5 @@ #include <sys/types.h> +#include <sys/mman.h> #include <machine/sysarch.h> #include "dat.h" @@ -9,6 +10,8 @@ segflush(void *a, ulong n) { struct arm_sync_icache_args args; + mprotect(a, (size_t)n, PROT_READ | PROT_WRITE | PROT_EXEC); + args.addr = (uintptr_t)a; args.len = (size_t)n; sysarch(ARM_SYNC_ICACHE, (void *)&args); |