⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bootsetup.c.svn-base

📁 SImple Microkernel Distributed Operating System
💻 SVN-BASE
字号:
#include <string.h>#include <system.h>#include "bootsetup.h"struct gdt_desc{	__word	lim_0_15;	__word	bas_0_15;	__byte	bas_16_23;	__byte 	access;	__byte 	gran;	__byte 	bas_24_31;}__attribute__((packed));struct idt_desc{	__word	bas_0_15;	__word	sel;	__byte	always0;	__byte	flags;	__word	bas_16_31;}__attribute__((packed));struct table_reg{	__word	  table_lim;	__dword   table_linear;	}__attribute__((packed));struct task_state{}__attribute__((packed));struct gdt_desc		gdt[3];struct idt_desc	   	idt[256];struct table_reg   	app_gdt_ram;struct table_reg   	app_idt_ram;extern void gdt_flush();extern void idt_load();void gdt_set_gate(unsigned short n, __dword base, \		__dword limit, __byte access, __byte gran){	gdt[n].bas_0_15 = (base & 0xFFFF);	gdt[n].bas_16_23 = (base >> 16) & 0xFF;	gdt[n].bas_24_31 = (base >> 24) & 0xFF;	gdt[n].lim_0_15 = (limit & 0xFFFF);	gdt[n].gran = ((limit >> 16) & 0x0F);	gdt[n].gran |= (gran & 0xF0);	gdt[n].access = access;}void idt_set_gate(unsigned short n, __dword base, \		__word sel, __byte flags){	return;}void gdt_install(){	app_gdt_ram.table_lim       	 = (sizeof(struct gdt_desc) * 3) - 1;	app_gdt_ram.table_linear	 = (__dword)gdt;	gdt_set_gate(0, 0, 0, 0, 0);	gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF);	gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF);	gdt_flush();}void idt_install(){	app_idt_ram.table_lim    = (sizeof(struct idt_desc) * 256) - 1;	app_idt_ram.table_linear = (__dword)idt;	memset(&idt, 0, sizeof(struct idt_desc) * 256);	idt_load();}void install_desc(){	idt_install();	gdt_install();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -