📄 start.c
字号:
#include "include/start.h"
//进行一些初始化工作
PUBLIC void CStart()
{
t_16 *p_gdt_limit;
t_16 *p_idt_limit;
t_32 *p_gdt_base;
t_32 *p_idt_base;
int i=0;
//将就GDT复制到新的GDT
clear();
printk("**********CStart()**********\n");
MemoryCopy(&gdt,(void*)(*((t_32*)(&gdt_ptr[2]))),*((t_16*)(&gdt_ptr[0])));
//重新设置GDT的基地址和限长
p_gdt_limit = (t_16*)(&gdt_ptr[0]);
p_gdt_base = (t_32*)(&gdt_ptr[2]);
*p_gdt_limit = GDT_SIZE*sizeof(DESCRIPTOR);
*p_gdt_base = (t_32)&gdt;
//设置IDT的基地址和限长
p_idt_limit = (t_16*)(&idt_ptr[0]);
p_idt_base = (t_32*)(&idt_ptr[2]);
*p_idt_limit = IDT_SIZE*sizeof(GATE);
*p_idt_base = (t_32)&idt;
//初始化8259A,异常,中断,
InitIrq();
//关所有中断
//OutByte(INT_M_CTLMASK,0xFF);
//OutByte(INT_S_CTLMASK,0xFF); printk("**********CStart() FINISH**********\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -