start.c~

来自「参照MINIX3写的操作系统 用GCC+NASM+BOCHS开发」· C~ 代码 · 共 37 行

C~
37
字号
#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 + -
显示快捷键?