diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2005-06-29 14:34:39 (GMT) |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-06-29 14:34:39 (GMT) |
commit | aaaa3f9e51245be3215ff67bb3c7aaf5abb82f00 (patch) | |
tree | 3116e92b35d7424469d21f6758933352e9b84dfc | |
parent | 9ec3c75cdeb57fa3c12a813c63706ece7fb63648 (diff) | |
download | linux-fsl-qoriq-aaaa3f9e51245be3215ff67bb3c7aaf5abb82f00.tar.xz |
[PATCH] ARM: 2769/1: cpu_init() stack setup fix
Patch from Catalin Marinas
The compiler allocates r14 for the stk variable in the __asm__ directive.
This is a shadowed register and gets changed when the mode is changed,
causing random values in the SP register. The patch adds a clobber for
the r14 register.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/kernel/setup.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 8cf733d..35b7273 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -359,7 +359,8 @@ void cpu_init(void) "I" (offsetof(struct stack, abt[0])), "I" (PSR_F_BIT | PSR_I_BIT | UND_MODE), "I" (offsetof(struct stack, und[0])), - "I" (PSR_F_BIT | PSR_I_BIT | SVC_MODE)); + "I" (PSR_F_BIT | PSR_I_BIT | SVC_MODE) + : "r14"); } static struct machine_desc * __init setup_machine(unsigned int nr) |