FreeRTOS-Kernel/portable
Archit Gupta cb06bcba7a Disallow unprivileged critical sections with MPU wrappers v2
When using MPU wrappers version 2 (configUSE_MPU_WRAPPERS_V1 == 0),
portRAISE_PRIVILEGE() is a no-op because the portSVC_RAISE_PRIVILEGE
handler is compiled only for MPU wrappers version 1. As a result, an
unprivileged task that calls taskENTER_CRITICAL() does not actually raise
its privilege, so the subsequent BASEPRI write is ignored by the hardware
and the critical section silently fails to mask interrupts. This produces
latent, hard-to-debug faults.

configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS is therefore not supported with
MPU wrappers version 2. In the ARMv7-M MPU ports:

- When the option is left undefined under v2, default it to 0 instead of 1
  so the dangerous default configuration is safe.
- When the option is explicitly set to 1 under v2, raise a compile-time
  #error so the unsupported configuration is rejected loudly rather than
  failing silently at run time.

Behaviour for MPU wrappers version 1 is unchanged.
2026-06-15 20:44:37 +00:00
..
ARMClang Normalize line endings and whitespace in source files 2022-11-29 15:38:47 -08:00
ARMv8M Fix MPU wrapper macro mapping for ARMv8M ports (#1419) 2026-05-29 20:08:02 -07:00
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 event-groups: Fix multiple definitions (#1307) 2025-08-14 10:40:59 -07:00
GCC Disallow unprivileged critical sections with MPU wrappers v2 2026-06-15 20:44:37 +00:00
IAR Disallow unprivileged critical sections with MPU wrappers v2 2026-06-15 20:44:37 +00:00
Keil Normalize line endings and whitespace in source files 2022-11-29 15:38:47 -08:00
MemMang Fix spurious heap_5 assert when allocation search reaches end marker (#1425) 2026-06-12 18:55:13 +00:00
MikroC/ARM_CM4F Move configASSERT default definition above before including portable.h. (#1185) 2024-11-04 16:35:52 +05:30
MPLAB MPLAB PIC32MZ-EF - Adds an assert to catch register overflow (#1265) (#1267) 2025-04-25 17:05:15 +05:30
MSVC-MingW Fix undefined behavior from signed left-shift in MSVC-MingW port (#1411) 2026-05-06 16:11:51 -07:00
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 Disallow unprivileged critical sections with MPU wrappers v2 2026-06-15 20:44:37 +00:00
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 Add Arm China STAR-MC3 port support (#1363) 2026-02-20 10:33:34 -08:00
WizC/PIC18 Fix spelling typos (#1168) 2024-11-01 10:09:49 -07:00
CMakeLists.txt Add Arm China STAR-MC3 port support (#1363) 2026-02-20 10:33:34 -08:00
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.