From 1747d88ff35ff9342d31b893a9e47c69f2926211 Mon Sep 17 00:00:00 2001 From: Gitea Date: Sat, 2 Jan 2021 20:52:20 -0600 Subject: [PATCH] We should have a working interrupt table --- arch/i386/init.c | 2 + arch/i386/inter.s | 117 ++++++++++++++++++++++++------------------ arch/i386/interrupt.c | 1 + arch/i386/make.config | 9 +++- 4 files changed, 78 insertions(+), 51 deletions(-) diff --git a/arch/i386/init.c b/arch/i386/init.c index 605135c..343139c 100755 --- a/arch/i386/init.c +++ b/arch/i386/init.c @@ -1,4 +1,5 @@ #include +#include #include #include #include "gdt.h" @@ -43,6 +44,7 @@ int init(void) { NMI_disable(); A20_enable(); setup_gdt(); + idt_init(); printf("Fenix Dev Pre-release v0.0.3\n"); return 0; } diff --git a/arch/i386/inter.s b/arch/i386/inter.s index a7c190f..155a262 100644 --- a/arch/i386/inter.s +++ b/arch/i386/inter.s @@ -1,55 +1,72 @@ - global irq0 - global irq1 - global irq2 - global irq3 - global irq4 - global irq5 - global irq6 - global irq7 - global irq8 - global irq9 - global irq10 - global irq11 - global irq12 - global irq13 - global irq14 - global irq15 + .globl irq0 + .type irq0,%function + .globl irq1 + .type irq1,%function + .globl irq2 + .type irq2,%function + .globl irq3 + .type irq3,%function + .globl irq4 + .type irq4,%function + .globl irq5 + .type irq5,%function + .globl irq6 + .type irq6,%function + .globl irq7 + .type irq7,%function + .globl irq8 + .type irq8,%function + .globl irq9 + .type irq9,%function + .globl irq10 + .type irq10,%function + .globl irq11 + .type irq11,%function + .globl irq12 + .type irq12,%function + .globl irq13 + .type irq13,%function + .globl irq14 + .type irq14,%function + .globl irq15 + .type irq15,%function - global load_idt + .globl load_idt + .type load_idt,%function - global irq0_handler - global irq1_handler - global irq2_handler - global irq3_handler - global irq4_handler - global irq5_handler - global irq6_handler - global irq7_handler - global irq8_handler - global irq9_handler - global irq10_handler - global irq11_handler - global irq12_handler - global irq13_handler - global irq14_handler - global irq15_handler + .globl irq0_handler + .globl irq1_handler + .globl irq2_handler + .globl irq3_handler + .globl irq4_handler + .globl irq5_handler + .globl irq6_handler + .globl irq7_handler + .globl irq8_handler + .globl irq9_handler + .globl irq10_handler + .globl irq11_handler + .globl irq12_handler + .globl irq13_handler + .globl irq14_handler + .globl irq15_handler - extern irq0_handler - extern irq1_handler - extern irq2_handler - extern irq3_handler - extern irq4_handler - extern irq5_handler - extern irq6_handler - extern irq7_handler - extern irq8_handler - extern irq9_handler - extern irq10_handler - extern irq11_handler - extern irq12_handler - extern irq13_handler - extern irq14_handler - extern irq15_handler + .extern irq0_handler + .extern irq1_handler + .extern irq2_handler + .extern irq3_handler + .extern irq4_handler + .extern irq5_handler + .extern irq6_handler + .extern irq7_handler + .extern irq8_handler + .extern irq9_handler + .extern irq10_handler + .extern irq11_handler + .extern irq12_handler + .extern irq13_handler + .extern irq14_handler + .extern irq15_handler irq0: pusha @@ -149,6 +166,6 @@ irq15: load_idt: mov 4(%esp), %edx - lidt %edx + lidt (%edx) sti ret diff --git a/arch/i386/interrupt.c b/arch/i386/interrupt.c index c5ffd0c..800c18c 100644 --- a/arch/i386/interrupt.c +++ b/arch/i386/interrupt.c @@ -1,4 +1,5 @@ #include +#include void idt_init(void) { extern int load_idt(); diff --git a/arch/i386/make.config b/arch/i386/make.config index 377267d..558cf5d 100755 --- a/arch/i386/make.config +++ b/arch/i386/make.config @@ -3,4 +3,11 @@ KERNEL_ARCH_CPPFLAGS= KERNEL_ARCH_LDFLAGS= KERNEL_ARCH_LIBS= -KERNEL_ARCH_OBJS=$(ARCHDIR)/boot.o $(ARCHDIR)/tty.o $(ARCHDIR)/init.o $(ARCHDIR)/cmos.o $(ARCHDIR)/gdt.o $(ARCHDIR)/gdt_load.o \ No newline at end of file +KERNEL_ARCH_OBJS=$(ARCHDIR)/boot.o \ +$(ARCHDIR)/tty.o \ +$(ARCHDIR)/init.o \ +$(ARCHDIR)/cmos.o \ +$(ARCHDIR)/gdt.o \ +$(ARCHDIR)/gdt_load.o \ +$(ARCHDIR)/interrupt.o \ +$(ARCHDIR)/inter.o \ No newline at end of file