Module Name:    src
Committed By:   matt
Date:           Sat Mar 29 23:44:37 UTC 2014

Modified Files:
        src/sys/arch/arm/arm: cpufunc.c
        src/sys/arch/arm/include: cpufunc.h

Log Message:
cortex doesn't need xscale_setup
use arm11_setttb for arm11x6.


To generate a diff of this commit:
cvs rdiff -u -r1.141 -r1.142 src/sys/arch/arm/arm/cpufunc.c
cvs rdiff -u -r1.69 -r1.70 src/sys/arch/arm/include/cpufunc.h

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.c
diff -u src/sys/arch/arm/arm/cpufunc.c:1.141 src/sys/arch/arm/arm/cpufunc.c:1.142
--- src/sys/arch/arm/arm/cpufunc.c:1.141	Fri Mar 28 21:49:22 2014
+++ src/sys/arch/arm/arm/cpufunc.c	Sat Mar 29 23:44:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.c,v 1.141 2014/03/28 21:49:22 matt Exp $	*/
+/*	$NetBSD: cpufunc.c,v 1.142 2014/03/29 23:44:37 matt Exp $	*/
 
 /*
  * arm7tdmi support code Copyright (c) 2001 John Fremlin
@@ -49,7 +49,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.141 2014/03/28 21:49:22 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.142 2014/03/29 23:44:37 matt Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_cpuoptions.h"
@@ -792,7 +792,7 @@ struct cpu_functions arm1136_cpufuncs = 
 
 	.cf_control		= cpufunc_control,
 	.cf_domains		= cpufunc_domains,
-	.cf_setttb		= arm11x6_setttb,
+	.cf_setttb		= arm11_setttb,
 	.cf_faultstatus		= cpufunc_faultstatus,
 	.cf_faultaddress	= cpufunc_faultaddress,
 
@@ -3138,8 +3138,7 @@ void
 arm11x6_setup(char *args)
 {
 	int cpuctrl, cpuctrl_wax;
-	uint32_t auxctrl, auxctrl_wax;
-	uint32_t tmp, tmp2;
+	uint32_t auxctrl;
 	uint32_t sbz=0;
 	uint32_t cpuid;
 
@@ -3183,8 +3182,7 @@ arm11x6_setup(char *args)
 		cpuctrl |= CPU_CONTROL_VECRELOC;
 #endif
 
-	auxctrl = 0;
-	auxctrl_wax = ~0;
+	auxctrl = armreg_auxctl_read();
 	/*
 	 * This options enables the workaround for the 364296 ARM1136
 	 * r0pX errata (possible cache data corruption with
@@ -3196,16 +3194,14 @@ arm11x6_setup(char *args)
 	 */
 	if ((cpuid & CPU_ID_CPU_MASK) == CPU_ID_ARM1136JS) { /* ARM1136JSr0pX */
 		cpuctrl |= CPU_CONTROL_FI_ENABLE;
-		auxctrl = ARM1136_AUXCTL_PFI;
-		auxctrl_wax = ~ARM1136_AUXCTL_PFI;
+		auxctrl |= ARM1136_AUXCTL_PFI;
 	}
 
 	/*
 	 * Enable an errata workaround
 	 */
 	if ((cpuid & CPU_ID_CPU_MASK) == CPU_ID_ARM1176JZS) { /* ARM1176JZSr0 */
-		auxctrl = ARM1176_AUXCTL_PHD;
-		auxctrl_wax = ~ARM1176_AUXCTL_PHD;
+		auxctrl |= ARM1176_AUXCTL_PHD;
 	}
 
 	/* Clear out the cache */
@@ -3221,13 +3217,8 @@ arm11x6_setup(char *args)
 	curcpu()->ci_ctrl = cpuctrl;
 	cpu_control(~cpuctrl_wax, cpuctrl);
 
-	__asm volatile ("mrc	p15, 0, %0, c1, c0, 1\n\t"
-			"and	%1, %0, %2\n\t"
-			"orr	%1, %1, %3\n\t"
-			"teq	%0, %1\n\t"
-			"mcrne	p15, 0, %1, c1, c0, 1\n\t"
-			: "=r"(tmp), "=r"(tmp2) :
-			  "r"(auxctrl_wax), "r"(auxctrl));
+	/* Update auxctlr */
+	armreg_auxctl_write(auxctrl);
 
 	/* And again. */
 	cpu_idcache_wbinv_all();
@@ -3468,7 +3459,7 @@ ixp12x0_setup(char *args)
 #endif /* CPU_IXP12X0 */
 
 #if defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
-    defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425) || defined(CPU_CORTEX)
+    defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425)
 struct cpu_option xscale_options[] = {
 #ifdef COMPAT_12
 	{ "branchpredict", 	BIC, OR,  CPU_CONTROL_BPRD_ENABLE },

Index: src/sys/arch/arm/include/cpufunc.h
diff -u src/sys/arch/arm/include/cpufunc.h:1.69 src/sys/arch/arm/include/cpufunc.h:1.70
--- src/sys/arch/arm/include/cpufunc.h:1.69	Fri Mar 28 21:47:48 2014
+++ src/sys/arch/arm/include/cpufunc.h	Sat Mar 29 23:44:37 2014
@@ -501,7 +501,7 @@ void	armv7_setup(char *string);
 #endif
 
 #if defined(CPU_CORTEX) || defined(CPU_PJ4B)
-void 	armv7_dcache_wbinv_all (void);
+void 	armv7_dcache_wbinv_all(void);
 void	armv7_idcache_wbinv_all(void);
 #endif
 
@@ -534,7 +534,6 @@ void	pj4b_config(void);
 #endif /* CPU_PJ4B */
 
 #if defined(CPU_ARM1136) || defined(CPU_ARM1176)
-void	arm11x6_setttb			(u_int, bool);
 void	arm11x6_idcache_wbinv_all	(void);
 void	arm11x6_dcache_wbinv_all	(void);
 void	arm11x6_icache_sync_all		(void);
@@ -554,7 +553,7 @@ void	arm1136_sleep_rev0		(int);	/* for e
     defined(CPU_FA526) || \
     defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
     defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425) || \
-    defined(CPU_CORTEX) || defined(CPU_SHEEVA)
+    defined(CPU_SHEEVA)
 
 void	armv4_tlb_flushID	(void);
 void	armv4_tlb_flushI	(void);
@@ -571,8 +570,7 @@ void	ixp12x0_setup		(char *);
 #endif
 
 #if defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
-    defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425) || \
-    defined(CPU_CORTEX)
+    defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425)
 
 void	xscale_cpwait		(void);
 #define	cpu_cpwait()		cpufuncs.cf_cpwait()
@@ -612,7 +610,7 @@ void	xscale_cache_flushD_rng	(vaddr_t, v
 void	xscale_context_switch	(u_int);
 
 void	xscale_setup		(char *);
-#endif	/* CPU_XSCALE_80200 || CPU_XSCALE_80321 || __CPU_XSCALE_PXA2XX || CPU_XSCALE_IXP425 || CPU_CORTEX */
+#endif	/* CPU_XSCALE_80200 || CPU_XSCALE_80321 || __CPU_XSCALE_PXA2XX || CPU_XSCALE_IXP425 */
 
 #if defined(CPU_SHEEVA)
 void	sheeva_dcache_wbinv_range (vaddr_t, vsize_t);

Reply via email to