FAQ question fixup
Stefan Reinauer
stepan at openbios.org
Wed Mar 2 05:29:01 CET 2005
* Richard Smith <smithbone at gmail.com> [050302 17:00]:
> I've been adding selected info from my V1 FAQ up into the wiki. The
> following is some info I compiled up on V1 start up.
>
> If someone(s) would update this for V2 and post it t the wiki I think
> it would be very useful.
I have an old writeup on this for v2 at home. I'll try to find it
(printout) I think this should even go to an extra page.
> ================================
> Help! I'm a newbie and I'm completely lost in the code.
>
> There seem to be two main parts to linuxbios. The first is
> arch/{arch}/config/ctr0.base which does the very low level initialization,
> like turning on memory, etc. The second is arch/{arch}/lib/c_start.S which
> does whatever else is necessary to call the C function hardwaremain().
> hardwaremain() then does whatever else is necessary to load linux.
>
> c_start.S is linked with linuxbios.a, a library containing generic support
> routines (those found in the lib directory) and anything specified using the
> 'object' directive in a Config file (and other stuff). The resultant
> 'executable' is called linuxbios_c. The loader script used to link
> linuxbios_c is config/linuxbios_c.ld, and is configured to be
> loaded relative
> to _RAMBASE.
>
> crt0.base is not linked against anything. Any additional assembly routines
> you need must be specified using the 'mainboardinit' directive in a Config
> file. This causes the specified assembly file to be added to
> "crt0_includes.h" which is in turn included at the start of crt0.base (or at
> the end in the case of the ppc version). The loader script used to link
> crt0.base is in arch/{arch}/config/ldscript.base. The resultant 'executable'
> is called linuxbios and will be loaded at _ROMBASE. The tricky thing is that
> this loader script will also load the linuxbios_c 'executable' at a location
> called _payload in this file. The main task of crt0.base is then to
> initialize enough hardware so that this payload can be copied from rom into
> ram (which may also involve uncompressing code). Then control is transferred
> to _start, which is the first location in linuxbios_c.
>
> To get an idea of how crt0.base works, look at the following files. This is
> the order of execution specified by the configuration file for sis735.
>
> cpu/i386/entry16.inc
> cpu/i386/entry32.inc
> superio/sis/950/setup_serial.inc
> pc80/serial.inc
> arch/i386/lib/console.inc
> cpu/k7/earlymtrr.inc
> northsouthbridge/sis/735/raminit.inc
> arch/i386/config/crt0.base
>
> Next look at c_start.S which will show you what happens once control is
> transferred to _start. Finally, look at
> arch/{arch}/lib/hardwaremain.c to see
> what other stuff is done to get linux loaded.
>
> Most other files are specific to particular hardware, so it can be pretty
> confusing to just browse the tree.
>
>
>
> --
> Richard A. Smith
> _______________________________________________
> Linuxbios mailing list
> Linuxbios at clustermatic.org
> http://www.clustermatic.org/mailman/listinfo/linuxbios
>
More information about the coreboot
mailing list