Problem with parse_bootinfo on a Board with 2Mb of SRAM

Tom Rini trini at kernel.crashing.org
Tue May 13 03:41:36 EST 2003


On Tue, May 06, 2003 at 07:40:51PM +0200, Christophe.LINDHEIMER at fr.thalesgroup.com wrote:

> I am trying to start Linux with a custom board.
> This board has only 2Mb of SRAM.
>
> Linux crashes in the function parse_bootinfo.
>
> In my Systemp.map I have got __bss_start == 0xc0091000
>
> In parse_bootinfo I have :
>
> rec = ( struct bi_record *)_Align((ulong)__bss_start+(1<<20)-1, 1<<20))
>
> So rec equals 0xc0200000
>
> and then
>
> if (rec->tag != BI_FIRST )
>
> but this line crashes because it tries to access 0xc0200000 whereas my sram
> is between 0xc0000000 and 0xc01fffff.

There's a few issues here.  First, in 2.4 we do the 'bad' thing of
making up a magic location where these bi_recs are, on the fly.  If you
don't mind making an incompatible change (i.e., you would need to change
arch/ppc/boot/* as well as arch/ppc/kernel/setup.c, and
arch/ppc/kernel/head.S), you can do what will be done for 2.5, which is
to allow the location of the bi_recs to be picked by whatever booted the
kernel, and passed along in a register.  So for your 2mb board, you
could pick say 0xc01880000 as where to put them.  Or wherever you want,
that will be not part of the BSS.

--
Tom Rini
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list