ARM: mxc: ssi-fiq: Make ssi-fiq.S Thumb-2 compatible
authorDave Martin <dave.martin@linaro.org>
Fri, 10 Aug 2012 11:53:24 +0000 (12:53 +0100)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 13 Aug 2012 19:33:14 +0000 (21:33 +0200)
commit7095b95654302ceb8a011ee883d1500851061b0d
treed93d153741e33763191e1c3837cb981708e07456
parenta745f039b901b43937f61f149ad9cee2796ed299
ARM: mxc: ssi-fiq: Make ssi-fiq.S Thumb-2 compatible

Because FIQ handlers get copied straight into the vectors page to
the FIQ vector entry point, FIQ handlers in a Thumb-2 kernel must
start in Thumb-2.  A Thumb-2 kernel enters all exception vectors in
Thumb-2.

This patch adapts the mxc SSI FIQ code suitable for a Thumb-2
kernel.

The code contained use of r13 (sp) which isn't allowed in Thumb-2.
r11 and r13 have been swapped throughout the file to work around
this.

Currently, the way that the function to be copied is located using
labels is a bit ugly: we cannot annotate the FIQ handler properly
as a Thumb-2 function, because this would set bit 0 of the label
address seen by the linker, causing off-by-one errors when copying
the function.  Ideally, the copy would be done with fncpy(), but
this would require changes to the common set_fiq_handler()
function.  For now, we don't touch this.

References to locally-defined global symbols with adr and ldr may
not be accepted by the assembler in Thumb-2.  Local shadow symbols
are added to work around this.

Signed-off-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/plat-mxc/ssi-fiq.S