Esempio n. 1
0
void main(struct mbs_s *mbs, unsigned ebx, unsigned esp){
	
	
	
	
	
	screenClear();
	
	setTextColor(TEXTC_LGREEN);
	printk("\n%C%s :-)%C V. %C%s%C, Release %d (%s)\n", TEXTC_LRED, KERNEL_NAME, TEXTC_DEFAULT, TEXTC_WHITE, KERNEL_VERSION, TEXTC_DEFAULT, KERNEL_RELEASE, KERNEL_BUILD_DATE);
	printk(KERNEL_COPYRIGHT "\n");
	printk("Licensed under " KERNEL_LICENSE ".\n\n");
	
	printk("Init physical memory manager\n");
	pmmInit(mbs, &kernelBase, &kernelEnd);
	//printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT);
	
	
	printk("Init GDT ... ");
	gdtInit();
	printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT);
	
	/*
	unsigned int kdataseg, kcodeseg;
	asm("mov %%ds, %0" : "=g"(kdataseg));
	asm("mov %%cs, %0" : "=g"(kcodeseg));
	
	printk("\tKernel codesegment ... ");
	kcodeseg == GDT_KERNEL_CODESEG ? printk("%C*k", TEXTC_GREEN) : printk("%Cfailed", TEXTC_RED);
	printk("%C\n", TEXTC_DEFAULT);
	
	printk("\tKernel datasegment ... ");
	kdataseg == GDT_KERNEL_DATASEG ? printk("%C*k", TEXTC_GREEN) : printk("%Cfailed", TEXTC_RED);
	printk("%C\n", TEXTC_DEFAULT);
	*/
	
	
	/**/
	printk("Init IDT ... ");
	idtInit();
	printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT);
	
	printk("Test interrupts\n"); asm volatile("push %eax; xor %eax, %eax; int $0x87; pop %eax;");
	
	char *b = (char *)pmmAllocNext(4096);
	printk("b = %x\n", b);
	
	//systemPanic("STOP\n");
	
	printk("Init Multitasking...\n"); initMultitasking(); printk("Init Multitasking done\n");
	asm volatile("sti");
	
	//pmmGetFreeMem();
	
	/*
	asm volatile(
		"push %eax;"
		"xor %eax, %eax;"
		"mov $0x13, %al;"
		"int $0x10;"
		"pop %eax;"
	);
	unsigned char *VGA = (unsigned char *)0xA0000;
	unsigned int x;
	for(x = 0; x < 320 * 200; x++)
		VGA[x] = (unsigned char)128;
	*/
	
	
	// should never be reached
	printk("Kernel infinite loop.");
	while(1);
	
}
Esempio n. 2
0
void archInit()
{
    consoleInit();
    gdtInit();
    idtInit();
}