
Am 05.03.2015 um 16:32 schrieb Tom Rini:
On Sun, Mar 01, 2015 at 12:44:39PM +0100, Kamil Lulko wrote:
Signed-off-by: Kamil Lulko rev13@wp.pl
[snip]
diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S
[snip]
@@ -66,15 +69,30 @@ ENTRY(_main) #else ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) #endif +#if defined(CONFIG_CPU_V7M) /* v7M forbids using SP as BIC destination */
- mov r3, sp
- bic r3, r3, #7
- mov sp, r3
+#else bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ +#endif
There's 4 places where this change comes in. Albert, what do you think about always just doing this in 3 instructions with a comment in the first instance about v7-M support?
I remember running into problems like these when working on STM32F429 support late last year and I adopted some helper macros from Linux, I believe. The same problem existed in U-Boot's private libgcc code.
Regards, Andreas