#ifndef HV_ARCH_H #define HV_ARCH_H #include "hv/types.h" struct trap_frame; struct vcpu; extern char __bss_start[]; extern char __bss_end[]; extern char __image_start[]; extern char __image_end[]; extern char __vectors_el2[]; extern char __guest_image_start[]; extern char __guest_image_end[]; uint64_t arch_current_el(void); uint64_t arch_mpidr_el1(void); uint64_t arch_cntpct_el0(void); uint64_t arch_cntfrq_el0(void); uint64_t arch_vectors_base(void); bool arch_vectors_aligned(void); uint64_t arch_irq_save(void); void arch_irq_restore(uint64_t flags); void arch_context_barrier(void); void arch_dump_el2_state(void); void arch_el2_configure(uint64_t vttbr, uint64_t vtcr); void arch_enable_el2_mmu(uint64_t ttbr0, uint64_t tcr, uint64_t mair); void arch_install_vectors(void); void arch_prepare_guest_entry(struct vcpu *vcpu); void arch_capture_el1_sysregs(struct vcpu *vcpu); void arch_sync_el1_sysregs(const struct vcpu *vcpu); void arch_vcpu_enter(struct vcpu *vcpu); void arch_halt(void) __attribute__((noreturn)); void arch_inject_guest_undef(struct vcpu *vcpu); void arch_advance_guest_pc(struct vcpu *vcpu); void arch_tlbi_vmalle1is(void); void hv_main(uint64_t boot_dtb_pa); #endif