3899336d00950bd5d150611c18ecc2c0726f11ff
[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     for (size_t i = 0; i < 10; i++)
35     {
36         lx_free(arr[i]);
37     }
38     
39     lx_free(arr);
40     // assert(0);
41 }