From ab383485291164f7bc78b88787271dd1b85c0d73 Mon Sep 17 00:00:00 2001 From: Xander Date: Sat, 15 Jul 2023 00:31:51 +0200 Subject: Boot info memory mapping implementation --- kernel/main.dats | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'kernel/main.dats') diff --git a/kernel/main.dats b/kernel/main.dats index b35387f..7e6bfe7 100644 --- a/kernel/main.dats +++ b/kernel/main.dats @@ -3,10 +3,14 @@ #define ATS_DYNLOADFLAG 0 staload "kernel/interrupts/idt.sats" +staload "kernel/multiboot.sats" staload "lib/SATS/writer.sats" staload UN = "prelude/SATS/unsafe.sats" +extern praxi c (p : ptr) : [l : agz] strptr l +extern prfun eat(p : strptr) : void + %{^ void breakpoint(){ __asm__("int3"); @@ -17,25 +21,18 @@ extern castfn char_arr2string {n:nat} (arr : &(@[char][n])) : string n extern fun breakpoint() :void = "mac#" -extern fun main(p : ptr) : void = "ext#" +extern fun main(p : Ptr1) : void = "ext#" implement main(p) = let - prval size = $UN.ptr0_get(ptr_add(p, - 8 + - 16 + - 16 + - 4 + 4 - (* 16 + *) - (* 8 + *) - (* 32 + *) - (* 16 + 24 + 24 + 24 + 24 + 24 + 48 + // memory map *) - (* 792 + // elf *) - (* 4 + 4 + 4 *) - )) in clear_screen(); println!("Start"); - (* println!(size); *) + + // Initialize boot info struct + let + val bootptr = boot_info_init(p) + prval () = bootptr.1(bootptr.0) + in end; // Initialize interrupt table idt_init(); -- cgit v1.2.3