start.c
来自「参照MINIX3写的操作系统 用GCC+NASM+BOCHS开发」· C语言 代码 · 共 37 行
C
37 行
#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 + =
减小字号Ctrl + -
显示快捷键?