|
From: Antonino D. <ad...@po...> - 2003-03-17 21:42:28
|
On Tue, 2003-03-18 at 03:33, Jon Smirl wrote: > --- Antonino Daplas <ad...@po...> wrote: > > You're talking about other device's expansion ROM's. > > VGA ROM's, > > especially for the x86, are an exception and has to > > be always mapped at > > c000:0000. > > Reboot and add pci=rom (case sensitive) to your kernel > parameters. That will show you where the video ROMs > are really located. > > My x86 PC's boot video ROM is located at dd000000 not > C00000. C00000 is only a copy of the ROM in RAM. That's not the problem. I can easily grab a copy of the ROM through extended memory copy, but it cannot just run anywhere. The VBIOS code (as with other BIOS code) must run in real mode (address below 1MB) and VBIOS can only run when at C000:0000 (C000:0000 is in real-mode segmented addressing, it is C0000 when translated to a linear address). Check the definition of DEFAULT_V_BIOS in the code you sent me. > How is this write protection being achieved? Is it > done via manipulation of the processor descriptor > tables; if so just undo it. Possibly through some BIOS specific thing. Usually the BIOS places it somewhere where it cannot be reached, even by the OS. Tony |