summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRabin Vincent <rabin@rab.in>2014-05-24 20:38:01 +0400
committerJiri Slaby <jslaby@suse.cz>2014-06-20 19:33:59 +0400
commitae87686e2c356aba851817e804bd4fc4023b6468 (patch)
tree82448dc2ca1880cc4edcf45737c312f7dde4a26c /drivers
parentadd232a1a6031431736e0c774cb8e1e7fe89db60 (diff)
downloadlinux-ae87686e2c356aba851817e804bd4fc4023b6468.tar.xz
ARM: 8064/1: fix v7-M signal return
commit 483a6c9d447f625b991fa04a1530493d893984db upstream. According to the ARM ARM, the behaviour is UNPREDICTABLE if the PC read from the exception return stack is not half word aligned. See the pseudo code for ExceptionReturn() and PopStack(). The signal handler's address has the bit 0 set, and setup_return() directly writes this to regs->ARM_pc. Current hardware happens to discard this bit, but QEMU's emulation doesn't and this makes processes crash. Mask out bit 0 before the exception return in order to get predictable behaviour. Fixes: 19c4d593f0b4 ("ARM: ARMv7-M: Add support for exception handling") Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Rabin Vincent <rabin@rab.in> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions