Hi.
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.
Does it means that I have'nt got enough memory to run Linux on this board ?
I tried to comment this line but Linux go into panic() in the function
mem_pieces_find().
Any idea ?
Thanks.
Chris
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
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/