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