zephyr/tests/kernel
Nicolas Pitre b8d24ffb45 arm64: mitigate FPU-in-exception usage side effects
Every va_start() currently triggers a FPU access trap if FPU is not
already used. This is due to the fact that va_start() must copy FPU
registers that are used for float argument passing into the va_list
object. Flushing the FPU context to its owner and granting access to
the current thread is wasteful if this is only for va_start(),
especially since in most cases there are simply no FP arguments
being passed by the caller.

This is made even worse with exception code (syscalls, IRQ handlers,
etc.) where the exception code has to be resumed with interrupts
disabled upon FPU access as there is no provision for preserving an
interrupted exception mode's FPU context.

Fix those issues by simply simulating the sequence of STR instructions
that the va_start() generates without actually granting FPU access.
We limit ourselves only to exception context to keep changes to a
minimum for now.

This also allows for reverting the ARM64 exception in the nested IRQ
test as it now works properly even if FPU_SHARING is enabled.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-05-21 04:52:44 -05:00
..
common tests/kernel/common: Remove needless 1cpu limitation from test_clock_uptime 2021-05-17 15:27:37 -04:00
condvar/condvar_api tests: condvar: fix one testcase failure on qemu_cortex_a53_smp 2021-05-08 17:08:48 -04:00
context tests/kernel/context: Support APIC_TSC_DEADLINE timer 2021-05-07 16:48:58 -04:00
device pm: device: Align state names with system states 2021-05-07 18:35:12 -04:00
early_sleep device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
fatal tests/kernel/fatal: Don't swap while locked 2021-05-17 15:27:37 -04:00
fifo tests/fifo_api: Move k_fifo off stack 2021-03-08 11:14:27 -05:00
fpu_sharing arm64: FPU context switching support 2021-05-03 11:56:50 +02:00
gen_isr_table tests: kernel: gen_isr_table: do not use IRQ 57 on NXP LPC55S16 2021-05-19 16:16:32 -05:00
interrupt arm64: mitigate FPU-in-exception usage side effects 2021-05-21 04:52:44 -05:00
lifo tests/queue: tests/lifo_usage: Address ADSP/coherence issues 2021-03-08 11:14:27 -05:00
mbox kernel: remove object tracing 2021-05-07 22:10:21 -04:00
mem_heap tests/kernel/mem_heap: Add minimum-size heap test 2021-05-20 17:52:21 -04:00
mem_protect tests: mem_protect/mem_map: remove unused assignment to cnt 2021-05-11 15:45:39 -05:00
mem_slab tests: kernel: mem_slab: Add no multithreading support 2021-04-29 14:50:35 +02:00
mp tests: kernel: Add missing kernel tag to tests 2021-03-05 14:52:55 -05:00
msgq tests: msgq_usage: ensure all services started before client query 2021-05-13 22:03:55 -04:00
mutex tests: smp: cancel CONFIG_MP_NUM_CPUS limit of some testcases 2021-04-27 13:30:24 -04:00
pending tests: kernel: pending: replace to-be-deprecated k_work API use 2021-04-21 20:42:36 -04:00
pipe tests: pipe: test some error conditions 2021-04-06 10:19:24 -04:00
poll tests/kernel: Add k_poll test for polling on message queues 2021-04-17 07:47:26 -04:00
profiling/profiling_api tests: replace power/power.h with pm/pm.h 2021-05-05 18:35:49 -04:00
queue Test: queue: Add a testcase to test queue 2021-04-06 10:13:49 -04:00
sched test: schedule_api : test some negative test 2021-04-19 16:23:12 -04:00
semaphore tests: kernel: fix two semaphroe testcases failed on ADSP 2021-05-14 16:41:21 -04:00
sleep tests: kernel/sleep: increase maximum threshold for nRF51 2020-09-24 09:52:32 -05:00
smp tests/kernel/smp: Remove release_global_lock_irq case 2021-05-17 15:27:37 -04:00
spinlock userspace: rename _is_user_context -> k_is_user_context 2021-04-01 05:34:17 -04:00
stack/stack tests: stack: add a testcase 2021-03-29 16:19:50 -05:00
threads test: thread : test run k_thread_resume on unsuspend thread 2021-05-07 18:21:23 -04:00
tickless/tickless_concept doc: fix doxygen grouping 2021-05-17 11:51:44 -04:00
timer tests: kernel: timer: timer_api: Extend with CONFIG_MULTITHREADING=n case 2021-04-29 14:50:35 +02:00
workq kernel: remove dead workq code 2021-05-18 11:21:27 -05:00
xip tests: kernel: Add missing kernel tag to tests 2021-03-05 14:52:55 -05:00