Module Name:    src
Committed By:   skrll
Date:           Wed Jul 12 07:22:31 UTC 2017

Modified Files:
        src/sys/arch/arm/arm: cpufunc_asm_arm11x6.S
        src/sys/arch/arm/arm32: genassym.cf

Log Message:
In idcache_wbinv_range if the range size is bigger than the dcache size
then call idcache_wbinv_all

Avoids a problem with large ranges as seen in
port-evbarm/52169: setting dtrace module to load cause Pi to hang on boot


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/arm/arm32/genassym.cf

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S
diff -u src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S:1.7 src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S:1.8
--- src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S:1.7	Wed Jul 30 13:31:17 2014
+++ src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S	Wed Jul 12 07:22:31 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc_asm_arm11x6.S,v 1.7 2014/07/30 13:31:17 skrll Exp $	*/
+/*	$NetBSD: cpufunc_asm_arm11x6.S,v 1.8 2017/07/12 07:22:31 skrll Exp $	*/
 
 /*
  * Copyright (c) 2007 Microsoft
@@ -63,7 +63,7 @@
 #include <machine/asm.h>
 #include <arm/locore.h>
 
-RCSID("$NetBSD: cpufunc_asm_arm11x6.S,v 1.7 2014/07/30 13:31:17 skrll Exp $")
+RCSID("$NetBSD: cpufunc_asm_arm11x6.S,v 1.8 2017/07/12 07:22:31 skrll Exp $")
 
 #if 0
 #define Invalidate_I_cache(Rtmp1, Rtmp2) \
@@ -164,6 +164,11 @@ ENTRY_NP(arm11x6_icache_sync_range)
 END(arm11x6_icache_sync_range)
 
 ENTRY_NP(arm11x6_idcache_wbinv_range)
+	ldr	r2, .Larm_pcache
+	ldr	r2, [r2, #DCACHE_SIZE]
+	cmp	r1, r2
+	bge	arm11x6_idcache_wbinv_all
+
 	add	r1, r1, r0
 	sub	r1, r1, #1
 	/* Erratum ARM1136 371025, workaround #2 */
@@ -212,3 +217,6 @@ ENTRY_NP(arm11x6_sleep)
 	bne	1b
 	RET
 END(arm11x6_sleep)
+
+.Larm_pcache:
+	.word arm_pcache

Index: src/sys/arch/arm/arm32/genassym.cf
diff -u src/sys/arch/arm/arm32/genassym.cf:1.74 src/sys/arch/arm/arm32/genassym.cf:1.75
--- src/sys/arch/arm/arm32/genassym.cf:1.74	Tue Jun  9 08:09:24 2015
+++ src/sys/arch/arm/arm32/genassym.cf	Wed Jul 12 07:22:31 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.74 2015/06/09 08:09:24 skrll Exp $
+#	$NetBSD: genassym.cf,v 1.75 2017/07/12 07:22:31 skrll Exp $
 
 # Copyright (c) 1982, 1990 The Regents of the University of California.
 # All rights reserved.
@@ -251,3 +251,6 @@ define	M_DATA				offsetof(struct mbuf, m
 define	M_NEXT				offsetof(struct mbuf, m_next)
 define	IP_SRC				offsetof(struct ip, ip_src)
 define	IP_DST				offsetof(struct ip, ip_dst)
+
+# Cache information
+define	DCACHE_SIZE		offsetof(struct arm_cache_info, dcache_size)

Reply via email to