add missing slides due to renamings
[lunaix-os.git] / lunaix-os / kernel / k_main.c
1 #include <stdint.h>
2 #include <lunaix/mm/vmm.h>
3 #include <lunaix/mm/kalloc.h>
4 #include <hal/cpu.h>
5 #include <libc/stdio.h>
6 #include <lunaix/spike.h>
7
8 extern uint8_t __kernel_start;
9
10 void
11 _kernel_main()
12 {
13     char buf[64];
14     
15     printf("Hello higher half kernel world!\nWe are now running in virtual "
16            "address space!\n\n");
17     
18     cpu_get_brand(buf);
19     printf("CPU: %s\n\n", buf);
20
21     void* k_start = vmm_v2p(&__kernel_start);
22     printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
23
24     // test malloc & free
25     
26     uint8_t** arr = (uint8_t**) lxmalloc(10 * sizeof(uint8_t*));
27     
28     for (size_t i = 0; i < 10; i++)
29     {
30         arr[i] = (uint8_t*) lxmalloc((i + 1) * 2);
31     }
32
33
34     for (size_t i = 0; i < 10; i++)
35     {
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     printf("%u, %u, %u", big_[0], big_[1], big_[2]);
45     
46     // good free
47     lxfree(arr);
48     lxfree(big_);
49
50     // uint8_t* bad1 = lxmalloc(123);
51     // void* bad2 = lxmalloc(1);
52
53     // *((uint32_t*)(bad1 - 4)) = 0xc2343312UL;
54
55     // // bad free
56     // lxfree(bad1);
57     // lxfree(bad2 - 2);
58 }