ARM: 8195/1: vfp: Bounce undefined instructions in vectored mode
authorStepan Moskovchenko <stepanm@codeaurora.org>
Mon, 10 Nov 2014 20:56:42 +0000 (21:56 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 17 Nov 2014 20:53:57 +0000 (20:53 +0000)
Certain ARM CPU implementations (e.g. Cortex-A15) may not raise a
floating- point exception whenever deprecated short-vector VFP
instructions are executed. Instead these instructions are treated
as UNALLOCATED. Change the VFP exception handling code to emulate
short-vector instructions even if FPEXC exception bits are not
set.

Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Tested-by: Will Deacon <will.deacon@arm.com>
Tested-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/vfp/vfphw.S

index cda654cbf2c289638da7a6da28b685345ffbf0c4..f74a8f7e5f845a817ea21179fa65412217b365fd 100644 (file)
@@ -197,6 +197,12 @@ look_for_VFP_exceptions:
        tst     r5, #FPSCR_IXE
        bne     process_exception
 
+       tst     r5, #FPSCR_LENGTH_MASK
+       beq     skip
+       orr     r1, r1, #FPEXC_DEX
+       b       process_exception
+skip:
+
        @ Fall into hand on to next handler - appropriate coproc instr
        @ not recognised by VFP