On Sun, Jan 31, 2016 at 06:19:59PM +1100, Jonathan Gray wrote:
> The AP bits are the same place as in the small descriptor second level
> format.
> 
> Expanded version of a diff from Patrick.

Looks good to me, works for me.

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