mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-25 23:24:03 +00:00
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>
68 lines
1.5 KiB
Text
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*)
|
|
}
|
|
}
|