提交 99e775ac 编写于 作者: A Ard Biesheuvel 提交者: Zheng Zengkai

ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling

stable inclusion
from stable-v5.10.89
commit 89876d10830db6ac55ae4379764c9e9dd1268277
bugzilla: 186140 https://gitee.com/openeuler/kernel/issues/I4S8HA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=89876d10830db6ac55ae4379764c9e9dd1268277

--------------------------------

commit 8536a5ef upstream.

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: b86040a5 ("Thumb-2: Implementation of the unified start-up and exceptions code")
Signed-off-by: NArd Biesheuvel <ardb@kernel.org>
Signed-off-by: NRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 1c409ae3
...@@ -596,11 +596,9 @@ call_fpe: ...@@ -596,11 +596,9 @@ call_fpe:
tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2 tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2
reteq lr reteq lr
and r8, r0, #0x00000f00 @ mask out CP number and r8, r0, #0x00000f00 @ mask out CP number
THUMB( lsr r8, r8, #8 )
mov r7, #1 mov r7, #1
add r6, r10, #TI_USED_CP add r6, r10, r8, lsr #8 @ add used_cp[] array offset first
ARM( strb r7, [r6, r8, lsr #8] ) @ set appropriate used_cp[] strb r7, [r6, #TI_USED_CP] @ set appropriate used_cp[]
THUMB( strb r7, [r6, r8] ) @ set appropriate used_cp[]
#ifdef CONFIG_IWMMXT #ifdef CONFIG_IWMMXT
@ Test if we need to give access to iWMMXt coprocessors @ Test if we need to give access to iWMMXt coprocessors
ldr r5, [r10, #TI_FLAGS] ldr r5, [r10, #TI_FLAGS]
...@@ -609,7 +607,7 @@ call_fpe: ...@@ -609,7 +607,7 @@ call_fpe:
bcs iwmmxt_task_enable bcs iwmmxt_task_enable
#endif #endif
ARM( add pc, pc, r8, lsr #6 ) ARM( add pc, pc, r8, lsr #6 )
THUMB( lsl r8, r8, #2 ) THUMB( lsr r8, r8, #6 )
THUMB( add pc, r8 ) THUMB( add pc, r8 )
nop nop
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册