summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorskrll <skrll@NetBSD.org>2014-07-27 21:31:34 +0000
committerskrll <skrll@NetBSD.org>2014-07-27 21:31:34 +0000
commitbb3f395e984d6cf3d66e55b1b2e9f140f3add3cb (patch)
treea267e35296ec3804533b843b89bbc082eb531526 /sys
parent7efcd2c792794f822fd2421cce25be8a0637a462 (diff)
More fixes as a step towards ARM_MMU_EXTENDED on RPI.
- don't set CPU_CONTROL_SYST_ENABLE in arm11x6_setup for ARM_MMU_EXTENDED - Use the new MMU defines for V6N - pull in arm/cpuconf.h in vmparam s that VM_MAXUSER_ADDRESS gets set correctly.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/arm/arm/cpufunc.c7
-rw-r--r--sys/arch/arm/include/arm32/pmap.h12
-rw-r--r--sys/arch/arm/include/arm32/vmparam.h3
3 files changed, 15 insertions, 7 deletions
diff --git a/sys/arch/arm/arm/cpufunc.c b/sys/arch/arm/arm/cpufunc.c
index d372b2fc84e..d3aae786d36 100644
--- a/sys/arch/arm/arm/cpufunc.c
+++ b/sys/arch/arm/arm/cpufunc.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.c,v 1.147 2014/04/18 23:50:59 christos Exp $ */
+/* $NetBSD: cpufunc.c,v 1.148 2014/07/27 21:31:34 skrll 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.147 2014/04/18 23:50:59 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.148 2014/07/27 21:31:34 skrll Exp $");
#include "opt_compat_netbsd.h"
#include "opt_cpuoptions.h"
@@ -3153,10 +3153,11 @@ arm11x6_setup(char *args)
CPU_CONTROL_32BP_ENABLE |
CPU_CONTROL_32BD_ENABLE |
CPU_CONTROL_LABT_ENABLE |
- CPU_CONTROL_SYST_ENABLE |
CPU_CONTROL_UNAL_ENABLE |
#ifdef ARM_MMU_EXTENDED
CPU_CONTROL_XP_ENABLE |
+#else
+ CPU_CONTROL_SYST_ENABLE |
#endif
CPU_CONTROL_IC_ENABLE;
diff --git a/sys/arch/arm/include/arm32/pmap.h b/sys/arch/arm/include/arm32/pmap.h
index b343690b0e6..0008a5d62a8 100644
--- a/sys/arch/arm/include/arm32/pmap.h
+++ b/sys/arch/arm/include/arm32/pmap.h
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.133 2014/06/15 03:27:46 ozaki-r Exp $ */
+/* $NetBSD: pmap.h,v 1.134 2014/07/27 21:31:34 skrll Exp $ */
/*
* Copyright (c) 2002, 2003 Wasabi Systems, Inc.
@@ -739,6 +739,7 @@ extern void (*pmap_zero_page_func)(paddr_t);
#define L1_S_CACHE_MASK_generic (L1_S_B|L1_S_C)
#define L1_S_CACHE_MASK_xscale (L1_S_B|L1_S_C|L1_S_XS_TEX(TEX_XSCALE_X))
#define L1_S_CACHE_MASK_armv6 (L1_S_B|L1_S_C|L1_S_XS_TEX(TEX_ARMV6_TEX))
+#define L1_S_CACHE_MASK_armv6n (L1_S_B|L1_S_C|L1_S_XS_TEX(TEX_ARMV6_TEX)|L1_S_V6_S)
#define L1_S_CACHE_MASK_armv7 (L1_S_B|L1_S_C|L1_S_XS_TEX(TEX_ARMV6_TEX)|L1_S_V6_S)
#define L2_L_PROT_U_generic (L2_AP(AP_U))
@@ -764,6 +765,7 @@ extern void (*pmap_zero_page_func)(paddr_t);
#define L2_L_CACHE_MASK_generic (L2_B|L2_C)
#define L2_L_CACHE_MASK_xscale (L2_B|L2_C|L2_XS_L_TEX(TEX_XSCALE_X))
#define L2_L_CACHE_MASK_armv6 (L2_B|L2_C|L2_V6_L_TEX(TEX_ARMV6_TEX))
+#define L2_L_CACHE_MASK_armv6n (L2_B|L2_C|L2_V6_L_TEX(TEX_ARMV6_TEX)|L2_XS_S)
#define L2_L_CACHE_MASK_armv7 (L2_B|L2_C|L2_V6_L_TEX(TEX_ARMV6_TEX)|L2_XS_S)
#define L2_S_PROT_U_generic (L2_AP(AP_U))
@@ -822,7 +824,11 @@ extern void (*pmap_zero_page_func)(paddr_t);
#else
#define L2_S_PROTO_armv6c (L2_TYPE_S) /* XP=0, subpage APs */
#endif
+#ifdef ARM_MMU_EXTENDED
+#define L2_S_PROTO_armv6n (L2_TYPE_S|L2_XS_XN)
+#else
#define L2_S_PROTO_armv6n (L2_TYPE_S) /* with XP=1 */
+#endif
#ifdef ARM_MMU_EXTENDED
#define L2_S_PROTO_armv7 (L2_TYPE_S|L2_XS_XN)
#else
@@ -904,8 +910,8 @@ extern void (*pmap_zero_page_func)(paddr_t);
#define L2_L_PROT_RO L2_L_PROT_RO_armv6n
#define L2_L_PROT_MASK L2_L_PROT_MASK_armv6n
-#define L1_S_CACHE_MASK L1_S_CACHE_MASK_armv6
-#define L2_L_CACHE_MASK L2_L_CACHE_MASK_armv6
+#define L1_S_CACHE_MASK L1_S_CACHE_MASK_armv6n
+#define L2_L_CACHE_MASK L2_L_CACHE_MASK_armv6n
#define L2_S_CACHE_MASK L2_S_CACHE_MASK_armv6n
/* These prototypes make writeable mappings, while the other MMU types
diff --git a/sys/arch/arm/include/arm32/vmparam.h b/sys/arch/arm/include/arm32/vmparam.h
index 111684e4191..531f5633ba0 100644
--- a/sys/arch/arm/include/arm32/vmparam.h
+++ b/sys/arch/arm/include/arm32/vmparam.h
@@ -1,4 +1,4 @@
-/* $NetBSD: vmparam.h,v 1.34 2014/03/31 01:48:37 matt Exp $ */
+/* $NetBSD: vmparam.h,v 1.35 2014/07/27 21:31:34 skrll Exp $ */
/*
* Copyright (c) 2001, 2002 Wasabi Systems, Inc.
@@ -44,6 +44,7 @@
* Virtual Memory parameters common to all arm32 platforms.
*/
+#include <arm/cpuconf.h>
#include <arm/arm32/pte.h> /* pt_entry_t */
#define USRSTACK VM_MAXUSER_ADDRESS