The AP bits are the same place as in the small descriptor second level
format.

Expanded version of a diff from Patrick.

Index: arm/pmap.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/pmap.c,v
retrieving revision 1.57
diff -u -p -r1.57 pmap.c
--- arm/pmap.c  31 Jan 2016 00:14:50 -0000      1.57
+++ arm/pmap.c  31 Jan 2016 07:08:56 -0000
@@ -4361,6 +4361,12 @@ pt_entry_t       pte_l1_s_prot_kr;
 pt_entry_t     pte_l1_s_prot_kw;
 pt_entry_t     pte_l1_s_prot_mask;
 
+pt_entry_t     pte_l2_l_prot_ur;
+pt_entry_t     pte_l2_l_prot_uw;
+pt_entry_t     pte_l2_l_prot_kr;
+pt_entry_t     pte_l2_l_prot_kw;
+pt_entry_t     pte_l2_l_prot_mask;
+
 pt_entry_t     pte_l2_s_prot_ur;
 pt_entry_t     pte_l2_s_prot_uw;
 pt_entry_t     pte_l2_s_prot_kr;
@@ -4413,6 +4419,12 @@ pmap_pte_init_generic(void)
        pte_l1_s_prot_kw = L1_S_PROT_KW_generic;
        pte_l1_s_prot_mask = L1_S_PROT_MASK_generic;
 
+       pte_l2_l_prot_ur = L2_L_PROT_UR_generic;
+       pte_l2_l_prot_uw = L2_L_PROT_UW_generic;
+       pte_l2_l_prot_kr = L2_L_PROT_KR_generic;
+       pte_l2_l_prot_kw = L2_L_PROT_KW_generic;
+       pte_l2_l_prot_mask = L2_L_PROT_MASK_generic;
+
        pte_l2_s_prot_ur = L2_S_PROT_UR_generic;
        pte_l2_s_prot_uw = L2_S_PROT_UW_generic;
        pte_l2_s_prot_kr = L2_S_PROT_KR_generic;
@@ -4542,6 +4554,12 @@ pmap_pte_init_armv7(void)
        pte_l1_s_prot_kw = L1_S_PROT_KW_v7;
        pte_l1_s_prot_mask = L1_S_PROT_MASK_v7;
 
+       pte_l2_l_prot_ur = L2_L_PROT_UR_v7;
+       pte_l2_l_prot_uw = L2_L_PROT_UW_v7;
+       pte_l2_l_prot_kr = L2_L_PROT_KR_v7;
+       pte_l2_l_prot_kw = L2_L_PROT_KW_v7;
+       pte_l2_l_prot_mask = L2_L_PROT_MASK_v7;
+
        pte_l2_s_prot_ur = L2_S_PROT_UR_v7;
        pte_l2_s_prot_uw = L2_S_PROT_UW_v7;
        pte_l2_s_prot_kr = L2_S_PROT_KR_v7;
@@ -4679,6 +4697,12 @@ pmap_pte_init_xscale(void)
        pte_l1_s_prot_kr = L1_S_PROT_KR_xscale;
        pte_l1_s_prot_kw = L1_S_PROT_KW_xscale;
        pte_l1_s_prot_mask = L1_S_PROT_MASK_xscale;
+
+       pte_l2_l_prot_ur = L2_L_PROT_UR_xscale;
+       pte_l2_l_prot_uw = L2_L_PROT_UW_xscale;
+       pte_l2_l_prot_kr = L2_L_PROT_KR_xscale;
+       pte_l2_l_prot_kw = L2_L_PROT_KW_xscale;
+       pte_l2_l_prot_mask = L2_L_PROT_MASK_xscale;
 
        pte_l2_s_prot_ur = L2_S_PROT_UR_xscale;
        pte_l2_s_prot_uw = L2_S_PROT_UW_xscale;
Index: arm/pmap7.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/pmap7.c,v
retrieving revision 1.22
diff -u -p -r1.22 pmap7.c
--- arm/pmap7.c 31 Jan 2016 00:14:50 -0000      1.22
+++ arm/pmap7.c 31 Jan 2016 07:08:57 -0000
@@ -3337,6 +3337,12 @@ pt_entry_t       pte_l1_s_prot_kr;
 pt_entry_t     pte_l1_s_prot_kw;
 pt_entry_t     pte_l1_s_prot_mask;
 
+pt_entry_t     pte_l2_l_prot_ur;
+pt_entry_t     pte_l2_l_prot_uw;
+pt_entry_t     pte_l2_l_prot_kr;
+pt_entry_t     pte_l2_l_prot_kw;
+pt_entry_t     pte_l2_l_prot_mask;
+
 pt_entry_t     pte_l2_s_prot_ur;
 pt_entry_t     pte_l2_s_prot_uw;
 pt_entry_t     pte_l2_s_prot_kr;
@@ -3388,6 +3394,12 @@ pmap_pte_init_generic(void)
        pte_l1_s_prot_kw = L1_S_PROT_KW_generic;
        pte_l1_s_prot_mask = L1_S_PROT_MASK_generic;
 
+       pte_l2_l_prot_ur = L2_L_PROT_UR_generic;
+       pte_l2_l_prot_uw = L2_L_PROT_UW_generic;
+       pte_l2_l_prot_kr = L2_L_PROT_KR_generic;
+       pte_l2_l_prot_kw = L2_L_PROT_KW_generic;
+       pte_l2_l_prot_mask = L2_L_PROT_MASK_generic;
+
        pte_l2_s_prot_ur = L2_S_PROT_UR_generic;
        pte_l2_s_prot_uw = L2_S_PROT_UW_generic;
        pte_l2_s_prot_kr = L2_S_PROT_KR_generic;
@@ -3436,6 +3448,12 @@ pmap_pte_init_armv7(void)
        pte_l1_s_prot_kr = L1_S_PROT_KR_v7;
        pte_l1_s_prot_kw = L1_S_PROT_KW_v7;
        pte_l1_s_prot_mask = L1_S_PROT_MASK_v7;
+
+       pte_l2_l_prot_ur = L2_L_PROT_UR_v7;
+       pte_l2_l_prot_uw = L2_L_PROT_UW_v7;
+       pte_l2_l_prot_kr = L2_L_PROT_KR_v7;
+       pte_l2_l_prot_kw = L2_L_PROT_KW_v7;
+       pte_l2_l_prot_mask = L2_L_PROT_MASK_v7;
 
        pte_l2_s_prot_ur = L2_S_PROT_UR_v7;
        pte_l2_s_prot_uw = L2_S_PROT_UW_v7;
Index: include/pmap.h
===================================================================
RCS file: /cvs/src/sys/arch/arm/include/pmap.h,v
retrieving revision 1.34
diff -u -p -r1.34 pmap.h
--- include/pmap.h      15 Aug 2015 22:20:20 -0000      1.34
+++ include/pmap.h      31 Jan 2016 07:08:57 -0000
@@ -431,6 +431,12 @@ extern pt_entry_t          pte_l1_s_prot_kr;
 extern pt_entry_t              pte_l1_s_prot_kw;
 extern pt_entry_t              pte_l1_s_prot_mask;
 
+extern pt_entry_t              pte_l2_l_prot_ur;
+extern pt_entry_t              pte_l2_l_prot_uw;
+extern pt_entry_t              pte_l2_l_prot_kr;
+extern pt_entry_t              pte_l2_l_prot_kw;
+extern pt_entry_t              pte_l2_l_prot_mask;
+
 extern pt_entry_t              pte_l2_s_prot_ur;
 extern pt_entry_t              pte_l2_s_prot_uw;
 extern pt_entry_t              pte_l2_s_prot_kr;
@@ -487,11 +493,23 @@ extern void (*pmap_zero_page_func)(struc
 #define        L1_S_COHERENT_xscale    
(L1_S_B|L1_S_C|L1_S_XSCALE_TEX(TEX_XSCALE_X))
 #define        L1_S_COHERENT_v7        (L1_S_C|L1_S_V7_TEX_MASK)
 
-#define        L2_L_PROT_KR            (L2_AP(0))
-#define        L2_L_PROT_UR            (L2_AP(AP_U))
-#define        L2_L_PROT_KW            (L2_AP(AP_W))
-#define        L2_L_PROT_UW            (L2_AP(AP_U|AP_W))
-#define        L2_L_PROT_MASK          (L2_AP(AP_U|AP_W))
+#define        L2_L_PROT_KR_generic    (L2_AP(0))
+#define        L2_L_PROT_UR_generic    (L2_AP(AP_U))
+#define        L2_L_PROT_KW_generic    (L2_AP(AP_W))
+#define        L2_L_PROT_UW_generic    (L2_AP(AP_U|AP_W))
+#define        L2_L_PROT_MASK_generic  (L2_AP(AP_U|AP_W))
+
+#define        L2_L_PROT_KR_xscale     (L2_AP(0))
+#define        L2_L_PROT_UR_xscale     (L2_AP(AP_U))
+#define        L2_L_PROT_KW_xscale     (L2_AP(AP_W))
+#define        L2_L_PROT_UW_xscale     (L2_AP(AP_U|AP_W))
+#define        L2_L_PROT_MASK_xscale   (L2_AP(AP_U|AP_W))
+
+#define        L2_L_PROT_UR_v7         (L2_V7_AP(AP_KRWUR))
+#define        L2_L_PROT_UW_v7         (L2_V7_AP(AP_KRWURW))
+#define        L2_L_PROT_KR_v7         (L2_V7_AP(AP_V7_KR))
+#define        L2_L_PROT_KW_v7         (L2_V7_AP(AP_KRW))
+#define        L2_L_PROT_MASK_v7       (L2_V7_AP(0x07) | L2_V7_S_XN)
 
 #define        L2_L_CACHE_MASK_generic (L2_B|L2_C)
 #define        L2_L_CACHE_MASK_xscale  
(L2_B|L2_C|L2_XSCALE_L_TEX(TEX_XSCALE_X))
@@ -553,6 +571,12 @@ extern void (*pmap_zero_page_func)(struc
 #define        L1_S_PROT_KW            pte_l1_s_prot_kw
 #define        L1_S_PROT_MASK          pte_l1_s_prot_mask
 
+#define        L2_L_PROT_UR            pte_l2_l_prot_ur
+#define        L2_L_PROT_UW            pte_l2_l_prot_uw
+#define        L2_L_PROT_KR            pte_l2_l_prot_kr
+#define        L2_L_PROT_KW            pte_l2_l_prot_kw
+#define        L2_L_PROT_MASK          pte_l2_l_prot_mask
+
 #define        L2_S_PROT_UR            pte_l2_s_prot_ur
 #define        L2_S_PROT_UW            pte_l2_s_prot_uw
 #define        L2_S_PROT_KR            pte_l2_s_prot_kr
@@ -580,6 +604,12 @@ extern void (*pmap_zero_page_func)(struc
 #define        L1_S_PROT_KW            L1_S_PROT_KW_generic
 #define        L1_S_PROT_MASK          L1_S_PROT_MASK_generic
 
+#define        L2_L_PROT_UR            L2_L_PROT_UR_generic
+#define        L2_L_PROT_UW            L2_L_PROT_UW_generic
+#define        L2_L_PROT_KR            L2_L_PROT_KR_generic
+#define        L2_L_PROT_KW            L2_L_PROT_KW_generic
+#define        L2_L_PROT_MASK          L2_L_PROT_MASK_generic
+
 #define        L2_S_PROT_UR            L2_S_PROT_UR_generic
 #define        L2_S_PROT_UW            L2_S_PROT_UW_generic
 #define        L2_S_PROT_KR            L2_S_PROT_KR_generic
@@ -607,6 +637,12 @@ extern void (*pmap_zero_page_func)(struc
 #define        L1_S_PROT_KW            L1_S_PROT_KW_xscale
 #define        L1_S_PROT_MASK          L1_S_PROT_MASK_xscale
 
+#define        L2_L_PROT_UR            L2_L_PROT_UR_xscale
+#define        L2_L_PROT_UW            L2_L_PROT_UW_xscale
+#define        L2_L_PROT_KR            L2_L_PROT_KR_xscale
+#define        L2_L_PROT_KW            L2_L_PROT_KW_xscale
+#define        L2_L_PROT_MASK          L2_L_PROT_MASK_xscale
+
 #define        L2_S_PROT_UR            L2_S_PROT_UR_xscale
 #define        L2_S_PROT_UW            L2_S_PROT_UW_xscale
 #define        L2_S_PROT_KR            L2_S_PROT_KR_xscale
@@ -633,6 +669,12 @@ extern void (*pmap_zero_page_func)(struc
 #define        L1_S_PROT_KR            L1_S_PROT_KR_v7
 #define        L1_S_PROT_KW            L1_S_PROT_KW_v7
 #define        L1_S_PROT_MASK          L1_S_PROT_MASK_v7
+
+#define        L2_L_PROT_UR            L2_L_PROT_UR_v7
+#define        L2_L_PROT_UW            L2_L_PROT_UW_v7
+#define        L2_L_PROT_KR            L2_L_PROT_KR_v7
+#define        L2_L_PROT_KW            L2_L_PROT_KW_v7
+#define        L2_L_PROT_MASK          L2_L_PROT_MASK_v7
 
 #define        L2_S_PROT_UR            L2_S_PROT_UR_v7
 #define        L2_S_PROT_UW            L2_S_PROT_UW_v7

Reply via email to