Use normal EOI mode

This commit is contained in:
Jeremy Soller
2017-03-16 22:50:09 -06:00
parent 7dd8de777d
commit 05bb497fe4
2 changed files with 8 additions and 3 deletions

View File

@@ -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);

View File

@@ -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, {