[ARM] 4074/1: Flat loader stack alignment
authorPaul Brook <paul@codesourcery.com>
Thu, 28 Dec 2006 00:54:16 +0000 (01:54 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 30 Dec 2006 17:05:08 +0000 (17:05 +0000)
The ARM EABI requires doubleword (8-byte) stack alignment at all public entry
points.  The patch below makes the bFLT loader honour this.
It's always safe to start with a doubleword aligned stack so it doesn't seem
worth making this conditional on CONFIG_AEABI.

Paul

Signed-off-by: Paul Brook <paul@codesourcery.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-arm/flat.h

index 9669464..16f5375 100644 (file)
@@ -5,7 +5,9 @@
 #ifndef __ARM_FLAT_H__
 #define __ARM_FLAT_H__
 
-#define        flat_stack_align(sp)                    /* nothing needed */
+/* An odd number of words will be pushed after this alignment, so
+   deliberately misalign the value.  */
+#define        flat_stack_align(sp)    sp = (void *)(((unsigned long)(sp) - 4) | 4)
 #define        flat_argvp_envp_on_stack()              1
 #define        flat_old_ram_flag(flags)                (flags)
 #define        flat_reloc_valid(reloc, size)           ((reloc) <= (size))