From 2fb81f37d20fd442d1954a7356e3ab7f88314a9c Mon Sep 17 00:00:00 2001 From: Nathan Lee Date: Sat, 13 Jun 2026 21:24:33 -0500 Subject: create support for kernel modules (but don't implement them yet) --- kernel/kernel.c | 20 ++++++++++++++++++++ kernel/start.S | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 kernel/kernel.c create mode 100644 kernel/start.S (limited to 'kernel') diff --git a/kernel/kernel.c b/kernel/kernel.c new file mode 100644 index 0000000..753f4a5 --- /dev/null +++ b/kernel/kernel.c @@ -0,0 +1,20 @@ +#define UART_BASE 0x10000000 // Example UART address + +static inline void putchar(char c) { + volatile char *uart = (volatile char *)UART_BASE; + *uart = c; +} + +static void print_string(const char *str) { + while (*str) { + putchar(*str++); + } +} + +void kernel_main(void) { + print_string("Hello from RISC-V kernel!\n"); + + while (1) { + // Wait + } +} diff --git a/kernel/start.S b/kernel/start.S new file mode 100644 index 0000000..dce0faa --- /dev/null +++ b/kernel/start.S @@ -0,0 +1,20 @@ +.section .text._start +.global _start +.type _start, @function + +_start: + csrw mstatus, zero + csrw mie, zero + + la sp, __stack_top + + la t0, __bss_start + la t1, __bss_end + beq t0, t1, 2f +1: + sw zero, 0(t0) + addi t0, t0, 4 + bltu t0, t1, 1b +2: + call kernel_main + j . -- cgit v1.2.3