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