FreeRTOS-Kernel/portable
Ahmed Ismail 78e0cc778a
ARMv8.1-M: Add task dedicated PAC key support (#1195)
armv8.1-m: Add task dedicated PAC key

To harden the security, each task is assigned a dedicated PAC key, so that attackers needs to guess the all the tasks' PAC keys right to exploit the system using Return Oriented Programming.

The kernel is now updated to support the following:
* A PAC key set with a random number generated and is saved in the task's context when a task is created.
* As part of scheduling, the task's PAC key is stored/restored to/from the task's context when a task is unscheduled/scheduled from/to run.

stack-overflow-check: Introduce portGET_CURRENT_TOP_OF_STACK macro

When MPU wrapper v2 is used, the task's context is stored in TCB and `pxTopOfStack`` member of TCB points to the context location in TCB. We, therefore, need to read PSP to find the task's current top of stack.

Signed-off-by: Ahmed Ismail <Ahmed.Ismail@arm.com>
2025-01-14 10:50:52 +05:30
..
ARMClang Normalize line endings and whitespace in source files 2022-11-29 15:38:47 -08:00
ARMv8M ARMv8.1-M: Add task dedicated PAC key support (#1195) 2025-01-14 10:50:52 +05:30
BCC/16BitDOS Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
CCRH/F1Kx Pass core ID to port lock macros (#1212) 2024-12-30 14:28:49 +05:30
CCS Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
CodeWarrior Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
Common Fix variable name mismatch, mpu_wrappers type mismatch. (#1181) 2024-11-01 10:56:18 -07:00
GCC ARMv8.1-M: Add task dedicated PAC key support (#1195) 2025-01-14 10:50:52 +05:30
IAR ARMv8.1-M: Add task dedicated PAC key support (#1195) 2025-01-14 10:50:52 +05:30
Keil Normalize line endings and whitespace in source files 2022-11-29 15:38:47 -08:00
MemMang Add xPortResetHeapMinimumEverFreeHeapSize to heap5 (#1191) 2024-11-13 13:31:41 +05:30
MikroC/ARM_CM4F Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
MPLAB Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
MSVC-MingW Regression Bug Fix: Fix Incorrect Return of MSVC-MingW portYIELD_FROM_ISR (#1207) 2024-12-16 18:48:54 +05:30
oWatcom/16BitDOS Fix spelling typos (#1168) 2024-11-01 10:09:49 -07:00
Paradigm/Tern_EE Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
Renesas Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
Rowley Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
RVDS Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
SDCC/Cygnal Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
Softune Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
Tasking/ARM_CM4F Use Regex for Copyright Year in Header Check (#1002) 2024-02-26 09:26:42 -08:00
template Pass core ID to port lock macros (#1212) 2024-12-30 14:28:49 +05:30
ThirdParty Update community supported ports submodulees (#1218) 2025-01-06 11:05:53 +05:30
WizC/PIC18 Fix spelling typos (#1168) 2024-11-01 10:09:49 -07:00
CMakeLists.txt Fix CMake build for RP2040 (#1197) 2024-11-25 10:54:41 +05:30
readme.txt Normalize line endings and whitespace in source files 2022-11-29 15:38:47 -08:00

Each real time kernel port consists of three files that contain the core kernel
components and are common to every port, and one or more files that are
specific to a particular microcontroller and/or compiler.


+ The FreeRTOS/Source/Portable/MemMang directory contains the five sample
memory allocators as described on the https://www.FreeRTOS.org WEB site.

+ The other directories each contain files specific to a particular
microcontroller or compiler, where the directory name denotes the compiler
specific files the directory contains.



For example, if you are interested in the [compiler] port for the [architecture]
microcontroller, then the port specific files are contained in
FreeRTOS/Source/Portable/[compiler]/[architecture] directory.  If this is the
only port you are interested in then all the other directories can be
ignored.