esp-idf/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos
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
..
FreeRTOSConfig_smp.h feat(freertos): make num of task notifications configurable 2022-11-15 09:36:42 +01:00
portbenchmark.h freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
portmacro.h freertos(SMP): Fix SMP FreeRTOS portDISABLE_INTERRUPTS() macro on xtensa port 2022-11-15 14:57:24 +08:00
xtensa_api.h freertos: Update Xtensa port files to support FreeRTOS SMP 2022-03-08 14:59:18 +08:00
xtensa_config.h freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00
xtensa_context.h freertos: Update Xtensa port files to support FreeRTOS SMP 2022-03-08 14:59:18 +08:00
xtensa_rtos.h freertos(SMP): Refactor FPU handling on the Xtensa port of Amaazon SMP FreeRTOS 2022-12-23 15:29:17 +08:00
xtensa_timer.h freertos: Copy IDF xtensa port files 2022-03-08 14:59:18 +08:00