zephyr/kernel
Bradley Bolen 88ba97fea4 arch: arm: aarch32: cortex_a_r: Add shared FPU support
This adds lazy floating point context switching.  On svc/irq entrance,
the VFP is disabled and a pointer to the exception stack frame is saved
away.  If the esf pointer is still valid on exception exit, then no
other context used the VFP so the context is still valid and nothing
needs to be restored.  If the esf pointer is NULL on exception exit,
then some other context used the VFP and the floating point context is
restored from the esf.

The undefined instruction handler is responsible for saving away the
floating point context if needed.  If the handler is in the first
irq/svc context and the current thread uses the VFP, then the float
context needs to be saved.  Also, if the handler is in a nested context
and the previous context was using the FVP, save the float context.

Signed-off-by: Bradley Bolen <bbolen@lexmark.com>
2022-05-05 12:03:27 +09:00
..
include arch: arm: aarch32: cortex_a_r: Add shared FPU support 2022-05-05 12:03:27 +09:00
paging
atomic_c.c
banner.c
cache_handlers.c
CMakeLists.txt
compiler_stack_protect.c
condvar.c
device.c kernel/device: Remove unknown external pointer 2022-04-08 09:59:00 -04:00
errno.c
events.c
fatal.c
futex.c
idle.c
init.c kernel: Remove idle thread cpu index on single-core devices 2022-03-30 10:08:48 -04:00
Kconfig kernel: sched: Change cpu pin only for not executing threads 2022-05-04 13:46:48 -04:00
Kconfig.vm everywhere: fix typos 2022-03-18 13:24:08 -04:00
kheap.c
mailbox.c
main_weak.c
mem_domain.c
mem_slab.c
mempool.c
mmu.c kernel: mmu: add a log line for z_phys_unmap 2022-02-24 08:38:38 -06:00
msg_q.c
mutex.c kernel: mutex: remove unnecessary schedule locking 2022-04-20 21:03:59 -04:00
pipes.c
poll.c everywhere: fix typos 2022-03-14 20:22:24 -04:00
queue.c
sched.c kernel: sched: Change cpu pin only for not executing threads 2022-05-04 13:46:48 -04:00
sem.c
smp.c kernel: Refactor SMP cpu initialization a bit 2022-03-01 09:59:15 -05:00
stack.c
system_work_q.c
thread.c kernel: update k_thread_state_str() API 2022-04-20 20:20:13 -04:00
timeout.c kernel/timeout: Cleanup/speedup parallel announce logic 2022-04-13 13:26:14 -07:00
timer.c kernel/k_timer: Robustify vs. late interrupts 2022-05-04 09:55:46 -05:00
usage.c
userspace_handler.c
userspace.c userspace: plug thread index leak in k_object_alloc() 2022-03-14 19:18:34 -04:00
version.c
work.c kernel/workq: Cleanup bespoke reschedule point 2022-05-02 10:23:13 -05:00
xip.c kernel/init.c: allow for memset/memcpy alternatives during early boot 2022-02-21 21:00:12 -05:00