11// Apple Silicon example.
22// Adapted from https://github.com/zhuowei/FakeHVF/blob/main/simplevm.c
33
4- use std:: ptr;
5-
6- use hv:: arm64:: { Reg , VcpuExt } ;
4+ #![ allow( dead_code) ]
75
86static CODE : & [ u8 ] = & [
97 // Compute ((2 + 2) - 1)
@@ -27,10 +25,14 @@ const GUEST_ADDR: usize = 0x69420000;
2725const RESULT_OFFSET : usize = 0x100 ;
2826const GUEST_RESULT_ADDR : usize = GUEST_ADDR + RESULT_OFFSET ;
2927
28+ #[ cfg( target_arch = "aarch64" ) ]
29+ use hv:: arm64:: { Reg , VcpuExt } ;
30+
31+ #[ cfg( target_arch = "aarch64" ) ]
3032fn main ( ) -> Result < ( ) , hv:: Error > {
3133 let load_addr = unsafe {
3234 libc:: mmap (
33- ptr:: null_mut ( ) ,
35+ std :: ptr:: null_mut ( ) ,
3436 MEM_SIZE ,
3537 libc:: PROT_READ | libc:: PROT_WRITE ,
3638 libc:: MAP_ANONYMOUS | libc:: MAP_PRIVATE | libc:: MAP_NORESERVE ,
@@ -44,11 +46,11 @@ fn main() -> Result<(), hv::Error> {
4446 }
4547
4648 unsafe {
47- ptr:: copy_nonoverlapping ( CODE . as_ptr ( ) , load_addr, CODE . len ( ) ) ;
49+ std :: ptr:: copy_nonoverlapping ( CODE . as_ptr ( ) , load_addr, CODE . len ( ) ) ;
4850 }
4951
5052 // Init VM
51- hv:: Vm :: create_vm ( ptr:: null_mut ( ) ) . expect ( "Failed to create VM" ) ;
53+ hv:: Vm :: create_vm ( std :: ptr:: null_mut ( ) ) . expect ( "Failed to create VM" ) ;
5254
5355 // Initialize guest memory
5456 hv:: Vm :: map (
@@ -62,7 +64,7 @@ fn main() -> Result<(), hv::Error> {
6264 // Create VCPU
6365 let cpu = hv:: Vm :: create_cpu ( ) . expect ( "Failed to create CPU" ) ;
6466
65- // Register regs
67+ // Set regs
6668 cpu. set_reg ( Reg :: PC , GUEST_ADDR as _ )
6769 . expect ( "Failed to set PC reg" ) ;
6870
@@ -90,3 +92,6 @@ fn main() -> Result<(), hv::Error> {
9092
9193 Ok ( ( ) )
9294}
95+
96+ #[ cfg( target_arch = "x86_64" ) ]
97+ fn main ( ) { }
0 commit comments