summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2022-06-03 08:27:57 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-06-08 09:10:20 +0200
commitc93f0f01e5a260df008b568b74ca8bb7677e1bf5 (patch)
treeb11eb307ed176baca90f5b652d47a227ea2f49da /cpukit/score
parentarm: Fix PMSA region mapping with 0x0 end address (diff)
downloadrtems-c93f0f01e5a260df008b568b74ca8bb7677e1bf5.tar.bz2
arm: Fix PMSA regions for contiguous sections
Sections with identical attributes may be contiguous with a respective begin and end address which is not on a minimum region boundary. The begin address is aligned down to the region base address. The end address is aligned up to the region end address. Account for this in the check for contiguous sections. Update #4202.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/cpu/arm/aarch32-psma-init.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/cpukit/score/cpu/arm/aarch32-psma-init.c b/cpukit/score/cpu/arm/aarch32-psma-init.c
index 3519104b21..543e1b7d9b 100644
--- a/cpukit/score/cpu/arm/aarch32-psma-init.c
+++ b/cpukit/score/cpu/arm/aarch32-psma-init.c
@@ -133,16 +133,16 @@ size_t _AArch32_PMSA_Map_sections_to_regions(
if ( attr == region_attr ) {
uint32_t region_end;
- if ( end == region_base ) {
- /* Extend the region region */
+ if ( end - region_base <= AARCH32_PMSA_MIN_REGION_ALIGN ) {
+ /* Extend the region */
regions[ ri ].base = base;
break;
}
region_end = region_limit + AARCH32_PMSA_MIN_REGION_ALIGN;
- if ( base == region_end ) {
- /* Extend the region region */
+ if ( region_end - base <= AARCH32_PMSA_MIN_REGION_ALIGN ) {
+ /* Extend the region */
regions[ ri ].limit = limit;
break;
}