Re: Anybody got 2.4.0 running on a 386 ?

Robert Kaiser
2001-01-09T22:33:19Z

On Die, 09 Jan 2001 you wrote:
> Robert Kaiser wrote:
> >
> > On Die, 09 Jan 2001 you wrote:
> > > Robert Kaiser wrote:
> > > > I can't seem to get the new 2.4.0 kernel running on a 386 CPU.
> > > > The kernel was built for a 386 Processor, Math emulation has been enabled.
> > > > I tried three different 386 boards. Execution seems to get as far as
> > > > pagetable_init() in arch/i386/mm/init.c, then it falls back into the BIOS as
> > > > if someone had pressed the reset button. The same kernel boots fine on
> > > > 486 and Pentium Systems.
> > ..... The last thing I see is
> > "Uncompressing Linux... Ok, booting the kernel." I have added some
> > quick and dirty debug code that writes messages directly to the VGA
> > screen buffer. According to that, execution seems to get as far as the
> > statement
> >
> > *pte = mk_pte_phys(__pa(vaddr), PAGE_KERNEL);
> >
>
> Could it be possible that memory size is being misdetected? Try mem=8M
> (or less) on the command line. Try to catch the value of pte when it
> crashes.

I tried "mem=4M" -- no effect. The value of pte is 0xc0001000, so it seems
to be the first invocation of that statement in the for() loop.

Now comes the amazing (to me) part: I split the above statement up into:

temp = mk_pte_phys(__pa(vaddr), PAGE_KERNEL);
*pte = temp;

where temp is declared "volatile pte_t". I inserted test-prints between the
above two lines. Accoding to that, the _first_ line , i.e. the evaluation of the
mk_pte_phys() macro is causing the crash!

I am still trying to figure out what mk_pte_phys() does. Apparently it involves
an access to the kernel's data section. My current guess is that the data
section is not correctly mapped at this point. Would that be possible ?

----------------------------------------------------------------
Robert Kaiser email: rkaiser@sysgo.de
SYSGO RTS GmbH
Am Pfaffenstein 14 phone: (49) 6136 9948-762
D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10