Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/cp15.h

    r7a38962 reb1d9c1  
    5555
    5656/* 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 };
    6957CONTROL_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 };
    11458CONTROL_REG_GEN_READ(CTR, c0, 0, c0, 1);
    11559CONTROL_REG_GEN_READ(TCMR, c0, 0, c0, 2);
     
    160104CONTROL_REG_GEN_READ(ID_ISAR5, c0, 0, c2, 5);
    161105
    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 };
    174106CONTROL_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 };
    191107CONTROL_REG_GEN_READ(CLIDR, c0, 1, c0, 1);
    192108CONTROL_REG_GEN_READ(AIDR, c0, 1, c0, 7); /* Implementation defined or MIDR */
    193109
    194 enum {
    195         CCSELR_LEVEL_MASK = 0x7,
    196         CCSELR_LEVEL_SHIFT = 1,
    197         CCSELR_INSTRUCTION_FLAG = 1 << 0,
    198 };
    199110CONTROL_REG_GEN_READ(CSSELR, c0, 2, c0, 0);
    200111CONTROL_REG_GEN_WRITE(CSSELR, c0, 2, c0, 0);
     
    205116
    206117/* 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 };
    232118CONTROL_REG_GEN_READ(SCTLR, c1, 0, c0, 0);
    233119CONTROL_REG_GEN_WRITE(SCTLR, c1, 0, c0, 0);
     
    416302CONTROL_REG_GEN_WRITE(TLBIALLNSNHS, c8, 4, c7, 4);
    417303
    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 */
    444305
    445306/*c10 has tons of reserved too */
Note: See TracChangeset for help on using the changeset viewer.