[PATCH 3/3] zImage: Cleanup and improve zImage entry point
Geoff Levand
geoffrey.levand at am.sony.com
Tue Feb 20 02:14:08 EST 2007
David Gibson wrote:
> On Sat, Feb 17, 2007 at 05:22:24PM -0800, Geoff Levand wrote:
>> 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)
>>
>> > +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.
>
> Hrm... if you're entering with multiple threads and stacks, you're
> probably a prime candidate for providing your own zimage_start,
> instead of using this code.
I think the better idea is to make the generic bootwrapper code support
SMP. I don't see any fundamental reason why it can't. The trouble here
is that your BSS stack is really not a proper way, that's why it doesn't
work.
I'll put something together that provides generic (SMP) stack support
for the bootwrapper. I'll be away the end of this week and next week,
so I don't know when I'll be able to post it.
-Geoff
More information about the Linuxppc-dev
mailing list