8104408692b8f4111a0aa168c8125c24266e7160
[lunaix-os.git] / lunaix-os / kernel / k_main.c
1 #include <hal/cpu.h>
2 #include <hal/rtc.h>
3 #include <lunaix/syslog.h>
4 #include <lunaix/mm/kalloc.h>
5 #include <lunaix/mm/vmm.h>
6 #include <lunaix/spike.h>
7 #include <stdint.h>
8
9 extern uint8_t __kernel_start;
10
11 LOG_MODULE("LX")
12
13 void
14 _kernel_main()
15 {
16     char buf[64];
17
18     kprintf(KINFO "Hello higher half kernel world!\nWe are now running in virtual "
19            "address space!\n\n");
20
21     cpu_get_brand(buf);
22     kprintf("CPU: %s\n\n", buf);
23
24     void* k_start = vmm_v2p(&__kernel_start);
25     kprintf(KINFO "The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
26
27     // test malloc & free
28
29     uint8_t** arr = (uint8_t**)lxmalloc(10 * sizeof(uint8_t*));
30
31     for (size_t i = 0; i < 10; i++) {
32         arr[i] = (uint8_t*)lxmalloc((i + 1) * 2);
33     }
34
35     for (size_t i = 0; i < 10; i++) {
36         lxfree(arr[i]);
37     }
38
39     uint8_t* big_ = lxmalloc(8192);
40     big_[0] = 123;
41     big_[1] = 23;
42     big_[2] = 3;
43
44     kprintf(KINFO "%u, %u, %u\n", big_[0], big_[1], big_[2]);
45
46     // good free
47     lxfree(arr);
48     lxfree(big_);
49
50     spin();
51 }