Exemplo n.º 1
0
void _cdecl kernel_entry(multiboot_info* mBootInfo)
{
#ifdef _MSC_VER
	_asm mov kernelSize,edx
#endif

#ifdef ARCH_X86
	_asm
	{
		cli
		mov ax,10h
		mov ds,ax
		mov es,ax
		mov fs,ax
		mov gs,ax
	}
#endif

	bootinfo = mBootInfo;

	setup();
	InitializeConstructors();
	main();
	Exit();

	// Add code here to turn the computer off.

#ifdef ARCH_X86
	_asm cli
	_asm hlt
#endif

	for(;;);
}
Exemplo n.º 2
0
//! kernel entry point is called by boot loader
void __cdecl  kernel_entry (multiboot_info* bootinfo) {

#ifdef ARCH_X86

	// Set registers for protected mode
	_asm {
		cli
		mov ax, 10h
		mov ds, ax
		mov es, ax
		mov fs, ax
		mov gs, ax
	}
#endif //ARCH_X86

	//dx 레지스터에는 커널의 크기가 담겨 있다.
	//다른값으로 씌워지기 전에 값을 얻어낸다.
	_asm	mov	word ptr[g_kernelSize], dx
	InitializeConstructors();
	kmain (bootinfo);
	Exit ();

	console.Print("kernel_entry : Shutdown Complete. Halting system\n");

#ifdef ARCH_X86
	_asm {
		cli
		hlt
	}
#endif

	for (;;);
}