/** Kernel (real) entry point **/ void kmain(struct mb_partial_info *mbi) { printk("RAM detected : %uk (lower), %uk (upper)\n", mbi->low_mem, mbi->high_mem); printk("Command line got: %s \n", mbi->cmdline); printk ("Initialize GDT ... "); InitGDT(); asm(" movw $0x18, %ax \n \ movw %ax, %ss \n \ movl $0x1FFF0, %esp"); OkMsg(); LoadIDT(); printk ("IDT loaded éè\n"); InitPIC(); sti; while(1) { } }
void kernel_main() { int i = 0xa0000; for( ; i <= 0xaffff; ++i ){ asm_write_mem( i, 1 ); } // Delete boot sector and temporary data. for( i = 0x1000; i <= 0x9fc00; ++i ){ asm_write_mem( i, 0 ); } init_palette(); i = 0xa0000; for( ; i <= 0xaffff; ++i ){ asm_write_mem( i, 0 ); } asm_disable_intr(); InitGDT(); InitIDT(); InitPIC(); asm_enable_intr(); set_task( 1, task_a, stack[ 0 ] + 2048 ); set_task( 2, task_b, stack[ 1 ] + 2048 ); switch_task_2( TASK_INFO_ADDR, TASK_INFO_ADDR + sizeof( TaskInfo ) ); for(;;){ print_str( 0, 20, "fin" ); asm_halt(); } asm_halt(); }
void InitDescriptorTables() { InitGDT(); InitIDT(); memset(&InterruptHandlers,0,sizeof(ISRType)*256); }