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

Christian Mauderer christianm at rtems.org
Mon Jun 21 14:12:38 UTC 2021


Module:    rtems
Branch:    master
Commit:    8476715a49073c913d44dadb9f57712e461450ee
Changeset: http://git.rtems.org/rtems/commit/?id=8476715a49073c913d44dadb9f57712e461450ee

Author:    Christian Mauderer <christian.mauderer at embedded-brains.de>
Date:      Tue Jun  1 11:25:24 2021 +0200

cpu/armv7m: Fix initialization of MPU regions

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 a5eaaef..1803c8d 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;
   }
 



More information about the vc mailing list