diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2015-02-11 13:07:06 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2015-02-11 13:07:06 +0000 |
| commit | d361b7f5d271f5303deaceb719c3a7c899a1a28f (patch) | |
| tree | f06e13f82f03bbccd4504606556b8486a04a1bf5 /src | |
| parent | 8e4e8da105547abec4fe27e837d13bf45d78e31b (diff) | |
fix in the JIT compiler that would hopefully make it work on iOS
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/c/pgf/lightning/arm/funcs.h | 12 |
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) |
