summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjklos <jklos@pkgsrc.org>2010-07-22 04:17:44 +0000
committerjklos <jklos@pkgsrc.org>2010-07-22 04:17:44 +0000
commita0bd8606c073d0bd29b656c9d1add06bdcc86326 (patch)
tree050ba182a3b9854b3049f6163e7ee571ccb60e4d
parent7f47face2250a51d966c6b0bebda63badf69074c (diff)
downloadpkgsrc-a0bd8606c073d0bd29b656c9d1add06bdcc86326.tar.gz
Correctly do cache flushing on m68k NetBSD. Fixes PR #43106.
-rw-r--r--devel/libffi/distinfo3
-rw-r--r--devel/libffi/patches/patch-aj35
2 files changed, 37 insertions, 1 deletions
diff --git a/devel/libffi/distinfo b/devel/libffi/distinfo
index 73c05be621d..bd68e55271a 100644
--- a/devel/libffi/distinfo
+++ b/devel/libffi/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.16 2010/03/30 10:17:25 wiz Exp $
+$NetBSD: distinfo,v 1.17 2010/07/22 04:17:44 jklos Exp $
SHA1 (libffi-3.0.9.tar.gz) = 56e41f87780e09d06d279690e53d4ea2c371ea88
RMD160 (libffi-3.0.9.tar.gz) = 11ff9aeb62f4fbe1fecf09e6f9814a72bfedb37a
@@ -12,3 +12,4 @@ SHA1 (patch-af) = 953646a2eb653fe2ebfabe369f397d39c4c398b2
SHA1 (patch-ag) = 6333317170f6e92f89db966315276dcd8e3484f2
SHA1 (patch-ah) = e9580069ede90cd616da7bc230b28acbf5d204a6
SHA1 (patch-ai) = f85a6cb64d4a9d7c3e56b47b7092fce10a744b5b
+SHA1 (patch-aj) = cd8369bef0149ed044ef16c0eae7b537b4090f1f
diff --git a/devel/libffi/patches/patch-aj b/devel/libffi/patches/patch-aj
new file mode 100644
index 00000000000..00c1caa5188
--- /dev/null
+++ b/devel/libffi/patches/patch-aj
@@ -0,0 +1,35 @@
+$NetBSD: patch-aj,v 1.3 2010/07/22 04:17:44 jklos Exp $
+
+--- src/m68k/ffi.c.orig 2009-12-29 15:22:26.000000000 +0000
++++ src/m68k/ffi.c
+@@ -9,8 +9,13 @@
+
+ #include <stdlib.h>
+ #include <unistd.h>
+-#include <sys/syscall.h>
+-#include <asm/cachectl.h>
++#if !defined(__NetBSD__)
++ #include <sys/syscall.h>
++ #include <asm/cachectl.h>
++#else
++ #include <sys/types.h>
++ #include <m68k/sync_icache.h>
++#endif
+
+ void ffi_call_SYSV (extended_cif *,
+ unsigned, unsigned,
+@@ -266,8 +271,12 @@ ffi_prep_closure_loc (ffi_closure* closu
+ else
+ *(void **)(closure->tramp + 8) = ffi_closure_SYSV;
+
+- syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE,
+- FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE);
++ #if !defined(__NetBSD__)
++ syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE,
++ FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE);
++ #else
++ m68k_sync_icache(codeloc, FFI_TRAMPOLINE_SIZE);
++ #endif
+
+ closure->cif = cif;
+ closure->user_data = user_data;