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 */

Reply via email to