Thread (2 messages) flat view 2 messages, 2 authors, 2003-05-12

Re: Problem with parse_bootinfo on a Board with 2Mb of SRAM

From: Tom Rini <hidden>
Date: 2003-05-12 17:41:36

On Tue, May 06, 2003 at 07:40:51PM +0200, Christophe.LINDHEIMER@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/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help