vmbase
For VMs running under crosvm on aarch64, the vmbase library provides a linker script and useful defaults for the build rules, along with an entry point, UART console logging and more.
#![no_main] #![no_std] use vmbase::{main, println}; main!(main); pub fn main(arg0: u64, arg1: u64, arg2: u64, arg3: u64) { println!("Hello world"); }
main!
というマクロはメイン関数を指定するもので、指定された関数はvmbase
のエントリポイントから呼び出されることになります。vmbase
のエントリポイントはコンソールの初期化を行い、メイン関数がリターンした場合にはPSCI_SYSTEM_OFF を発行しVMをシャットダウンします。