mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
FreeRTOS MPU: Add Privileged eXecute Never MPU attribute support (#1092)
FreeRTOS MPU: Add privileged execute never MPU attribute A new MPU region attribute Privileged eXecute Never (PXN) is introduced in Armv8.1-M architecture, where if an MPU region has PXN attribute set and the processor attempts to execute the code inside with privileged level, the Memory Management Fault exception would be triggered, with IACCVIOL bit in MemManage Fault State Register set to 1. The PXN feature allows privileged software to ensure specific application tasks (threads) to execute in unprivileged level only. Signed-off-by: Ahmed Ismail <Ahmed.Ismail@arm.com>
This commit is contained in:
parent
0c79e74eaa
commit
31419bfcee
|
@ -65,6 +65,9 @@
|
||||||
#define tskMPU_REGION_EXECUTE_NEVER ( 1U << 2U )
|
#define tskMPU_REGION_EXECUTE_NEVER ( 1U << 2U )
|
||||||
#define tskMPU_REGION_NORMAL_MEMORY ( 1U << 3U )
|
#define tskMPU_REGION_NORMAL_MEMORY ( 1U << 3U )
|
||||||
#define tskMPU_REGION_DEVICE_MEMORY ( 1U << 4U )
|
#define tskMPU_REGION_DEVICE_MEMORY ( 1U << 4U )
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
#define tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ( 1U << 5U )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* MPU region permissions stored in MPU settings to
|
/* MPU region permissions stored in MPU settings to
|
||||||
* authorize access requests. */
|
* authorize access requests. */
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __attribute__( ( used ) )
|
#define portDONT_DISCARD __attribute__( ( used ) )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M23"
|
#define portARCH_NAME "Cortex-M23"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
#define portHAS_ARMV8M_MAIN_EXTENSION 0
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M33"
|
#define portARCH_NAME "Cortex-M33"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M35P"
|
#define portARCH_NAME "Cortex-M35P"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 0
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M55"
|
#define portARCH_NAME "Cortex-M55"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ typedef void ( * portISR_t )( void );
|
||||||
|
|
||||||
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
#define portMPU_RLAR_REGION_ENABLE ( 1UL )
|
||||||
|
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
/* Enable Privileged eXecute Never MPU attribute for the selected memory
|
||||||
|
* region. */
|
||||||
|
#define portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER ( 1UL << 4UL )
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Enable privileged access to unmapped region. */
|
/* Enable privileged access to unmapped region. */
|
||||||
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
#define portMPU_PRIV_BACKGROUND_ENABLE_BIT ( 1UL << 2UL )
|
||||||
|
|
||||||
|
@ -1880,6 +1886,16 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR = ( ulRegionEndAddress ) |
|
||||||
( portMPU_RLAR_REGION_ENABLE );
|
( portMPU_RLAR_REGION_ENABLE );
|
||||||
|
|
||||||
|
/* PXN. */
|
||||||
|
#if ( portARMV8M_MINOR_VERSION >= 1 )
|
||||||
|
{
|
||||||
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_PRIVILEGED_EXECUTE_NEVER ) != 0 )
|
||||||
|
{
|
||||||
|
xMPUSettings->xRegionsSettings[ ulRegionNumber ].ulRLAR |= ( portMPU_RLAR_PRIVILEGED_EXECUTE_NEVER );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* portARMV8M_MINOR_VERSION >= 1 */
|
||||||
|
|
||||||
/* Normal memory/ Device memory. */
|
/* Normal memory/ Device memory. */
|
||||||
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
if( ( xRegions[ lIndex ].ulParameters & tskMPU_REGION_DEVICE_MEMORY ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
*/
|
*/
|
||||||
#define portARCH_NAME "Cortex-M85"
|
#define portARCH_NAME "Cortex-M85"
|
||||||
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
#define portHAS_ARMV8M_MAIN_EXTENSION 1
|
||||||
|
#define portARMV8M_MINOR_VERSION 1
|
||||||
#define portDONT_DISCARD __root
|
#define portDONT_DISCARD __root
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue