aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2006-12-28 01:54:16 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-12-30 17:05:08 +0000
commit4cc2f7a84d64d25a16bb9383148c1467284e2356 (patch)
tree17b128620d6b6fd4633791ac0461ae7725527f1c
parent[ARM] 4073/1: Prevent s3c24xx drivers from including asm/arch/hardware.h and asm/arch/irqs.h (diff)
downloadlinux-dev-4cc2f7a84d64d25a16bb9383148c1467284e2356.tar.xz
linux-dev-4cc2f7a84d64d25a16bb9383148c1467284e2356.zip
[ARM] 4074/1: Flat loader stack alignment
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>
-rw-r--r--include/asm-arm/flat.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/asm-arm/flat.h b/include/asm-arm/flat.h
index 966946478589..16f5375e57b8 100644
--- a/include/asm-arm/flat.h
+++ b/include/asm-arm/flat.h
@@ -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))