summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/lightning
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2015-02-11 13:07:06 +0000
committerkr.angelov <kr.angelov@gmail.com>2015-02-11 13:07:06 +0000
commitd361b7f5d271f5303deaceb719c3a7c899a1a28f (patch)
treef06e13f82f03bbccd4504606556b8486a04a1bf5 /src/runtime/c/pgf/lightning
parent8e4e8da105547abec4fe27e837d13bf45d78e31b (diff)
fix in the JIT compiler that would hopefully make it work on iOS
Diffstat (limited to 'src/runtime/c/pgf/lightning')
-rw-r--r--src/runtime/c/pgf/lightning/arm/funcs.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/runtime/c/pgf/lightning/arm/funcs.h b/src/runtime/c/pgf/lightning/arm/funcs.h
index a2559d1bb..dd0e4bc0c 100644
--- a/src/runtime/c/pgf/lightning/arm/funcs.h
+++ b/src/runtime/c/pgf/lightning/arm/funcs.h
@@ -41,6 +41,17 @@
#include <unistd.h>
#include <sys/mman.h>
+#if defined(ios_HOST_OS) || defined (darwin_HOST_OS)
+extern void sys_icache_invalidate(void *start, size_t len);
+
+static void
+jit_flush_code(void *start, void *end)
+{
+ mprotect(start, (char *)end - (char *)start,
+ PROT_READ | PROT_WRITE | PROT_EXEC);
+ sys_icache_invalidate(start, (char *)end-(char *)start);
+}
+#else
extern void __clear_cache(void*, void*);
static void
@@ -50,6 +61,7 @@ jit_flush_code(void *start, void *end)
PROT_READ | PROT_WRITE | PROT_EXEC);
__clear_cache(start, end);
}
+#endif
__attribute__((constructor)) static void
jit_get_cpu(void)