diff options
author | Will Deacon <will.deacon@arm.com> | 2011-08-26 16:32:57 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-08-28 10:39:41 +0100 |
commit | 552e0c8da8ff7099e6fe060cd7ec36ae11f5465b (patch) | |
tree | 9cec5232f51a023374a3ee66520ea7da056d9f32 | |
parent | 0ebb962e00a52b644433065d224ed89f72a84756 (diff) | |
download | talos-op-linux-552e0c8da8ff7099e6fe060cd7ec36ae11f5465b.tar.gz talos-op-linux-552e0c8da8ff7099e6fe060cd7ec36ae11f5465b.zip |
ARM: 7065/1: kexec: ensure new kernel is entered in ARM state
Commit 540b5738 ("ARM: 6999/1: head, zImage: Always Enter the kernel in
ARM state") mandates that the kernel should be entered in ARM state.
If a Thumb-2 kernel kexecs a new kernel image, we need to ensure that
we change state when branching to the new code. This patch replaces a
mov pc, lr with a bx lr on Thumb-2 kernels so that we transition to ARM
state if need be.
Reviewed-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/kernel/relocate_kernel.S | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S index 9cf4cbf8f95b..d0cdedf4864d 100644 --- a/arch/arm/kernel/relocate_kernel.S +++ b/arch/arm/kernel/relocate_kernel.S @@ -57,7 +57,8 @@ relocate_new_kernel: mov r0,#0 ldr r1,kexec_mach_type ldr r2,kexec_boot_atags - mov pc,lr + ARM( mov pc, lr ) + THUMB( bx lr ) .align |