]> begriffs open source - freertos/commit
portable: aarch64_sre: Add support for vApplicationFPUSafeIRQHandler
authorMarouen Ghodhbane <marouen.ghodhbane@nxp.com>
Fri, 11 Oct 2024 13:36:42 +0000 (15:36 +0200)
committerArchit Gupta <archigup@amazon.com>
Thu, 23 Jan 2025 01:00:50 +0000 (17:00 -0800)
commit72bb476bf3d20c65d054557884f624fde9eec704
treec1dc257ad788f50eba016f6b4a0ad6f698da0d87
parent630cfb5b79dee06faaeedf2b69893b68a97c4c70
portable: aarch64_sre: Add support for vApplicationFPUSafeIRQHandler

The application writer needs to name their IRQ handler as:
1. vApplicationIRQHandler if the IRQ handler does not use FPU registers.
2. vApplicationFPUSafeIRQHandler is the IRQ handler uses FPU registers.

When the application uses vApplicationFPUSafeIRQHandler, a default
implementation of vApplicationIRQHandler is used which stores FPU
registers and then calls vApplicationFPUSafeIRQHandler.

Note that recent versions of GCC may use FP/SIMD registers to optimize 16-bytes
copy and especially when using va_start()/va_arg() functions (e.g printing some thing
in IRQ handlers may trigger usage of FPU registers)

This implementation is heavily inspired by both the ARM_CA9 port and the ARM_CRx_No_GIC
port done in [1]

[1] https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/1113

Signed-off-by: Marouen Ghodhbane <marouen.ghodhbane@nxp.com>
portable/GCC/ARM_AARCH64_SRE/port.c
portable/GCC/ARM_AARCH64_SRE/portASM.S