Module Name: src Committed By: matt Date: Mon Mar 3 08:15:36 UTC 2014
Modified Files: src/sys/arch/arm/arm32: arm32_machdep.c cpu.c src/sys/arch/arm/include: locore.h Log Message: Add most of the cpu_* variables to <arm/locore.h> Add and initialize cpu_synchprim_present To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/sys/arch/arm/arm32/arm32_machdep.c \ src/sys/arch/arm/arm32/cpu.c cvs rdiff -u -r1.13 -r1.14 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/arm32/arm32_machdep.c diff -u src/sys/arch/arm/arm32/arm32_machdep.c:1.100 src/sys/arch/arm/arm32/arm32_machdep.c:1.101 --- src/sys/arch/arm/arm32/arm32_machdep.c:1.100 Tue Feb 25 18:30:08 2014 +++ src/sys/arch/arm/arm32/arm32_machdep.c Mon Mar 3 08:15:36 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: arm32_machdep.c,v 1.100 2014/02/25 18:30:08 pooka Exp $ */ +/* $NetBSD: arm32_machdep.c,v 1.101 2014/03/03 08:15:36 matt Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.100 2014/02/25 18:30:08 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.101 2014/03/03 08:15:36 matt Exp $"); #include "opt_modular.h" #include "opt_md.h" @@ -106,6 +106,7 @@ int cpu_neon_present; int cpu_simd_present; int cpu_simdex_present; int cpu_umull_present; +int cpu_synchprim_present; const char *cpu_arch = ""; int cpu_instruction_set_attributes[6]; @@ -491,6 +492,11 @@ SYSCTL_SETUP(sysctl_machdep_setup, "sysc NULL, 0, &cpu_simdex_present, 0, CTL_MACHDEP, CTL_CREATE, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, + CTLFLAG_PERMANENT|CTLFLAG_READONLY, + CTLTYPE_INT, "synchprim_present", NULL, + NULL, 0, &cpu_synchprim_present, 0, + CTL_MACHDEP, CTL_CREATE, CTL_EOL); + sysctl_createv(clog, 0, NULL, NULL, CTLFLAG_PERMANENT|CTLFLAG_READWRITE, CTLTYPE_INT, "printfataltraps", NULL, NULL, 0, &cpu_printfataltraps, 0, @@ -679,6 +685,9 @@ cpu_boot_secondary_processors(void) { uint32_t mbox; kcpuset_export_u32(kcpuset_attached, &mbox, sizeof(mbox)); +#ifdef VERBOSE_ARM_INIT + printf("%s: writing mbox with %#x\n", __func__, mbox); +#endif atomic_swap_32(&arm_cpu_mbox, mbox); membar_producer(); #ifdef _ARM_ARCH_7 Index: src/sys/arch/arm/arm32/cpu.c diff -u src/sys/arch/arm/arm32/cpu.c:1.100 src/sys/arch/arm/arm32/cpu.c:1.101 --- src/sys/arch/arm/arm32/cpu.c:1.100 Thu Feb 20 23:24:55 2014 +++ src/sys/arch/arm/arm32/cpu.c Mon Mar 3 08:15:36 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.100 2014/02/20 23:24:55 matt Exp $ */ +/* $NetBSD: cpu.c,v 1.101 2014/03/03 08:15:36 matt Exp $ */ /* * Copyright (c) 1995 Mark Brinicombe. @@ -46,7 +46,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.100 2014/02/20 23:24:55 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.101 2014/03/03 08:15:36 matt Exp $"); #include <sys/systm.h> #include <sys/conf.h> @@ -67,7 +67,7 @@ extern const char *cpu_arch; volatile u_int arm_cpu_hatched = 0; u_int arm_cpu_max = 0; uint32_t arm_cpu_mbox __cacheline_aligned = 0; -uint32_t arm_cpu_marker __cacheline_aligned = 1; +uint32_t arm_cpu_marker[2] __cacheline_aligned = { 0, 0 }; #endif /* Prototypes */ @@ -784,6 +784,9 @@ identify_features(device_t dv) ((cpu_instruction_set_attributes[3] >> 4) & 0x0f) >= 3; cpu_simdex_present = cpu_simd_present && ((cpu_instruction_set_attributes[1] >> 12) & 0x0f) >= 2; + cpu_synchprim_present = + ((cpu_instruction_set_attributes[3] >> 8) & 0xf0) + | ((cpu_instruction_set_attributes[4] >> 20) & 0x0f); cpu_memory_model_features[0] = armreg_mmfr0_read(); cpu_memory_model_features[1] = armreg_mmfr1_read(); Index: src/sys/arch/arm/include/locore.h diff -u src/sys/arch/arm/include/locore.h:1.13 src/sys/arch/arm/include/locore.h:1.14 --- src/sys/arch/arm/include/locore.h:1.13 Wed Feb 26 01:54:35 2014 +++ src/sys/arch/arm/include/locore.h Mon Mar 3 08:15:36 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.h,v 1.13 2014/02/26 01:54:35 matt Exp $ */ +/* $NetBSD: locore.h,v 1.14 2014/03/03 08:15:36 matt Exp $ */ /* * Copyright (c) 1994-1996 Mark Brinicombe. @@ -148,10 +148,20 @@ void cpu_attach(device_t, cpuid_t); #endif /* 1 == use cpu_sleep(), 0 == don't */ -extern int cpu_printfataltraps; extern int cpu_do_powersave; +extern int cpu_printfataltraps; extern int cpu_fpu_present; extern int cpu_hwdiv_present; +extern int cpu_neon_present; +extern int cpu_simd_present; +extern int cpu_simdex_present; +extern int cpu_umull_present; +extern int cpu_synchprim_present; + +extern int cpu_instruction_set_attributes[6]; +extern int cpu_memory_model_features[4]; +extern int cpu_processor_features[2]; +extern int cpu_media_and_vfp_features[2]; extern u_int arm_cpu_max;