3f56166b14f57c659c9920c4156412ac5e0d3237
[lunaix-os.git] / lunaix-os / kernel / k_main.c
1 #include <stdint.h>
2 #include <lunaix/mm/vmm.h>
3 #include <lunaix/mm/dmm.h>
4 #include <hal/cpu.h>
5 #include <libc/stdio.h>
6
7 extern uint8_t __kernel_start;
8
9 void
10 _kernel_main()
11 {
12     char buf[64];
13     
14     printf("Hello higher half kernel world!\nWe are now running in virtual "
15            "address space!\n\n");
16     
17     cpu_get_brand(buf);
18     printf("CPU: %s\n\n", buf);
19
20     void* k_start = vmm_v2p(&__kernel_start);
21     printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
22
23     dmm_init();
24
25     // test malloc & free
26     
27     uint32_t** arr = (uint32_t**) lx_malloc(10 * sizeof(uint32_t*));
28     
29     for (size_t i = 0; i < 10; i++)
30     {
31         arr[i] = (uint32_t*) lx_malloc((i + 1) * 2);
32     }
33
34     void* big_ = lx_malloc(8192);
35
36     for (size_t i = 0; i < 10; i++)
37     {
38         lx_free(arr[i]);
39     }
40     
41     lx_free(arr);
42     lx_free(big_);
43     // assert(0);
44 }