Module Name: src
Committed By: matt
Date: Thu Jan 23 19:28:47 UTC 2014
Modified Files:
src/sys/arch/arm/arm: cpufunc.c
Log Message:
For armv7, CPU_CONTROL_UNAL_ENABLE is MBO/SBPO.
Make sure CPU_CONTROL_EX_BEND is set for big endian kernels.
Don't clear bits we aren't setting.
To generate a diff of this commit:
cvs rdiff -u -r1.135 -r1.136 src/sys/arch/arm/arm/cpufunc.c
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.135 src/sys/arch/arm/arm/cpufunc.c:1.136
--- src/sys/arch/arm/arm/cpufunc.c:1.135 Tue Jan 21 19:05:10 2014
+++ src/sys/arch/arm/arm/cpufunc.c Thu Jan 23 19:28:47 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.c,v 1.135 2014/01/21 19:05:10 christos Exp $ */
+/* $NetBSD: cpufunc.c,v 1.136 2014/01/23 19:28:47 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.135 2014/01/21 19:05:10 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.136 2014/01/23 19:28:47 matt Exp $");
#include "opt_compat_netbsd.h"
#include "opt_cpuoptions.h"
@@ -3051,7 +3051,12 @@ armv7_setup(char *args)
{
int cpuctrl = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_IC_ENABLE
- | CPU_CONTROL_DC_ENABLE | CPU_CONTROL_BPRD_ENABLE ;
+ | CPU_CONTROL_DC_ENABLE | CPU_CONTROL_BPRD_ENABLE
+#ifdef __ARMEB__
+ | CPU_CONTROL_EX_BEND
+#endif
+ | CPU_CONTROL_UNAL_ENABLE;
+
#if 0
int cpuctrlmask = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_SYST_ENABLE
| CPU_CONTROL_IC_ENABLE | CPU_CONTROL_DC_ENABLE
@@ -3061,7 +3066,6 @@ armv7_setup(char *args)
#endif
#ifdef ARM32_DISABLE_ALIGNMENT_FAULTS
- cpuctrl |= CPU_CONTROL_UNAL_ENABLE;
#else
cpuctrl |= CPU_CONTROL_AFLT_ENABLE;
#endif
@@ -3078,7 +3082,7 @@ armv7_setup(char *args)
/* Set the control register */
curcpu()->ci_ctrl = cpuctrl;
- cpu_control(0xffffffff, cpuctrl);
+ cpu_control(cpuctrl, cpuctrl);
}
#endif /* CPU_CORTEX */