[PATCH 3/3] zImage: Cleanup and improve zImage entry point

Geoff Levand geoffrey.levand at am.sony.com
Sun Feb 18 12:22:24 EST 2007


David Gibson wrote:
> Index: working-2.6/arch/powerpc/boot/crt0.S
> @@ -59,6 +60,29 @@ _zimage_start:
>  	sync
>  	isync
>  
> -	mr	r6,r1
> -	b	start
> +	/* Possibly set up a custom stack */
> +.weak	_platform_stack_top
> +	lis	r8,_platform_stack_top at ha
> +	addi	r8,r8,_platform_stack_top at l
> +	cmpwi	r8,0
> +	beq	5f
> +	lwz	r1,0(r8)


Do you need to make a stack frame here for your
call to platform_init so it will have a place when it
stores the link register?


> +5:
> +
> +	/* Clear the BSS */
> +	lis	r9,__bss_start at ha
> +	addi	r9,r9,__bss_start at l
> +	lis	r8,_end at ha
> +	addi	r8,r8,_end at l
> +	li	r0,0
> +6:	stw	r0,0(r9)
> +	addi	r9,r9,4
> +	cmplw	cr0,r9,r8
> +	blt	6b


This messed me up a bit since I had two stacks in the bss, one for each
processor thread.  By the time this was called on the primary thread the
secondary thread could already be using its stack.  I changed the secondary
thread to use a small stack in the data section, so this seems OK.


-Geoff




More information about the Linuxppc-dev mailing list