summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/entry-armv.S
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2011-01-27 15:46:20 -0800
committerColin Cross <ccross@android.com>2011-06-14 09:09:51 -0700
commit082fec5ea3d328ceb86a9590c5e47efedc5ea45c (patch)
treef898a50982edffd1e75a78a3e92408d8ebbf95ba /arch/arm/kernel/entry-armv.S
parentd20e6ae8aceb712a3c74263f17c28ca63bb2a677 (diff)
ARM: vfp: Move exception address fixup into vfphw.S
If the PC on the stack is updated in entry-armv.S, do_undefinstr can get called after the fixup. do_undefinstr does its own fixup, and doing both causes the PC to point to half way through an instruction. Instead, do the fixup in do_vfp, where only the vfp code can get called. Change-Id: I6d966887adc8ed58d88bfe0cb3c0ba29213be488 Signed-off-by: Colin Cross <ccross@android.com>
Diffstat (limited to 'arch/arm/kernel/entry-armv.S')
-rw-r--r--arch/arm/kernel/entry-armv.S3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index e64b47dd43f..45516a4840e 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -492,8 +492,7 @@ __und_usr:
blo __und_usr_unknown
3: ldrht r0, [r4]
add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
- str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
- orr r0, r0, r5, lsl #16 @ regs->ARM_pc
+ orr r0, r0, r5, lsl #16
#else
b __und_usr_unknown
#endif