Skip to content

Commit

Permalink
kernel: arm: Increase idle stack size to fix corruption by FP_SHARING
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Florian Vaussard authored and galak committed Mar 15, 2017
1 parent 2ba7f4e commit 5b0671d
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion kernel/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ config IDLE_STACK_SIZE
int
prompt "Size of stack for idle thread"
default 256
default 320 if ARC
default 320 if ARC || (ARM && CPU_HAS_FPU)
default 512 if RISCV32
default 1024 if XTENSA
help
Expand Down

0 comments on commit 5b0671d

Please sign in to comment.