🎨 将初始化8259A的代码移动到driver文件夹

This commit is contained in:
fslongjin 2022-02-23 12:18:18 +08:00
parent d06b418642
commit d5eb9e8a27
4 changed files with 15 additions and 10 deletions

View File

@ -16,8 +16,9 @@ all: kernel
kernel: head.o entry.o main.o printk.o trap.o mm.o irq.o 8259A.o process.o syscall.o multiboot2.o cpu.o
ld -b elf64-x86-64 -z muldefs -o kernel head.o exception/entry.o main.o common/printk.o exception/trap.o exception/irq.o exception/8259A.o mm/mm.o process/process.o syscall/syscall.o driver/multiboot2/multiboot2.o \
ld -b elf64-x86-64 -z muldefs -o kernel head.o exception/entry.o main.o common/printk.o exception/trap.o exception/irq.o mm/mm.o process/process.o syscall/syscall.o driver/multiboot2/multiboot2.o \
common/cpu.o \
driver/interrupt/8259A/8259A.o \
-T link.lds
head.o: head.S
@ -46,8 +47,7 @@ trap.o: exception/trap.c
irq.o: exception/irq.c
gcc $(CFLAGS) -c exception/irq.c -o exception/irq.o
8259A.o: exception/8259A.c
gcc $(CFLAGS) -c exception/8259A.c -o exception/8259A.o
mm.o: mm/mm.c
gcc $(CFLAGS) -c mm/mm.c -o mm/mm.o
@ -63,5 +63,9 @@ multiboot2.o: driver/multiboot2/multiboot2.c
cpu.o: common/cpu.c
gcc $(CFLAGS) -c common/cpu.c -o common/cpu.o
# 驱动程序
8259A.o: driver/interrupt/8259A/8259A.c
gcc $(CFLAGS) -c driver/interrupt/8259A/8259A.c -o driver/interrupt/8259A/8259A.o
clean:
rm -rf $(GARBAGE)

View File

@ -1,13 +1,14 @@
#include "8259A.h"
#include "irq.c"
#include "../common/printk.h"
#include "../common/kprint.h"
#include "../../../common/printk.h"
#include "../../../common/kprint.h"
extern void (*interrupt_table[24])(void);
void init_8259A()
{
// 初始化中断门, 中断使用第二个ist
for(int i=32;i<=55;++i)
set_intr_gate(i, 2, interrupt[i-32]);
set_intr_gate(i, 2, interrupt_table[i-32]);
kinfo("Initializing 8259A...");
// 初始化主芯片

View File

@ -11,7 +11,7 @@
#pragma once
#include "../common/glib.h"
#include "../../../common/glib.h"
#define PIC_EOI 0x20
#define PIC_master 0x20 /* IO base address for master PIC */

View File

@ -1,5 +1,5 @@
#include "irq.h"
#include "8259A.h"
#include "../driver/interrupt/8259A/8259A.h"
#include "../common/asm.h"
#include"../common/printk.h"
#include "gate.h"
@ -80,7 +80,7 @@ Build_IRQ(0x36)
Build_IRQ(0x37)
// 初始化中断数组
void (*interrupt[24])(void)=
void (*interrupt_table[24])(void)=
{
IRQ0x20interrupt,
IRQ0x21interrupt,