diff options
| author | Nathan Lee <me@nwlee.tech> | 2026-09-20 21:12:49 -0500 |
|---|---|---|
| committer | Nathan Lee <me@nwlee.tech> | 2026-09-20 21:12:49 -0500 |
| commit | 50e526d72f1fd9cb895d743a1353b54505b48025 (patch) | |
| tree | 3442b2bd7b3b6ba6db3d972f89cf575ce1201278 /kernel/riscv | |
| parent | 09be8ace254a7f8bb69542d09a6b2013636123a2 (diff) | |
Diffstat (limited to 'kernel/riscv')
| -rw-r--r-- | kernel/riscv/kernel.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/kernel/riscv/kernel.c b/kernel/riscv/kernel.c index 46de696..e38134c 100644 --- a/kernel/riscv/kernel.c +++ b/kernel/riscv/kernel.c @@ -1,5 +1,4 @@ #include <sys/log.h> -#include <sys/log.h> #include <sys/mem.h> #include <sys/cpio.h> #include <early/dtb.h> @@ -70,7 +69,7 @@ struct kernel_info *discover_arch(void *fdt) { } void kernel_main(size_t hart, void *fdt) { - printk("wkern version %s (Compiler %s, Linker %s)\n", VERSION, COMPILER_NAME, LINKER_NAME); + printk("wkern version %s (Compiler %s, Linker %s) on %s\n", VERSION, COMPILER_NAME, LINKER_NAME, ARCH_NAME); if (hart != 0) return; @@ -79,6 +78,16 @@ void kernel_main(size_t hart, void *fdt) { if (!kernel_info) { return; } + + + uint8_t *bitmap = kemalloc(kernel_info->mem_size / (8 * PAGE_SIZE)); + uintptr_t mem_start = (uintptr_t)kernel_info->mem_start; + uintptr_t initrd_start = (uintptr_t)kernel_info->initrd_start; + uintptr_t initrd_end = initrd_start + kernel_info->initrd_size; + for (; initrd_start <= initrd_end; initrd_start += PAGE_SIZE) { + uintptr_t offset = (initrd_start - mem_start) / PAGE_SIZE; + bitmap[offset / 8] = (uint8_t)(1u << (offset % 8)); + } } void kernel_trap() { |
