Implement APIC, RTC, basic ACPI parser and timer support
[lunaix-os.git] / lunaix-os / kernel / k_main.c
index 9468db342abcf8bf3fea778c1eebd17564b7e82e..8104408692b8f4111a0aa168c8125c24266e7160 100644 (file)
@@ -1,38 +1,38 @@
-#include <stdint.h>
-#include <lunaix/mm/vmm.h>
-#include <lunaix/mm/kalloc.h>
 #include <hal/cpu.h>
-#include <libc/stdio.h>
+#include <hal/rtc.h>
+#include <lunaix/syslog.h>
+#include <lunaix/mm/kalloc.h>
+#include <lunaix/mm/vmm.h>
 #include <lunaix/spike.h>
+#include <stdint.h>
 
 extern uint8_t __kernel_start;
 
+LOG_MODULE("LX")
+
 void
 _kernel_main()
 {
     char buf[64];
-    
-    printf("Hello higher half kernel world!\nWe are now running in virtual "
+
+    kprintf(KINFO "Hello higher half kernel world!\nWe are now running in virtual "
            "address space!\n\n");
-    
+
     cpu_get_brand(buf);
-    printf("CPU: %s\n\n", buf);
+    kprintf("CPU: %s\n\n", buf);
 
     void* k_start = vmm_v2p(&__kernel_start);
-    printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
+    kprintf(KINFO "The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
 
     // test malloc & free
-    
-    uint8_t** arr = (uint8_t**) lxmalloc(10 * sizeof(uint8_t*));
-    
-    for (size_t i = 0; i < 10; i++)
-    {
-        arr[i] = (uint8_t*) lxmalloc((i + 1) * 2);
-    }
 
+    uint8_t** arr = (uint8_t**)lxmalloc(10 * sizeof(uint8_t*));
+
+    for (size_t i = 0; i < 10; i++) {
+        arr[i] = (uint8_t*)lxmalloc((i + 1) * 2);
+    }
 
-    for (size_t i = 0; i < 10; i++)
-    {
+    for (size_t i = 0; i < 10; i++) {
         lxfree(arr[i]);
     }
 
@@ -41,18 +41,11 @@ _kernel_main()
     big_[1] = 23;
     big_[2] = 3;
 
-    printf("%u, %u, %u", big_[0], big_[1], big_[2]);
-    
+    kprintf(KINFO "%u, %u, %u\n", big_[0], big_[1], big_[2]);
+
     // good free
     lxfree(arr);
     lxfree(big_);
 
-    // uint8_t* bad1 = lxmalloc(123);
-    // void* bad2 = lxmalloc(1);
-
-    // *((uint32_t*)(bad1 - 4)) = 0xc2343312UL;
-
-    // // bad free
-    // lxfree(bad1);
-    // lxfree(bad2 - 2);
+    spin();
 }
\ No newline at end of file