summaryrefslogtreecommitdiff
path: root/core/cortex-m/mpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/cortex-m/mpu.c')
-rw-r--r--core/cortex-m/mpu.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/core/cortex-m/mpu.c b/core/cortex-m/mpu.c
index 953cbb7393..c0793180dc 100644
--- a/core/cortex-m/mpu.c
+++ b/core/cortex-m/mpu.c
@@ -6,9 +6,9 @@
/* MPU module for Chrome EC */
#include "builtin/assert.h"
+#include "mpu.h"
#include "console.h"
#include "cpu.h"
-#include "mpu.h"
#include "registers.h"
#include "task.h"
#include "util.h"
@@ -95,17 +95,6 @@ int mpu_update_region(uint8_t region, uint32_t addr, uint8_t size_bit,
}
/*
- * Align address to a maximum of 31 bits
- */
-uint32_t align_down_to_bits(uint32_t addr, uint8_t addr_bits)
-{
- if (addr_bits < 32)
- return addr & ~((1u << addr_bits) - 1);
- else
- return addr;
-}
-
-/*
* Greedily configure the largest possible part of the given region from the
* base address.
*
@@ -151,7 +140,7 @@ static int mpu_config_region_greedy(uint8_t region, uint32_t addr,
* disabling if it is not completely contained in the requested
* range.
*/
- subregion_base = align_down_to_bits(addr, natural_alignment);
+ subregion_base = addr & ~((1 << natural_alignment) - 1);
subregion_size = 1 << (natural_alignment - 3);
*consumed = 0;
for (sr_idx = 0; sr_idx < 8; sr_idx++) {
@@ -170,8 +159,7 @@ static int mpu_config_region_greedy(uint8_t region, uint32_t addr,
*consumed = 1 << natural_alignment;
}
- return mpu_update_region(region,
- align_down_to_bits(addr, natural_alignment),
+ return mpu_update_region(region, addr & ~((1 << natural_alignment) - 1),
natural_alignment, attr, enable,
subregion_disable);
}