On Wed, 12 Apr 2000, Maciej W. Rozycki wrote:
Linux starts UP then and uses 8259A interrupt controllers which have to work due to the DOS compatibility.
strange and interesting datapoint: I had not yet put in the "8259a" code from Linux startup into freebios. We did have it in the openbios code, and I thought I would need it, but decided to see what happen if I did not put it in. This code is not run by linux when it is started up from linuxbios because it is done in boot/setup.S and we don't run ANY of that code -- we go right to the linux startup at 0x10:0x100000 in protected mode. In other words, the "steenking bios" code is not run at all. The only interrupt setup I initially did for linuxbios is as follows:
void intel_interrupts_on() { unsigned long low, high;
/* this is so interrupts work. This is very limited scope -- * linux will do better later, we hope ... */ rdmsr(0x1b, low, high); low &= ~0x800; wrmsr(0x1b, low, high);
}
(note how we can do things in C in freebios-based linuxbios, yee ha).
Clock interrupts work just fine. I'm not sure about other interrupts.
So what's going on? Well, turns out the code in boot/setup.S is there because the BIOS misprograms the interrupts (at least as I read the comments). Since we have no BIOS, we don't have misprogrammed interrupts. We don't need that code in boot/setup.S to undo the damage done by the PC BIOS.
ron
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message