# 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 -freestanding-none`