接下来就要先初始化中断向量。如书上所说,intel默认保留使用了0~31个中断给自己使用。这些中断目前不想处理。所以这些中断的处理函数只是打印一下就可以。
traps.c源代码:
#include <io.h>
#include <start32.h>
#include <system.h>
void default_handle(void);
void do_default_handle()
{
/*do nothing by now.*/
printk("default handle\n");
return;
}
void trap_init(void)
{
int i;
//32个中断为intel保留使用, 8259-1使用8个中断,8259-2使用8个中断,所以总共要加48个中断处理函数。
for( i = 0; i < 48; i++ )
{
set_trap_gate(i, &default_handle);
}
}
//start32.h 拷贝自linux源代码中的head.h
-------
#ifndef __START32_H__
#define __START32_H__
/*copy from linux source code: head.h*/
typedef struct desc_struct {
unsigned long a,b;
} desc_table[256];
extern desc_table idt,gdt;
#define GDT_NUL 0
#define GDT_CODE 1
#define GDT_DATA 2
#define GDT_TMP 3
#define LDT_NUL 0
#define LDT_CODE 1
#define LDT_DATA 2
#endif