On Tue, Dec 20, 2011 at 11:59:16AM +0000, Mark Marshall wrote:
> According to the bits of the PCI spec that I can find,
> the option ROM is copied into RAM which is left read-write
> while the initialisation vector is called, and the RAM is
> then set to read-only after this time. Does your VGA option
> ROM use this feature? Do you know of any other's that do?
Yes - the SeaBIOS vga rom will self modify. I've seen several other
option roms that self modify.
> (This is in the V2.1 and V3.0 PCI spec's. Also in at least
> the V3.0 PCI spec is says that the initialisation code is
> run in "big real mode", with 4G segments, do you know of
> any code that uses this feature?).
Yes - I've seen other option roms that only work when called in
big-real mode. SeaBIOS supports this. The SeaBIOS vga option rom
doesn't require it though.
> PS.
> I'm interested in this because I wrote the OGP VGA BIOS
> (in 16-bit x86 ASM), a while ago now. A choice made for
> two reasons really: 1, I hadn't found SeaBIOS (And didn't
> know quite how well you could get gcc to produce 16-bit
> code), and 2, I really wanted to write a chunk of 16-bit
> assembler (this was a hobby, not work, so I felt I could
> make a crazy choice like that and get away with it).
>
> If I get a free afternoon, I will try to convert that code
> to use the SeaBIOS VGA framework. It's interesting to note
> that we have both implemented features that are not in the
> other's BIOS.
Sounds interesting.
-Kevin