Module Name:    src
Committed By:   matt
Date:           Sun Aug 18 07:57:27 UTC 2013

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

Log Message:
Add a CPU_IS_ARMV7_P() macro (nonv7 evals to false, v7 only true, otherwise
cpu_armv7_p is checked (and is set by cpuconf for cortex and pj4b).


To generate a diff of this commit:
cvs rdiff -u -r1.124 -r1.125 src/sys/arch/arm/arm/cpufunc.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/include/locore.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.124 src/sys/arch/arm/arm/cpufunc.c:1.125
--- src/sys/arch/arm/arm/cpufunc.c:1.124	Sun Aug 18 06:50:31 2013
+++ src/sys/arch/arm/arm/cpufunc.c	Sun Aug 18 07:57:27 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.c,v 1.124 2013/08/18 06:50:31 matt Exp $	*/
+/*	$NetBSD: cpufunc.c,v 1.125 2013/08/18 07:57:27 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.124 2013/08/18 06:50:31 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.125 2013/08/18 07:57:27 matt Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_cpuoptions.h"
@@ -92,6 +92,10 @@ __KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 
 struct arm_pmc_funcs *arm_pmc;
 #endif
 
+#if defined(CPU_ARMV7) && (defined(CPU_ARMV6) || defined(CPU_PRE_ARMV6))
+bool cpu_armv7_p;
+#endif
+
 /* PRIMARY CACHE VARIABLES */
 #if (ARM_MMU_V6 + ARM_MMU_V7) != 0
 u_int	arm_cache_prefer_mask;
@@ -2062,6 +2066,9 @@ set_cpufuncs(void)
 	if (CPU_ID_CORTEX_P(cputype)) {
 		cpufuncs = cortex_cpufuncs;
 		cpu_do_powersave = 1;			/* Enable powersave */
+#if defined(CPU_ARMV6) || defined(CPU_PRE_ARMV6)
+		cpu_armv7_p = true;
+#endif
 		get_cachetype_cp15();
 		pmap_pte_init_armv7();
 		if (arm_cache_prefer_mask)
@@ -2083,6 +2090,9 @@ set_cpufuncs(void)
 	    cputype == CPU_ID_ARM_88SV581X_V7) &&
 	    (armreg_pfr0_read() & ARM_PFR0_THUMBEE_MASK)) {
 			cpufuncs = pj4bv7_cpufuncs;
+#if defined(CPU_ARMV6) || defined(CPU_PRE_ARMV6)
+			cpu_armv7_p = true;
+#endif
 			get_cachetype_cp15();
 			pmap_pte_init_armv7();
 			return 0;

Index: src/sys/arch/arm/include/locore.h
diff -u src/sys/arch/arm/include/locore.h:1.1 src/sys/arch/arm/include/locore.h:1.2
--- src/sys/arch/arm/include/locore.h:1.1	Sun Aug 18 04:32:40 2013
+++ src/sys/arch/arm/include/locore.h	Sun Aug 18 07:57:26 2013
@@ -48,17 +48,16 @@
 #ifndef _ARM_LOCORE_H_
 #define _ARM_LOCORE_H_
 
+#ifdef _KERNEL_OPT
+#include "opt_cpuoptions.h"
+#include "opt_cputypes.h"
+#endif
+
 #include <arm/cpuconf.h>
 #include <arm/armreg.h>
 
 #include <machine/frame.h>
 
-#ifndef _LOCORE
-/* 1 == use cpu_sleep(), 0 == don't */
-extern int cpu_do_powersave;
-extern int cpu_fpu_present;
-#endif
-
 #ifdef _LOCORE
 
 #if defined(_ARM_ARCH_6)
@@ -104,10 +103,6 @@ extern int cpu_fpu_present;
 #define IRQenable set_r15(R15_IRQ_DISABLE, 0);
 #endif
 
-#endif /* !_LOCORE */
-
-#ifndef _LOCORE
-
 /*
  * Validate a PC or PSR for a user process.  Used by various system calls
  * that take a context passed by the user and restore it.
@@ -150,6 +145,19 @@ void	arm32_vector_init(vaddr_t, int);
 void	cpu_attach(device_t, cpuid_t);
 #endif
 
+/* 1 == use cpu_sleep(), 0 == don't */
+extern int cpu_do_powersave;
+extern int cpu_fpu_present;
+
+#if !defined(CPU_ARMV7)
+#define	CPU_IS_ARMV7_P()		false
+#elif defined(CPU_ARMV6) || defined(CPU_PRE_ARMV6)
+extern bool cpu_armv7_p;
+#define	CPU_IS_ARMV7_P()		(cpu_armv7_p)
+#else
+#define	CPU_IS_ARMV7_P()		true
+#endif
+
 /*
  * Random cruft
  */

Reply via email to