Use normal EOI mode
This commit is contained in:
@@ -16,9 +16,9 @@ pub unsafe fn init() {
|
||||
MASTER.data.write(4);
|
||||
SLAVE.data.write(2);
|
||||
|
||||
// Set up interrupt mode (1 is manual, 2 is auto EOI)
|
||||
MASTER.data.write(2);
|
||||
SLAVE.data.write(2);
|
||||
// Set up interrupt mode (1 is 8086/88 mode, 2 is auto EOI)
|
||||
MASTER.data.write(1);
|
||||
SLAVE.data.write(1);
|
||||
|
||||
// Unmask interrupts
|
||||
MASTER.data.write(0);
|
||||
|
||||
@@ -10,8 +10,11 @@ unsafe fn trigger(irq: u8) {
|
||||
if irq < 16 {
|
||||
if irq >= 8 {
|
||||
pic::SLAVE.mask_set(irq - 8);
|
||||
pic::MASTER.ack();
|
||||
pic::SLAVE.ack();
|
||||
} else {
|
||||
pic::MASTER.mask_set(irq);
|
||||
pic::MASTER.ack();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +40,8 @@ interrupt!(pit, {
|
||||
let sum = offset.1 + PIT_RATE;
|
||||
offset.1 = sum % 1000000000;
|
||||
offset.0 += sum / 1000000000;
|
||||
|
||||
pic::MASTER.ack();
|
||||
});
|
||||
|
||||
interrupt!(keyboard, {
|
||||
|
||||
Reference in New Issue
Block a user