simple bare-metal armv8 (aarch64) hypervisor for learning purposes.
- vm, vcpu arch
- stage 2 address translation
- hypervisor interrupts, gicv3
- timer (el2, el1), uart
- qemu-system-aarch64
- arm toolchain: aarch64-linux-gnu
- gdb-multiarch
> make
--------------------------
                            _                
                           (_)               
   __ _ _ __ _ __ _____   ___ ___  ___  _ __ 
  / _` | '__| '_ ` _ \ \ / / / __|/ _ \| '__|
 | (_| | |  | | | | | \ V /| \__ \ (_) | |   
  \__,_|_|  |_| |_| |_|\_/ |_|___/\___/|_|   
                                             
                                             
~~ armvisor started ~~
application: 
Exception level: 0000000000000008
--------------------------
> HYP:Init Success
> HYP:TIMER2 init
> HYP:UART init
> HYP:VM regiter start
> HYP:VM id: 0000000000000001
> HYP:VM start addr: 0000000060000000
> HYP:Interrupts enabled
--------------------------
> IRQ: 000000000000001A
> IRQ: Cleared
--------------------------
hello vm 1
for debugging
> make debug
$ gdb target remote localhost:1234
- [] hypervisor: loader should be changed
- [] hypervisor: virtual interrupt routing
- [] debugging: dump guest memory