Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  arch/arm/include/asm/pgtable-2level-hwdef.h
0004  *
0005  *  Copyright (C) 1995-2002 Russell King
0006  */
0007 #ifndef _ASM_PGTABLE_2LEVEL_HWDEF_H
0008 #define _ASM_PGTABLE_2LEVEL_HWDEF_H
0009 
0010 /*
0011  * Hardware page table definitions.
0012  *
0013  * + Level 1 descriptor (PMD)
0014  *   - common
0015  */
0016 #define PMD_TYPE_MASK       (_AT(pmdval_t, 3) << 0)
0017 #define PMD_TYPE_FAULT      (_AT(pmdval_t, 0) << 0)
0018 #define PMD_TYPE_TABLE      (_AT(pmdval_t, 1) << 0)
0019 #define PMD_TYPE_SECT       (_AT(pmdval_t, 2) << 0)
0020 #define PMD_PXNTABLE        (_AT(pmdval_t, 1) << 2)     /* v7 */
0021 #define PMD_BIT4        (_AT(pmdval_t, 1) << 4)
0022 #define PMD_DOMAIN(x)       (_AT(pmdval_t, (x)) << 5)
0023 #define PMD_DOMAIN_MASK     PMD_DOMAIN(0x0f)
0024 #define PMD_PROTECTION      (_AT(pmdval_t, 1) << 9)     /* v5 */
0025 /*
0026  *   - section
0027  */
0028 #define PMD_SECT_PXN    (_AT(pmdval_t, 1) << 0)     /* v7 */
0029 #define PMD_SECT_BUFFERABLE (_AT(pmdval_t, 1) << 2)
0030 #define PMD_SECT_CACHEABLE  (_AT(pmdval_t, 1) << 3)
0031 #define PMD_SECT_XN     (_AT(pmdval_t, 1) << 4)     /* v6 */
0032 #define PMD_SECT_AP_WRITE   (_AT(pmdval_t, 1) << 10)
0033 #define PMD_SECT_AP_READ    (_AT(pmdval_t, 1) << 11)
0034 #define PMD_SECT_TEX(x)     (_AT(pmdval_t, (x)) << 12)  /* v5 */
0035 #define PMD_SECT_APX        (_AT(pmdval_t, 1) << 15)    /* v6 */
0036 #define PMD_SECT_S      (_AT(pmdval_t, 1) << 16)    /* v6 */
0037 #define PMD_SECT_nG     (_AT(pmdval_t, 1) << 17)    /* v6 */
0038 #define PMD_SECT_SUPER      (_AT(pmdval_t, 1) << 18)    /* v6 */
0039 #define PMD_SECT_AF     (_AT(pmdval_t, 0))
0040 
0041 #define PMD_SECT_UNCACHED   (_AT(pmdval_t, 0))
0042 #define PMD_SECT_BUFFERED   (PMD_SECT_BUFFERABLE)
0043 #define PMD_SECT_WT     (PMD_SECT_CACHEABLE)
0044 #define PMD_SECT_WB     (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
0045 #define PMD_SECT_MINICACHE  (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
0046 #define PMD_SECT_WBWA       (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
0047 #define PMD_SECT_CACHE_MASK (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
0048 #define PMD_SECT_NONSHARED_DEV  (PMD_SECT_TEX(2))
0049 
0050 /*
0051  *   - coarse table (not used)
0052  */
0053 
0054 /*
0055  * + Level 2 descriptor (PTE)
0056  *   - common
0057  */
0058 #define PTE_TYPE_MASK       (_AT(pteval_t, 3) << 0)
0059 #define PTE_TYPE_FAULT      (_AT(pteval_t, 0) << 0)
0060 #define PTE_TYPE_LARGE      (_AT(pteval_t, 1) << 0)
0061 #define PTE_TYPE_SMALL      (_AT(pteval_t, 2) << 0)
0062 #define PTE_TYPE_EXT        (_AT(pteval_t, 3) << 0)     /* v5 */
0063 #define PTE_BUFFERABLE      (_AT(pteval_t, 1) << 2)
0064 #define PTE_CACHEABLE       (_AT(pteval_t, 1) << 3)
0065 
0066 /*
0067  *   - extended small page/tiny page
0068  */
0069 #define PTE_EXT_XN      (_AT(pteval_t, 1) << 0)     /* v6 */
0070 #define PTE_EXT_AP_MASK     (_AT(pteval_t, 3) << 4)
0071 #define PTE_EXT_AP0     (_AT(pteval_t, 1) << 4)
0072 #define PTE_EXT_AP1     (_AT(pteval_t, 2) << 4)
0073 #define PTE_EXT_AP_UNO_SRO  (_AT(pteval_t, 0) << 4)
0074 #define PTE_EXT_AP_UNO_SRW  (PTE_EXT_AP0)
0075 #define PTE_EXT_AP_URO_SRW  (PTE_EXT_AP1)
0076 #define PTE_EXT_AP_URW_SRW  (PTE_EXT_AP1|PTE_EXT_AP0)
0077 #define PTE_EXT_TEX(x)      (_AT(pteval_t, (x)) << 6)   /* v5 */
0078 #define PTE_EXT_APX     (_AT(pteval_t, 1) << 9)     /* v6 */
0079 #define PTE_EXT_COHERENT    (_AT(pteval_t, 1) << 9)     /* XScale3 */
0080 #define PTE_EXT_SHARED      (_AT(pteval_t, 1) << 10)    /* v6 */
0081 #define PTE_EXT_NG      (_AT(pteval_t, 1) << 11)    /* v6 */
0082 
0083 /*
0084  *   - small page
0085  */
0086 #define PTE_SMALL_AP_MASK   (_AT(pteval_t, 0xff) << 4)
0087 #define PTE_SMALL_AP_UNO_SRO    (_AT(pteval_t, 0x00) << 4)
0088 #define PTE_SMALL_AP_UNO_SRW    (_AT(pteval_t, 0x55) << 4)
0089 #define PTE_SMALL_AP_URO_SRW    (_AT(pteval_t, 0xaa) << 4)
0090 #define PTE_SMALL_AP_URW_SRW    (_AT(pteval_t, 0xff) << 4)
0091 
0092 #define PHYS_MASK       (~0UL)
0093 
0094 #endif