zephyr/arch/xtensa/core
Andy Ross 865bbd6b69 xtensa-asm2: Handle alloca/movsp exceptions
Xtensa register windows have a special exception that happens when the
stack pointer needs to be moved, but the caller function has already
spilled its registers below it.

I thought these were unexercised in Zephyr code, but they turn out to
be thrown by the existing mem_pool tests when run in the 32-register
qemu environment (but not on 64-register hardwre).  Because the effect
of the exception is to unspill the caller, there is no good way to
handle this in a traditional handler.  Instead put a 5-instruction
stub in front of the user exception handler (i.e. incurring that cost
on every trap and every L1 interrupt) to test before doing the normal
entry.

Works, but would be nicer to optimize this in the future so that only
true alloca exceptions take that cost.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-02-16 10:44:29 -05:00
..
offsets kbuild: Removed KBuild 2017-11-08 20:00:22 -05:00
startup kbuild: Removed KBuild 2017-11-08 20:00:22 -05:00
CMakeLists.txt xtensa: Add Kconfig for asm2 layer 2018-02-16 10:44:29 -05:00
atomic.S
cpu_idle.c
crt1.S
fatal.c k_thread_abort(): assert if abort essential thread 2017-09-07 16:35:16 -07:00
irq_manage.c
irq_offload.c
swap.S
thread.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
window_vectors.S xtensa: Move register window exception handlers into a separate file 2018-02-16 10:44:29 -05:00
xt_zephyr.S
xtensa-asm2-util.S xtensa-asm2: Handle alloca/movsp exceptions 2018-02-16 10:44:29 -05:00
xtensa-asm2.c xtensa-asm2: Exception/interrupt handler should check stack sentinel 2018-02-16 10:44:29 -05:00
xtensa_context.S
xtensa_intgen.py xtensa: Interrupt generator script and output for qemu & esp32 2018-02-16 10:44:29 -05:00
xtensa_intgen.tmpl xtensa: Interrupt generator script and output for qemu & esp32 2018-02-16 10:44:29 -05:00
xtensa_intr.c xtensa: Remove _xt_set_exception_handler() 2018-02-16 10:44:29 -05:00
xtensa_intr_asm.S arch: xtensa: Move exception table to xtensa_intr.c 2017-08-09 12:26:14 -07:00
xtensa_vectors.S xtensa: Make high priority interrupts optional 2018-02-16 10:44:29 -05:00