From b78762c92afee705e618f29f89897db8b45df3dd Mon Sep 17 00:00:00 2001 From: Xander Date: Fri, 28 Jul 2023 21:38:35 +0200 Subject: optional implementation of multboot 1 --- kernel/main.dats | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) (limited to 'kernel/main.dats') diff --git a/kernel/main.dats b/kernel/main.dats index dadcd2d..4c7d49a 100644 --- a/kernel/main.dats +++ b/kernel/main.dats @@ -1,7 +1,7 @@ #include "./prelude/kernel_prelude.hats" staload "kernel/interrupts/idt.sats" -staload "kernel/bootinfo/multiboot.sats" +staload BOOT = "kernel/bootinfo/multiboot.sats" staload "kernel/memory/frame.sats" staload "lib/SATS/writer.sats" @@ -13,17 +13,17 @@ staload "lib/SATS/writer.sats" //NOTE: how to make sure ats checks 2 contstraints in one if statement? //TODO: put in seperate utils module (just generic size function) -fn kernel_size(kernel_start : Ptr, kernel_end : Ptr) : size_t = let - extern castfn Ptr12size (a : Ptr1): size_t -in - if (kernel_end > the_null_ptr) then - if (kernel_start > the_null_ptr) then - Ptr12size(kernel_end) - Ptr12size(kernel_start) - else - i2sz(0) - else - i2sz(0) -end +(* fn kernel_size(kernel_start : Ptr, kernel_end : Ptr) : size_t = let *) +(* extern castfn Ptr12size (a : Ptr1): size_t *) +(* in *) +(* if (kernel_end > the_null_ptr) then *) +(* if (kernel_start > the_null_ptr) then *) +(* Ptr12size(kernel_end) - Ptr12size(kernel_start) *) +(* else *) +(* i2sz(0) *) +(* else *) +(* i2sz(0) *) +(* end *) (* fn test(allocptr : !allocptr, bootptr : !bootptr) : void = let *) (* fun loop(i : int) : void = if (i < 160) then( let val _ = allocate_frame(allocptr.0, bootptr.0 | allocptr.2, bootptr.2) in end; loop(succ(i))) *) @@ -37,19 +37,20 @@ extern fun breakpoint() :void = "mac#" extern fun entry(p : Ptr1) : void = "ext#" implement entry(p) = let - val () = clear_screen() // Initialize boot info struct - val bootptr = boot_info_init(p) - val (kernel_start,kernel_end) = get_kernel_ranges(bootptr) - val (multiboot_start,multiboot_end) = get_multiboot_ranges(bootptr) + val () = $BOOT.init(p) + + (* val (kernel_start,kernel_end) = get_kernel_ranges(bootptr) *) + (* val (multiboot_start,multiboot_end) = get_multiboot_ranges(bootptr) *) (* val allocptr = frame_allocator_init(kernel_start,kernel_end,multiboot_start,multiboot_end,bootptr) *) in - print_memory_mappings(bootptr); + clear_screen(); + $BOOT.print_memory_mappings(); - print_elf_headers(bootptr); - println!("Kernel Size: ", kernel_size(kernel_start,kernel_end)); + (* print_elf_headers(bootptr); *) + (* println!("Kernel Size: ", kernel_size(kernel_start,kernel_end)); *) (* test(allocptr,bootptr); *) (* let *) (* val frame = allocate_frame(allocptr.0, bootptr.0 | allocptr.2, bootptr.2) *) @@ -65,13 +66,6 @@ in println!("End"); - - let - prval () = bootptr.1(bootptr.0) - (* prval () = allocptr.1(allocptr.0) *) - in end - - end // Satisfy ats compiler. Should be called once to dynload files -- cgit v1.2.3