Arm-Cortex-R82: Add MPU support#1347
Open
AhmedIsmail02 wants to merge 4 commits intoFreeRTOS:mainfrom
Open
Conversation
aggarg
reviewed
Jan 21, 2026
aggarg
reviewed
Jan 21, 2026
portable/GCC/ARM_CR82/portASM.S
Outdated
| .macro saveallgpregisters | ||
| /* Save all general-purpose registers on stack. */ | ||
| .macro portLOAD_MPU_REGIONS_ADDRESSES | ||
| MOV X3, #4 /* i = 4 First four MPU regions are already programmed.*/ |
Member
There was a problem hiding this comment.
Possible to use some macro for this 4?
Member
Author
There was a problem hiding this comment.
Certainly, the portSTACK_REGION macro which is now defined with a value of 4 is used instead, also a comment has been added for better readability.
4ccbfac to
91c7ebb
Compare
This commit introduces support for the Memory Protection Unit (MPU) to the ARM Cortex-R82 port. The MPU enhances system security by allowing the definition of memory regions with specific access permissions. The following changes have been made: - Added MPU configuration functions in `port.c` to set up memory regions and their attributes. - Updated `portASM.S` to include assembly routines for MPU and context switching with MPU support. - Created `mpu_wrappers_v2_asm.c` to provide assembly wrappers for MPU operations. - Updated `portmacro.h` to include MPU-related macros and definitions. - Modified `task.h` to include MPU-related task attributes. - Updated `CMakeLists.txt` to include the new MPU source file. - Enhanced the `README.md` with instructions on MPU configuration. Signed-off-by: Ahmed Ismail <Ahmed.Ismail@arm.com>
This commit includes minor code improvements to enhance readability and maintainability of the Cortex-R82 port files. Changes include refactoring variable names, optimizing comments, and improving code structure without altering functionality. Signed-off-by: Ahmed Ismail <Ahmed.Ismail@arm.com>
This stack-depth check should not be performed for ports where portUSING_MPU_WRAPPERS is set to 1. In this case, pxTopOfStack and pxNewTCB->pxTopOfStack reside in different memory regions: pxTopOfStack is in unprivileged SRAM, while pxNewTCB->pxTopOfStack is in privileged SRAM. This is because pxPortInitialiseStack() returns the address of `ullContext` array rather than the decremented pxTopOfStack, as is done in the non-MPU case. Consequently, this check is not valid in this scenario. Signed-off-by: Ahmed Ismail <Ahmed.Ismail@arm.com>
91c7ebb to
6c6df4f
Compare
aggarg
approved these changes
Feb 3, 2026
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Description
This PR introduces the following:
Support for the Memory Protection Unit (MPU) to the ARM Cortex-R82 port. The MPU enhances system security by allowing the definition of memory regions with specific access permissions. The following changes have been made:
port.cto set up memory regions and their attributes.portASM.Sto include assembly routines for MPU and context switching with MPU support.mpu_wrappers_v2_asm.cto provide assembly wrappers for MPU operations.portmacro.hto include MPU-related macros and definitions.task.hto include MPU-related task attributes.CMakeLists.txtto include the new MPU source file.README.mdwith instructions on MPU configuration.Minor code improvements to enhance readability and maintainability of the Cortex-R82 port files. Changes include refactoring variable names and optimising comments without altering functionality.
This PR blocks Arm-Cortex-R82: Add SMP MPU examples PR.
Test Steps
Checklist:
Related Issue
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.