forked from Imagelibrary/rtems
bsps/arm: Add arm_cp15_get_min_cache_line_size()
This commit is contained in:
@@ -7,12 +7,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, 2010
|
* Copyright (c) 2009-2013 embedded brains GmbH. All rights reserved.
|
||||||
|
*
|
||||||
* embedded brains GmbH
|
* embedded brains GmbH
|
||||||
* Obere Lagerstr. 30
|
* Dornierstr. 4
|
||||||
* D-82178 Puchheim
|
* 82178 Puchheim
|
||||||
* Germany
|
* Germany
|
||||||
* <rtems@embedded-brains.de>
|
* <info@embedded-brains.de>
|
||||||
*
|
*
|
||||||
* The license and distribution terms for this file may be
|
* The license and distribution terms for this file may be
|
||||||
* found in the file LICENSE in this distribution or at
|
* found in the file LICENSE in this distribution or at
|
||||||
@@ -443,6 +444,25 @@ static inline uint32_t arm_cp15_get_cache_type(void)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t arm_cp15_get_min_cache_line_size(void)
|
||||||
|
{
|
||||||
|
uint32_t mcls = 0;
|
||||||
|
uint32_t ct = arm_cp15_get_cache_type();
|
||||||
|
uint32_t format = (ct >> 29) & 0x7U;
|
||||||
|
|
||||||
|
if (format == 0x4) {
|
||||||
|
mcls = (1U << (ct & 0xf)) * 4;
|
||||||
|
} else if (format == 0x0) {
|
||||||
|
uint32_t mask = (1U << 12) - 1;
|
||||||
|
uint32_t dcls = (ct >> 12) & mask;
|
||||||
|
uint32_t icls = ct & mask;
|
||||||
|
|
||||||
|
mcls = dcls <= icls ? dcls : icls;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mcls;
|
||||||
|
}
|
||||||
|
|
||||||
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