Changes in kernel/arch/arm32/include/cp15.h [7a38962:eb1d9c1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/cp15.h
r7a38962 reb1d9c1 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 };69 57 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 };114 58 CONTROL_REG_GEN_READ(CTR, c0, 0, c0, 1); 115 59 CONTROL_REG_GEN_READ(TCMR, c0, 0, c0, 2); … … 160 104 CONTROL_REG_GEN_READ(ID_ISAR5, c0, 0, c2, 5); 161 105 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 };174 106 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 };191 107 CONTROL_REG_GEN_READ(CLIDR, c0, 1, c0, 1); 192 108 CONTROL_REG_GEN_READ(AIDR, c0, 1, c0, 7); /* Implementation defined or MIDR */ 193 109 194 enum {195 CCSELR_LEVEL_MASK = 0x7,196 CCSELR_LEVEL_SHIFT = 1,197 CCSELR_INSTRUCTION_FLAG = 1 << 0,198 };199 110 CONTROL_REG_GEN_READ(CSSELR, c0, 2, c0, 0); 200 111 CONTROL_REG_GEN_WRITE(CSSELR, c0, 2, c0, 0); … … 205 116 206 117 /* System control registers */ 207 /* COntrol register bit values see ch. B4.1.130 of ARM Architecture Reference208 * 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 };232 118 CONTROL_REG_GEN_READ(SCTLR, c1, 0, c0, 0); 233 119 CONTROL_REG_GEN_WRITE(SCTLR, c1, 0, c0, 0); … … 416 302 CONTROL_REG_GEN_WRITE(TLBIALLNSNHS, c8, 4, c7, 4); 417 303 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 304 /* c9 are reserved */ 444 305 445 306 /*c10 has tons of reserved too */
Note:
See TracChangeset
for help on using the changeset viewer.