From 73795f89442596714037e3dfbd28373d15382845 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 2 Sep 2025 01:11:40 +0200 Subject: [PATCH 1/2] Better clean --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6228658..3bd5aea 100644 --- a/Makefile +++ b/Makefile @@ -78,8 +78,7 @@ qemu: kern/kernel.elf @$(QEMU) -machine virt -bios none -nographic -m 128M -smp 4 -kernel $< clean: - rm -f *.o *.elf *.d lib/*.o lib/*.d - find . -type f -name '*.[od]' -exec rm -f {} + + find . -type f -name '*.[od(elf)]' -exec rm -f {} + format: find . -type f -name '*.[ch]' -exec clang-format -i {} + From f654aeb0381a16ef53a7ef1538e7ca5262e27c45 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 2 Sep 2025 01:25:47 +0200 Subject: [PATCH 2/2] Readme: include a quick start section, describe directory outline --- README.md | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3213594..177f304 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,34 @@ For a quick reference on RISC-V assembly: Some low-level string format routines borrowed from [mini-printf](https://github.com/mludvig/mini-printf) -Toolchains: +### Directory outline + +The planned directory outline is as follows: +``` +root +├── kern # General kernel sources +│ ├── libkern # Kernel specific library routines +│ ├── memory # Memory related code (kalloc, buddy and friends) +│ └── arch # Architecture specific functionality +├── libc # Userspace C library +└── user # Userspace programs +``` + +### Quick Start + +```sh +make get_toolchain # Dont worry, is will land locally inside project directory +make -j$(nproc) +make qemu +``` + +The project can be cleaned with: +```sh +make clean # Wipes .o, .d, .elf +make distclean # Wipes the above, but also removes toolchain +``` + +### Toolchains: - https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack - https://github.com/xpack-dev-tools/qemu-riscv-xpack/ @@ -17,6 +44,8 @@ Toolchains: > term trap, largely because it was the term used by the PDP11/40 and therefore is the > conventional Unix term. +### Notes/Misc + | Register | Name | Privilege Level | Description | |-------------|----------------------------|------------------|-----------------------------------------------------------------------------| | `mstatus` | Machine Status Register | Machine | Holds global interrupt enable, previous privilege mode, etc. | @@ -35,9 +64,7 @@ Toolchains: | `mip` | Machine Interrupt Pending | Machine | Indicates pending interrupts. | | `mie` | Machine Interrupt Enable | Machine | Controls which interrupts are enabled. | -# Notes - -## Libc Implementations +### Libc Implementations [uClibc](https://uclibc.org/) [musl libc](https://musl.libc.org/)