[PATCH] ARM: 2769/1: cpu_init() stack setup fix
authorCatalin Marinas <catalin.marinas@arm.com>
Wed, 29 Jun 2005 14:34:39 +0000 (15:34 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 29 Jun 2005 14:34:39 +0000 (15:34 +0100)
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>
arch/arm/kernel/setup.c

index 8cf733daa8008f70090587f42be4d77c7acfc1a5..35b7273cfdb4252cb6b886b306870924f5abb38a 100644 (file)
@@ -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)