diff options
author | Russ Cox <[email protected]> | 2009-07-11 18:17:32 -0700 |
---|---|---|
committer | Russ Cox <[email protected]> | 2009-07-11 18:17:32 -0700 |
commit | 8b75366ce4ae7ad5f77225b247d097955574ba0b (patch) | |
tree | d9f462b7d0d76ea6b3f8afea35887f912bfda94b | |
parent | 27ff8f0e6f56e5f84688bcd41a7b4018b4e61173 (diff) | |
download | xv6-labs-8b75366ce4ae7ad5f77225b247d097955574ba0b.tar.gz xv6-labs-8b75366ce4ae7ad5f77225b247d097955574ba0b.tar.bz2 xv6-labs-8b75366ce4ae7ad5f77225b247d097955574ba0b.zip |
s/IRQ_OFFSET/T_IRQ0/: it's a trap number, not an irq number.
move the SYSCALL number up, so does not overlap the IRQ traps.
-rw-r--r-- | trap.c | 14 | ||||
-rw-r--r-- | traps.h | 5 |
2 files changed, 10 insertions, 9 deletions
@@ -45,7 +45,7 @@ trap(struct trapframe *tf) } switch(tf->trapno){ - case IRQ_OFFSET + IRQ_TIMER: + case T_IRQ0 + IRQ_TIMER: if(cpu() == 0){ acquire(&tickslock); ticks++; @@ -54,20 +54,20 @@ trap(struct trapframe *tf) } lapiceoi(); break; - case IRQ_OFFSET + IRQ_IDE: + case T_IRQ0 + IRQ_IDE: ideintr(); lapiceoi(); break; - case IRQ_OFFSET + IRQ_KBD: + case T_IRQ0 + IRQ_KBD: kbdintr(); lapiceoi(); break; - case IRQ_OFFSET + IRQ_COM1: + case T_IRQ0 + IRQ_COM1: uartintr(); lapiceoi(); break; - case IRQ_OFFSET + 7: - case IRQ_OFFSET + IRQ_SPURIOUS: + case T_IRQ0 + 7: + case T_IRQ0 + IRQ_SPURIOUS: cprintf("cpu%d: spurious interrupt at %x:%x\n", cpu(), tf->cs, tf->eip); lapiceoi(); @@ -94,7 +94,7 @@ trap(struct trapframe *tf) // Force process to give up CPU on clock tick. // If interrupts were on while locks held, would need to check nlock. - if(cp && cp->state == RUNNING && tf->trapno == IRQ_OFFSET+IRQ_TIMER) + if(cp && cp->state == RUNNING && tf->trapno == T_IRQ0+IRQ_TIMER) yield(); // Check if the process has been killed since we yielded @@ -24,10 +24,10 @@ // These are arbitrarily chosen, but with care not to overlap // processor defined exceptions or interrupt vectors. -#define T_SYSCALL 48 // system call +#define T_SYSCALL 64 // system call #define T_DEFAULT 500 // catchall -#define IRQ_OFFSET 32 // IRQ 0 corresponds to int IRQ_OFFSET +#define T_IRQ0 32 // IRQ 0 corresponds to int T_IRQ #define IRQ_TIMER 0 #define IRQ_KBD 1 @@ -35,3 +35,4 @@ #define IRQ_IDE 14 #define IRQ_ERROR 19 #define IRQ_SPURIOUS 31 + |