"Timothy Legge" <tim...@us...> writes:
> > > Is this a recent embedded 486 or is this a much older 486 PC. I'm
> > > just trying to get a feel for what kind of other hardware would be
> in
> > > the box and where you are likely to have BIOS problems.
> >
> > The serial only console displayed the full text of:
> >
> > ROM segment 0x0800 length 0x8000 reloc 0x00020000
> >
> > in minicom, with out any problem, but it stopped there.
>
> I also modified core/main.c
>
> rom = *(struct rom_info *)phys_to_virt(ROM_INFO_LOCATION);
> printf("ROM segment %#hx length %#hx reloc %#x\n",
> rom.rom_segment,
> rom.rom_length << 1, (unsigned long)_text);
> + printf("Got Here 0\n");
> gateA20_set();
> + printf("Got Here 1\n");
> print_config();
> + printf("Got Here 2\n");
> get_memsizes();
> + printf("Got Here 3\n");
> cleanup();
> + printf("Got Here 4\n");
>
> Only the Got Here 0 was printed to the serial console. So I assumed the
> issue is in gateA20_set().
>
> I commented out gateA20_set() and then I got as far as Got Here 2, so it
> is now stuck in the get_memsizes.
>
> Of course, I could be out to lunch. Could something that happened
> earlier than gateA20_set() have caused the issue?
It is clear that you are hanging in various BIOS calls. gateA20_set,
will make them as well as getmemsize. I am not certain you are hanging.
Does 5.0.x have this issue as well?
If it was a regression it might be easier to track.
When we make BIOS calls we switch from protcted to real mode, enable
interrupts. Make the BIOS calls, and switch back to protected mode.
There is a lot that can potentially go wrong in that process. But it
appears to work fairly universally.
Eric
|