summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c')
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c b/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
index fc311a13e3..9797d7bef1 100644
--- a/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
+++ b/c/src/lib/libbsp/arm/shared/arm-cp15-set-ttb-entries.c
@@ -24,6 +24,7 @@ static uint32_t set_translation_table_entries(
uint32_t *ttb = arm_cp15_get_translation_table_base();
uint32_t i = ARM_MMU_SECT_GET_INDEX(begin);
uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end));
+ uint32_t index_mask = (1U << (32 - ARM_MMU_SECT_BASE_SHIFT)) - 1U;
uint32_t ctrl;
uint32_t section_flags_of_first_entry;
@@ -31,12 +32,12 @@ static uint32_t set_translation_table_entries(
arm_cp15_tlb_invalidate();
section_flags_of_first_entry = ttb [i];
- while (i < iend) {
+ while (i != iend) {
uint32_t addr = i << ARM_MMU_SECT_BASE_SHIFT;
ttb [i] = addr | section_flags;
- ++i;
+ i = (i + 1U) & index_mask;
}
arm_cp15_set_control(ctrl);