2018-09-06 22:49:00 -04:00
|
|
|
#include "console.h"
|
2018-09-07 00:32:45 -04:00
|
|
|
#include "descriptor_tables.h"
|
2018-09-27 01:06:55 -04:00
|
|
|
#include "multiboot.h"
|
2018-10-09 01:42:28 -04:00
|
|
|
#include "shell.h"
|
2018-10-07 00:34:59 -04:00
|
|
|
#include "arch/x86/mmu.h"
|
2018-10-09 01:42:28 -04:00
|
|
|
#include "drivers/ata.h"
|
|
|
|
|
#include "drivers/keyboard.h"
|
|
|
|
|
#include "drivers/pci.h"
|
|
|
|
|
#include "drivers/serial.h"
|
|
|
|
|
#include "drivers/timer.h"
|
|
|
|
|
#include "drivers/vga.h"
|
|
|
|
|
#include "fatfs/ff.h"
|
2018-10-01 20:51:57 -04:00
|
|
|
|
2018-09-25 00:37:34 -04:00
|
|
|
#include <common.h>
|
2018-09-30 14:56:07 -04:00
|
|
|
#include <stdio.h>
|
2018-09-06 22:49:00 -04:00
|
|
|
|
2018-10-09 01:42:28 -04:00
|
|
|
#ifdef ENABLE_DWARF
|
|
|
|
|
#include "dwarf.h"
|
|
|
|
|
#endif
|
2018-09-23 03:11:42 -04:00
|
|
|
|
2018-09-25 00:37:34 -04:00
|
|
|
_noreturn _unused
|
2018-09-27 01:06:55 -04:00
|
|
|
void kernel_main(uint32_t multiboot_magic, void *multiboot_info) {
|
|
|
|
|
serial_init();
|
|
|
|
|
console_set_serial_enabled(true);
|
|
|
|
|
|
|
|
|
|
multiboot_init(multiboot_magic, multiboot_info);
|
2018-09-28 00:50:46 -04:00
|
|
|
pci_init();
|
|
|
|
|
ata_init();
|
2018-09-27 01:06:55 -04:00
|
|
|
|
2018-10-02 00:22:36 -04:00
|
|
|
bool fs_mounted = false;
|
2018-09-30 14:56:07 -04:00
|
|
|
printf("Mounting drive 0... ");
|
2018-09-29 19:38:42 -04:00
|
|
|
FATFS fs;
|
|
|
|
|
FRESULT ret = f_mount(&fs, "", 1);
|
|
|
|
|
if (ret == FR_OK) {
|
2018-09-30 14:56:07 -04:00
|
|
|
printf("OK\n");
|
2018-10-02 00:22:36 -04:00
|
|
|
fs_mounted = true;
|
2018-09-29 19:38:42 -04:00
|
|
|
} else {
|
2018-09-30 14:56:07 -04:00
|
|
|
printf("fail %d\n", ret);
|
2018-09-29 19:38:42 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_DWARF
|
2018-10-02 00:22:36 -04:00
|
|
|
// dwarf_find_debug_info();
|
2018-09-29 19:38:42 -04:00
|
|
|
#endif
|
|
|
|
|
|
2018-10-09 01:42:28 -04:00
|
|
|
vga_load_font("assets/default8x16.psfu");
|
2018-10-01 17:25:57 -04:00
|
|
|
clear_screen();
|
2018-09-07 00:32:45 -04:00
|
|
|
|
2018-10-02 00:22:36 -04:00
|
|
|
shell_init(fs_mounted);
|
2018-09-21 22:15:10 -04:00
|
|
|
__asm__ volatile("sti");
|
|
|
|
|
|
2018-09-25 00:04:11 -04:00
|
|
|
while (1) {
|
|
|
|
|
__asm__ volatile("hlt");
|
2018-10-01 20:51:57 -04:00
|
|
|
__asm__ volatile("cli");
|
2018-09-27 01:06:55 -04:00
|
|
|
shell_read();
|
2018-09-25 00:04:11 -04:00
|
|
|
key_buffer_print();
|
2018-10-01 20:51:57 -04:00
|
|
|
__asm__ volatile("sti");
|
2018-09-25 00:04:11 -04:00
|
|
|
}
|
2018-09-30 14:56:07 -04:00
|
|
|
}
|