diff --git a/.github/workflows/kernel-demos.yml b/.github/workflows/kernel-demos.yml index f81ae33f3..404c602b5 100644 --- a/.github/workflows/kernel-demos.yml +++ b/.github/workflows/kernel-demos.yml @@ -268,12 +268,12 @@ jobs: fetch-depth: 1 - env: - stepName: Fetch Community-Supported-Demos Submodule + stepName: Fetch Dependencies shell: bash run: | # ${{ env.stepName }} echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" - git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos + git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" # Checkout user pull request changes diff --git a/portable/ARMv8M/non_secure/portmacrocommon.h b/portable/ARMv8M/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/ARMv8M/non_secure/portmacrocommon.h +++ b/portable/ARMv8M/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM23/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM23/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM23/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM23/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM23_NTZ/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM23_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM23_NTZ/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM23_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM33/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM33/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM33/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM33/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM33_NTZ/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM33_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM33_NTZ/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM33_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM35P/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM35P/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM35P/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM35P/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM35P_NTZ/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM35P_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM35P_NTZ/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM35P_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM3_MPU/portmacro.h b/portable/GCC/ARM_CM3_MPU/portmacro.h index fb2c53832..a2e6883c0 100644 --- a/portable/GCC/ARM_CM3_MPU/portmacro.h +++ b/portable/GCC/ARM_CM3_MPU/portmacro.h @@ -125,6 +125,14 @@ typedef struct MPU_REGION_SETTINGS #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) */ +/* + * +------------------------------+-------------------------------+-----+ + * | CONTROL, r4-r11, EXC_RETURN | PSP, r0-r3, r12, LR, PC, xPSR | | + * +------------------------------+-------------------------------+-----+ + * + * <-----------------------------><-------------------------------><----> + * 10 9 1 + */ #define MAX_CONTEXT_SIZE ( 20 ) /* Size of an Access Control List (ACL) entry in bits. */ diff --git a/portable/GCC/ARM_CM4_MPU/portmacro.h b/portable/GCC/ARM_CM4_MPU/portmacro.h index 0c40ac624..581b09d5c 100644 --- a/portable/GCC/ARM_CM4_MPU/portmacro.h +++ b/portable/GCC/ARM_CM4_MPU/portmacro.h @@ -219,7 +219,16 @@ typedef struct MPU_REGION_SETTINGS #endif /* configUSE_MPU_WRAPPERS_V1 == 0 */ -#define MAX_CONTEXT_SIZE ( 52 ) +/* + * +---------+---------------+-----------------+-----------------+-----+ + * | s16-s31 | s0-s15, FPSCR | CONTROL, r4-r11 | PSP, r0-r3, r12 | | + * | | | EXC_RETURN | LR, PC, xPSR | | + * +---------+---------------+-----------------+-----------------+-----+ + * + * <--------><---------------><----------------><----------------><----> + * 16 17 10 9 1 + */ +#define MAX_CONTEXT_SIZE ( 53 ) /* Size of an Access Control List (ACL) entry in bits. */ #define portACL_ENTRY_SIZE_BITS ( 32U ) diff --git a/portable/GCC/ARM_CM55/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM55/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM55/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM55/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM55_NTZ/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM55_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM55_NTZ/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM55_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM85/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM85/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM85/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM85/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/GCC/ARM_CM85_NTZ/non_secure/portmacrocommon.h b/portable/GCC/ARM_CM85_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/GCC/ARM_CM85_NTZ/non_secure/portmacrocommon.h +++ b/portable/GCC/ARM_CM85_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM23/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM23/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM23/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM23/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM23_NTZ/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM23_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM23_NTZ/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM23_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM33/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM33/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM33/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM33/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM33_NTZ/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM33_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM33_NTZ/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM33_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM35P/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM35P/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM35P/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM35P/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM35P_NTZ/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM35P_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM35P_NTZ/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM35P_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM4F_MPU/portmacro.h b/portable/IAR/ARM_CM4F_MPU/portmacro.h index 08f849992..6b7600c15 100644 --- a/portable/IAR/ARM_CM4F_MPU/portmacro.h +++ b/portable/IAR/ARM_CM4F_MPU/portmacro.h @@ -221,7 +221,16 @@ typedef struct MPU_REGION_SETTINGS #endif /* configUSE_MPU_WRAPPERS_V1 == 0 */ -#define MAX_CONTEXT_SIZE ( 52 ) +/* + * +---------+---------------+-----------------+-----------------+-----+ + * | s16-s31 | s0-s15, FPSCR | CONTROL, r4-r11 | PSP, r0-r3, r12 | | + * | | | EXC_RETURN | LR, PC, xPSR | | + * +---------+---------------+-----------------+-----------------+-----+ + * + * <--------><---------------><----------------><----------------><----> + * 16 17 10 9 1 + */ +#define MAX_CONTEXT_SIZE ( 53 ) /* Size of an Access Control List (ACL) entry in bits. */ #define portACL_ENTRY_SIZE_BITS ( 32U ) diff --git a/portable/IAR/ARM_CM55/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM55/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM55/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM55/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM55_NTZ/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM55_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM55_NTZ/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM55_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM85/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM85/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM85/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM85/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/IAR/ARM_CM85_NTZ/non_secure/portmacrocommon.h b/portable/IAR/ARM_CM85_NTZ/non_secure/portmacrocommon.h index 41c060f1d..f373bcad5 100644 --- a/portable/IAR/ARM_CM85_NTZ/non_secure/portmacrocommon.h +++ b/portable/IAR/ARM_CM85_NTZ/non_secure/portmacrocommon.h @@ -246,9 +246,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><-----------><----> - * 16 16 8 8 5 16 1 + * 16 17 8 8 5 16 1 */ - #define MAX_CONTEXT_SIZE 70 + #define MAX_CONTEXT_SIZE 71 #elif ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 0 ) ) @@ -259,9 +259,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+------------------------------+-----+ * * <-----------><--------------><---------><----------------><-----------------------------><----> - * 16 16 8 8 5 1 + * 16 17 8 8 5 1 */ - #define MAX_CONTEXT_SIZE 54 + #define MAX_CONTEXT_SIZE 55 #elif ( ( configENABLE_TRUSTZONE == 0 ) && ( configENABLE_PAC == 1 ) ) @@ -272,9 +272,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><-----------><----> - * 16 16 8 8 4 16 1 + * 16 17 8 8 4 16 1 */ - #define MAX_CONTEXT_SIZE 69 + #define MAX_CONTEXT_SIZE 70 #else /* if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ @@ -285,9 +285,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P * +-----------+---------------+----------+-----------------+----------------------+-----+ * * <-----------><--------------><---------><----------------><---------------------><----> - * 16 16 8 8 4 1 + * 16 17 8 8 4 1 */ - #define MAX_CONTEXT_SIZE 53 + #define MAX_CONTEXT_SIZE 54 #endif /* #if ( ( configENABLE_TRUSTZONE == 1 ) && ( configENABLE_PAC == 1 ) ) */ diff --git a/portable/RVDS/ARM_CM4_MPU/portmacro.h b/portable/RVDS/ARM_CM4_MPU/portmacro.h index 5977f3f88..8e682ba74 100644 --- a/portable/RVDS/ARM_CM4_MPU/portmacro.h +++ b/portable/RVDS/ARM_CM4_MPU/portmacro.h @@ -218,7 +218,16 @@ typedef struct MPU_REGION_SETTINGS #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) */ -#define MAX_CONTEXT_SIZE ( 52 ) +/* + * +---------+---------------+-----------------+-----------------+-----+ + * | s16-s31 | s0-s15, FPSCR | CONTROL, r4-r11 | PSP, r0-r3, r12 | | + * | | | EXC_RETURN | LR, PC, xPSR | | + * +---------+---------------+-----------------+-----------------+-----+ + * + * <--------><---------------><----------------><----------------><----> + * 16 17 10 9 1 + */ +#define MAX_CONTEXT_SIZE ( 53 ) /* Size of an Access Control List (ACL) entry in bits. */ #define portACL_ENTRY_SIZE_BITS ( 32U ) diff --git a/portable/ThirdParty/GCC/Posix/port.c b/portable/ThirdParty/GCC/Posix/port.c index 7cc32128f..c4eacb2ba 100644 --- a/portable/ThirdParty/GCC/Posix/port.c +++ b/portable/ThirdParty/GCC/Posix/port.c @@ -105,6 +105,8 @@ static BaseType_t xSchedulerEnd = pdFALSE; static pthread_t hTimerTickThread; static bool xTimerTickThreadShouldRun; static uint64_t prvStartTimeNs; +static pthread_mutex_t xThreadMutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_key_t xThreadKey = 0; /*-----------------------------------------------------------*/ static void prvSetupSignalsAndSchedulerPolicy( void ); @@ -119,6 +121,45 @@ static void vPortStartFirstTask( void ); static void prvPortYieldFromISR( void ); /*-----------------------------------------------------------*/ +void prvThreadKeyDestructor( void * data ) +{ + free( data ); +} + +static void prvInitThreadKey() +{ + pthread_mutex_lock( &xThreadMutex ); + + if( xThreadKey == 0 ) + { + pthread_key_create( &xThreadKey, prvThreadKeyDestructor ); + } + + pthread_mutex_unlock( &xThreadMutex ); +} + +static void prvMarkAsFreeRTOSThread( pthread_t thread ) +{ + prvInitThreadKey(); + uint8_t * thread_data = malloc( 1 ); + configASSERT( thread_data != NULL ); + *thread_data = 1; + pthread_setspecific( xThreadKey, thread_data ); +} + +static BaseType_t prvIsFreeRTOSThread( pthread_t thread ) +{ + uint8_t * thread_data = ( uint8_t * ) pthread_getspecific( xThreadKey ); + + return thread_data != NULL && *thread_data == 1; +} + +static void prvDestroyThreadKey() +{ + pthread_key_delete( xThreadKey ); +} +/*-----------------------------------------------------------*/ + static void prvFatalError( const char * pcCall, int iErrno ) __attribute__( ( __noreturn__ ) ); @@ -249,6 +290,8 @@ BaseType_t xPortStartScheduler( void ) /* Restore original signal mask. */ ( void ) pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL ); + prvDestroyThreadKey(); + return 0; } /*-----------------------------------------------------------*/ @@ -266,8 +309,12 @@ void vPortEndScheduler( void ) ( void ) pthread_kill( hMainThread, SIG_RESUME ); /* Waiting to be deleted here. */ - pxCurrentThread = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); - event_wait( pxCurrentThread->ev ); + if( prvIsFreeRTOSThread( pthread_self() ) == pdTRUE ) + { + pxCurrentThread = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); + event_wait( pxCurrentThread->ev ); + } + pthread_testcancel(); } /*-----------------------------------------------------------*/ @@ -322,13 +369,19 @@ void vPortYield( void ) void vPortDisableInterrupts( void ) { - pthread_sigmask( SIG_BLOCK, &xAllSignals, NULL ); + if( prvIsFreeRTOSThread( pthread_self() ) == pdTRUE ) + { + pthread_sigmask(SIG_BLOCK, &xAllSignals, NULL); + } } /*-----------------------------------------------------------*/ void vPortEnableInterrupts( void ) { - pthread_sigmask( SIG_UNBLOCK, &xAllSignals, NULL ); + if( prvIsFreeRTOSThread( pthread_self() ) == pdTRUE ) + { + pthread_sigmask(SIG_UNBLOCK, &xAllSignals, NULL); + } } /*-----------------------------------------------------------*/ @@ -364,6 +417,8 @@ static void * prvTimerTickHandler( void * arg ) { ( void ) arg; + prvMarkAsFreeRTOSThread( pthread_self() ); + prvPortSetCurrentThreadName("Scheduler timer"); while( xTimerTickThreadShouldRun ) @@ -396,26 +451,31 @@ void prvSetupTimerInterrupt( void ) static void vPortSystemTickHandler( int sig ) { - Thread_t * pxThreadToSuspend; - Thread_t * pxThreadToResume; + if( prvIsFreeRTOSThread( pthread_self() ) == pdTRUE ) + { + Thread_t * pxThreadToSuspend; + Thread_t * pxThreadToResume; - ( void ) sig; + ( void ) sig; - uxCriticalNesting++; /* Signals are blocked in this signal handler. */ + uxCriticalNesting++; /* Signals are blocked in this signal handler. */ - pxThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); + pxThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); - if( xTaskIncrementTick() != pdFALSE ) - { - /* Select Next Task. */ - vTaskSwitchContext(); + if( xTaskIncrementTick() != pdFALSE ) + { + /* Select Next Task. */ + vTaskSwitchContext(); - pxThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); + pxThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); - prvSwitchThread( pxThreadToResume, pxThreadToSuspend ); - } + prvSwitchThread( pxThreadToResume, pxThreadToSuspend ); + } - uxCriticalNesting--; + uxCriticalNesting--; + } else { + fprintf( stderr, "vPortSystemTickHandler called from non-FreeRTOS thread\n" ); + } } /*-----------------------------------------------------------*/ @@ -448,6 +508,8 @@ static void * prvWaitForStart( void * pvParams ) { Thread_t * pxThread = pvParams; + prvMarkAsFreeRTOSThread( pthread_self() ); + prvSuspendSelf( pxThread ); /* Resumed for the first time, unblocks all signals. */