#ifndef HV_MMIO_POLICY_H #define HV_MMIO_POLICY_H #include "hv/types.h" struct vcpu; enum mmio_policy_action { MMIO_POLICY_DENY = 0, MMIO_POLICY_EMULATE_ZERO, MMIO_POLICY_EMULATE_PL011, MMIO_POLICY_EMULATE_VIRTIO_MMIO, MMIO_POLICY_EMULATE_READONLY_DEVICE, MMIO_POLICY_ALLOW_STAGE2, }; struct mmio_policy_region { ipa_t base; uint64_t size; const char *name; enum mmio_policy_action action; uint32_t provenance; }; const struct mmio_policy_region *mmio_policy_lookup(ipa_t ipa); bool mmio_policy_emulate(struct vcpu *vcpu, ipa_t ipa, uint64_t esr_el2); void mmio_policy_dump(void); #endif