Module Name: src
Committed By: joerg
Date: Fri Jun 16 21:22:14 UTC 2017
Modified Files:
src/lib/libc/compiler_rt: Makefile.inc
src/sys/external/bsd/compiler_rt/dist/lib/builtins: clear_cache.c
Log Message:
Implement __clear_cache using __syncicache on PPC
To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/lib/libc/compiler_rt/Makefile.inc
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/compiler_rt/Makefile.inc
diff -u src/lib/libc/compiler_rt/Makefile.inc:1.33 src/lib/libc/compiler_rt/Makefile.inc:1.34
--- src/lib/libc/compiler_rt/Makefile.inc:1.33 Fri May 26 22:56:50 2017
+++ src/lib/libc/compiler_rt/Makefile.inc Fri Jun 16 21:22:14 2017
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.33 2017/05/26 22:56:50 joerg Exp $
+# $NetBSD: Makefile.inc,v 1.34 2017/06/16 21:22:14 joerg Exp $
COMPILER_RT_SRCDIR= ${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist
@@ -242,6 +242,11 @@ GENERIC_SRCS+= \
clear_cache.c
.endif
+.if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
+GENERIC_SRCS+= \
+ clear_cache.c
+.endif
+
.if ${LIBC_MACHINE_ARCH} == "sparc" || ${LIBC_MACHINE_ARCH} == "sparc64"
GENERIC_SRCS+= \
clear_cache.c
Index: src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c
diff -u src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c:1.2 src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c:1.3
--- src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c:1.2 Wed May 24 21:45:40 2017
+++ src/sys/external/bsd/compiler_rt/dist/lib/builtins/clear_cache.c Fri Jun 16 21:22:14 2017
@@ -23,6 +23,10 @@
#include <machine/sysarch.h>
#endif
+#if defined(__NetBSD__) && defined(__ppc__)
+ #include <machine/cpu.h>
+#endif
+
#if defined(__mips__)
#include <sys/cachectl.h>
#include <sys/syscall.h>
@@ -154,6 +158,8 @@ void __clear_cache(void *start, void *en
for (; xstart < xend; xstart += 4) {
__asm __volatile("flush %0" :: "r" (xstart));
}
+#elif defined(__NetBSD__) && defined(__ppc__)
+ __syncicache(start, (uintptr_t)end - (uintptr_t)start);
#else
#if __APPLE__
/* On Darwin, sys_icache_invalidate() provides this functionality */