mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
9300bef9b8
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 |
||
---|---|---|
.. | ||
include/freertos | ||
port.c | ||
portasm.S | ||
readme_xtensa.txt | ||
xt_asm_utils.h | ||
xtensa_context.S | ||
xtensa_init.c | ||
xtensa_loadstore_handler.S | ||
xtensa_overlay_os_hook.c | ||
xtensa_vector_defaults.S | ||
xtensa_vectors.S |