esp-idf/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa
Darian Leung 9300bef9b8 freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS
This commit refactors the FPU handling code on the Xtensa port of Amazon SMP
FreeRTOS in the following ways:

Auto-pinning via XT_RTOS_CP_EXC_HOOK
------------------------------------

The "_xt_coproc_exc" exception would previously automatically pin a task that
uses the FPU to the current core (to ensure that we can lazy save the task's FPU
context). However, this would mean that "xtensa_vectors.S" would need to be
OS-aware (to read the task's TCB structure).

This is now refactored so that "_xt_coproc_exc" calls a CP exception hook
function ("XT_RTOS_CP_EXC_HOOK") implemented in "portasm.S", thus allowing
"xtensa_vectors.S" to remain OS agnostic.

Using macros to acquire owner spinlock
--------------------------------------

The taking and relasing of the "_xt_coproc_owner_sa_lock" is now mostly
abstracted as the "spinlock_take" and "spinlock_release" macro. As a result,
"_xt_coproc_release" and "_xt_coproc_exc" are refactored so that:

- They are closer to their upstream (original) versions
- The spinlock is only taken when building for multicore
- The spinlock held region is shortened (now only protects the instructions
  that access the "_xt_coproc_owner_sa" array

Other Changes
-------------

- Updated placing and comments of various "offset_..." constants used by
  portasm.S
- Update description of "get_cpsa_from_tcb" assembly macro
- Tidied up some typos in the ".S" files
2022-12-23 15:29:17 +08:00
..
include/freertos freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
port.c freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
portasm.S freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
readme_xtensa.txt freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xt_asm_utils.h freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
xtensa_context.S freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
xtensa_init.c freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xtensa_loadstore_handler.S freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xtensa_overlay_os_hook.c freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xtensa_vector_defaults.S freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xtensa_vectors.S freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00