[rtems commit] bsps/arm: Fix for top of the address space
Sebastian Huber
sebh at rtems.org
Wed Jul 17 08:08:13 UTC 2013
Module: rtems
Branch: master
Commit: 3923472555cba5ae5a045aa58c8552c7372698a9
Changeset: http://git.rtems.org/rtems/commit/?id=3923472555cba5ae5a045aa58c8552c7372698a9
Author: Ric Claus <claus at slac.stanford.edu>
Date: Wed Jul 17 08:42:35 2013 +0200
bsps/arm: Fix for top of the address space
---
.../libbsp/arm/shared/arm-cp15-set-ttb-entries.c | 5 +++--
.../lib/libbsp/arm/shared/include/arm-cp15-start.h | 5 +++--
2 files changed, 6 insertions(+), 4 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 fc311a1..9797d7b 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);
diff --git a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
index 8b38bf8..01f3104 100644
--- a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
+++ b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
@@ -62,11 +62,12 @@ arm_cp15_start_set_translation_table_entries(
uint32_t i = ARM_MMU_SECT_GET_INDEX(config->begin);
uint32_t iend =
ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(config->end));
+ uint32_t index_mask = (1U << (32 - ARM_MMU_SECT_BASE_SHIFT)) - 1U;
if (config->begin != config->end) {
- while (i < iend) {
+ while (i != iend) {
ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | config->flags;
- ++i;
+ i = (i + 1U) & index_mask;
}
}
}
More information about the vc
mailing list