aboutsummaryrefslogtreecommitdiff
path: root/i386/i386at/int_init.c
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2021-04-04 15:08:12 +1000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2021-04-04 16:27:17 +0200
commit214866d58ac2bd1060132b250bf391a495110015 (patch)
treefaa4509549a8d4b580b4b52e00162efd30d3f480 /i386/i386at/int_init.c
parent71db59f69602e54c33ba707c8e4a7a66f6c9ca0b (diff)
downloadgnumach-214866d58ac2bd1060132b250bf391a495110015.tar.gz
gnumach-214866d58ac2bd1060132b250bf391a495110015.tar.bz2
gnumach-214866d58ac2bd1060132b250bf391a495110015.zip
Add ioapic support disabled by default
Use --enable-ncpus=x --enable-apic where x > 1 for SMP+APIC support. Use neither for no SMP and old PIC support. Message-Id: <20210404050812.145483-1-damien@zamaudio.com>
Diffstat (limited to 'i386/i386at/int_init.c')
-rw-r--r--i386/i386at/int_init.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/i386/i386at/int_init.c b/i386/i386at/int_init.c
index 43daad8b..6da627dd 100644
--- a/i386/i386at/int_init.c
+++ b/i386/i386at/int_init.c
@@ -30,10 +30,21 @@ extern vm_offset_t int_entry_table[];
void int_init(void)
{
int i;
-
- for (i = 0; i < 16; i++)
+#ifndef APIC
+ for (i = 0; i < 16; i++) {
fill_idt_gate(PIC_INT_BASE + i,
int_entry_table[i], KERNEL_CS,
ACC_PL_K|ACC_INTR_GATE, 0);
+ }
+#else
+ for (i = 0; i < 24; i++) {
+ fill_idt_gate(IOAPIC_INT_BASE + i,
+ int_entry_table[i], KERNEL_CS,
+ ACC_PL_K|ACC_INTR_GATE, 0);
+ }
+ fill_idt_gate(IOAPIC_SPURIOUS_BASE,
+ int_entry_table[24], KERNEL_CS,
+ ACC_PL_K|ACC_INTR_GATE, 0);
+#endif
}