]> Zhao Yanbai Git Server - kernel.git/commitdiff
把8253/8254的时钟中断路由到CPU 0的0号中断
authoracevest <zhaoyanbai@126.com>
Fri, 2 Jan 2026 14:01:22 +0000 (22:01 +0800)
committeracevest <zhaoyanbai@126.com>
Fri, 2 Jan 2026 14:01:22 +0000 (22:01 +0800)
kernel/apic.c

index 90b13d22be99c97bb177da2bcd8cb5ffebd9c06f..7e7c050ac81aaaeeec409145cdaf54a41de2e3cc 100644 (file)
@@ -302,9 +302,13 @@ void ioapic_init() {
     // TODO
     // iounmap(rcba_virt_base);
 
-    // 打开键盘中断
-    ioapic_rte_write(IOAPIC_RTE(1), 0x21);
     extern irq_chip_t ioapic_chip;
+    // 把8253的中断通过IOAPIC转发到CPU0的0号中断
+    // 8253/8254连在i8259的0号引脚,但连在IO APIC的2号引脚上
+    ioapic_rte_write(IOAPIC_RTE(2), 0x20 + 0);
+    // 把键盘中断通过IOAPIC转发到CPU0的1号中断
+    ioapic_rte_write(IOAPIC_RTE(1), 0x20 + 1);
+    irq_set_chip(0x00, &ioapic_chip);
     irq_set_chip(0x01, &ioapic_chip);
 }