Messages in this thread | | | Date | Fri, 10 Dec 1999 15:10:11 -0500 (EST) | From | "Richard B. Johnson" <> | Subject | Re: [linux-fbdev] Re: atyfb with 2.3.30 ond x86 |
| |
On 10 Dec 1999, Peter Samuelson wrote:
> > [Jim Nance <jnance@nortelnetworks.com>] > > I think there is some sort of spec that wants the init code to be > > written in forth so you can make a PCI card that will work on both > > the Mac and the PC. I have not heard much about it lately so I don't > > know if anyone does this or not. > > Sounds like Open Firmware. It was designed for *exactly* this problem: > initializing a peripheral at boot time on multiple platforms. I don't > know who all jumped on that bandwagon but a lot of PowerPC people did > (I know of PowerMacs and some RS/6000s). Intel platforms (surprise!) > never bothered.... > > Peter
But they do! They started the idea back in the '60s with the check-summed PROMS for "feature" cards. At 2k addresses, starting at A0000, a header of: 0xaa55 (id) 0xnn (checksum length / 256) entry point.
If such a header was found by POST, a call to offset 3 in the PROM would allow the PROM code to get control, initialize the special device, set vectors into the interrupt table, then return to POST. This is how, even today, screen cards and SCSI cards are initialized.
The problem is that the PROM stuff is 'real-mode' OFFSET:SEGMENT stuff. It was not designed for 32-bit execution. If you are satisfied with booting DOS, you will find that everything is already initialized for you if the "feature-card" has a built-in BIOS.
With Linux and other 32-bit (later 64-bit) OSs, the hardware is still initialized upon startup until Linux gets control. Then its own drivers access the devices without using the 16-bit BIOS even if present.
The main BIOS at 0xf0000 usually has bugs. Linux does a lot to work around the bugs. In particular, the amount of memory reported is often wrong. In fact, when the board BIOSs were written, it is unlikely that they were ever even tested at the amounts of memory available now. Look at the BIOS date shown upon startup on most boards for a "brand-new" board. It's usually several years old. Two years ago, you couldn't get RAM 'sticks' of the size available now. Two years ago, four filled P100 RAM sockets provided only 128 x 4 = 512 megabytes of RAM. Surely the BIOS was never tested at the 1 - 4 gigabytes available now.
Cheers, Dick Johnson
Penguin : Linux version 2.3.13 on an i686 machine (400.59 BogoMips). Warning : The end of the world as we know it requires a new calendar. Seconds : 1846189 (until Y2K)
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |