RTEMS
5.1
|
Cache Functions and Defitions. More...
Data Structures | |
struct | L2CC |
L2CC Register Offsets. More... | |
Macros | |
#define | CPU_DATA_CACHE_ALIGNMENT ARM_CACHE_L1_CPU_DATA_ALIGNMENT |
Cache definitions and functions. More... | |
#define | L2C_310_ID_RTL_MASK 0x3f |
#define | L2C_310_ID_PART_MASK ( 0xf << 6 ) |
#define | L2C_310_ID_PART_L210 ( 1 << 6 ) |
#define | L2C_310_ID_PART_L310 ( 3 << 6 ) |
#define | L2C_310_ID_IMPL_MASK ( 0xff << 24 ) |
#define | L2C_310_TYPE_DATA_BANKING_MASK 0x80000000 |
1 if data banking implemented, 0 if not | |
#define | L2C_310_TYPE_CTYPE_MASK 0x1E000000 |
11xy, where: x=1 if pl310_LOCKDOWN_BY_MASTER is defined, otherwise 0 | |
#define | L2C_310_TYPE_CTYPE_SHIFT 25 |
y=1 if pl310_LOCKDOWN_BY_LINE is defined, otherwise 0. | |
#define | L2C_310_TYPE_HARVARD_MASK 0x01000000 |
1 for Harvard architecture, 0 for unified architecture | |
#define | L2C_310_TYPE_SIZE_D_WAYS_MASK 0x00700000 |
Data cache way size = 2 Exp(value + 2) KB. | |
#define | L2C_310_TYPE_SIZE_D_WAYS_SHIFT 20 |
#define | L2C_310_TYPE_NUM_D_WAYS_MASK 0x00040000 |
Assoziativity aka number of data ways = (value * 8) + 8. | |
#define | L2C_310_TYPE_NUM_D_WAYS_SHIFT 18 |
#define | L2C_310_TYPE_LENGTH_D_LINE_MASK 0x00003000 |
Data cache line length 00 - 32. | |
#define | L2C_310_TYPE_LENGTH_D_LINE_SHIFT 12 |
#define | L2C_310_TYPE_LENGTH_D_LINE_VAL_32 0x0 |
#define | L2C_310_TYPE_SIZE_I_WAYS_MASK 0x00000700 |
Instruction cache way size = 2 Exp(value + 2) KB. | |
#define | L2C_310_TYPE_SIZE_I_WAYS_SHIFT 8 |
#define | L2C_310_TYPE_NUM_I_WAYS_MASK 0x00000040 |
Assoziativity aka number of instruction ways = (value * 8) + 8. | |
#define | L2C_310_TYPE_NUM_I_WAYS_SHIFT 6 |
#define | L2C_310_TYPE_LENGTH_I_LINE_MASK 0x00000003 |
Instruction cache line length 00 - 32. | |
#define | L2C_310_TYPE_LENGTH_I_LINE_SHIFT 0 |
#define | L2C_310_TYPE_LENGTH_I_LINE_VAL_32 0x0 |
#define | L2C_310_CTRL_ENABLE 0x00000001 |
Enables the L2CC. | |
#define | L2C_310_CTRL_EXCL_CONFIG (1 << 12) |
#define | L2C_310_AUX_EBRESPE_MASK 0x40000000 |
Early BRESP Enable. | |
#define | L2C_310_AUX_IPFE_MASK 0x20000000 |
Instruction Prefetch Enable. | |
#define | L2C_310_AUX_DPFE_MASK 0x10000000 |
Data Prefetch Enable. | |
#define | L2C_310_AUX_NSIC_MASK 0x08000000 |
Non-secure interrupt access control. | |
#define | L2C_310_AUX_NSLE_MASK 0x04000000 |
Non-secure lockdown enable. | |
#define | L2C_310_AUX_CRP_MASK 0x02000000 |
Cache replacement policy. | |
#define | L2C_310_AUX_FWE_MASK 0x01800000 |
Force write allocate. | |
#define | L2C_310_AUX_SAOE_MASK 0x00400000 |
Shared attribute override enable. | |
#define | L2C_310_AUX_PE_MASK 0x00200000 |
Parity enable. | |
#define | L2C_310_AUX_EMBE_MASK 0x00100000 |
Event monitor bus enable. | |
#define | L2C_310_AUX_WAY_SIZE_MASK 0x000E0000 |
Way-size. | |
#define | L2C_310_AUX_WAY_SIZE_SHIFT 17 |
#define | L2C_310_AUX_ASSOC_MASK 0x00010000 |
Way-size. | |
#define | L2C_310_AUX_SAIE_MASK 0x00002000 |
Shared attribute invalidate enable. | |
#define | L2C_310_AUX_EXCL_CACHE_MASK 0x00001000 |
Exclusive cache configuration. | |
#define | L2C_310_AUX_SBDLE_MASK 0x00000800 |
Store buffer device limitation Enable. | |
#define | L2C_310_AUX_HPSODRE_MASK 0x00000400 |
High Priority for SO and Dev Reads Enable. | |
#define | L2C_310_AUX_FLZE_MASK 0x00000001 |
Full line of zero enable. | |
#define | L2C_310_AUX_REG_DEFAULT_MASK |
Enable all prefetching,. More... | |
#define | L2C_310_AUX_REG_ZERO_MASK 0xFFF1FFFF |
#define | L2C_310_RAM_1_CYCLE_LAT_VAL 0x00000000 |
1 cycle of latency, there is no additional latency fot tag RAM | |
#define | L2C_310_RAM_2_CYCLE_LAT_VAL 0x00000001 |
2 cycles of latency for tag RAM | |
#define | L2C_310_RAM_3_CYCLE_LAT_VAL 0x00000002 |
3 cycles of latency for tag RAM | |
#define | L2C_310_RAM_4_CYCLE_LAT_VAL 0x00000003 |
4 cycles of latency for tag RAM | |
#define | L2C_310_RAM_5_CYCLE_LAT_VAL 0x00000004 |
5 cycles of latency for tag RAM | |
#define | L2C_310_RAM_6_CYCLE_LAT_VAL 0x00000005 |
6 cycles of latency for tag RAM | |
#define | L2C_310_RAM_7_CYCLE_LAT_VAL 0x00000006 |
7 cycles of latency for tag RAM | |
#define | L2C_310_RAM_8_CYCLE_LAT_VAL 0x00000007 |
8 cycles of latency for tag RAM | |
#define | L2C_310_RAM_SETUP_SHIFT 0x00000000 |
Shift left setup latency values by this value. | |
#define | L2C_310_RAM_READ_SHIFT 0x00000004 |
Shift left read latency values by this value. | |
#define | L2C_310_RAM_WRITE_SHIFT 0x00000008 |
Shift left write latency values by this value. | |
#define | L2C_310_RAM_SETUP_LAT_MASK 0x00000007 |
Mask for RAM setup latency. | |
#define | L2C_310_RAM_READ_LAT_MASK 0x00000070 |
Mask for RAM read latency. | |
#define | L2C_310_RAM_WRITE_LAT_MASK 0x00000700 |
Mask for RAM read latency. | |
#define | L2C_310_TAG_RAM_DEFAULT_LAT |
#define | L2C_310_DATA_RAM_DEFAULT_MASK |
Latency for data RAM. More... | |
#define | L2C_310_ADDR_FILTER_VALID_MASK 0xFFF00000 |
Address filtering valid bits. | |
#define | L2C_310_ADDR_FILTER_ENABLE_MASK 0x00000001 |
Address filtering enable bit. | |
#define | L2C_310_DEBUG_SPIDEN_MASK 0x00000004 |
Debug SPIDEN bit. | |
#define | L2C_310_DEBUG_DWB_MASK 0x00000002 |
Debug DWB bit, forces write through. | |
#define | L2C_310_DEBUG_DCL_MASK 0x00000002 |
Debug DCL bit, disables cache line fill. | |
#define | L2C_310_PREFETCH_OFFSET_MASK 0x0000001F |
Prefetch offset. | |
#define | L2C_310_ERRATA_IS_APPLICABLE_588369 |
#define | CACHE_ARM_ERRATA_775420_HANDLER() |
Variables | |
uint32_t | L2CC::cache_id |
Cache ID. | |
uint32_t | L2CC::cache_type |
Cache type. | |
uint8_t | L2CC::reserved_8 [0x100 - 8] |
uint32_t | L2CC::ctrl |
uint32_t | L2CC::aux_ctrl |
Auxiliary control. | |
uint32_t | L2CC::tag_ram_ctrl |
Latency for tag RAM. | |
uint32_t | L2CC::data_ram_ctrl |
Latency for data RAM. | |
uint8_t | L2CC::reserved_110 [0x200 - 0x110] |
uint32_t | L2CC::ev_ctrl |
Event counter control. | |
uint32_t | L2CC::ev_cnt1_cfg |
Event counter 1 configuration. | |
uint32_t | L2CC::ev_cnt0_cfg |
Event counter 0 configuration. | |
uint32_t | L2CC::ev_cnt1 |
Event counter 1 value. | |
uint32_t | L2CC::ev_cnt0 |
Event counter 0 value. | |
uint32_t | L2CC::int_mask |
Interrupt enable mask. | |
uint32_t | L2CC::int_mask_status |
Masked interrupt status (read-only) | |
uint32_t | L2CC::int_raw_status |
Unmasked interrupt status. | |
uint32_t | L2CC::int_clr |
Interrupt clear. | |
uint8_t | L2CC::reserved_224 [0x730 - 0x224] |
uint32_t | L2CC::cache_sync |
Drain the STB. | |
uint8_t | L2CC::reserved_734 [0x740 - 0x734] |
uint32_t | L2CC::dummy_cache_sync_reg |
ARM Errata 753970 for pl310-r3p0. | |
uint8_t | L2CC::reserved_744 [0x770 - 0x744] |
uint32_t | L2CC::inv_pa |
Invalidate line by PA. | |
uint8_t | L2CC::reserved_774 [0x77c - 0x774] |
uint32_t | L2CC::inv_way |
Invalidate by Way. | |
uint8_t | L2CC::reserved_780 [0x7b0 - 0x780] |
uint32_t | L2CC::clean_pa |
Clean Line by PA. | |
uint8_t | L2CC::reserved_7b4 [0x7b8 - 0x7b4] |
uint32_t | L2CC::clean_index |
Clean Line by Set/Way. | |
uint32_t | L2CC::clean_way |
Clean by Way. | |
uint8_t | L2CC::reserved_7c0 [0x7f0 - 0x7c0] |
uint32_t | L2CC::clean_inv_pa |
Clean and Invalidate Line by PA. | |
uint8_t | L2CC::reserved_7f4 [0x7f8 - 0x7f4] |
uint32_t | L2CC::clean_inv_indx |
Clean and Invalidate Line by Set/Way. | |
uint32_t | L2CC::clean_inv_way |
Clean and Invalidate by Way. | |
uint32_t | L2CC::d_lockdown_0 |
Data lock down 0. | |
uint32_t | L2CC::i_lockdown_0 |
Instruction lock down 0. | |
uint32_t | L2CC::d_lockdown_1 |
Data lock down 1. | |
uint32_t | L2CC::i_lockdown_1 |
Instruction lock down 1. | |
uint32_t | L2CC::d_lockdown_2 |
Data lock down 2. | |
uint32_t | L2CC::i_lockdown_2 |
Instruction lock down 2. | |
uint32_t | L2CC::d_lockdown_3 |
Data lock down 3. | |
uint32_t | L2CC::i_lockdown_3 |
Instruction lock down 3. | |
uint32_t | L2CC::d_lockdown_4 |
Data lock down 4. | |
uint32_t | L2CC::i_lockdown_4 |
Instruction lock down 4. | |
uint32_t | L2CC::d_lockdown_5 |
Data lock down 5. | |
uint32_t | L2CC::i_lockdown_5 |
Instruction lock down 5. | |
uint32_t | L2CC::d_lockdown_6 |
Data lock down 6. | |
uint32_t | L2CC::i_lockdown_6 |
Instruction lock down 6. | |
uint32_t | L2CC::d_lockdown_7 |
Data lock down 7. | |
uint32_t | L2CC::i_lockdown_7 |
Instruction lock down 7. | |
uint8_t | L2CC::reserved_940 [0x950 - 0x940] |
uint32_t | L2CC::lock_line_en |
Lockdown by Line Enable. | |
uint32_t | L2CC::unlock_way |
Cache lockdown by way. | |
uint8_t | L2CC::reserved_958 [0xc00 - 0x958] |
uint32_t | L2CC::addr_filtering_start |
Address range redirect, part 1. | |
uint32_t | L2CC::addr_filtering_end |
Address range redirect, part 2. | |
uint8_t | L2CC::reserved_c08 [0xf40 - 0xc08] |
uint32_t | L2CC::debug_ctrl |
Debug control. | |
uint8_t | L2CC::reserved_f44 [0xf60 - 0xf44] |
uint32_t | L2CC::prefetch_ctrl |
Purpose prefetch enables. | |
uint8_t | L2CC::reserved_f64 [0xf80 - 0xf64] |
uint32_t | L2CC::power_ctrl |
Purpose power controls. | |
rtems_interrupt_lock | l2c_310_lock |
Interrupt bit masks | |
#define | L2C_310_INT_DECERR_MASK 0x00000100 |
DECERR from L3. | |
#define | L2C_310_INT_SLVERR_MASK 0x00000080 |
SLVERR from L3. | |
#define | L2C_310_INT_ERRRD_MASK 0x00000040 |
Error on L2 data RAM (Read) | |
#define | L2C_310_INT_ERRRT_MASK 0x00000020 |
Error on L2 tag RAM (Read) | |
#define | L2C_310_INT_ERRWD_MASK 0x00000010 |
Error on L2 data RAM (Write) | |
#define | L2C_310_INT_ERRWT_MASK 0x00000008 |
Error on L2 tag RAM (Write) | |
#define | L2C_310_INT_PARRD_MASK 0x00000004 |
Parity Error on L2 data RAM (Read) | |
#define | L2C_310_INT_PARRT_MASK 0x00000002 |
Parity Error on L2 tag RAM (Read) | |
#define | L2C_310_INT_ECNTR_MASK 0x00000001 |
Event Counter1/0 Overflow Increment. | |
Cache Functions and Defitions.
#define CACHE_ARM_ERRATA_775420_HANDLER | ( | ) |
#define CPU_DATA_CACHE_ALIGNMENT ARM_CACHE_L1_CPU_DATA_ALIGNMENT |
Cache definitions and functions.
This file implements handling for the ARM L2C-310 cache controller
#define L2C_310_AUX_REG_DEFAULT_MASK |
Enable all prefetching,.
#define L2C_310_DATA_RAM_DEFAULT_MASK |
Latency for data RAM.
#define L2C_310_TAG_RAM_DEFAULT_LAT |
rtems_interrupt_lock l2c_310_lock |