Skip to content

Commit 8536a5e

Browse files
ardbiesheuvelRussell King (Oracle)
authored and
Russell King (Oracle)
committed
ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
The Thumb2 version of the FP exception handling entry code treats the register holding the CP number (R8) differently, resulting in the iWMMXT CP number check to be incorrect. Fix this by unifying the ARM and Thumb2 code paths, and switch the order of the additions of the TI_USED_CP offset and the shifted CP index. Cc: <stable@vger.kernel.org> Fixes: b86040a ("Thumb-2: Implementation of the unified start-up and exceptions code") Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
1 parent 7202216 commit 8536a5e

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

arch/arm/kernel/entry-armv.S

+3-5
Original file line numberDiff line numberDiff line change
@@ -596,11 +596,9 @@ call_fpe:
596596
tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2
597597
reteq lr
598598
and r8, r0, #0x00000f00 @ mask out CP number
599-
THUMB( lsr r8, r8, #8 )
600599
mov r7, #1
601-
add r6, r10, #TI_USED_CP
602-
ARM( strb r7, [r6, r8, lsr #8] ) @ set appropriate used_cp[]
603-
THUMB( strb r7, [r6, r8] ) @ set appropriate used_cp[]
600+
add r6, r10, r8, lsr #8 @ add used_cp[] array offset first
601+
strb r7, [r6, #TI_USED_CP] @ set appropriate used_cp[]
604602
#ifdef CONFIG_IWMMXT
605603
@ Test if we need to give access to iWMMXt coprocessors
606604
ldr r5, [r10, #TI_FLAGS]
@@ -609,7 +607,7 @@ call_fpe:
609607
bcs iwmmxt_task_enable
610608
#endif
611609
ARM( add pc, pc, r8, lsr #6 )
612-
THUMB( lsl r8, r8, #2 )
610+
THUMB( lsr r8, r8, #6 )
613611
THUMB( add pc, r8 )
614612
nop
615613

0 commit comments

Comments
 (0)