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.
This commit is contained in:
Sebastian Huber
2022-06-03 08:27:57 +02:00
parent 0b9497a6dd
commit c93f0f01e5

View File

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