diff options
author | Anthony Green <green@moxielogic.com> | 2017-09-27 20:54:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-27 20:54:09 -0400 |
commit | 10099d6cad8418a10c1508235d1f458993ac51fe (patch) | |
tree | deff24576275cf5728803027a7679e0403e596ee /src | |
parent | c8f1aa3d0459c6f1be6884b324b4d2d785ecfd78 (diff) | |
parent | ed8488345eaae41c161ab741b0c44299ee99dc6c (diff) | |
download | libffi-10099d6cad8418a10c1508235d1f458993ac51fe.tar.gz |
Merge pull request #271 from frida/fix/qnx-cache-flushing
arm: Fix cache flushing on QNX
Diffstat (limited to 'src')
-rw-r--r-- | src/arm/ffi.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/arm/ffi.c b/src/arm/ffi.c index 8102ee6..e7ee5e5 100644 --- a/src/arm/ffi.c +++ b/src/arm/ffi.c @@ -566,8 +566,13 @@ ffi_prep_closure_loc (ffi_closure * closure, config[1] = closure_func; #else memcpy (closure->tramp, ffi_arm_trampoline, 8); +#if defined (__QNX__) + msync(closure->tramp, 8, 0x1000000); /* clear data map */ + msync(codeloc, 8, 0x1000000); /* clear insn map */ +#else __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */ __clear_cache(codeloc, codeloc + 8); /* clear insn map */ +#endif *(void (**)(void))(closure->tramp + 8) = closure_func; #endif |