blob: 84f5a79c50004af9c6e348d99711f545d1578bd0 [file] [log] [blame]
swissChilid8137922021-02-17 15:34:07 -08001#include "descriptor_tables.h"
swissChili825d46b2021-02-21 10:14:16 -08002#include "io.h"
3#include "log.h"
swissChilidefeb0d2021-02-18 15:28:36 -08004#include "timer.h"
swissChili825d46b2021-02-21 10:14:16 -08005#include "vga.h"
6#include "paging.h"
swissChilid8137922021-02-17 15:34:07 -08007
swissChili0b35bf22021-02-18 12:49:40 -08008int kmain(void *mboot)
swissChilid8137922021-02-17 15:34:07 -08009{
10 vga_clear();
11 vga_set_color(LIGHT_BLUE, BLACK);
12 vga_write("Hello!\nWelcome to Bluejay OS\n");
swissChilid8137922021-02-17 15:34:07 -080013 vga_set_color(WHITE, BLACK);
14
swissChili0b35bf22021-02-18 12:49:40 -080015 init_descriptor_tables();
swissChilid8137922021-02-17 15:34:07 -080016
swissChili0b35bf22021-02-18 12:49:40 -080017 vga_set_color(LIGHT_GREEN, BLACK);
18 vga_write("Setup complete!\n");
19 vga_set_color(WHITE, BLACK);
swissChilid8137922021-02-17 15:34:07 -080020
swissChili825d46b2021-02-21 10:14:16 -080021 init_timer(20);
22
23 initialize_paging();
swissChilidefeb0d2021-02-18 15:28:36 -080024 asm volatile("sti");
25
swissChili0b35bf22021-02-18 12:49:40 -080026
swissChili825d46b2021-02-21 10:14:16 -080027#ifdef TEST_PAGE_FAULT
28 kprintf("Causing page fault:\n");
29
30 volatile uint *ptr = (uint *) 0xa0000000;
31 volatile uint cause_page_fault = *ptr;
32
33 kprintf("Should have caused page fault: %d...\n", cause_page_fault);
34#endif
35
36 while (true)
37 asm volatile("hlt");
38
swissChilid8137922021-02-17 15:34:07 -080039 return 0xCAFEBABE;
40}