QDNix
Quick’n’dirty *NIX
init.c
1 #include <dev/device.h>
2 #include <dev/tty/serial/serial.h>
3 #include <sys/console.h>
4 #include <libkern/printk.h>
5 #include <machine/multiboot.h>
6 
7 /* TODO: refactor */
8 void serial_8250_init(void *dev);
9 
10 static Device dev = {
11  .class = DEVICE_TTY,
12  .drivers.serial = {
13  .init = serial_8250_init,
14  .io_base = 0x3F8,
15  .beaudrate = 9600,
16  .reg_offset = 0
17  }
18 };
19 /* END TODO */
20 
21 void
22 arch_init(uint32_t magic, void *boot_info)
23 {
24  /* TODO: refactor */
25  dev.drivers.serial.init(&(dev.drivers.serial));
26 
27  console_setup(&dev);
28  /* END TODO */
29 
30  printk("Magic: 0x%x, BootInfo: %p\n", magic, boot_info);
31 
32  switch (magic)
33  {
34  case MULTIBOOT_BOOTLOADER_MAGIC:
35  printk("yay multiboot\n");
36  multiboot_entry(boot_info);
37  break;
38 
39  default:
40  printk("Invalide multiboot magic\n");
41  break;
42  }
43 }
Definition: device.h:20