ruvector/crates/rvm/rvm.ld
Reuven a929fde654 feat(rvm): RVM — Coherence-Native Microhypervisor for the Agentic Age
Complete implementation of the RVM microhypervisor:

13 Rust crates (all #![no_std], #![forbid(unsafe_code)]):
- rvm-types: Foundation types (64-byte WitnessRecord, ~40 ActionKind variants)
- rvm-hal: AArch64 EL2 HAL (stage-2 page tables, PL011 UART, GICv2, timer)
- rvm-cap: Capability system (P1/P2 proof verification, derivation trees)
- rvm-witness: Witness logging (FNV-1a hash chain, ring buffer, replay)
- rvm-proof: Proof engine (3-tier, constant-time P2 evaluation)
- rvm-partition: Partition model (lifecycle, split/merge, IPC, device leases)
- rvm-sched: Scheduler (2-signal priority, SMP coordinator, switch hot path)
- rvm-memory: Memory tiers (buddy allocator, 4-tier, RLE compression)
- rvm-coherence: Coherence engine (Stoer-Wagner mincut, adaptive frequency)
- rvm-boot: Bare-metal boot (7-phase measured, EL2 entry, linker script)
- rvm-wasm: Agent runtime (7-state lifecycle, migration, quotas)
- rvm-security: Security gate (validation, attestation, DMA budget)
- rvm-kernel: Integration kernel (boot/tick/create/destroy)

602 tests, 0 failures, 0 clippy warnings.
21 criterion benchmarks (all ADR targets exceeded).
9 ADRs (132-140), 15 design constraints (DC-1 through DC-15).
11 security findings addressed.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-04-04 12:10:19 -04:00

68 lines
1.5 KiB
Text

/*
* RVM linker script for QEMU virt AArch64.
*
* QEMU -M virt loads the kernel at 0x4000_0000 (the start of RAM).
* The layout places the boot entry point first (.text.boot), followed
* by general code, read-only data, writable data, and BSS.
*
* Symbols exported:
* _start - entry point (in .text.boot)
* __bss_start - start of BSS section
* __bss_end - end of BSS section
* __stack_top - initial stack pointer (64KB stack)
* __page_tables - start of page table region (4KB aligned)
*/
ENTRY(_start)
MEMORY {
RAM (rwx) : ORIGIN = 0x40000000, LENGTH = 128M
}
SECTIONS {
/* Boot entry point must be at the load address. */
.text.boot 0x40000000 : {
KEEP(*(.text.boot))
} > RAM
.text : ALIGN(4) {
*(.text .text.*)
} > RAM
.rodata : ALIGN(8) {
*(.rodata .rodata.*)
} > RAM
.data : ALIGN(8) {
*(.data .data.*)
} > RAM
.bss (NOLOAD) : ALIGN(16) {
__bss_start = .;
*(.bss .bss.*)
*(COMMON)
__bss_end = .;
} > RAM
/* 64KB hypervisor stack, growing downward. */
. = ALIGN(4096);
__stack_bottom = .;
. = . + 0x10000;
__stack_top = .;
/* Page table region: 4KB-aligned, room for L1 + 4 L2 tables. */
. = ALIGN(4096);
__page_tables = .;
. = . + (5 * 4096);
/* Heap region (optional, for future use). */
. = ALIGN(4096);
__heap_start = .;
/* Discard debug sections for release builds. */
/DISCARD/ : {
*(.comment)
*(.note.*)
*(.eh_frame*)
}
}