[U-Boot] kirkwood: CONFIG_SYS_INIT_SP_ADDR wrong?

Daniel Hobi daniel.hobi at schmid-telecom.ch
Wed Nov 10 16:46:05 CET 2010


Hi Heiko,

On 10.11.2010 16:40, Heiko Schocher wrote:
> Daniel Hobi wrote:
>> But you also added assembly code to setup the initial stack pointer in
>> arch/arm/cpu/*/start.S (ie commit ab86f72c for arm926ejf) which reads:
>>
>> /* Set stackpointer in internal RAM to call board_init_f */
>> call_board_init_f:
>> 	ldr	sp, =(CONFIG_SYS_INIT_SP_ADDR)
>>
>> CONFIG_SYS_INIT_SP_ADDR may not be aligned properly, especially with
>> your latest patch to km_arm.h:
>>
>> #define CONFIG_SYS_INIT_SP_ADDR	(0xC8012000 - GENERATED_GBL_DATA_SIZE)
> 
> Ah, good catch.
> 
> Then we should add this alignment into the generation of
> GENERATED_GBL_DATA_SIZE.

Hm? The stack pointer needs alignment, not GENERATED_GBL_DATA_SIZE. What
happens if I define:

#define CONFIG_SYS_INIT_SP_ADDR	(0xC8012004 - GENERATED_GBL_DATA_SIZE)

Why not add alignment to start.S?

 /* Set stackpointer in internal RAM to call board_init_f */
 call_board_init_f:
 	ldr	sp, =(CONFIG_SYS_INIT_SP_ADDR)
+	bic	sp, sp, #7

Best regards,
Daniel



More information about the U-Boot mailing list