diff options
author | Anders Grafström <grfstrm@users.sourceforge.net> | 2010-03-15 11:04:14 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-03-15 13:20:08 -0400 |
commit | 8e4971f2fb2380ce66196136e113d04196b80fcd (patch) | |
tree | 18504783969d9e5005deadaa8709a475cc30e04f /arch/arm/kernel | |
parent | 5d8614cc5d6c5c02b7995ed97303481d4e3a8cc7 (diff) |
ARM: 5991/1: Fix regression in restore_user_regs macro
ARMv5T and earlier require that a ldm {}^ instruction is not followed
by an instruction that accesses banked registers. This patch restores
the nop that was lost in commit b86040a59feb255a8193173caa4d5199464433d5.
Signed-off-by: Anders Grafström <grfstrm@users.sourceforge.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/entry-header.S | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 7e9ed1eea40a..d93f976fb389 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S | |||
@@ -102,6 +102,8 @@ | |||
102 | .else | 102 | .else |
103 | ldmdb sp, {r0 - lr}^ @ get calling r0 - lr | 103 | ldmdb sp, {r0 - lr}^ @ get calling r0 - lr |
104 | .endif | 104 | .endif |
105 | mov r0, r0 @ ARMv5T and earlier require a nop | ||
106 | @ after ldm {}^ | ||
105 | add sp, sp, #S_FRAME_SIZE - S_PC | 107 | add sp, sp, #S_FRAME_SIZE - S_PC |
106 | movs pc, lr @ return & move spsr_svc into cpsr | 108 | movs pc, lr @ return & move spsr_svc into cpsr |
107 | .endm | 109 | .endm |