ztest: make the FPU flush workaround more generic
In addition to ARM64, it must apply to RISC-V too now. Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
parent
ff07da6ff1
commit
90ae60078e
|
@ -107,15 +107,14 @@ static void cpu_hold(void *arg1, void *arg2, void *arg3)
|
||||||
|
|
||||||
k_sem_give(&cpuhold_sem);
|
k_sem_give(&cpuhold_sem);
|
||||||
|
|
||||||
#if defined(CONFIG_ARM64) && defined(CONFIG_FPU_SHARING)
|
#if (defined(CONFIG_ARM64) || defined(CONFIG_RISCV)) && defined(CONFIG_FPU_SHARING)
|
||||||
/*
|
/*
|
||||||
* We'll be spinning with IRQs disabled. The flush-your-FPU request
|
* We'll be spinning with IRQs disabled. The flush-your-FPU request
|
||||||
* IPI will never be serviced during that time. Therefore we flush
|
* IPI will never be serviced during that time. Therefore we flush
|
||||||
* the FPU preemptively here to prevent any other CPU waiting after
|
* the FPU preemptively here to prevent any other CPU waiting after
|
||||||
* this CPU forever and deadlock the system.
|
* this CPU forever and deadlock the system.
|
||||||
*/
|
*/
|
||||||
extern void z_arm64_flush_local_fpu(void);
|
k_float_disable(_current_cpu->arch.fpu_owner);
|
||||||
z_arm64_flush_local_fpu();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (cpuhold_active) {
|
while (cpuhold_active) {
|
||||||
|
|
|
@ -132,15 +132,14 @@ static void cpu_hold(void *arg1, void *arg2, void *arg3)
|
||||||
|
|
||||||
k_sem_give(&cpuhold_sem);
|
k_sem_give(&cpuhold_sem);
|
||||||
|
|
||||||
#if defined(CONFIG_ARM64) && defined(CONFIG_FPU_SHARING)
|
#if (defined(CONFIG_ARM64) || defined(CONFIG_RISCV)) && defined(CONFIG_FPU_SHARING)
|
||||||
/*
|
/*
|
||||||
* We'll be spinning with IRQs disabled. The flush-your-FPU request
|
* We'll be spinning with IRQs disabled. The flush-your-FPU request
|
||||||
* IPI will never be serviced during that time. Therefore we flush
|
* IPI will never be serviced during that time. Therefore we flush
|
||||||
* the FPU preemptively here to prevent any other CPU waiting after
|
* the FPU preemptively here to prevent any other CPU waiting after
|
||||||
* this CPU forever and deadlock the system.
|
* this CPU forever and deadlock the system.
|
||||||
*/
|
*/
|
||||||
extern void z_arm64_flush_local_fpu(void);
|
k_float_disable(_current_cpu->arch.fpu_owner);
|
||||||
z_arm64_flush_local_fpu();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (cpuhold_active) {
|
while (cpuhold_active) {
|
||||||
|
|
Loading…
Reference in a new issue