• Dave Martin's avatar
    ARM: mxc: ssi-fiq: Make ssi-fiq.S Thumb-2 compatible · 7095b956
    Dave Martin authored
    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: default avatarDave Martin <dave.martin@linaro.org>
    Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
    7095b956
ssi-fiq.S 2.94 KB