[PATCH rtems 2/2] cpu/armv7m: Fix initialization of MPU regions

Christian Mauderer christian.mauderer at embedded-brains.de
Fri Jun 4 07:47:27 UTC 2021


The write to RBAR didn't have the valid flag set. Therefore the write to
RASR had an influence on the previously set region. That means for
example that if Region 0 had been enabled but 1 should be disabled due
to a size of 0, the previous code would have disabled region 0 instead.

This patch fixes that behaviour.

Close #4450
---
 cpukit/score/cpu/arm/include/rtems/score/armv7m.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cpukit/score/cpu/arm/include/rtems/score/armv7m.h b/cpukit/score/cpu/arm/include/rtems/score/armv7m.h
index a5eaaef418..1803c8d8ca 100644
--- a/cpukit/score/cpu/arm/include/rtems/score/armv7m.h
+++ b/cpukit/score/cpu/arm/include/rtems/score/armv7m.h
@@ -660,7 +660,7 @@ static inline void _ARMV7M_MPU_Set_region(
     rbar = (uintptr_t) begin | region | ARMV7M_MPU_RBAR_VALID;
     rasr |= _ARMV7M_MPU_Get_region_size(size);
   } else {
-    rbar = region;
+    rbar = ARMV7M_MPU_RBAR_VALID | region;
     rasr = 0;
   }
 
-- 
2.26.2



More information about the devel mailing list