summaryrefslogtreecommitdiff
path: root/ide.c
diff options
context:
space:
mode:
authorkaashoek <kaashoek>2006-08-04 18:12:31 +0000
committerkaashoek <kaashoek>2006-08-04 18:12:31 +0000
commitc8b29f6d038090a5b5b6272406afbadcf31e9809 (patch)
treebc3c7a2592eb7e8cadfc903e518683eaa564b35f /ide.c
parent32630628a996e29018641af262272339ed6fef88 (diff)
downloadxv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.tar.gz
xv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.tar.bz2
xv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.zip
better interrupt plan---this one appears to work
ioapic
Diffstat (limited to 'ide.c')
-rw-r--r--ide.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ide.c b/ide.c
index 27a76fb..e2235a1 100644
--- a/ide.c
+++ b/ide.c
@@ -45,9 +45,12 @@ ide_wait_ready(int check_error)
void
ide_init(void)
{
- cprintf("ide_init: enable IRQ 14\n");
- irq_setmask_8259A(irq_mask_8259A & ~(1<<14));
+ if (ncpu < 2) {
+ panic ("ide_init: disk interrupt is going to the second cpu\n");
+ }
+ ioapic_enable (14, 1); // 14 is IRQ # for IDE
ide_wait_ready(0);
+ cprintf ("ide_init:done\n");
}
void
@@ -57,6 +60,7 @@ ide_intr(void)
cprintf("%d: ide_intr\n", cpu());
wakeup(&request[tail]);
release(&ide_lock);
+ lapic_eoi();
}
int