调整local apic向量表的大小

This commit is contained in:
fslongjin 2022-07-21 11:45:38 +08:00
parent d18a69ac2f
commit 23b3f4c712
3 changed files with 9 additions and 7 deletions

View File

@ -488,7 +488,7 @@ void do_IRQ(struct pt_regs *rsp, ul number)
irq->handler(number, irq->parameter, rsp);
}
}
else if (number >= 150 && number < 160)
else if (number >= 150 && number < 200)
{
irq_desc_t *irq = &local_apic_interrupt_desc[number - 150];

View File

@ -191,7 +191,7 @@ int irq_register(ul irq_num, void *arg, void (*handler)(ul irq_num, ul parameter
irq_desc_t *p = NULL;
if (irq_num >= 32 && irq_num < 0x80)
p = &interrupt_desc[irq_num - 32];
else if (irq_num >= 150 && irq_num < 160)
else if (irq_num >= 150 && irq_num < 200)
p = &local_apic_interrupt_desc[irq_num - 150];
else
{

View File

@ -15,8 +15,10 @@
#include <process/ptrace.h>
#define IRQ_NUM 24
#define SMP_IRQ_NUM 10
#define LOCAL_APIC_IRQ_NUM 10
#define LOCAL_APIC_IRQ_NUM 50
extern void (*interrupt_table[24])(void);
extern void do_IRQ(struct pt_regs *regs, ul number);
@ -84,7 +86,7 @@ extern void (*local_apic_interrupt_table[LOCAL_APIC_IRQ_NUM])(void);
0x80 system call
0x81 system interrupt
150 ~ 200 Local APIC
[150,200) Local APIC
150 CMCI
151 Timer
152 Thermal Monitor
@ -127,10 +129,10 @@ typedef struct
ul flags;
} irq_desc_t;
#define IRQ_NUM 24
// 这个表一定要放在这里否则在HPET初始化后收到中断会产生page fault
// 这个表一定要放在这里否则在HPET初始化后收到中断会产生page fault
irq_desc_t interrupt_desc[IRQ_NUM] = {0};
irq_desc_t local_apic_interrupt_desc[20] = {0};
irq_desc_t local_apic_interrupt_desc[LOCAL_APIC_IRQ_NUM] = {0};
irq_desc_t SMP_IPI_desc[SMP_IRQ_NUM] = {0};