On Tue, 2004-11-02 at 18:06, Eric W. Biederman wrote:
> Li-Ta Lo <[EMAIL PROTECTED]> writes:
> 
> > On Tue, 2004-08-24 at 19:07, Eric W. Biederman wrote:
> > > No quite I put the cpu_info structure at the bottom of the stack,
> > > and this function looks it up.
> > > 
> > > The same idea has been used in the kernel for quite a while.  
> > > 
> > > Basically this allows me to preallocate some per cpu information
> > > and to pass that into cpu_initialize from another cpu.
> > > 
> > > The linux kernel has been doing something similar for quite a while.
> > > 
> > 
> > Does cpu_info() return different value depends on which CPU it is 
> > running ?
> 
> Yes.  The stack is per cpu and it returns a fixed address from
> the stack structure.
> 

Why you push the cpu index and struct cpu in c_start.S ? Is it parameter
to the hardwaremain() ?

And why you save the %esp before init IDT and restore it ? I don't see
it is modified when init IDT.

BTW, I think c_start.S is only executed on BSP, right ?

Ollie

        /* Push the cpu index and struct cpu */
        pushl   $0
        pushl   $0

        /* push the boot_complete flag */
        pushl   %ebp

        /* Save the stack location */
        movl    %esp, %ebp

        /* Initialize the Interrupt Descriptor table */
        xxx
        xxx     

        /* Load the Interrupt descriptor table */
        lidt    idtarg

        intel_chip_post_macro(0xfe)     /* post fe */

        /* Restore the stack location */
        movl    %ebp, %esp
        
        /* The boot_complete flag has already been pushed */
        call    hardwaremain
        /*NOTREACHED*/

_______________________________________________
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios

Reply via email to