aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/entry-common.S
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2005-10-12 14:51:24 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-10-12 14:51:24 -0400
commit60ac133aac9e07b94f2cb6bf571bf8aef69248c3 (patch)
treef75a44630c4cd0b63c025eee1ccc615a6ec7157e /arch/arm/kernel/entry-common.S
parentda64c6ee6bb71bfb3f09d9bb89ce1aa4b1ee7e89 (diff)
[ARM] 2974/1: fix ARM710 swi bug workaround
Patch from Nicolas Pitre Either no one is using an ARM710 with recent kernels, or all ARM710s still in use are not afflicted by this swi bug. Nevertheless, the code to work around the ARM710 swi bug is itself currently buggy since it uses r8 as a pointer to S_PC while in fact it holds the spsr content these days. Fix that, and simplify the code as well. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/entry-common.S')
-rw-r--r--arch/arm/kernel/entry-common.S7
1 files changed, 1 insertions, 6 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 81d450ac3fab..066597f4345a 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -106,15 +106,10 @@ ENTRY(ret_from_fork)
106 .endm 106 .endm
107 107
108.Larm700bug: 108.Larm700bug:
109 ldr r0, [sp, #S_PSR] @ Get calling cpsr
110 sub lr, lr, #4
111 str lr, [r8]
112 msr spsr_cxsf, r0
113 ldmia sp, {r0 - lr}^ @ Get calling r0 - lr 109 ldmia sp, {r0 - lr}^ @ Get calling r0 - lr
114 mov r0, r0 110 mov r0, r0
115 ldr lr, [sp, #S_PC] @ Get PC
116 add sp, sp, #S_FRAME_SIZE 111 add sp, sp, #S_FRAME_SIZE
117 movs pc, lr 112 subs pc, lr, #4
118#else 113#else
119 .macro arm710_bug_check, instr, temp 114 .macro arm710_bug_check, instr, temp
120 .endm 115 .endm