Beispiel #1
0
void kernel_init(boot_info_t bootInfo) {
	tty_init();

	multiboot_init(bootInfo.multiboot_magic, bootInfo.multiboot_addr);
	if(a20_enable()) {
		serial_writestring(1, "A20 enable failed - triggering panic\n");
		kernel_panic();
	};
	gdt_install();
	idt_install();
	irq_install();
	_protected_mode_init();

	paging_init();
	_paging_enable();

	PIC_init();
	serial_init();
	keyboard_init();
	timer_init();

	serial_writestring(1, "End kernel_init\n");

	kernel_main();
};
Beispiel #2
0
static int init_serial() {
  outportb(PORT + 1, 0x00);    // Disable all interrupts
  outportb(PORT + 3, 0x80);    // Enable DLAB (set baud rate divisor)
  outportb(PORT + 0, 0x03);    // Set divisor to 3 (lo byte) 38400 baud
  outportb(PORT + 1, 0x00);    //                  (hi byte)
  outportb(PORT + 3, 0x03);    // 8 bits, no parity, one stop bit
  outportb(PORT + 2, 0xC7);    // Enable FIFO, clear them, with 14-byte threshold
  outportb(PORT + 4, 0x0B);    // IRQs enabled, RTS/DSR set

	static console_t con = {
			.writestring = serial_writestring,
			.setcolor = serial_setcolor,
			.getcolor = serial_getcolor
	};

	console_register(con);

	serial_writestring("Serial debugging console is up ");

  return 1;
}