From 7105a2e104f2107b10bbd9b75814279810ab96f8 Mon Sep 17 00:00:00 2001 From: acevest Date: Fri, 2 Jan 2026 22:01:22 +0800 Subject: [PATCH] =?utf8?q?=E6=8A=8A8253/8254=E7=9A=84=E6=97=B6=E9=92=9F?= =?utf8?q?=E4=B8=AD=E6=96=AD=E8=B7=AF=E7=94=B1=E5=88=B0CPU=200=E7=9A=840?= =?utf8?q?=E5=8F=B7=E4=B8=AD=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- kernel/apic.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/apic.c b/kernel/apic.c index 90b13d2..7e7c050 100644 --- a/kernel/apic.c +++ b/kernel/apic.c @@ -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); } -- 2.47.0