forked from Imagelibrary/rtems
bsps/arm: Add more CP15 cache functions
This commit is contained in:
committed by
Sebastian Huber
parent
1a246d7e05
commit
c9b66f5ed3
@@ -577,6 +577,71 @@ static inline uint32_t arm_cp15_get_min_cache_line_size(void)
|
|||||||
return mcls;
|
return mcls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* CCSIDR, Cache Size ID Register */
|
||||||
|
|
||||||
|
static inline uint32_t arm_cp15_get_cache_size_id(void)
|
||||||
|
{
|
||||||
|
ARM_SWITCH_REGISTERS;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
__asm__ volatile (
|
||||||
|
ARM_SWITCH_TO_ARM
|
||||||
|
"mcr p15, 1, %[val], c0, c0, 0\n"
|
||||||
|
ARM_SWITCH_BACK
|
||||||
|
: [val] "=&r" (val) ARM_SWITCH_ADDITIONAL_OUTPUT
|
||||||
|
);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CLIDR, Cache Level ID Register */
|
||||||
|
|
||||||
|
static inline uint32_t arm_cp15_get_cache_level_id(void)
|
||||||
|
{
|
||||||
|
ARM_SWITCH_REGISTERS;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
__asm__ volatile (
|
||||||
|
ARM_SWITCH_TO_ARM
|
||||||
|
"mcr p15, 1, %[val], c0, c0, 1\n"
|
||||||
|
ARM_SWITCH_BACK
|
||||||
|
: [val] "=&r" (val) ARM_SWITCH_ADDITIONAL_OUTPUT
|
||||||
|
);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CSSELR, Cache Size Selection Register */
|
||||||
|
|
||||||
|
static inline uint32_t arm_cp15_get_cache_size_selection(void)
|
||||||
|
{
|
||||||
|
ARM_SWITCH_REGISTERS;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
__asm__ volatile (
|
||||||
|
ARM_SWITCH_TO_ARM
|
||||||
|
"mcr p15, 2, %[val], c0, c0, 0\n"
|
||||||
|
ARM_SWITCH_BACK
|
||||||
|
: [val] "=&r" (val) ARM_SWITCH_ADDITIONAL_OUTPUT
|
||||||
|
);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arm_cp15_set_cache_size_selection(uint32_t val)
|
||||||
|
{
|
||||||
|
ARM_SWITCH_REGISTERS;
|
||||||
|
|
||||||
|
__asm__ volatile (
|
||||||
|
ARM_SWITCH_TO_ARM
|
||||||
|
"mcr p15, 2, %[val], c0, c0, 0\n"
|
||||||
|
ARM_SWITCH_BACK
|
||||||
|
: ARM_SWITCH_OUTPUT
|
||||||
|
: [val] "r" (val)
|
||||||
|
: "memory"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void arm_cp15_cache_invalidate(void)
|
static inline void arm_cp15_cache_invalidate(void)
|
||||||
{
|
{
|
||||||
ARM_SWITCH_REGISTERS;
|
ARM_SWITCH_REGISTERS;
|
||||||
|
|||||||
Reference in New Issue
Block a user