summaryrefslogtreecommitdiff
path: root/kernel/trap.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trap.c')
-rw-r--r--kernel/trap.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/trap.c b/kernel/trap.c
index 512c850..5332dda 100644
--- a/kernel/trap.c
+++ b/kernel/trap.c
@@ -68,6 +68,8 @@ usertrap(void)
} else if((which_dev = devintr()) != 0){
// ok
} else {
+
+
printf("usertrap(): unexpected scause %p pid=%d\n", r_scause(), p->pid);
printf(" sepc=%p stval=%p\n", r_sepc(), r_stval());
setkilled(p);
@@ -75,6 +77,7 @@ usertrap(void)
if(killed(p))
exit(-1);
+
// give up the CPU if this is a timer interrupt.
if(which_dev == 2)
@@ -190,7 +193,13 @@ devintr()
uartintr();
} else if(irq == VIRTIO0_IRQ){
virtio_disk_intr();
- } else if(irq){
+ }
+#ifdef LAB_NET
+ else if(irq == E1000_IRQ){
+ e1000_intr();
+ }
+#endif
+ else if(irq){
printf("unexpected interrupt irq=%d\n", irq);
}