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:
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.
To unsubscribe: send mail to majordomo(a)freiburg.linux.de
with 'unsubscribe openbios' in the body of the message