tagging freebios2 tree

Li-Ta Lo ollie at lanl.gov
Wed Nov 3 12:27:00 CET 2004


On Tue, 2004-11-02 at 18:06, Eric W. Biederman wrote:
> Li-Ta Lo <ollie at lanl.gov> 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*/




More information about the coreboot mailing list