mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-07-19 10:42:29 -04:00
* Fix Stack alignment for Microchip PIC32MX port The stack of a task was not 8 byte aligned. Adding one more unused space at the beginning of task stack (before simulated context) ensures that the stack is 8 byte aligned. The stack (with simulated context) of a newly created task looks like the following: +------------+ | UNUSED | +------------+ | UNUSED | +------------+ | 0xDEADBEEF | +------------+ | 0x12345678 | ^ +------------+ | | CAUSE | <-- SP After Context Restore | +------------+ | | STATUS | | +------------+ | | EPC | | +------------+ | | ra | | +------------+ | | s8 | | +------------+ | | t9 | | +------------+ | | t8 | | +------------+ | | t7 | | +------------+ | | t6 | | +------------+ | | t5 | | +------------+ | | t4 | | +------------+ | | t3 | | +------------+ | | t2 | | +------------+ | | t1 | | +------------+ Context | | t0 | (132 bytes) | +------------+ | | a3 | | +------------+ | | a2 | | +------------+ | | a1 | | +------------+ | | a0 | | +------------+ | | v1 | | +------------+ | | v0 | | +------------+ | | s7 | | +------------+ | | s6 | | +------------+ | | s5 | | +------------+ | | s4 | | +------------+ | | s3 | | +------------+ | | s2 | | +------------+ | | s1 | | +------------+ | | s0 | | +------------+ | | at | | +------------+ | | HI | | +------------+ | | LO | | +------------+ V | | +------------+ | | <-- SP After Context Save +------------+ Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> * Update comment Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> |
||
---|---|---|
.. | ||
ARMClang | ||
ARMv8M | ||
BCC/16BitDOS | ||
CCS | ||
CodeWarrior | ||
Common | ||
GCC | ||
IAR | ||
Keil | ||
MemMang | ||
MikroC/ARM_CM4F | ||
MPLAB | ||
MSVC-MingW | ||
oWatcom/16BitDOS | ||
Paradigm/Tern_EE | ||
Renesas | ||
Rowley | ||
RVDS | ||
SDCC/Cygnal | ||
Softune | ||
Tasking/ARM_CM4F | ||
ThirdParty | ||
WizC/PIC18 | ||
readme.txt |
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.