]> begriffs open source - freertos/commit
Update system call entry mechanism (#898)
authorGaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Thu, 23 Nov 2023 05:17:47 +0000 (10:47 +0530)
committerGitHub <noreply@github.com>
Thu, 23 Nov 2023 05:17:47 +0000 (10:47 +0530)
commit76be28cdc680039cbb748b5bf757d35c26802895
tree3cefb803a1aa164e03f3683113d63be991ccdde7
parent4ff01a7a4a51f53b44496aefee1e3c0071b7b173
Update system call entry mechanism (#898)

Earlier the System Call entry from an unprivileged task
looked like:

1. SVC for entering system call.
2. System call implementation.
3. SVC for exiting system call.

Now, the system call entry needs to make only one SVC
call and everything else is handled internally.

This PR also makes the following changes:

1. Update the Access Control List (ACL) mechanism to
    grant access to all the kernel objects before the
    scheduler is started.
2. Add one struct param for system calls with 5 parameters.
    This removes the need for special handling for system
    calls with 5 parameters.
3. Remove raise privilege SVC when MPU wrapper v2 is used.
4. Add additional run time parameter checks to MPU wrappers
    for xTaskGenericNotify and xQueueTakeMutexRecursive APIs.
114 files changed:
include/mpu_prototypes.h
include/mpu_syscall_numbers.h [new file with mode: 0644]
portable/ARMv8M/non_secure/port.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/mpu_wrappers_v2_asm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/portasm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/mpu_wrappers_v2_asm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/portasm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/mpu_wrappers_v2_asm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/portasm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/mpu_wrappers_v2_asm.c
portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/portasm.c
portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/mpu_wrappers_v2_asm.S
portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/portasm.s
portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/mpu_wrappers_v2_asm.S
portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/portasm.s
portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/mpu_wrappers_v2_asm.S
portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/portasm.s
portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/mpu_wrappers_v2_asm.S
portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/portasm.s
portable/ARMv8M/non_secure/portmacrocommon.h
portable/Common/mpu_wrappers_v2.c
portable/GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM23/non_secure/port.c
portable/GCC/ARM_CM23/non_secure/portasm.c
portable/GCC/ARM_CM23/non_secure/portmacrocommon.h
portable/GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM23_NTZ/non_secure/port.c
portable/GCC/ARM_CM23_NTZ/non_secure/portasm.c
portable/GCC/ARM_CM23_NTZ/non_secure/portmacrocommon.h
portable/GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM33/non_secure/port.c
portable/GCC/ARM_CM33/non_secure/portasm.c
portable/GCC/ARM_CM33/non_secure/portmacrocommon.h
portable/GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM33_NTZ/non_secure/port.c
portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
portable/GCC/ARM_CM33_NTZ/non_secure/portmacrocommon.h
portable/GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM35P/non_secure/port.c
portable/GCC/ARM_CM35P/non_secure/portasm.c
portable/GCC/ARM_CM35P/non_secure/portmacrocommon.h
portable/GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM35P_NTZ/non_secure/port.c
portable/GCC/ARM_CM35P_NTZ/non_secure/portasm.c
portable/GCC/ARM_CM35P_NTZ/non_secure/portmacrocommon.h
portable/GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM3_MPU/port.c
portable/GCC/ARM_CM3_MPU/portmacro.h
portable/GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM4_MPU/port.c
portable/GCC/ARM_CM4_MPU/portmacro.h
portable/GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM55/non_secure/port.c
portable/GCC/ARM_CM55/non_secure/portasm.c
portable/GCC/ARM_CM55/non_secure/portmacrocommon.h
portable/GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM55_NTZ/non_secure/port.c
portable/GCC/ARM_CM55_NTZ/non_secure/portasm.c
portable/GCC/ARM_CM55_NTZ/non_secure/portmacrocommon.h
portable/GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM85/non_secure/port.c
portable/GCC/ARM_CM85/non_secure/portasm.c
portable/GCC/ARM_CM85/non_secure/portmacrocommon.h
portable/GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
portable/GCC/ARM_CM85_NTZ/non_secure/port.c
portable/GCC/ARM_CM85_NTZ/non_secure/portasm.c
portable/GCC/ARM_CM85_NTZ/non_secure/portmacrocommon.h
portable/IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM23/non_secure/port.c
portable/IAR/ARM_CM23/non_secure/portasm.s
portable/IAR/ARM_CM23/non_secure/portmacrocommon.h
portable/IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM23_NTZ/non_secure/port.c
portable/IAR/ARM_CM23_NTZ/non_secure/portasm.s
portable/IAR/ARM_CM23_NTZ/non_secure/portmacrocommon.h
portable/IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM33/non_secure/port.c
portable/IAR/ARM_CM33/non_secure/portasm.s
portable/IAR/ARM_CM33/non_secure/portmacrocommon.h
portable/IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM33_NTZ/non_secure/port.c
portable/IAR/ARM_CM33_NTZ/non_secure/portasm.s
portable/IAR/ARM_CM33_NTZ/non_secure/portmacrocommon.h
portable/IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM35P/non_secure/port.c
portable/IAR/ARM_CM35P/non_secure/portasm.s
portable/IAR/ARM_CM35P/non_secure/portmacrocommon.h
portable/IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM35P_NTZ/non_secure/port.c
portable/IAR/ARM_CM35P_NTZ/non_secure/portasm.s
portable/IAR/ARM_CM35P_NTZ/non_secure/portmacrocommon.h
portable/IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM4F_MPU/port.c
portable/IAR/ARM_CM4F_MPU/portasm.s
portable/IAR/ARM_CM4F_MPU/portmacro.h
portable/IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM55/non_secure/port.c
portable/IAR/ARM_CM55/non_secure/portasm.s
portable/IAR/ARM_CM55/non_secure/portmacrocommon.h
portable/IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM55_NTZ/non_secure/port.c
portable/IAR/ARM_CM55_NTZ/non_secure/portasm.s
portable/IAR/ARM_CM55_NTZ/non_secure/portmacrocommon.h
portable/IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM85/non_secure/port.c
portable/IAR/ARM_CM85/non_secure/portasm.s
portable/IAR/ARM_CM85/non_secure/portmacrocommon.h
portable/IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S
portable/IAR/ARM_CM85_NTZ/non_secure/port.c
portable/IAR/ARM_CM85_NTZ/non_secure/portasm.s
portable/IAR/ARM_CM85_NTZ/non_secure/portmacrocommon.h
portable/RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
portable/RVDS/ARM_CM4_MPU/port.c
portable/RVDS/ARM_CM4_MPU/portmacro.h