summaryrefslogtreecommitdiff
path: root/src/arm
diff options
context:
space:
mode:
authorAnthony Green <green@moxielogic.com>2017-09-27 20:54:09 -0400
committerGitHub <noreply@github.com>2017-09-27 20:54:09 -0400
commit10099d6cad8418a10c1508235d1f458993ac51fe (patch)
treedeff24576275cf5728803027a7679e0403e596ee /src/arm
parentc8f1aa3d0459c6f1be6884b324b4d2d785ecfd78 (diff)
parented8488345eaae41c161ab741b0c44299ee99dc6c (diff)
downloadlibffi-10099d6cad8418a10c1508235d1f458993ac51fe.tar.gz
Merge pull request #271 from frida/fix/qnx-cache-flushing
arm: Fix cache flushing on QNX
Diffstat (limited to 'src/arm')
-rw-r--r--src/arm/ffi.c5
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