rumpk/hal/README.md

47 lines
1.3 KiB
Markdown

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