diff options
author | Robert Morris <[email protected]> | 2019-06-03 14:13:07 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2019-06-03 14:13:07 -0400 |
commit | a9c1a6f742886a9d45e5c625cf4f9b1b5c7a8cc4 (patch) | |
tree | ff50c8aa95dbdc5f35954e586933ad63676c69c4 /trap.c | |
parent | 50cbc7510250a64674d619d13f5912edf08b767d (diff) | |
download | xv6-labs-a9c1a6f742886a9d45e5c625cf4f9b1b5c7a8cc4.tar.gz xv6-labs-a9c1a6f742886a9d45e5c625cf4f9b1b5c7a8cc4.tar.bz2 xv6-labs-a9c1a6f742886a9d45e5c625cf4f9b1b5c7a8cc4.zip |
takes one uart input interrupt, then panics
Diffstat (limited to 'trap.c')
-rw-r--r-- | trap.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -42,6 +42,19 @@ usertrap(void) // save user program counter. p->tf->epc = r_sepc(); + + // PLIC setup + // qemu makes UART0 be interrupt number 10. + int irq = 10; + // set uart's priority to be non-zero (otherwise disabled). + *(uint*)(0x0c000000L + irq*4) = 1; + // set uart's enable bit for hart 0 s-mode. + *(uint*)0x0c002080 = (1 << irq); + + // hart 0 S-mode priority threshold. + *(uint*)0x0c201000 = 0; + + intr_on(); if(r_scause() == 8){ // system call |