Changes in kernel/arch/arm32/include/cp15.h [eb1d9c1:7a38962] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/cp15.h
reb1d9c1 r7a38962 55 55 56 56 /* Identification registers */ 57 enum { 58 MIDR_IMPLEMENTER_MASK = 0xff, 59 MIDR_IMPLEMENTER_SHIFT = 24, 60 MIDR_VARIANT_MASK = 0xf, 61 MIDR_VARIANT_SHIFT = 20, 62 MIDR_ARCHITECTURE_MASK = 0xf, 63 MIDR_ARCHITECTURE_SHIFT = 16, 64 MIDR_PART_NUMBER_MASK = 0xfff, 65 MIDR_PART_NUMBER_SHIFT = 4, 66 MIDR_REVISION_MASK = 0xf, 67 MIDR_REVISION_SHIFT = 0, 68 }; 57 69 CONTROL_REG_GEN_READ(MIDR, c0, 0, c0, 0); 70 71 enum { 72 CTR_FORMAT_MASK = 0xe0000000, 73 CTR_FORMAT_ARMv7 = 0x80000000, 74 CTR_FORMAT_ARMv6 = 0x00000000, 75 /* ARMv7 format */ 76 CTR_CWG_MASK = 0xf, 77 CTR_CWG_SHIFT = 24, 78 CTR_ERG_MASK = 0xf, 79 CTR_ERG_SHIFT = 20, 80 CTR_D_MIN_LINE_MASK = 0xf, 81 CTR_D_MIN_LINE_SHIFT = 16, 82 CTR_I_MIN_LINE_MASK = 0xf, 83 CTR_I_MIN_LINE_SHIFT = 0, 84 CTR_L1I_POLICY_MASK = 0x0000c000, 85 CTR_L1I_POLICY_AIVIVT = 0x00004000, 86 CTR_L1I_POLICY_VIPT = 0x00008000, 87 CTR_L1I_POLICY_PIPT = 0x0000c000, 88 /* ARMv6 format */ 89 CTR_CTYPE_MASK = 0x1e000000, 90 CTR_CTYPE_WT = 0x00000000, 91 CTR_CTYPE_WB_NL = 0x04000000, 92 CTR_CTYPE_WB_D = 0x0a000000, 93 CTR_CTYPE_WB_A = 0x0c000000, /**< ARMv5- only */ 94 CTR_CTYPE_WB_B = 0x0e000000, /**< ARMv5- only */ 95 CTR_CTYPE_WB_C = 0x1c000000, 96 CTR_SEP_FLAG = 1 << 24, 97 CTR_DCACHE_P_FLAG = 1 << 23, 98 CTR_DCACHE_SIZE_MASK = 0xf, 99 CTR_DCACHE_SIZE_SHIFT = 18, 100 CTR_DCACHE_ASSOC_MASK = 0x7, 101 CTR_DCACHE_ASSOC_SHIFT = 15, 102 CTR_DCACHE_M_FLAG = 1 << 14, 103 CTR_DCACHE_LEN_MASK = 0x3, 104 CTR_DCACHE_LEN_SHIFT = 0, 105 CTR_ICACHE_P_FLAG = 1 << 11, 106 CTR_ICACHE_SIZE_MASK = 0xf, 107 CTR_ICACHE_SIZE_SHIFT = 6, 108 CTR_ICACHE_ASSOC_MASK = 0x7, 109 CTR_ICACHE_ASSOC_SHIFT = 3, 110 CTR_ICACHE_M_FLAG = 1 << 2, 111 CTR_ICACHE_LEN_MASK = 0x3, 112 CTR_ICACHE_LEN_SHIFT = 0, 113 }; 58 114 CONTROL_REG_GEN_READ(CTR, c0, 0, c0, 1); 59 115 CONTROL_REG_GEN_READ(TCMR, c0, 0, c0, 2); … … 104 160 CONTROL_REG_GEN_READ(ID_ISAR5, c0, 0, c2, 5); 105 161 162 enum { 163 CCSIDR_WT_FLAG = 1 << 31, 164 CCSIDR_WB_FLAG = 1 << 30, 165 CCSIDR_RA_FLAG = 1 << 29, 166 CCSIDR_WA_FLAG = 1 << 28, 167 CCSIDR_NUMSETS_MASK = 0x7fff, 168 CCSIDR_NUMSETS_SHIFT = 13, 169 CCSIDR_ASSOC_MASK = 0x3ff, 170 CCSIDR_ASSOC_SHIFT = 3, 171 CCSIDR_LINESIZE_MASK = 0x7, 172 CCSIDR_LINESIZE_SHIFT = 0, 173 }; 106 174 CONTROL_REG_GEN_READ(CCSIDR, c0, 1, c0, 0); 175 176 enum { 177 CLIDR_LOUU_MASK = 0x7, 178 CLIDR_LOUU_SHIFT = 27, 179 CLIDR_LOC_MASK = 0x7, 180 CLIDR_LOC_SHIFT = 24, 181 CLIDR_LOUIS_MASK = 0x7, 182 CLIDR_LOUIS_SHIFT = 21, 183 CLIDR_NOCACHE = 0x0, 184 CLIDR_ICACHE_ONLY = 0x1, 185 CLIDR_DCACHE_ONLY = 0x2, 186 CLIDR_SEP_CACHE = 0x3, 187 CLIDR_UNI_CACHE = 0x4, 188 CLIDR_CACHE_MASK = 0x7, 189 #define CLIDR_CACHE(level, val) ((val >> (level - 1) * 3) & CLIDR_CACHE_MASK) 190 }; 107 191 CONTROL_REG_GEN_READ(CLIDR, c0, 1, c0, 1); 108 192 CONTROL_REG_GEN_READ(AIDR, c0, 1, c0, 7); /* Implementation defined or MIDR */ 109 193 194 enum { 195 CCSELR_LEVEL_MASK = 0x7, 196 CCSELR_LEVEL_SHIFT = 1, 197 CCSELR_INSTRUCTION_FLAG = 1 << 0, 198 }; 110 199 CONTROL_REG_GEN_READ(CSSELR, c0, 2, c0, 0); 111 200 CONTROL_REG_GEN_WRITE(CSSELR, c0, 2, c0, 0); … … 116 205 117 206 /* System control registers */ 207 /* COntrol register bit values see ch. B4.1.130 of ARM Architecture Reference 208 * Manual ARMv7-A and ARMv7-R edition, page 1687 */ 209 enum { 210 SCTLR_MMU_EN_FLAG = 1 << 0, 211 SCTLR_ALIGN_CHECK_EN_FLAG = 1 << 1, /* Allow alignemnt check */ 212 SCTLR_CACHE_EN_FLAG = 1 << 2, 213 SCTLR_CP15_BARRIER_EN_FLAG = 1 << 5, 214 SCTLR_B_EN_FLAG = 1 << 7, /* ARMv6-, big endian switch */ 215 SCTLR_SWAP_EN_FLAG = 1 << 10, 216 SCTLR_BRANCH_PREDICT_EN_FLAG = 1 << 11, 217 SCTLR_INST_CACHE_EN_FLAG = 1 << 12, 218 SCTLR_HIGH_VECTORS_EN_FLAG = 1 << 13, 219 SCTLR_ROUND_ROBIN_EN_FLAG = 1 << 14, 220 SCTLR_HW_ACCESS_FLAG_EN_FLAG = 1 << 17, 221 SCTLR_WRITE_XN_EN_FLAG = 1 << 19, /* Only if virt. supported */ 222 SCTLR_USPCE_WRITE_XN_EN_FLAG = 1 << 20, /* Only if virt. supported */ 223 SCTLR_FAST_IRQ_EN_FLAG = 1 << 21, /* Disable impl. specific feat*/ 224 SCTLR_UNALIGNED_EN_FLAG = 1 << 22, /* Must be 1 on armv7 */ 225 SCTLR_IRQ_VECTORS_EN_FLAG = 1 << 24, 226 SCTLR_BIG_ENDIAN_EXC_FLAG = 1 << 25, 227 SCTLR_NMFI_EN_FLAG = 1 << 27, 228 SCTLR_TEX_REMAP_EN_FLAG = 1 << 28, 229 SCTLR_ACCESS_FLAG_EN_FLAG = 1 << 29, 230 SCTLR_THUMB_EXC_EN_FLAG = 1 << 30, 231 }; 118 232 CONTROL_REG_GEN_READ(SCTLR, c1, 0, c0, 0); 119 233 CONTROL_REG_GEN_WRITE(SCTLR, c1, 0, c0, 0); … … 302 416 CONTROL_REG_GEN_WRITE(TLBIALLNSNHS, c8, 4, c7, 4); 303 417 304 /* c9 are reserved */ 418 /* c9 are performance monitoring resgisters */ 419 enum { 420 PMCR_IMP_MASK = 0xff, 421 PMCR_IMP_SHIFT = 24, 422 PMCR_IDCODE_MASK = 0xff, 423 PMCR_IDCODE_SHIFT = 16, 424 PMCR_EVENT_NUM_MASK = 0x1f, 425 PMCR_EVENT_NUM_SHIFT = 11, 426 PMCR_DP_FLAG = 1 << 5, 427 PMCR_X_FLAG = 1 << 4, 428 PMCR_D_FLAG = 1 << 3, 429 PMCR_C_FLAG = 1 << 2, 430 PMCR_P_FLAG = 1 << 1, 431 PMCR_E_FLAG = 1 << 0, 432 }; 433 CONTROL_REG_GEN_READ(PMCR, c9, 0, c12, 0); 434 CONTROL_REG_GEN_WRITE(PMCR, c9, 0, c12, 0); 435 enum { 436 PMCNTENSET_CYCLE_COUNTER_EN_FLAG = 1 << 31, 437 #define PMCNTENSET_COUNTER_EN_FLAG(c) (1 << c) 438 }; 439 CONTROL_REG_GEN_READ(PMCNTENSET, c9, 0, c12, 1); 440 CONTROL_REG_GEN_WRITE(PMCNTENSET, c9, 0, c12, 1); 441 CONTROL_REG_GEN_READ(PMCCNTR, c9, 0, c13, 0); 442 CONTROL_REG_GEN_WRITE(PMCCNTR, c9, 0, c13, 0); 443 305 444 306 445 /*c10 has tons of reserved too */
Note:
See TracChangeset
for help on using the changeset viewer.