forked from epagris/FreeRTOS-Kernel
* 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>
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.