arm64: FPU context switching support

This adds FPU sharing support with a lazy context switching algorithm.

Every thread is allowed to use FPU/SIMD registers. In fact, the compiler
may insert FPU reg accesses in anycontext to optimize even non-FP code
unless the -mgeneral-regs-only compiler flag is used, but Zephyr
currently doesn't support such a build.

It is therefore possible to do FP access in IRS as well with this patch
although IRQs are then disabled to prevent nested IRQs in such cases.

Because the thread object grows in size, some tests have to be adjusted.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
Nicolas Pitre 2021-04-07 23:31:44 -04:00 committed by Carles Cufí
commit f1f63dda17
20 changed files with 588 additions and 5 deletions

View file

@ -9,7 +9,9 @@
/* Per CPU architecture specifics */
struct _cpu_arch {
/* content coming soon */
#ifdef CONFIG_FPU_SHARING
struct k_thread *fpu_owner;
#endif
};
#endif /* ZEPHYR_INCLUDE_ARM64_STRUCTS_H_ */