docs(rumpk): Add module READMEs per Panopticum doctrine
Added feature-colocated documentation for AI agent discoverability: - core/README.md: L1 Nim logic overview - hal/README.md: L0 Zig HAL overview, exported symbols - boot/README.md: Linker scripts, memory layout Panopticum Compliance: Each folder is now self-documenting.
This commit is contained in:
parent
2f8a062a74
commit
4cc268683d
|
|
@ -0,0 +1,27 @@
|
|||
# Rumpk Boot
|
||||
|
||||
**Purpose:** Bootloader headers and linker scripts
|
||||
|
||||
## Contents
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `linker.ld` | Default linker script (ARM64 QEMU virt) |
|
||||
| `header.zig` | Multiboot2 header (future) |
|
||||
|
||||
## Memory Layout (ARM64 QEMU virt)
|
||||
|
||||
```
|
||||
0x40080000 _start (Entry Point)
|
||||
0x40080000 .text
|
||||
.rodata
|
||||
.data
|
||||
.bss
|
||||
Stack (16KB)
|
||||
```
|
||||
|
||||
## Future
|
||||
|
||||
- `linker-x86_64.ld` - x86_64 QEMU q35
|
||||
- `linker-riscv64.ld` - RISC-V QEMU virt
|
||||
- EFI stub for real hardware
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
# Rumpk Core (L1)
|
||||
|
||||
**Language:** Nim
|
||||
**Purpose:** Architecture-agnostic kernel logic
|
||||
|
||||
## Module Index
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `kernel.nim` | Main entry point (`kmain`), fiber test |
|
||||
| `fiber.nim` | Cooperative fiber abstraction |
|
||||
| `ring.nim` | Lock-free Disruptor ring buffer |
|
||||
| `panicoverride.nim` | Nim panic handler for freestanding |
|
||||
|
||||
## Architecture Independence
|
||||
|
||||
This folder contains **no architecture-specific code**. All platform-specific
|
||||
details are handled by the HAL layer (`../hal/`).
|
||||
|
||||
Compile-time architecture selection uses Nim's `when defined()`:
|
||||
```nim
|
||||
when defined(amd64):
|
||||
const CONTEXT_SIZE = 56
|
||||
elif defined(arm64):
|
||||
const CONTEXT_SIZE = 96
|
||||
elif defined(riscv64):
|
||||
const CONTEXT_SIZE = 112
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Imports `console_write`, `rumpk_halt` from HAL (Zig L0)
|
||||
- Imports `cpu_switch_to` from arch-specific assembly
|
||||
- Uses `mm:arc` memory management (no GC)
|
||||
|
||||
## Build
|
||||
|
||||
Built via `../build.sh [aarch64|x86_64|riscv64]`
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Rumpk HAL (L0)
|
||||
|
||||
**Language:** Zig + Assembly
|
||||
**Purpose:** Hardware Abstraction Layer
|
||||
|
||||
## Module Index
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `main.zig` | Entry point (`_start`), stack setup, calls Nim `kmain` |
|
||||
| `stubs.zig` | Freestanding libc (memcpy, malloc, printf, etc.) |
|
||||
| `uart.zig` | PL011 UART driver (QEMU virt) |
|
||||
| `abi.zig` | C ABI structs shared with Nim |
|
||||
|
||||
## Architecture Directory (`arch/`)
|
||||
|
||||
Contains per-architecture implementations:
|
||||
|
||||
```
|
||||
arch/
|
||||
├── aarch64/ # ARM64 (VisionFive 2, RPi, AWS Graviton)
|
||||
│ ├── switch.S # Context switch (96 bytes)
|
||||
│ └── constants.nim
|
||||
├── x86_64/ # System V ABI (servers, trading)
|
||||
│ ├── switch.S # Context switch (56 bytes)
|
||||
│ └── constants.nim
|
||||
└── riscv64/ # RISC-V LP64 (satellites, drones)
|
||||
├── switch.S # Context switch (112 bytes)
|
||||
└── constants.nim
|
||||
```
|
||||
|
||||
## Freestanding Doctrine
|
||||
|
||||
This HAL provides ALL C ABI symbols. No glibc, no musl.
|
||||
|
||||
**Exported Symbols:**
|
||||
- Memory: `memcpy`, `memset`, `memmove`, `memcmp`
|
||||
- Strings: `strlen`, `strcmp`, `strcpy`
|
||||
- Heap: `malloc`, `free`, `realloc`, `calloc`
|
||||
- I/O: `printf`, `puts`, `putchar`
|
||||
- Exit: `exit`, `abort`
|
||||
- Signals: `signal`, `raise` (no-op stubs)
|
||||
|
||||
## Build
|
||||
|
||||
Compiled via `zig build-obj -target <arch>-freestanding-none`
|
||||
Loading…
Reference in New Issue