From 66289aa8ecfa07b20bad424eb9860b196641ef52 Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Fri, 19 Mar 2021 10:54:25 -0500 Subject: first commit --- src/kernel/kernel.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/kernel/kernel.c (limited to 'src/kernel/kernel.c') diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c new file mode 100644 index 0000000..8db2e50 --- /dev/null +++ b/src/kernel/kernel.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include +#include + +void panic() { // will fill with debugging info latter + printf("Kernel panic!\n"); + for(;;); +} + + +void main() { + if(!(init_serial(COM1))) { + printf("\nKernal started on CPU 1!\n"); // will detect cpu later + } + + rsdp_t *rsdp; + struct memory_table *table = (struct memory_table *)&_meminfo_loc; + struct vbe_infoblock *vbe_info = (struct vbe_infoblock *)0x500; + debug_print_memory(); + + rsdp = find_RSDP(); + if(!(rsdp)) { + printf("Couldn't find the RSDP... uhh, not sure what to do now.\n"); + panic(); + } + dump_video(); + + if(rsdp->v1.version) { + map_page(0x200000, (rsdp->v2.xsdt_addr / 0x1000) * 0x1000, PAGE_SIZE_4K); + } + else { + map_page(0x200000, (rsdp->v1.rsdt_addr / 0x1000) * 0x1000, PAGE_SIZE_4K); + struct acpi_header *acpi = (struct acpi_header *)((uint64_t)0x200000 + (rsdp->v1.rsdt_addr % 0x1000)); + } + + printf("kernel is done, you can ignore this panic\n"); + panic(); + +} -- cgit v1.2.3