IDEA: Linux kernel and pcbios compatibility...
Eric W. Biederman
ebiederman at lnxi.com
Sat Dec 20 13:11:01 CET 2003
Takeshi Sone <ts1 at tsn.or.jp> writes:
> On Fri, Dec 19, 2003 at 12:49:42AM -0700, Eric W. Biederman wrote:
> > Adam Sulmicki <adam at cfar.umd.edu> writes:
> >
> > > you mean just like dosemu runs under linux ???
> >
> > Right but for BSD and early versions of windows the dependencies
> > were worse. I don't know which services matter though.
>
> Last time I saw the source code of FreeBSD, its _bootloader_ has its
> own vm86 monitor (in assembly), works in protected mode,
> and calls all the BIOS calls (video, keyboard, disk,...) in
> vm86 mode. Also the kernel calls E820, APM, VESA, etc in vm86.
> Also I saw a recent version of Windows calls BIOS services in vm86.
>
> Maybe we can modify FreeBSD, and have work-around for Windows,
> but at least I don't think it's the way to go.
>
> My conclusion then was that PCBIOS had to work in real mode.
>
> Maybe we can code it with GCC and .code16gcc hack.
> If 64KB is not enough, maybe 0xE000 segment can be used
> so that we have 64KB code and 64KB data segments.
> And all the "POST" code can be outside the real mode space.
> So it's not impossible or hard at all.
Ok Then I am up to idea #2. For cooperation, just before I go
catch my flight.
Implement a minimal but real PCBIOS.
Have a linux kernel.
Use the PCBIOS to initialize the option roms.
Jump to the linux base boot loader.
When I have loaded something I go to real mode with kexec
and had off control to the loaded kernel. Which can make BIOS
calls. I have traditionally avoided that because the PCBIOS tends
to get wedged when I start linux but with the source that should
not be a problem.
Eric
More information about the coreboot
mailing list