CHECKPOINT 7: Nuke LwIP, Fix Stack 🎯 PRIMARY ACHIEVEMENTS: - ✅ Interactive Mksh shell successfully boots and accepts input - ✅ Kernel-side LwIP networking disabled (moved to userland intent) - ✅ C-ABI handover fully operational (argc, argv, environ) - ✅ SPEC-130: Sovereign Filesystem Hierarchy formalized 🔧 KERNEL FIXES: 1. **Nuked Kernel LwIP** - Disabled membrane_init() in kernel.nim - Prevented automatic DHCP/IP acquisition - Network stack deferred to userland control 2. **Fixed C-ABI Stack Handover** - Updated rumpk_enter_userland signature: (entry, argc, argv, sp) - Kernel prepares userland stack at 0x8FFFFFE0 (top of user RAM) - Stack layout: [argc][argv[0]][argv[1]=NULL][envp[0]=NULL][string data] - Preserved kernel-passed arguments through subject_entry.S 3. **Fixed Trap Return Stack Switching** - Added sscratch swap before sret in entry_riscv.zig - Properly restores user stack and preserves kernel stack pointer - Fixes post-syscall instruction page fault 4. **Rebuilt Mksh with Fixed Runtime** - subject_entry.S no longer zeros a0/a1 - Arguments flow: Kernel -> switch.S -> subject_entry.S -> main() 📐 ARCHITECTURAL SPECS: - **SPEC-130: Sovereign Filesystem Hierarchy** - Tri-State (+1) Storage Model: /sysro, /etc, /run, /state - Declarative Stateless Doctrine (inspired by Clear Linux/Silverblue) - Ghost Writer Pattern: KDL recipes -> /etc generation - Bind-Mount Strategy for legacy app grafting - Database Contract for /state (transactional, encrypted) 🛠️ DEVELOPER EXPERIENCE: - Fixed filesystem.nim to fallback to .nexus/ for local builds - Prevents permission errors during development 🧪 VERIFICATION: Syscalls confirmed working: write (0x200, 0x204), read (0x203) NEXT: Implement proper TTY/PTY subsystem for full job control Co-authored-by: Voxis Forge <voxis@nexus-os.org> |
||
|---|---|---|
| .. | ||
| arch | ||
| crypto | ||
| README.md | ||
| abi.zig | ||
| channel.zig | ||
| crypto.zig | ||
| entry_riscv.zig | ||
| fb_wrapper.zig | ||
| framebuffer.zig | ||
| gpu.zig | ||
| hud.zig | ||
| main.zig | ||
| matrix.zig | ||
| mm.zig | ||
| ram_blk.zig | ||
| stubs.zig | ||
| stubs_user.zig | ||
| surface.zig | ||
| uart.zig | ||
| ui.zig | ||
| virtio_block.zig | ||
| virtio_net.zig | ||
| virtio_pci.zig | ||
README.md
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