bsps/arm: Add arm_cp15_get_min_cache_line_size()

This commit is contained in:
Sebastian Huber
2013-05-02 17:40:45 +02:00
parent 962e0fac18
commit d2d0296138

View File

@@ -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;