zephyr/kernel
Florian Vaussard 8fcb780034 kernel: arm: Increase idle stack size to fix corruption by FP_SHARING
When enabling CONFIG_FP_SHARING on ARM, 64 extra bytes are necessary
on the stack of each task in order to save FPU registers S16 to S31.

In the case of the idle stack, the default value of 256 bytes is too
small. As described in ZEP-1470, when the idle task is scheduled out,
floating point registers are saved, which corrupts the stack frame
(especially the saved PC value). When scheduling the idle task, the
restored PC will jump to nowhere, leading to a Usage Fault.

Increase the size of the idle stack by 64 bytes to fix this issue.

JIRA: ZEP-1470

Change-Id: Ib800cd51e5189dda8bf59332db661c21399db3e3
Signed-off-by: Florian Vaussard <florian.vaussard@heig-vd.ch>
2017-03-27 09:05:57 -05:00
..
configs kernel: add LEGACY_KERNEL option 2017-01-09 19:42:13 +00:00
include kernel/timeouts: add description of timeouts queued on the same tick 2017-02-16 04:56:25 +00:00
Kconfig kernel: arm: Increase idle stack size to fix corruption by FP_SHARING 2017-03-27 09:05:57 -05:00
Kconfig.event_logger license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
Kconfig.power_mgmt kernel: Remove redundant TICKLESS_IDLE_SUPPORTED option 2017-02-08 13:02:34 +00:00
Makefile lifo: Make use of k_queue as implementation 2017-02-27 21:20:53 +00:00
alert.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
atomic_c.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
compiler_stack_protect.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
device.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
errno.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
idle.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
init.c kernel: init: use C implementation for STACK_CANARY_INIT 2017-02-07 22:18:21 +00:00
int_latency_bench.c kernel: use k_cycle_get_32 instead of sys_cycle_get_32 2017-02-27 21:10:32 +00:00
legacy_offload.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
legacy_timer.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
mailbox.c kernel: rename thread states symbols 2017-01-24 13:34:49 +00:00
mem_pool.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
mem_slab.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
msg_q.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
mutex.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
pipes.c kernel: rename thread states symbols 2017-01-24 13:34:49 +00:00
poll.c fifo: Make use of k_queue as implementation 2017-02-27 21:20:52 +00:00
queue.c kernel: Add k_queue API 2017-02-27 21:20:50 +00:00
sched.c kernel/sched: protect thread sched_lock with compiler barriers 2017-02-16 04:56:21 +00:00
sem.c kernel/sem: fix coding conventions 2017-02-16 04:56:27 +00:00
stack.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
sys_clock.c kernel/timeout: fix handling expired timeouts in reverve queuing order 2017-02-16 04:56:25 +00:00
system_work_q.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
thread.c kernel: thread: Fix legacy symbol mixup in fp path 2017-02-03 03:20:31 +00:00
thread_abort.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
timer.c kernel: k_timer_stop: remove assert when called from an ISR 2017-02-04 19:25:11 +00:00
version.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
work_q.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00