deivce interrupt 的入口在kernel/trap.cdevintr函数.

5.1 Code: Console input

ns16550 uart driver 寄存器相关, 每个占 1 个 byte:

LSR:

RHR:

THR:

xv6 main 函数通过kernel/console.c中的consoleinit函数来初始化 uart 硬件.

5.4 Timer interrupts

RISC-V 的 timer 中断需要在 machine mode 中设置, 而不能在 supervisor mode 中设置.