#![doc = include_str!("../README.md")]
#![cfg_attr(feature = "simd-nightly", feature(portable_simd), feature(simd_ffi))]
#![allow(non_camel_case_types)]
#![allow(improper_ctypes)]
use core::ffi::c_void;
#[cfg_attr(target_os = "macos", link(name = "Hypervisor", kind = "framework"))]
unsafe extern "C" {}
pub const PAGE_SIZE: usize = 0x4000;
pub type hv_return_t = i32;
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_error_t {
HV_SUCCESS = 0,
HV_ERROR = 0xfae94001,
HV_BUSY = 0xfae94002,
HV_BAD_ARGUMENT = 0xfae94003,
HV_ILLEGAL_GUEST_STATE = 0xfae94004,
HV_NO_RESOURCES = 0xfae94005,
HV_NO_DEVICE = 0xfae94006,
HV_DENIED = 0xfae94007,
HV_FAULT = 0xfae94008,
HV_UNSUPPORTED = 0xfae9400f,
}
unsafe extern "C" {
pub fn os_release(object: *mut c_void);
}
#[cfg(feature = "macos-26-0")]
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_ipa_granule_t {
HV_IPA_GRANULE_4KB,
HV_IPA_GRANULE_16KB,
}
pub type hv_vm_config_t = *mut c_void;
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_allocate_flags_t {
HV_ALLOCATE_DEFAULT = 0,
}
unsafe extern "C" {
pub fn hv_vm_config_create() -> hv_vm_config_t;
pub fn hv_vm_create(config: hv_vm_config_t) -> hv_return_t;
pub fn hv_vm_destroy() -> hv_return_t;
#[cfg(feature = "macos-12-1")]
pub fn hv_vm_allocate(
uvap: *mut *mut c_void,
size: libc::size_t,
flags: hv_allocate_flags_t,
) -> hv_return_t;
#[cfg(feature = "macos-12-1")]
pub fn hv_vm_deallocate(uvap: *const c_void, size: libc::size_t) -> hv_return_t;
#[cfg(feature = "macos-13-0")]
pub fn hv_vm_config_get_max_ipa_size(ipa_bit_length: *mut u32) -> hv_return_t;
#[cfg(feature = "macos-13-0")]
pub fn hv_vm_config_get_default_ipa_size(ipa_bit_length: *mut u32) -> hv_return_t;
#[cfg(feature = "macos-13-0")]
pub fn hv_vm_config_set_ipa_size(config: hv_vm_config_t, ipa_bit_length: u32) -> hv_return_t;
#[cfg(feature = "macos-13-0")]
pub fn hv_vm_config_get_ipa_size(
config: hv_vm_config_t,
ipa_bit_length: *mut u32,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_vm_config_get_el2_supported(el2_supported: *mut bool) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_vm_config_get_el2_enabled(
config: hv_vm_config_t,
el2_enabled: *mut bool,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_vm_config_set_el2_enabled(config: hv_vm_config_t, el2_enabled: bool) -> hv_return_t;
#[cfg(feature = "macos-26-0")]
pub fn hv_vm_config_get_default_ipa_granule(granule: *mut hv_ipa_granule_t) -> hv_return_t;
#[cfg(feature = "macos-26-0")]
pub fn hv_vm_config_get_ipa_granule(
config: hv_vm_config_t,
granule: *mut hv_ipa_granule_t,
) -> hv_return_t;
#[cfg(feature = "macos-26-0")]
pub fn hv_vm_config_set_ipa_granule(
config: hv_vm_config_t,
granule: hv_ipa_granule_t,
) -> hv_return_t;
}
pub type hv_vcpu_config_t = *mut c_void;
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_feature_reg_t {
ID_AA64DFR0_EL1,
ID_AA64DFR1_EL1,
ID_AA64ISAR0_EL1,
ID_AA64ISAR1_EL1,
ID_AA64MMFR0_EL1,
ID_AA64MMFR1_EL1,
ID_AA64MMFR2_EL1,
ID_AA64PFR0_EL1,
ID_AA64PFR1_EL1,
CTR_EL0,
CLIDR_EL1,
DCZID_EL0,
#[cfg(feature = "macos-15-2")]
ID_AA64SMFR0_EL1,
#[cfg(feature = "macos-15-2")]
ID_AA64ZFR0_EL1,
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_cache_type_t {
DATA,
INSTRUCTION,
}
unsafe extern "C" {
pub fn hv_vcpu_config_create() -> hv_vcpu_config_t;
pub fn hv_vcpu_config_get_feature_reg(
config: hv_vcpu_config_t,
feature_reg: hv_feature_reg_t,
value: *mut u64,
) -> hv_return_t;
pub fn hv_vcpu_config_get_ccsidr_el1_sys_reg_values(
config: hv_vcpu_config_t,
cache_type: hv_cache_type_t,
values: *mut u64,
) -> hv_return_t;
}
pub type hv_vcpu_t = u64;
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct hv_vcpu_exit_exception_t {
pub syndrome: u64,
pub virtual_address: u64,
pub physical_address: u64,
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_exit_reason_t {
CANCELED,
EXCEPTION,
VTIMER_ACTIVATED,
UNKNOWN,
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct hv_vcpu_exit_t {
pub reason: hv_exit_reason_t,
pub exception: hv_vcpu_exit_exception_t,
}
unsafe extern "C" {
pub fn hv_vm_get_max_vcpu_count(max_vcpu_count: *mut u32) -> hv_return_t;
pub fn hv_vcpu_create(
vcpu: *mut hv_vcpu_t,
exit: *mut *const hv_vcpu_exit_t,
config: hv_vcpu_config_t,
) -> hv_return_t;
pub fn hv_vcpu_destroy(vcpu: hv_vcpu_t) -> hv_return_t;
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_interrupt_type_t {
FIQ,
IRQ,
}
unsafe extern "C" {
pub fn hv_vcpu_run(vcpu: hv_vcpu_t) -> hv_return_t;
pub fn hv_vcpus_exit(vcpus: *const hv_vcpu_t, vcpu_count: u32) -> hv_return_t;
pub fn hv_vcpu_get_pending_interrupt(
vcpu: hv_vcpu_t,
_type: hv_interrupt_type_t,
pending: *mut bool,
) -> hv_return_t;
pub fn hv_vcpu_set_pending_interrupt(
vcpu: hv_vcpu_t,
_type: hv_interrupt_type_t,
pending: bool,
) -> hv_return_t;
pub fn hv_vcpu_get_exec_time(vcpu: hv_vcpu_t, time: *mut u64) -> hv_return_t;
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_reg_t {
X0,
X1,
X2,
X3,
X4,
X5,
X6,
X7,
X8,
X9,
X10,
X11,
X12,
X13,
X14,
X15,
X16,
X17,
X18,
X19,
X20,
X21,
X22,
X23,
X24,
X25,
X26,
X27,
X28,
X29,
X30,
PC,
FPCR,
FPSR,
CPSR,
}
impl hv_reg_t {
pub const FP: Self = Self::X29;
pub const LR: Self = Self::X30;
}
unsafe extern "C" {
pub fn hv_vcpu_get_reg(vcpu: hv_vcpu_t, reg: hv_reg_t, value: *mut u64) -> hv_return_t;
pub fn hv_vcpu_set_reg(vcpu: hv_vcpu_t, reg: hv_reg_t, value: u64) -> hv_return_t;
}
#[cfg(feature = "simd-nightly")]
pub type hv_simd_fp_uchar16_t = std::simd::u8x16;
#[cfg(not(feature = "simd-nightly"))]
pub type hv_simd_fp_uchar16_t = u128;
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_simd_fp_reg_t {
Q0,
Q1,
Q2,
Q3,
Q4,
Q5,
Q6,
Q7,
Q8,
Q9,
Q10,
Q11,
Q12,
Q13,
Q14,
Q15,
Q16,
Q17,
Q18,
Q19,
Q20,
Q21,
Q22,
Q23,
Q24,
Q25,
Q26,
Q27,
Q28,
Q29,
Q30,
Q31,
}
unsafe extern "C" {
pub fn hv_vcpu_get_simd_fp_reg(
vcpu: hv_vcpu_t,
reg: hv_simd_fp_reg_t,
value: *mut hv_simd_fp_uchar16_t,
) -> hv_return_t;
pub fn hv_vcpu_set_simd_fp_reg(
vcpu: hv_vcpu_t,
reg: hv_simd_fp_reg_t,
value: hv_simd_fp_uchar16_t,
) -> hv_return_t;
}
#[cfg(feature = "macos-15-2")]
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct hv_vcpu_sme_state_t {
pub streaming_sve_mode_enabled: bool,
pub za_storage_enabled: bool,
}
#[cfg(feature = "macos-15-2")]
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_sme_z_reg_t {
Z0,
Z1,
Z2,
Z3,
Z4,
Z5,
Z6,
Z7,
Z8,
Z9,
Z10,
Z11,
Z12,
Z13,
Z14,
Z15,
Z16,
Z17,
Z18,
Z19,
Z20,
Z21,
Z22,
Z23,
Z24,
Z25,
Z26,
Z27,
Z28,
Z29,
Z30,
Z31,
}
#[cfg(feature = "macos-15-2")]
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_sme_p_reg_t {
P0,
P1,
P2,
P3,
P4,
P5,
P6,
P7,
P8,
P9,
P10,
P11,
P12,
P13,
P14,
P15,
}
#[cfg(all(feature = "macos-15-2", not(feature = "simd-nightly")))]
pub type hv_sme_zt0_uchar64_t = [u8; 64];
#[cfg(all(feature = "macos-15-2", feature = "simd-nightly"))]
pub type hv_sme_zt0_uchar64_t = std::simd::u8x64;
unsafe extern "C" {
#[cfg(feature = "macos-15-2")]
pub fn hv_sme_config_get_max_svl_bytes(value: *mut libc::size_t) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_get_sme_state(
vcpu: hv_vcpu_t,
sme_state: *mut hv_vcpu_sme_state_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_set_sme_state(
vcpu: hv_vcpu_t,
sme_state: *const hv_vcpu_sme_state_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_get_sme_z_reg(
vcpu: hv_vcpu_t,
reg: hv_sme_z_reg_t,
value: *mut u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_set_sme_z_reg(
vcpu: hv_vcpu_t,
reg: hv_sme_z_reg_t,
value: *const u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_get_sme_p_reg(
vcpu: hv_vcpu_t,
reg: hv_sme_p_reg_t,
value: *mut u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_set_sme_p_reg(
vcpu: hv_vcpu_t,
reg: hv_sme_p_reg_t,
value: *const u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_get_sme_za_reg(
vcpu: hv_vcpu_t,
value: *mut u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_set_sme_za_reg(
vcpu: hv_vcpu_t,
value: *const u8,
length: libc::size_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_get_sme_zt0_reg(vcpu: hv_vcpu_t, value: *mut u8) -> hv_return_t;
#[cfg(feature = "macos-15-2")]
pub fn hv_vcpu_set_sme_zt0_reg(vcpu: hv_vcpu_t, value: *const u8) -> hv_return_t;
}
#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_sys_reg_t {
DBGBVR0_EL1 = 0x8004,
DBGBCR0_EL1 = 0x8005,
DBGWVR0_EL1 = 0x8006,
DBGWCR0_EL1 = 0x8007,
DBGBVR1_EL1 = 0x800c,
DBGBCR1_EL1 = 0x800d,
DBGWVR1_EL1 = 0x800e,
DBGWCR1_EL1 = 0x800f,
MDCCINT_EL1 = 0x8010,
MDSCR_EL1 = 0x8012,
DBGBVR2_EL1 = 0x8014,
DBGBCR2_EL1 = 0x8015,
DBGWVR2_EL1 = 0x8016,
DBGWCR2_EL1 = 0x8017,
DBGBVR3_EL1 = 0x801c,
DBGBCR3_EL1 = 0x801d,
DBGWVR3_EL1 = 0x801e,
DBGWCR3_EL1 = 0x801f,
DBGBVR4_EL1 = 0x8024,
DBGBCR4_EL1 = 0x8025,
DBGWVR4_EL1 = 0x8026,
DBGWCR4_EL1 = 0x8027,
DBGBVR5_EL1 = 0x802c,
DBGBCR5_EL1 = 0x802d,
DBGWVR5_EL1 = 0x802e,
DBGWCR5_EL1 = 0x802f,
DBGBVR6_EL1 = 0x8034,
DBGBCR6_EL1 = 0x8035,
DBGWVR6_EL1 = 0x8036,
DBGWCR6_EL1 = 0x8037,
DBGBVR7_EL1 = 0x803c,
DBGBCR7_EL1 = 0x803d,
DBGWVR7_EL1 = 0x803e,
DBGWCR7_EL1 = 0x803f,
DBGBVR8_EL1 = 0x8044,
DBGBCR8_EL1 = 0x8045,
DBGWVR8_EL1 = 0x8046,
DBGWCR8_EL1 = 0x8047,
DBGBVR9_EL1 = 0x804c,
DBGBCR9_EL1 = 0x804d,
DBGWVR9_EL1 = 0x804e,
DBGWCR9_EL1 = 0x804f,
DBGBVR10_EL1 = 0x8054,
DBGBCR10_EL1 = 0x8055,
DBGWVR10_EL1 = 0x8056,
DBGWCR10_EL1 = 0x8057,
DBGBVR11_EL1 = 0x805c,
DBGBCR11_EL1 = 0x805d,
DBGWVR11_EL1 = 0x805e,
DBGWCR11_EL1 = 0x805f,
DBGBVR12_EL1 = 0x8064,
DBGBCR12_EL1 = 0x8065,
DBGWVR12_EL1 = 0x8066,
DBGWCR12_EL1 = 0x8067,
DBGBVR13_EL1 = 0x806c,
DBGBCR13_EL1 = 0x806d,
DBGWVR13_EL1 = 0x806e,
DBGWCR13_EL1 = 0x806f,
DBGBVR14_EL1 = 0x8074,
DBGBCR14_EL1 = 0x8075,
DBGWVR14_EL1 = 0x8076,
DBGWCR14_EL1 = 0x8077,
DBGBVR15_EL1 = 0x807c,
DBGBCR15_EL1 = 0x807d,
DBGWVR15_EL1 = 0x807e,
DBGWCR15_EL1 = 0x807f,
MIDR_EL1 = 0xc000,
MPIDR_EL1 = 0xc005,
ID_AA64PFR0_EL1 = 0xc020,
ID_AA64PFR1_EL1 = 0xc021,
#[cfg(feature = "macos-15-2")]
ID_AA64ZFR0_EL1 = 0xc024,
#[cfg(feature = "macos-15-2")]
ID_AA64SMFR0_EL1 = 0xc025,
ID_AA64DFR0_EL1 = 0xc028,
ID_AA64DFR1_EL1 = 0xc029,
ID_AA64ISAR0_EL1 = 0xc030,
ID_AA64ISAR1_EL1 = 0xc031,
ID_AA64MMFR0_EL1 = 0xc038,
ID_AA64MMFR1_EL1 = 0xc039,
ID_AA64MMFR2_EL1 = 0xc03a,
SCTLR_EL1 = 0xc080,
CPACR_EL1 = 0xc082,
#[cfg(feature = "macos-15-0")]
ACTLR_EL1 = 0xc081,
#[cfg(feature = "macos-15-2")]
SMPRI_EL1 = 0xc094,
#[cfg(feature = "macos-15-2")]
SMCR_EL1 = 0xc096,
TTBR0_EL1 = 0xc100,
TTBR1_EL1 = 0xc101,
TCR_EL1 = 0xc102,
APIAKEYLO_EL1 = 0xc108,
APIAKEYHI_EL1 = 0xc109,
APIBKEYLO_EL1 = 0xc10a,
APIBKEYHI_EL1 = 0xc10b,
APDAKEYLO_EL1 = 0xc110,
APDAKEYHI_EL1 = 0xc111,
APDBKEYLO_EL1 = 0xc112,
APDBKEYHI_EL1 = 0xc113,
APGAKEYLO_EL1 = 0xc118,
APGAKEYHI_EL1 = 0xc119,
SPSR_EL1 = 0xc200,
ELR_EL1 = 0xc201,
SP_EL0 = 0xc208,
AFSR0_EL1 = 0xc288,
AFSR1_EL1 = 0xc289,
ESR_EL1 = 0xc290,
FAR_EL1 = 0xc300,
PAR_EL1 = 0xc3a0,
MAIR_EL1 = 0xc510,
AMAIR_EL1 = 0xc518,
VBAR_EL1 = 0xc600,
CONTEXTIDR_EL1 = 0xc681,
TPIDR_EL1 = 0xc684,
#[cfg(feature = "macos-15-2")]
SCXTNUM_EL1 = 0xc687,
CNTKCTL_EL1 = 0xc708,
CSSELR_EL1 = 0xd000,
TPIDR_EL0 = 0xde82,
TPIDRRO_EL0 = 0xde83,
#[cfg(feature = "macos-15-2")]
TPIDR2_EL0 = 0xde85,
#[cfg(feature = "macos-15-2")]
SCXTNUM_EL0 = 0xde87,
CNTV_CTL_EL0 = 0xdf19,
CNTV_CVAL_EL0 = 0xdf1a,
SP_EL1 = 0xe208,
#[cfg(feature = "macos-15-0")]
CNTP_CTL_EL0 = 0xdf11,
#[cfg(feature = "macos-15-0")]
CNTP_CVAL_EL0 = 0xdf12,
#[cfg(feature = "macos-15-0")]
CNTP_TVAL_EL0 = 0xdf10,
#[cfg(feature = "macos-15-0")]
CNTHCTL_EL2 = 0xe708,
#[cfg(feature = "macos-15-0")]
CNTHP_CTL_EL2 = 0xe711,
#[cfg(feature = "macos-15-0")]
CNTHP_CVAL_EL2 = 0xe712,
#[cfg(feature = "macos-15-0")]
CNTHP_TVAL_EL2 = 0xe710,
#[cfg(feature = "macos-15-0")]
CNTVOFF_EL2 = 0xe703,
#[cfg(feature = "macos-15-0")]
CPTR_EL2 = 0xe08a,
#[cfg(feature = "macos-15-0")]
ELR_EL2 = 0xe201,
#[cfg(feature = "macos-15-0")]
ESR_EL2 = 0xe290,
#[cfg(feature = "macos-15-0")]
FAR_EL2 = 0xe300,
#[cfg(feature = "macos-15-0")]
HCR_EL2 = 0xe088,
#[cfg(feature = "macos-15-0")]
HPFAR_EL2 = 0xe304,
#[cfg(feature = "macos-15-0")]
MAIR_EL2 = 0xe510,
#[cfg(feature = "macos-15-0")]
MDCR_EL2 = 0xe019,
#[cfg(feature = "macos-15-0")]
SCTLR_EL2 = 0xe080,
#[cfg(feature = "macos-15-0")]
SPSR_EL2 = 0xe200,
#[cfg(feature = "macos-15-0")]
SP_EL2 = 0xf208,
#[cfg(feature = "macos-15-0")]
TCR_EL2 = 0xe102,
#[cfg(feature = "macos-15-0")]
TPIDR_EL2 = 0xe682,
#[cfg(feature = "macos-15-0")]
TTBR0_EL2 = 0xe100,
#[cfg(feature = "macos-15-0")]
TTBR1_EL2 = 0xe101,
#[cfg(feature = "macos-15-0")]
VBAR_EL2 = 0xe600,
#[cfg(feature = "macos-15-0")]
VMPIDR_EL2 = 0xe005,
#[cfg(feature = "macos-15-0")]
VPIDR_EL2 = 0xe000,
#[cfg(feature = "macos-15-0")]
VTCR_EL2 = 0xe10a,
#[cfg(feature = "macos-15-0")]
VTTBR_EL2 = 0xe108,
}
unsafe extern "C" {
pub fn hv_vcpu_get_sys_reg(vcpu: hv_vcpu_t, reg: hv_sys_reg_t, value: *mut u64) -> hv_return_t;
pub fn hv_vcpu_set_sys_reg(vcpu: hv_vcpu_t, reg: hv_sys_reg_t, value: u64) -> hv_return_t;
}
unsafe extern "C" {
pub fn hv_vcpu_get_trap_debug_exceptions(vcpu: hv_vcpu_t, value: *mut bool) -> hv_return_t;
pub fn hv_vcpu_set_trap_debug_exceptions(vcpu: hv_vcpu_t, value: bool) -> hv_return_t;
pub fn hv_vcpu_get_trap_debug_reg_accesses(vcpu: hv_vcpu_t, value: *mut bool) -> hv_return_t;
pub fn hv_vcpu_set_trap_debug_reg_accesses(vcpu: hv_vcpu_t, value: bool) -> hv_return_t;
}
pub type hv_ipa_t = u64;
pub type hv_memory_flags_t = u64;
pub const HV_MEMORY_NONE: hv_memory_flags_t = 0u64;
pub const HV_MEMORY_READ: hv_memory_flags_t = 1u64 << 0;
pub const HV_MEMORY_WRITE: hv_memory_flags_t = 1u64 << 1;
pub const HV_MEMORY_EXEC: hv_memory_flags_t = 1u64 << 2;
unsafe extern "C" {
pub fn hv_vm_map(
addr: *const c_void,
ipa: hv_ipa_t,
size: usize,
flags: hv_memory_flags_t,
) -> hv_return_t;
pub fn hv_vm_unmap(ipa: hv_ipa_t, size: usize) -> hv_return_t;
pub fn hv_vm_protect(ipa: hv_ipa_t, size: usize, flags: hv_memory_flags_t) -> hv_return_t;
}
unsafe extern "C" {
pub fn hv_vcpu_get_vtimer_mask(vcpu: hv_vcpu_t, vtimer_is_masked: *mut bool) -> hv_return_t;
pub fn hv_vcpu_set_vtimer_mask(vcpu: hv_vcpu_t, vtimer_is_masked: bool) -> hv_return_t;
pub fn hv_vcpu_get_vtimer_offset(vcpu: hv_vcpu_t, vtimer_offset: *mut u64) -> hv_return_t;
pub fn hv_vcpu_set_vtimer_offset(vcpu: hv_vcpu_t, vtimer_offset: u64) -> hv_return_t;
}
pub type hv_gic_config_t = *mut c_void;
pub type hv_gic_state_t = *mut c_void;
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_intid_t {
PERFORMANCE_MONITOR = 23,
MAINTENANCE = 25,
EL2_PHYSICAL_TIMER = 26,
EL1_VIRTUAL_TIMER = 27,
EL1_PHYSICAL_TIMER = 30,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_distributor_reg_t {
CTLR = 0x0000,
TYPER = 0x0004,
IGROUPR0 = 0x0080,
IGROUPR1 = 0x0084,
IGROUPR2 = 0x0088,
IGROUPR3 = 0x008c,
IGROUPR4 = 0x0090,
IGROUPR5 = 0x0094,
IGROUPR6 = 0x0098,
IGROUPR7 = 0x009c,
IGROUPR8 = 0x00a0,
IGROUPR9 = 0x00a4,
IGROUPR10 = 0x00a8,
IGROUPR11 = 0x00ac,
IGROUPR12 = 0x00b0,
IGROUPR13 = 0x00b4,
IGROUPR14 = 0x00b8,
IGROUPR15 = 0x00bc,
IGROUPR16 = 0x00c0,
IGROUPR17 = 0x00c4,
IGROUPR18 = 0x00c8,
IGROUPR19 = 0x00cc,
IGROUPR20 = 0x00d0,
IGROUPR21 = 0x00d4,
IGROUPR22 = 0x00d8,
IGROUPR23 = 0x00dc,
IGROUPR24 = 0x00e0,
IGROUPR25 = 0x00e4,
IGROUPR26 = 0x00e8,
IGROUPR27 = 0x00ec,
IGROUPR28 = 0x00f0,
IGROUPR29 = 0x00f4,
IGROUPR30 = 0x00f8,
IGROUPR31 = 0x00fc,
ISENABLER0 = 0x0100,
ISENABLER1 = 0x0104,
ISENABLER2 = 0x0108,
ISENABLER3 = 0x010c,
ISENABLER4 = 0x0110,
ISENABLER5 = 0x0114,
ISENABLER6 = 0x0118,
ISENABLER7 = 0x011c,
ISENABLER8 = 0x0120,
ISENABLER9 = 0x0124,
ISENABLER10 = 0x0128,
ISENABLER11 = 0x012c,
ISENABLER12 = 0x0130,
ISENABLER13 = 0x0134,
ISENABLER14 = 0x0138,
ISENABLER15 = 0x013c,
ISENABLER16 = 0x0140,
ISENABLER17 = 0x0144,
ISENABLER18 = 0x0148,
ISENABLER19 = 0x014c,
ISENABLER20 = 0x0150,
ISENABLER21 = 0x0154,
ISENABLER22 = 0x0158,
ISENABLER23 = 0x015c,
ISENABLER24 = 0x0160,
ISENABLER25 = 0x0164,
ISENABLER26 = 0x0168,
ISENABLER27 = 0x016c,
ISENABLER28 = 0x0170,
ISENABLER29 = 0x0174,
ISENABLER30 = 0x0178,
ISENABLER31 = 0x017c,
ICENABLER0 = 0x0180,
ICENABLER1 = 0x0184,
ICENABLER2 = 0x0188,
ICENABLER3 = 0x018c,
ICENABLER4 = 0x0190,
ICENABLER5 = 0x0194,
ICENABLER6 = 0x0198,
ICENABLER7 = 0x019c,
ICENABLER8 = 0x01a0,
ICENABLER9 = 0x01a4,
ICENABLER10 = 0x01a8,
ICENABLER11 = 0x01ac,
ICENABLER12 = 0x01b0,
ICENABLER13 = 0x01b4,
ICENABLER14 = 0x01b8,
ICENABLER15 = 0x01bc,
ICENABLER16 = 0x01c0,
ICENABLER17 = 0x01c4,
ICENABLER18 = 0x01c8,
ICENABLER19 = 0x01cc,
ICENABLER20 = 0x01d0,
ICENABLER21 = 0x01d4,
ICENABLER22 = 0x01d8,
ICENABLER23 = 0x01dc,
ICENABLER24 = 0x01e0,
ICENABLER25 = 0x01e4,
ICENABLER26 = 0x01e8,
ICENABLER27 = 0x01ec,
ICENABLER28 = 0x01f0,
ICENABLER29 = 0x01f4,
ICENABLER30 = 0x01f8,
ICENABLER31 = 0x01fc,
ISPENDR0 = 0x0200,
ISPENDR1 = 0x0204,
ISPENDR2 = 0x0208,
ISPENDR3 = 0x020c,
ISPENDR4 = 0x0210,
ISPENDR5 = 0x0214,
ISPENDR6 = 0x0218,
ISPENDR7 = 0x021c,
ISPENDR8 = 0x0220,
ISPENDR9 = 0x0224,
ISPENDR10 = 0x0228,
ISPENDR11 = 0x022c,
ISPENDR12 = 0x0230,
ISPENDR13 = 0x0234,
ISPENDR14 = 0x0238,
ISPENDR15 = 0x023c,
ISPENDR16 = 0x0240,
ISPENDR17 = 0x0244,
ISPENDR18 = 0x0248,
ISPENDR19 = 0x024c,
ISPENDR20 = 0x0250,
ISPENDR21 = 0x0254,
ISPENDR22 = 0x0258,
ISPENDR23 = 0x025c,
ISPENDR24 = 0x0260,
ISPENDR25 = 0x0264,
ISPENDR26 = 0x0268,
ISPENDR27 = 0x026c,
ISPENDR28 = 0x0270,
ISPENDR29 = 0x0274,
ISPENDR30 = 0x0278,
ISPENDR31 = 0x027c,
ICPENDR0 = 0x0280,
ICPENDR1 = 0x0284,
ICPENDR2 = 0x0288,
ICPENDR3 = 0x028c,
ICPENDR4 = 0x0290,
ICPENDR5 = 0x0294,
ICPENDR6 = 0x0298,
ICPENDR7 = 0x029c,
ICPENDR8 = 0x02a0,
ICPENDR9 = 0x02a4,
ICPENDR10 = 0x02a8,
ICPENDR11 = 0x02ac,
ICPENDR12 = 0x02b0,
ICPENDR13 = 0x02b4,
ICPENDR14 = 0x02b8,
ICPENDR15 = 0x02bc,
ICPENDR16 = 0x02c0,
ICPENDR17 = 0x02c4,
ICPENDR18 = 0x02c8,
ICPENDR19 = 0x02cc,
ICPENDR20 = 0x02d0,
ICPENDR21 = 0x02d4,
ICPENDR22 = 0x02d8,
ICPENDR23 = 0x02dc,
ICPENDR24 = 0x02e0,
ICPENDR25 = 0x02e4,
ICPENDR26 = 0x02e8,
ICPENDR27 = 0x02ec,
ICPENDR28 = 0x02f0,
ICPENDR29 = 0x02f4,
ICPENDR30 = 0x02f8,
ICPENDR31 = 0x02fc,
ISACTIVER0 = 0x0300,
ISACTIVER1 = 0x0304,
ISACTIVER2 = 0x0308,
ISACTIVER3 = 0x030c,
ISACTIVER4 = 0x0310,
ISACTIVER5 = 0x0314,
ISACTIVER6 = 0x0318,
ISACTIVER7 = 0x031c,
ISACTIVER8 = 0x0320,
ISACTIVER9 = 0x0324,
ISACTIVER10 = 0x0328,
ISACTIVER11 = 0x032c,
ISACTIVER12 = 0x0330,
ISACTIVER13 = 0x0334,
ISACTIVER14 = 0x0338,
ISACTIVER15 = 0x033c,
ISACTIVER16 = 0x0340,
ISACTIVER17 = 0x0344,
ISACTIVER18 = 0x0348,
ISACTIVER19 = 0x034c,
ISACTIVER20 = 0x0350,
ISACTIVER21 = 0x0354,
ISACTIVER22 = 0x0358,
ISACTIVER23 = 0x035c,
ISACTIVER24 = 0x0360,
ISACTIVER25 = 0x0364,
ISACTIVER26 = 0x0368,
ISACTIVER27 = 0x036c,
ISACTIVER28 = 0x0370,
ISACTIVER29 = 0x0374,
ISACTIVER30 = 0x0378,
ISACTIVER31 = 0x037c,
ICACTIVER0 = 0x0380,
ICACTIVER1 = 0x0384,
ICACTIVER2 = 0x0388,
ICACTIVER3 = 0x038c,
ICACTIVER4 = 0x0390,
ICACTIVER5 = 0x0394,
ICACTIVER6 = 0x0398,
ICACTIVER7 = 0x039c,
ICACTIVER8 = 0x03a0,
ICACTIVER9 = 0x03a4,
ICACTIVER10 = 0x03a8,
ICACTIVER11 = 0x03ac,
ICACTIVER12 = 0x03b0,
ICACTIVER13 = 0x03b4,
ICACTIVER14 = 0x03b8,
ICACTIVER15 = 0x03bc,
ICACTIVER16 = 0x03c0,
ICACTIVER17 = 0x03c4,
ICACTIVER18 = 0x03c8,
ICACTIVER19 = 0x03cc,
ICACTIVER20 = 0x03d0,
ICACTIVER21 = 0x03d4,
ICACTIVER22 = 0x03d8,
ICACTIVER23 = 0x03dc,
ICACTIVER24 = 0x03e0,
ICACTIVER25 = 0x03e4,
ICACTIVER26 = 0x03e8,
ICACTIVER27 = 0x03ec,
ICACTIVER28 = 0x03f0,
ICACTIVER29 = 0x03f4,
ICACTIVER30 = 0x03f8,
ICACTIVER31 = 0x03fc,
IPRIORITYR0 = 0x0400,
IPRIORITYR1 = 0x0404,
IPRIORITYR2 = 0x0408,
IPRIORITYR3 = 0x040c,
IPRIORITYR4 = 0x0410,
IPRIORITYR5 = 0x0414,
IPRIORITYR6 = 0x0418,
IPRIORITYR7 = 0x041c,
IPRIORITYR8 = 0x0420,
IPRIORITYR9 = 0x0424,
IPRIORITYR10 = 0x0428,
IPRIORITYR11 = 0x042c,
IPRIORITYR12 = 0x0430,
IPRIORITYR13 = 0x0434,
IPRIORITYR14 = 0x0438,
IPRIORITYR15 = 0x043c,
IPRIORITYR16 = 0x0440,
IPRIORITYR17 = 0x0444,
IPRIORITYR18 = 0x0448,
IPRIORITYR19 = 0x044c,
IPRIORITYR20 = 0x0450,
IPRIORITYR21 = 0x0454,
IPRIORITYR22 = 0x0458,
IPRIORITYR23 = 0x045c,
IPRIORITYR24 = 0x0460,
IPRIORITYR25 = 0x0464,
IPRIORITYR26 = 0x0468,
IPRIORITYR27 = 0x046c,
IPRIORITYR28 = 0x0470,
IPRIORITYR29 = 0x0474,
IPRIORITYR30 = 0x0478,
IPRIORITYR31 = 0x047c,
IPRIORITYR32 = 0x0480,
IPRIORITYR33 = 0x0484,
IPRIORITYR34 = 0x0488,
IPRIORITYR35 = 0x048c,
IPRIORITYR36 = 0x0490,
IPRIORITYR37 = 0x0494,
IPRIORITYR38 = 0x0498,
IPRIORITYR39 = 0x049c,
IPRIORITYR40 = 0x04a0,
IPRIORITYR41 = 0x04a4,
IPRIORITYR42 = 0x04a8,
IPRIORITYR43 = 0x04ac,
IPRIORITYR44 = 0x04b0,
IPRIORITYR45 = 0x04b4,
IPRIORITYR46 = 0x04b8,
IPRIORITYR47 = 0x04bc,
IPRIORITYR48 = 0x04c0,
IPRIORITYR49 = 0x04c4,
IPRIORITYR50 = 0x04c8,
IPRIORITYR51 = 0x04cc,
IPRIORITYR52 = 0x04d0,
IPRIORITYR53 = 0x04d4,
IPRIORITYR54 = 0x04d8,
IPRIORITYR55 = 0x04dc,
IPRIORITYR56 = 0x04e0,
IPRIORITYR57 = 0x04e4,
IPRIORITYR58 = 0x04e8,
IPRIORITYR59 = 0x04ec,
IPRIORITYR60 = 0x04f0,
IPRIORITYR61 = 0x04f4,
IPRIORITYR62 = 0x04f8,
IPRIORITYR63 = 0x04fc,
IPRIORITYR64 = 0x0500,
IPRIORITYR65 = 0x0504,
IPRIORITYR66 = 0x0508,
IPRIORITYR67 = 0x050c,
IPRIORITYR68 = 0x0510,
IPRIORITYR69 = 0x0514,
IPRIORITYR70 = 0x0518,
IPRIORITYR71 = 0x051c,
IPRIORITYR72 = 0x0520,
IPRIORITYR73 = 0x0524,
IPRIORITYR74 = 0x0528,
IPRIORITYR75 = 0x052c,
IPRIORITYR76 = 0x0530,
IPRIORITYR77 = 0x0534,
IPRIORITYR78 = 0x0538,
IPRIORITYR79 = 0x053c,
IPRIORITYR80 = 0x0540,
IPRIORITYR81 = 0x0544,
IPRIORITYR82 = 0x0548,
IPRIORITYR83 = 0x054c,
IPRIORITYR84 = 0x0550,
IPRIORITYR85 = 0x0554,
IPRIORITYR86 = 0x0558,
IPRIORITYR87 = 0x055c,
IPRIORITYR88 = 0x0560,
IPRIORITYR89 = 0x0564,
IPRIORITYR90 = 0x0568,
IPRIORITYR91 = 0x056c,
IPRIORITYR92 = 0x0570,
IPRIORITYR93 = 0x0574,
IPRIORITYR94 = 0x0578,
IPRIORITYR95 = 0x057c,
IPRIORITYR96 = 0x0580,
IPRIORITYR97 = 0x0584,
IPRIORITYR98 = 0x0588,
IPRIORITYR99 = 0x058c,
IPRIORITYR100 = 0x0590,
IPRIORITYR101 = 0x0594,
IPRIORITYR102 = 0x0598,
IPRIORITYR103 = 0x059c,
IPRIORITYR104 = 0x05a0,
IPRIORITYR105 = 0x05a4,
IPRIORITYR106 = 0x05a8,
IPRIORITYR107 = 0x05ac,
IPRIORITYR108 = 0x05b0,
IPRIORITYR109 = 0x05b4,
IPRIORITYR110 = 0x05b8,
IPRIORITYR111 = 0x05bc,
IPRIORITYR112 = 0x05c0,
IPRIORITYR113 = 0x05c4,
IPRIORITYR114 = 0x05c8,
IPRIORITYR115 = 0x05cc,
IPRIORITYR116 = 0x05d0,
IPRIORITYR117 = 0x05d4,
IPRIORITYR118 = 0x05d8,
IPRIORITYR119 = 0x05dc,
IPRIORITYR120 = 0x05e0,
IPRIORITYR121 = 0x05e4,
IPRIORITYR122 = 0x05e8,
IPRIORITYR123 = 0x05ec,
IPRIORITYR124 = 0x05f0,
IPRIORITYR125 = 0x05f4,
IPRIORITYR126 = 0x05f8,
IPRIORITYR127 = 0x05fc,
IPRIORITYR128 = 0x0600,
IPRIORITYR129 = 0x0604,
IPRIORITYR130 = 0x0608,
IPRIORITYR131 = 0x060c,
IPRIORITYR132 = 0x0610,
IPRIORITYR133 = 0x0614,
IPRIORITYR134 = 0x0618,
IPRIORITYR135 = 0x061c,
IPRIORITYR136 = 0x0620,
IPRIORITYR137 = 0x0624,
IPRIORITYR138 = 0x0628,
IPRIORITYR139 = 0x062c,
IPRIORITYR140 = 0x0630,
IPRIORITYR141 = 0x0634,
IPRIORITYR142 = 0x0638,
IPRIORITYR143 = 0x063c,
IPRIORITYR144 = 0x0640,
IPRIORITYR145 = 0x0644,
IPRIORITYR146 = 0x0648,
IPRIORITYR147 = 0x064c,
IPRIORITYR148 = 0x0650,
IPRIORITYR149 = 0x0654,
IPRIORITYR150 = 0x0658,
IPRIORITYR151 = 0x065c,
IPRIORITYR152 = 0x0660,
IPRIORITYR153 = 0x0664,
IPRIORITYR154 = 0x0668,
IPRIORITYR155 = 0x066c,
IPRIORITYR156 = 0x0670,
IPRIORITYR157 = 0x0674,
IPRIORITYR158 = 0x0678,
IPRIORITYR159 = 0x067c,
IPRIORITYR160 = 0x0680,
IPRIORITYR161 = 0x0684,
IPRIORITYR162 = 0x0688,
IPRIORITYR163 = 0x068c,
IPRIORITYR164 = 0x0690,
IPRIORITYR165 = 0x0694,
IPRIORITYR166 = 0x0698,
IPRIORITYR167 = 0x069c,
IPRIORITYR168 = 0x06a0,
IPRIORITYR169 = 0x06a4,
IPRIORITYR170 = 0x06a8,
IPRIORITYR171 = 0x06ac,
IPRIORITYR172 = 0x06b0,
IPRIORITYR173 = 0x06b4,
IPRIORITYR174 = 0x06b8,
IPRIORITYR175 = 0x06bc,
IPRIORITYR176 = 0x06c0,
IPRIORITYR177 = 0x06c4,
IPRIORITYR178 = 0x06c8,
IPRIORITYR179 = 0x06cc,
IPRIORITYR180 = 0x06d0,
IPRIORITYR181 = 0x06d4,
IPRIORITYR182 = 0x06d8,
IPRIORITYR183 = 0x06dc,
IPRIORITYR184 = 0x06e0,
IPRIORITYR185 = 0x06e4,
IPRIORITYR186 = 0x06e8,
IPRIORITYR187 = 0x06ec,
IPRIORITYR188 = 0x06f0,
IPRIORITYR189 = 0x06f4,
IPRIORITYR190 = 0x06f8,
IPRIORITYR191 = 0x06fc,
IPRIORITYR192 = 0x0700,
IPRIORITYR193 = 0x0704,
IPRIORITYR194 = 0x0708,
IPRIORITYR195 = 0x070c,
IPRIORITYR196 = 0x0710,
IPRIORITYR197 = 0x0714,
IPRIORITYR198 = 0x0718,
IPRIORITYR199 = 0x071c,
IPRIORITYR200 = 0x0720,
IPRIORITYR201 = 0x0724,
IPRIORITYR202 = 0x0728,
IPRIORITYR203 = 0x072c,
IPRIORITYR204 = 0x0730,
IPRIORITYR205 = 0x0734,
IPRIORITYR206 = 0x0738,
IPRIORITYR207 = 0x073c,
IPRIORITYR208 = 0x0740,
IPRIORITYR209 = 0x0744,
IPRIORITYR210 = 0x0748,
IPRIORITYR211 = 0x074c,
IPRIORITYR212 = 0x0750,
IPRIORITYR213 = 0x0754,
IPRIORITYR214 = 0x0758,
IPRIORITYR215 = 0x075c,
IPRIORITYR216 = 0x0760,
IPRIORITYR217 = 0x0764,
IPRIORITYR218 = 0x0768,
IPRIORITYR219 = 0x076c,
IPRIORITYR220 = 0x0770,
IPRIORITYR221 = 0x0774,
IPRIORITYR222 = 0x0778,
IPRIORITYR223 = 0x077c,
IPRIORITYR224 = 0x0780,
IPRIORITYR225 = 0x0784,
IPRIORITYR226 = 0x0788,
IPRIORITYR227 = 0x078c,
IPRIORITYR228 = 0x0790,
IPRIORITYR229 = 0x0794,
IPRIORITYR230 = 0x0798,
IPRIORITYR231 = 0x079c,
IPRIORITYR232 = 0x07a0,
IPRIORITYR233 = 0x07a4,
IPRIORITYR234 = 0x07a8,
IPRIORITYR235 = 0x07ac,
IPRIORITYR236 = 0x07b0,
IPRIORITYR237 = 0x07b4,
IPRIORITYR238 = 0x07b8,
IPRIORITYR239 = 0x07bc,
IPRIORITYR240 = 0x07c0,
IPRIORITYR241 = 0x07c4,
IPRIORITYR242 = 0x07c8,
IPRIORITYR243 = 0x07cc,
IPRIORITYR244 = 0x07d0,
IPRIORITYR245 = 0x07d4,
IPRIORITYR246 = 0x07d8,
IPRIORITYR247 = 0x07dc,
IPRIORITYR248 = 0x07e0,
IPRIORITYR249 = 0x07e4,
IPRIORITYR250 = 0x07e8,
IPRIORITYR251 = 0x07ec,
IPRIORITYR252 = 0x07f0,
IPRIORITYR253 = 0x07f4,
IPRIORITYR254 = 0x07f8,
ICFGR0 = 0x0c00,
ICFGR1 = 0x0c04,
ICFGR2 = 0x0c08,
ICFGR3 = 0x0c0c,
ICFGR4 = 0x0c10,
ICFGR5 = 0x0c14,
ICFGR6 = 0x0c18,
ICFGR7 = 0x0c1c,
ICFGR8 = 0x0c20,
ICFGR9 = 0x0c24,
ICFGR10 = 0x0c28,
ICFGR11 = 0x0c2c,
ICFGR12 = 0x0c30,
ICFGR13 = 0x0c34,
ICFGR14 = 0x0c38,
ICFGR15 = 0x0c3c,
ICFGR16 = 0x0c40,
ICFGR17 = 0x0c44,
ICFGR18 = 0x0c48,
ICFGR19 = 0x0c4c,
ICFGR20 = 0x0c50,
ICFGR21 = 0x0c54,
ICFGR22 = 0x0c58,
ICFGR23 = 0x0c5c,
ICFGR24 = 0x0c60,
ICFGR25 = 0x0c64,
ICFGR26 = 0x0c68,
ICFGR27 = 0x0c6c,
ICFGR28 = 0x0c70,
ICFGR29 = 0x0c74,
ICFGR30 = 0x0c78,
ICFGR31 = 0x0c7c,
ICFGR32 = 0x0c80,
ICFGR33 = 0x0c84,
ICFGR34 = 0x0c88,
ICFGR35 = 0x0c8c,
ICFGR36 = 0x0c90,
ICFGR37 = 0x0c94,
ICFGR38 = 0x0c98,
ICFGR39 = 0x0c9c,
ICFGR40 = 0x0ca0,
ICFGR41 = 0x0ca4,
ICFGR42 = 0x0ca8,
ICFGR43 = 0x0cac,
ICFGR44 = 0x0cb0,
ICFGR45 = 0x0cb4,
ICFGR46 = 0x0cb8,
ICFGR47 = 0x0cbc,
ICFGR48 = 0x0cc0,
ICFGR49 = 0x0cc4,
ICFGR50 = 0x0cc8,
ICFGR51 = 0x0ccc,
ICFGR52 = 0x0cd0,
ICFGR53 = 0x0cd4,
ICFGR54 = 0x0cd8,
ICFGR55 = 0x0cdc,
ICFGR56 = 0x0ce0,
ICFGR57 = 0x0ce4,
ICFGR58 = 0x0ce8,
ICFGR59 = 0x0cec,
ICFGR60 = 0x0cf0,
ICFGR61 = 0x0cf4,
ICFGR62 = 0x0cf8,
ICFGR63 = 0x0cfc,
IROUTER32 = 0x6100,
IROUTER33 = 0x6108,
IROUTER34 = 0x6110,
IROUTER35 = 0x6118,
IROUTER36 = 0x6120,
IROUTER37 = 0x6128,
IROUTER38 = 0x6130,
IROUTER39 = 0x6138,
IROUTER40 = 0x6140,
IROUTER41 = 0x6148,
IROUTER42 = 0x6150,
IROUTER43 = 0x6158,
IROUTER44 = 0x6160,
IROUTER45 = 0x6168,
IROUTER46 = 0x6170,
IROUTER47 = 0x6178,
IROUTER48 = 0x6180,
IROUTER49 = 0x6188,
IROUTER50 = 0x6190,
IROUTER51 = 0x6198,
IROUTER52 = 0x61a0,
IROUTER53 = 0x61a8,
IROUTER54 = 0x61b0,
IROUTER55 = 0x61b8,
IROUTER56 = 0x61c0,
IROUTER57 = 0x61c8,
IROUTER58 = 0x61d0,
IROUTER59 = 0x61d8,
IROUTER60 = 0x61e0,
IROUTER61 = 0x61e8,
IROUTER62 = 0x61f0,
IROUTER63 = 0x61f8,
IROUTER64 = 0x6200,
IROUTER65 = 0x6208,
IROUTER66 = 0x6210,
IROUTER67 = 0x6218,
IROUTER68 = 0x6220,
IROUTER69 = 0x6228,
IROUTER70 = 0x6230,
IROUTER71 = 0x6238,
IROUTER72 = 0x6240,
IROUTER73 = 0x6248,
IROUTER74 = 0x6250,
IROUTER75 = 0x6258,
IROUTER76 = 0x6260,
IROUTER77 = 0x6268,
IROUTER78 = 0x6270,
IROUTER79 = 0x6278,
IROUTER80 = 0x6280,
IROUTER81 = 0x6288,
IROUTER82 = 0x6290,
IROUTER83 = 0x6298,
IROUTER84 = 0x62a0,
IROUTER85 = 0x62a8,
IROUTER86 = 0x62b0,
IROUTER87 = 0x62b8,
IROUTER88 = 0x62c0,
IROUTER89 = 0x62c8,
IROUTER90 = 0x62d0,
IROUTER91 = 0x62d8,
IROUTER92 = 0x62e0,
IROUTER93 = 0x62e8,
IROUTER94 = 0x62f0,
IROUTER95 = 0x62f8,
IROUTER96 = 0x6300,
IROUTER97 = 0x6308,
IROUTER98 = 0x6310,
IROUTER99 = 0x6318,
IROUTER100 = 0x6320,
IROUTER101 = 0x6328,
IROUTER102 = 0x6330,
IROUTER103 = 0x6338,
IROUTER104 = 0x6340,
IROUTER105 = 0x6348,
IROUTER106 = 0x6350,
IROUTER107 = 0x6358,
IROUTER108 = 0x6360,
IROUTER109 = 0x6368,
IROUTER110 = 0x6370,
IROUTER111 = 0x6378,
IROUTER112 = 0x6380,
IROUTER113 = 0x6388,
IROUTER114 = 0x6390,
IROUTER115 = 0x6398,
IROUTER116 = 0x63a0,
IROUTER117 = 0x63a8,
IROUTER118 = 0x63b0,
IROUTER119 = 0x63b8,
IROUTER120 = 0x63c0,
IROUTER121 = 0x63c8,
IROUTER122 = 0x63d0,
IROUTER123 = 0x63d8,
IROUTER124 = 0x63e0,
IROUTER125 = 0x63e8,
IROUTER126 = 0x63f0,
IROUTER127 = 0x63f8,
IROUTER128 = 0x6400,
IROUTER129 = 0x6408,
IROUTER130 = 0x6410,
IROUTER131 = 0x6418,
IROUTER132 = 0x6420,
IROUTER133 = 0x6428,
IROUTER134 = 0x6430,
IROUTER135 = 0x6438,
IROUTER136 = 0x6440,
IROUTER137 = 0x6448,
IROUTER138 = 0x6450,
IROUTER139 = 0x6458,
IROUTER140 = 0x6460,
IROUTER141 = 0x6468,
IROUTER142 = 0x6470,
IROUTER143 = 0x6478,
IROUTER144 = 0x6480,
IROUTER145 = 0x6488,
IROUTER146 = 0x6490,
IROUTER147 = 0x6498,
IROUTER148 = 0x64a0,
IROUTER149 = 0x64a8,
IROUTER150 = 0x64b0,
IROUTER151 = 0x64b8,
IROUTER152 = 0x64c0,
IROUTER153 = 0x64c8,
IROUTER154 = 0x64d0,
IROUTER155 = 0x64d8,
IROUTER156 = 0x64e0,
IROUTER157 = 0x64e8,
IROUTER158 = 0x64f0,
IROUTER159 = 0x64f8,
IROUTER160 = 0x6500,
IROUTER161 = 0x6508,
IROUTER162 = 0x6510,
IROUTER163 = 0x6518,
IROUTER164 = 0x6520,
IROUTER165 = 0x6528,
IROUTER166 = 0x6530,
IROUTER167 = 0x6538,
IROUTER168 = 0x6540,
IROUTER169 = 0x6548,
IROUTER170 = 0x6550,
IROUTER171 = 0x6558,
IROUTER172 = 0x6560,
IROUTER173 = 0x6568,
IROUTER174 = 0x6570,
IROUTER175 = 0x6578,
IROUTER176 = 0x6580,
IROUTER177 = 0x6588,
IROUTER178 = 0x6590,
IROUTER179 = 0x6598,
IROUTER180 = 0x65a0,
IROUTER181 = 0x65a8,
IROUTER182 = 0x65b0,
IROUTER183 = 0x65b8,
IROUTER184 = 0x65c0,
IROUTER185 = 0x65c8,
IROUTER186 = 0x65d0,
IROUTER187 = 0x65d8,
IROUTER188 = 0x65e0,
IROUTER189 = 0x65e8,
IROUTER190 = 0x65f0,
IROUTER191 = 0x65f8,
IROUTER192 = 0x6600,
IROUTER193 = 0x6608,
IROUTER194 = 0x6610,
IROUTER195 = 0x6618,
IROUTER196 = 0x6620,
IROUTER197 = 0x6628,
IROUTER198 = 0x6630,
IROUTER199 = 0x6638,
IROUTER200 = 0x6640,
IROUTER201 = 0x6648,
IROUTER202 = 0x6650,
IROUTER203 = 0x6658,
IROUTER204 = 0x6660,
IROUTER205 = 0x6668,
IROUTER206 = 0x6670,
IROUTER207 = 0x6678,
IROUTER208 = 0x6680,
IROUTER209 = 0x6688,
IROUTER210 = 0x6690,
IROUTER211 = 0x6698,
IROUTER212 = 0x66a0,
IROUTER213 = 0x66a8,
IROUTER214 = 0x66b0,
IROUTER215 = 0x66b8,
IROUTER216 = 0x66c0,
IROUTER217 = 0x66c8,
IROUTER218 = 0x66d0,
IROUTER219 = 0x66d8,
IROUTER220 = 0x66e0,
IROUTER221 = 0x66e8,
IROUTER222 = 0x66f0,
IROUTER223 = 0x66f8,
IROUTER224 = 0x6700,
IROUTER225 = 0x6708,
IROUTER226 = 0x6710,
IROUTER227 = 0x6718,
IROUTER228 = 0x6720,
IROUTER229 = 0x6728,
IROUTER230 = 0x6730,
IROUTER231 = 0x6738,
IROUTER232 = 0x6740,
IROUTER233 = 0x6748,
IROUTER234 = 0x6750,
IROUTER235 = 0x6758,
IROUTER236 = 0x6760,
IROUTER237 = 0x6768,
IROUTER238 = 0x6770,
IROUTER239 = 0x6778,
IROUTER240 = 0x6780,
IROUTER241 = 0x6788,
IROUTER242 = 0x6790,
IROUTER243 = 0x6798,
IROUTER244 = 0x67a0,
IROUTER245 = 0x67a8,
IROUTER246 = 0x67b0,
IROUTER247 = 0x67b8,
IROUTER248 = 0x67c0,
IROUTER249 = 0x67c8,
IROUTER250 = 0x67d0,
IROUTER251 = 0x67d8,
IROUTER252 = 0x67e0,
IROUTER253 = 0x67e8,
IROUTER254 = 0x67f0,
IROUTER255 = 0x67f8,
IROUTER256 = 0x6800,
IROUTER257 = 0x6808,
IROUTER258 = 0x6810,
IROUTER259 = 0x6818,
IROUTER260 = 0x6820,
IROUTER261 = 0x6828,
IROUTER262 = 0x6830,
IROUTER263 = 0x6838,
IROUTER264 = 0x6840,
IROUTER265 = 0x6848,
IROUTER266 = 0x6850,
IROUTER267 = 0x6858,
IROUTER268 = 0x6860,
IROUTER269 = 0x6868,
IROUTER270 = 0x6870,
IROUTER271 = 0x6878,
IROUTER272 = 0x6880,
IROUTER273 = 0x6888,
IROUTER274 = 0x6890,
IROUTER275 = 0x6898,
IROUTER276 = 0x68a0,
IROUTER277 = 0x68a8,
IROUTER278 = 0x68b0,
IROUTER279 = 0x68b8,
IROUTER280 = 0x68c0,
IROUTER281 = 0x68c8,
IROUTER282 = 0x68d0,
IROUTER283 = 0x68d8,
IROUTER284 = 0x68e0,
IROUTER285 = 0x68e8,
IROUTER286 = 0x68f0,
IROUTER287 = 0x68f8,
IROUTER288 = 0x6900,
IROUTER289 = 0x6908,
IROUTER290 = 0x6910,
IROUTER291 = 0x6918,
IROUTER292 = 0x6920,
IROUTER293 = 0x6928,
IROUTER294 = 0x6930,
IROUTER295 = 0x6938,
IROUTER296 = 0x6940,
IROUTER297 = 0x6948,
IROUTER298 = 0x6950,
IROUTER299 = 0x6958,
IROUTER300 = 0x6960,
IROUTER301 = 0x6968,
IROUTER302 = 0x6970,
IROUTER303 = 0x6978,
IROUTER304 = 0x6980,
IROUTER305 = 0x6988,
IROUTER306 = 0x6990,
IROUTER307 = 0x6998,
IROUTER308 = 0x69a0,
IROUTER309 = 0x69a8,
IROUTER310 = 0x69b0,
IROUTER311 = 0x69b8,
IROUTER312 = 0x69c0,
IROUTER313 = 0x69c8,
IROUTER314 = 0x69d0,
IROUTER315 = 0x69d8,
IROUTER316 = 0x69e0,
IROUTER317 = 0x69e8,
IROUTER318 = 0x69f0,
IROUTER319 = 0x69f8,
IROUTER320 = 0x6a00,
IROUTER321 = 0x6a08,
IROUTER322 = 0x6a10,
IROUTER323 = 0x6a18,
IROUTER324 = 0x6a20,
IROUTER325 = 0x6a28,
IROUTER326 = 0x6a30,
IROUTER327 = 0x6a38,
IROUTER328 = 0x6a40,
IROUTER329 = 0x6a48,
IROUTER330 = 0x6a50,
IROUTER331 = 0x6a58,
IROUTER332 = 0x6a60,
IROUTER333 = 0x6a68,
IROUTER334 = 0x6a70,
IROUTER335 = 0x6a78,
IROUTER336 = 0x6a80,
IROUTER337 = 0x6a88,
IROUTER338 = 0x6a90,
IROUTER339 = 0x6a98,
IROUTER340 = 0x6aa0,
IROUTER341 = 0x6aa8,
IROUTER342 = 0x6ab0,
IROUTER343 = 0x6ab8,
IROUTER344 = 0x6ac0,
IROUTER345 = 0x6ac8,
IROUTER346 = 0x6ad0,
IROUTER347 = 0x6ad8,
IROUTER348 = 0x6ae0,
IROUTER349 = 0x6ae8,
IROUTER350 = 0x6af0,
IROUTER351 = 0x6af8,
IROUTER352 = 0x6b00,
IROUTER353 = 0x6b08,
IROUTER354 = 0x6b10,
IROUTER355 = 0x6b18,
IROUTER356 = 0x6b20,
IROUTER357 = 0x6b28,
IROUTER358 = 0x6b30,
IROUTER359 = 0x6b38,
IROUTER360 = 0x6b40,
IROUTER361 = 0x6b48,
IROUTER362 = 0x6b50,
IROUTER363 = 0x6b58,
IROUTER364 = 0x6b60,
IROUTER365 = 0x6b68,
IROUTER366 = 0x6b70,
IROUTER367 = 0x6b78,
IROUTER368 = 0x6b80,
IROUTER369 = 0x6b88,
IROUTER370 = 0x6b90,
IROUTER371 = 0x6b98,
IROUTER372 = 0x6ba0,
IROUTER373 = 0x6ba8,
IROUTER374 = 0x6bb0,
IROUTER375 = 0x6bb8,
IROUTER376 = 0x6bc0,
IROUTER377 = 0x6bc8,
IROUTER378 = 0x6bd0,
IROUTER379 = 0x6bd8,
IROUTER380 = 0x6be0,
IROUTER381 = 0x6be8,
IROUTER382 = 0x6bf0,
IROUTER383 = 0x6bf8,
IROUTER384 = 0x6c00,
IROUTER385 = 0x6c08,
IROUTER386 = 0x6c10,
IROUTER387 = 0x6c18,
IROUTER388 = 0x6c20,
IROUTER389 = 0x6c28,
IROUTER390 = 0x6c30,
IROUTER391 = 0x6c38,
IROUTER392 = 0x6c40,
IROUTER393 = 0x6c48,
IROUTER394 = 0x6c50,
IROUTER395 = 0x6c58,
IROUTER396 = 0x6c60,
IROUTER397 = 0x6c68,
IROUTER398 = 0x6c70,
IROUTER399 = 0x6c78,
IROUTER400 = 0x6c80,
IROUTER401 = 0x6c88,
IROUTER402 = 0x6c90,
IROUTER403 = 0x6c98,
IROUTER404 = 0x6ca0,
IROUTER405 = 0x6ca8,
IROUTER406 = 0x6cb0,
IROUTER407 = 0x6cb8,
IROUTER408 = 0x6cc0,
IROUTER409 = 0x6cc8,
IROUTER410 = 0x6cd0,
IROUTER411 = 0x6cd8,
IROUTER412 = 0x6ce0,
IROUTER413 = 0x6ce8,
IROUTER414 = 0x6cf0,
IROUTER415 = 0x6cf8,
IROUTER416 = 0x6d00,
IROUTER417 = 0x6d08,
IROUTER418 = 0x6d10,
IROUTER419 = 0x6d18,
IROUTER420 = 0x6d20,
IROUTER421 = 0x6d28,
IROUTER422 = 0x6d30,
IROUTER423 = 0x6d38,
IROUTER424 = 0x6d40,
IROUTER425 = 0x6d48,
IROUTER426 = 0x6d50,
IROUTER427 = 0x6d58,
IROUTER428 = 0x6d60,
IROUTER429 = 0x6d68,
IROUTER430 = 0x6d70,
IROUTER431 = 0x6d78,
IROUTER432 = 0x6d80,
IROUTER433 = 0x6d88,
IROUTER434 = 0x6d90,
IROUTER435 = 0x6d98,
IROUTER436 = 0x6da0,
IROUTER437 = 0x6da8,
IROUTER438 = 0x6db0,
IROUTER439 = 0x6db8,
IROUTER440 = 0x6dc0,
IROUTER441 = 0x6dc8,
IROUTER442 = 0x6dd0,
IROUTER443 = 0x6dd8,
IROUTER444 = 0x6de0,
IROUTER445 = 0x6de8,
IROUTER446 = 0x6df0,
IROUTER447 = 0x6df8,
IROUTER448 = 0x6e00,
IROUTER449 = 0x6e08,
IROUTER450 = 0x6e10,
IROUTER451 = 0x6e18,
IROUTER452 = 0x6e20,
IROUTER453 = 0x6e28,
IROUTER454 = 0x6e30,
IROUTER455 = 0x6e38,
IROUTER456 = 0x6e40,
IROUTER457 = 0x6e48,
IROUTER458 = 0x6e50,
IROUTER459 = 0x6e58,
IROUTER460 = 0x6e60,
IROUTER461 = 0x6e68,
IROUTER462 = 0x6e70,
IROUTER463 = 0x6e78,
IROUTER464 = 0x6e80,
IROUTER465 = 0x6e88,
IROUTER466 = 0x6e90,
IROUTER467 = 0x6e98,
IROUTER468 = 0x6ea0,
IROUTER469 = 0x6ea8,
IROUTER470 = 0x6eb0,
IROUTER471 = 0x6eb8,
IROUTER472 = 0x6ec0,
IROUTER473 = 0x6ec8,
IROUTER474 = 0x6ed0,
IROUTER475 = 0x6ed8,
IROUTER476 = 0x6ee0,
IROUTER477 = 0x6ee8,
IROUTER478 = 0x6ef0,
IROUTER479 = 0x6ef8,
IROUTER480 = 0x6f00,
IROUTER481 = 0x6f08,
IROUTER482 = 0x6f10,
IROUTER483 = 0x6f18,
IROUTER484 = 0x6f20,
IROUTER485 = 0x6f28,
IROUTER486 = 0x6f30,
IROUTER487 = 0x6f38,
IROUTER488 = 0x6f40,
IROUTER489 = 0x6f48,
IROUTER490 = 0x6f50,
IROUTER491 = 0x6f58,
IROUTER492 = 0x6f60,
IROUTER493 = 0x6f68,
IROUTER494 = 0x6f70,
IROUTER495 = 0x6f78,
IROUTER496 = 0x6f80,
IROUTER497 = 0x6f88,
IROUTER498 = 0x6f90,
IROUTER499 = 0x6f98,
IROUTER500 = 0x6fa0,
IROUTER501 = 0x6fa8,
IROUTER502 = 0x6fb0,
IROUTER503 = 0x6fb8,
IROUTER504 = 0x6fc0,
IROUTER505 = 0x6fc8,
IROUTER506 = 0x6fd0,
IROUTER507 = 0x6fd8,
IROUTER508 = 0x6fe0,
IROUTER509 = 0x6fe8,
IROUTER510 = 0x6ff0,
IROUTER511 = 0x6ff8,
IROUTER512 = 0x7000,
IROUTER513 = 0x7008,
IROUTER514 = 0x7010,
IROUTER515 = 0x7018,
IROUTER516 = 0x7020,
IROUTER517 = 0x7028,
IROUTER518 = 0x7030,
IROUTER519 = 0x7038,
IROUTER520 = 0x7040,
IROUTER521 = 0x7048,
IROUTER522 = 0x7050,
IROUTER523 = 0x7058,
IROUTER524 = 0x7060,
IROUTER525 = 0x7068,
IROUTER526 = 0x7070,
IROUTER527 = 0x7078,
IROUTER528 = 0x7080,
IROUTER529 = 0x7088,
IROUTER530 = 0x7090,
IROUTER531 = 0x7098,
IROUTER532 = 0x70a0,
IROUTER533 = 0x70a8,
IROUTER534 = 0x70b0,
IROUTER535 = 0x70b8,
IROUTER536 = 0x70c0,
IROUTER537 = 0x70c8,
IROUTER538 = 0x70d0,
IROUTER539 = 0x70d8,
IROUTER540 = 0x70e0,
IROUTER541 = 0x70e8,
IROUTER542 = 0x70f0,
IROUTER543 = 0x70f8,
IROUTER544 = 0x7100,
IROUTER545 = 0x7108,
IROUTER546 = 0x7110,
IROUTER547 = 0x7118,
IROUTER548 = 0x7120,
IROUTER549 = 0x7128,
IROUTER550 = 0x7130,
IROUTER551 = 0x7138,
IROUTER552 = 0x7140,
IROUTER553 = 0x7148,
IROUTER554 = 0x7150,
IROUTER555 = 0x7158,
IROUTER556 = 0x7160,
IROUTER557 = 0x7168,
IROUTER558 = 0x7170,
IROUTER559 = 0x7178,
IROUTER560 = 0x7180,
IROUTER561 = 0x7188,
IROUTER562 = 0x7190,
IROUTER563 = 0x7198,
IROUTER564 = 0x71a0,
IROUTER565 = 0x71a8,
IROUTER566 = 0x71b0,
IROUTER567 = 0x71b8,
IROUTER568 = 0x71c0,
IROUTER569 = 0x71c8,
IROUTER570 = 0x71d0,
IROUTER571 = 0x71d8,
IROUTER572 = 0x71e0,
IROUTER573 = 0x71e8,
IROUTER574 = 0x71f0,
IROUTER575 = 0x71f8,
IROUTER576 = 0x7200,
IROUTER577 = 0x7208,
IROUTER578 = 0x7210,
IROUTER579 = 0x7218,
IROUTER580 = 0x7220,
IROUTER581 = 0x7228,
IROUTER582 = 0x7230,
IROUTER583 = 0x7238,
IROUTER584 = 0x7240,
IROUTER585 = 0x7248,
IROUTER586 = 0x7250,
IROUTER587 = 0x7258,
IROUTER588 = 0x7260,
IROUTER589 = 0x7268,
IROUTER590 = 0x7270,
IROUTER591 = 0x7278,
IROUTER592 = 0x7280,
IROUTER593 = 0x7288,
IROUTER594 = 0x7290,
IROUTER595 = 0x7298,
IROUTER596 = 0x72a0,
IROUTER597 = 0x72a8,
IROUTER598 = 0x72b0,
IROUTER599 = 0x72b8,
IROUTER600 = 0x72c0,
IROUTER601 = 0x72c8,
IROUTER602 = 0x72d0,
IROUTER603 = 0x72d8,
IROUTER604 = 0x72e0,
IROUTER605 = 0x72e8,
IROUTER606 = 0x72f0,
IROUTER607 = 0x72f8,
IROUTER608 = 0x7300,
IROUTER609 = 0x7308,
IROUTER610 = 0x7310,
IROUTER611 = 0x7318,
IROUTER612 = 0x7320,
IROUTER613 = 0x7328,
IROUTER614 = 0x7330,
IROUTER615 = 0x7338,
IROUTER616 = 0x7340,
IROUTER617 = 0x7348,
IROUTER618 = 0x7350,
IROUTER619 = 0x7358,
IROUTER620 = 0x7360,
IROUTER621 = 0x7368,
IROUTER622 = 0x7370,
IROUTER623 = 0x7378,
IROUTER624 = 0x7380,
IROUTER625 = 0x7388,
IROUTER626 = 0x7390,
IROUTER627 = 0x7398,
IROUTER628 = 0x73a0,
IROUTER629 = 0x73a8,
IROUTER630 = 0x73b0,
IROUTER631 = 0x73b8,
IROUTER632 = 0x73c0,
IROUTER633 = 0x73c8,
IROUTER634 = 0x73d0,
IROUTER635 = 0x73d8,
IROUTER636 = 0x73e0,
IROUTER637 = 0x73e8,
IROUTER638 = 0x73f0,
IROUTER639 = 0x73f8,
IROUTER640 = 0x7400,
IROUTER641 = 0x7408,
IROUTER642 = 0x7410,
IROUTER643 = 0x7418,
IROUTER644 = 0x7420,
IROUTER645 = 0x7428,
IROUTER646 = 0x7430,
IROUTER647 = 0x7438,
IROUTER648 = 0x7440,
IROUTER649 = 0x7448,
IROUTER650 = 0x7450,
IROUTER651 = 0x7458,
IROUTER652 = 0x7460,
IROUTER653 = 0x7468,
IROUTER654 = 0x7470,
IROUTER655 = 0x7478,
IROUTER656 = 0x7480,
IROUTER657 = 0x7488,
IROUTER658 = 0x7490,
IROUTER659 = 0x7498,
IROUTER660 = 0x74a0,
IROUTER661 = 0x74a8,
IROUTER662 = 0x74b0,
IROUTER663 = 0x74b8,
IROUTER664 = 0x74c0,
IROUTER665 = 0x74c8,
IROUTER666 = 0x74d0,
IROUTER667 = 0x74d8,
IROUTER668 = 0x74e0,
IROUTER669 = 0x74e8,
IROUTER670 = 0x74f0,
IROUTER671 = 0x74f8,
IROUTER672 = 0x7500,
IROUTER673 = 0x7508,
IROUTER674 = 0x7510,
IROUTER675 = 0x7518,
IROUTER676 = 0x7520,
IROUTER677 = 0x7528,
IROUTER678 = 0x7530,
IROUTER679 = 0x7538,
IROUTER680 = 0x7540,
IROUTER681 = 0x7548,
IROUTER682 = 0x7550,
IROUTER683 = 0x7558,
IROUTER684 = 0x7560,
IROUTER685 = 0x7568,
IROUTER686 = 0x7570,
IROUTER687 = 0x7578,
IROUTER688 = 0x7580,
IROUTER689 = 0x7588,
IROUTER690 = 0x7590,
IROUTER691 = 0x7598,
IROUTER692 = 0x75a0,
IROUTER693 = 0x75a8,
IROUTER694 = 0x75b0,
IROUTER695 = 0x75b8,
IROUTER696 = 0x75c0,
IROUTER697 = 0x75c8,
IROUTER698 = 0x75d0,
IROUTER699 = 0x75d8,
IROUTER700 = 0x75e0,
IROUTER701 = 0x75e8,
IROUTER702 = 0x75f0,
IROUTER703 = 0x75f8,
IROUTER704 = 0x7600,
IROUTER705 = 0x7608,
IROUTER706 = 0x7610,
IROUTER707 = 0x7618,
IROUTER708 = 0x7620,
IROUTER709 = 0x7628,
IROUTER710 = 0x7630,
IROUTER711 = 0x7638,
IROUTER712 = 0x7640,
IROUTER713 = 0x7648,
IROUTER714 = 0x7650,
IROUTER715 = 0x7658,
IROUTER716 = 0x7660,
IROUTER717 = 0x7668,
IROUTER718 = 0x7670,
IROUTER719 = 0x7678,
IROUTER720 = 0x7680,
IROUTER721 = 0x7688,
IROUTER722 = 0x7690,
IROUTER723 = 0x7698,
IROUTER724 = 0x76a0,
IROUTER725 = 0x76a8,
IROUTER726 = 0x76b0,
IROUTER727 = 0x76b8,
IROUTER728 = 0x76c0,
IROUTER729 = 0x76c8,
IROUTER730 = 0x76d0,
IROUTER731 = 0x76d8,
IROUTER732 = 0x76e0,
IROUTER733 = 0x76e8,
IROUTER734 = 0x76f0,
IROUTER735 = 0x76f8,
IROUTER736 = 0x7700,
IROUTER737 = 0x7708,
IROUTER738 = 0x7710,
IROUTER739 = 0x7718,
IROUTER740 = 0x7720,
IROUTER741 = 0x7728,
IROUTER742 = 0x7730,
IROUTER743 = 0x7738,
IROUTER744 = 0x7740,
IROUTER745 = 0x7748,
IROUTER746 = 0x7750,
IROUTER747 = 0x7758,
IROUTER748 = 0x7760,
IROUTER749 = 0x7768,
IROUTER750 = 0x7770,
IROUTER751 = 0x7778,
IROUTER752 = 0x7780,
IROUTER753 = 0x7788,
IROUTER754 = 0x7790,
IROUTER755 = 0x7798,
IROUTER756 = 0x77a0,
IROUTER757 = 0x77a8,
IROUTER758 = 0x77b0,
IROUTER759 = 0x77b8,
IROUTER760 = 0x77c0,
IROUTER761 = 0x77c8,
IROUTER762 = 0x77d0,
IROUTER763 = 0x77d8,
IROUTER764 = 0x77e0,
IROUTER765 = 0x77e8,
IROUTER766 = 0x77f0,
IROUTER767 = 0x77f8,
IROUTER768 = 0x7800,
IROUTER769 = 0x7808,
IROUTER770 = 0x7810,
IROUTER771 = 0x7818,
IROUTER772 = 0x7820,
IROUTER773 = 0x7828,
IROUTER774 = 0x7830,
IROUTER775 = 0x7838,
IROUTER776 = 0x7840,
IROUTER777 = 0x7848,
IROUTER778 = 0x7850,
IROUTER779 = 0x7858,
IROUTER780 = 0x7860,
IROUTER781 = 0x7868,
IROUTER782 = 0x7870,
IROUTER783 = 0x7878,
IROUTER784 = 0x7880,
IROUTER785 = 0x7888,
IROUTER786 = 0x7890,
IROUTER787 = 0x7898,
IROUTER788 = 0x78a0,
IROUTER789 = 0x78a8,
IROUTER790 = 0x78b0,
IROUTER791 = 0x78b8,
IROUTER792 = 0x78c0,
IROUTER793 = 0x78c8,
IROUTER794 = 0x78d0,
IROUTER795 = 0x78d8,
IROUTER796 = 0x78e0,
IROUTER797 = 0x78e8,
IROUTER798 = 0x78f0,
IROUTER799 = 0x78f8,
IROUTER800 = 0x7900,
IROUTER801 = 0x7908,
IROUTER802 = 0x7910,
IROUTER803 = 0x7918,
IROUTER804 = 0x7920,
IROUTER805 = 0x7928,
IROUTER806 = 0x7930,
IROUTER807 = 0x7938,
IROUTER808 = 0x7940,
IROUTER809 = 0x7948,
IROUTER810 = 0x7950,
IROUTER811 = 0x7958,
IROUTER812 = 0x7960,
IROUTER813 = 0x7968,
IROUTER814 = 0x7970,
IROUTER815 = 0x7978,
IROUTER816 = 0x7980,
IROUTER817 = 0x7988,
IROUTER818 = 0x7990,
IROUTER819 = 0x7998,
IROUTER820 = 0x79a0,
IROUTER821 = 0x79a8,
IROUTER822 = 0x79b0,
IROUTER823 = 0x79b8,
IROUTER824 = 0x79c0,
IROUTER825 = 0x79c8,
IROUTER826 = 0x79d0,
IROUTER827 = 0x79d8,
IROUTER828 = 0x79e0,
IROUTER829 = 0x79e8,
IROUTER830 = 0x79f0,
IROUTER831 = 0x79f8,
IROUTER832 = 0x7a00,
IROUTER833 = 0x7a08,
IROUTER834 = 0x7a10,
IROUTER835 = 0x7a18,
IROUTER836 = 0x7a20,
IROUTER837 = 0x7a28,
IROUTER838 = 0x7a30,
IROUTER839 = 0x7a38,
IROUTER840 = 0x7a40,
IROUTER841 = 0x7a48,
IROUTER842 = 0x7a50,
IROUTER843 = 0x7a58,
IROUTER844 = 0x7a60,
IROUTER845 = 0x7a68,
IROUTER846 = 0x7a70,
IROUTER847 = 0x7a78,
IROUTER848 = 0x7a80,
IROUTER849 = 0x7a88,
IROUTER850 = 0x7a90,
IROUTER851 = 0x7a98,
IROUTER852 = 0x7aa0,
IROUTER853 = 0x7aa8,
IROUTER854 = 0x7ab0,
IROUTER855 = 0x7ab8,
IROUTER856 = 0x7ac0,
IROUTER857 = 0x7ac8,
IROUTER858 = 0x7ad0,
IROUTER859 = 0x7ad8,
IROUTER860 = 0x7ae0,
IROUTER861 = 0x7ae8,
IROUTER862 = 0x7af0,
IROUTER863 = 0x7af8,
IROUTER864 = 0x7b00,
IROUTER865 = 0x7b08,
IROUTER866 = 0x7b10,
IROUTER867 = 0x7b18,
IROUTER868 = 0x7b20,
IROUTER869 = 0x7b28,
IROUTER870 = 0x7b30,
IROUTER871 = 0x7b38,
IROUTER872 = 0x7b40,
IROUTER873 = 0x7b48,
IROUTER874 = 0x7b50,
IROUTER875 = 0x7b58,
IROUTER876 = 0x7b60,
IROUTER877 = 0x7b68,
IROUTER878 = 0x7b70,
IROUTER879 = 0x7b78,
IROUTER880 = 0x7b80,
IROUTER881 = 0x7b88,
IROUTER882 = 0x7b90,
IROUTER883 = 0x7b98,
IROUTER884 = 0x7ba0,
IROUTER885 = 0x7ba8,
IROUTER886 = 0x7bb0,
IROUTER887 = 0x7bb8,
IROUTER888 = 0x7bc0,
IROUTER889 = 0x7bc8,
IROUTER890 = 0x7bd0,
IROUTER891 = 0x7bd8,
IROUTER892 = 0x7be0,
IROUTER893 = 0x7be8,
IROUTER894 = 0x7bf0,
IROUTER895 = 0x7bf8,
IROUTER896 = 0x7c00,
IROUTER897 = 0x7c08,
IROUTER898 = 0x7c10,
IROUTER899 = 0x7c18,
IROUTER900 = 0x7c20,
IROUTER901 = 0x7c28,
IROUTER902 = 0x7c30,
IROUTER903 = 0x7c38,
IROUTER904 = 0x7c40,
IROUTER905 = 0x7c48,
IROUTER906 = 0x7c50,
IROUTER907 = 0x7c58,
IROUTER908 = 0x7c60,
IROUTER909 = 0x7c68,
IROUTER910 = 0x7c70,
IROUTER911 = 0x7c78,
IROUTER912 = 0x7c80,
IROUTER913 = 0x7c88,
IROUTER914 = 0x7c90,
IROUTER915 = 0x7c98,
IROUTER916 = 0x7ca0,
IROUTER917 = 0x7ca8,
IROUTER918 = 0x7cb0,
IROUTER919 = 0x7cb8,
IROUTER920 = 0x7cc0,
IROUTER921 = 0x7cc8,
IROUTER922 = 0x7cd0,
IROUTER923 = 0x7cd8,
IROUTER924 = 0x7ce0,
IROUTER925 = 0x7ce8,
IROUTER926 = 0x7cf0,
IROUTER927 = 0x7cf8,
IROUTER928 = 0x7d00,
IROUTER929 = 0x7d08,
IROUTER930 = 0x7d10,
IROUTER931 = 0x7d18,
IROUTER932 = 0x7d20,
IROUTER933 = 0x7d28,
IROUTER934 = 0x7d30,
IROUTER935 = 0x7d38,
IROUTER936 = 0x7d40,
IROUTER937 = 0x7d48,
IROUTER938 = 0x7d50,
IROUTER939 = 0x7d58,
IROUTER940 = 0x7d60,
IROUTER941 = 0x7d68,
IROUTER942 = 0x7d70,
IROUTER943 = 0x7d78,
IROUTER944 = 0x7d80,
IROUTER945 = 0x7d88,
IROUTER946 = 0x7d90,
IROUTER947 = 0x7d98,
IROUTER948 = 0x7da0,
IROUTER949 = 0x7da8,
IROUTER950 = 0x7db0,
IROUTER951 = 0x7db8,
IROUTER952 = 0x7dc0,
IROUTER953 = 0x7dc8,
IROUTER954 = 0x7dd0,
IROUTER955 = 0x7dd8,
IROUTER956 = 0x7de0,
IROUTER957 = 0x7de8,
IROUTER958 = 0x7df0,
IROUTER959 = 0x7df8,
IROUTER960 = 0x7e00,
IROUTER961 = 0x7e08,
IROUTER962 = 0x7e10,
IROUTER963 = 0x7e18,
IROUTER964 = 0x7e20,
IROUTER965 = 0x7e28,
IROUTER966 = 0x7e30,
IROUTER967 = 0x7e38,
IROUTER968 = 0x7e40,
IROUTER969 = 0x7e48,
IROUTER970 = 0x7e50,
IROUTER971 = 0x7e58,
IROUTER972 = 0x7e60,
IROUTER973 = 0x7e68,
IROUTER974 = 0x7e70,
IROUTER975 = 0x7e78,
IROUTER976 = 0x7e80,
IROUTER977 = 0x7e88,
IROUTER978 = 0x7e90,
IROUTER979 = 0x7e98,
IROUTER980 = 0x7ea0,
IROUTER981 = 0x7ea8,
IROUTER982 = 0x7eb0,
IROUTER983 = 0x7eb8,
IROUTER984 = 0x7ec0,
IROUTER985 = 0x7ec8,
IROUTER986 = 0x7ed0,
IROUTER987 = 0x7ed8,
IROUTER988 = 0x7ee0,
IROUTER989 = 0x7ee8,
IROUTER990 = 0x7ef0,
IROUTER991 = 0x7ef8,
IROUTER992 = 0x7f00,
IROUTER993 = 0x7f08,
IROUTER994 = 0x7f10,
IROUTER995 = 0x7f18,
IROUTER996 = 0x7f20,
IROUTER997 = 0x7f28,
IROUTER998 = 0x7f30,
IROUTER999 = 0x7f38,
IROUTER1000 = 0x7f40,
IROUTER1001 = 0x7f48,
IROUTER1002 = 0x7f50,
IROUTER1003 = 0x7f58,
IROUTER1004 = 0x7f60,
IROUTER1005 = 0x7f68,
IROUTER1006 = 0x7f70,
IROUTER1007 = 0x7f78,
IROUTER1008 = 0x7f80,
IROUTER1009 = 0x7f88,
IROUTER1010 = 0x7f90,
IROUTER1011 = 0x7f98,
IROUTER1012 = 0x7fa0,
IROUTER1013 = 0x7fa8,
IROUTER1014 = 0x7fb0,
IROUTER1015 = 0x7fb8,
IROUTER1016 = 0x7fc0,
IROUTER1017 = 0x7fc8,
IROUTER1018 = 0x7fd0,
IROUTER1019 = 0x7fd8,
PIDR2 = 0xffe8,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_redistributor_reg_t {
TYPER = 0x0008,
PIDR2 = 0xffe8,
IGROUPR0 = 0x10080,
ISENABLER0 = 0x10100,
ICENABLER0 = 0x10180,
ISPENDR0 = 0x10200,
ICPENDR0 = 0x10280,
ISACTIVER0 = 0x10300,
ICACTIVER0 = 0x10380,
IPRIORITYR0 = 0x10400,
IPRIORITYR1 = 0x10404,
IPRIORITYR2 = 0x10408,
IPRIORITYR3 = 0x1040c,
IPRIORITYR4 = 0x10410,
IPRIORITYR5 = 0x10414,
IPRIORITYR6 = 0x10418,
IPRIORITYR7 = 0x1041c,
ICFGR0 = 0x10c00,
ICFGR1 = 0x10c04,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_icc_reg_t {
PMR_EL1 = 0xc230,
BPR0_EL1 = 0xc643,
AP0R0_EL1 = 0xc644,
AP1R0_EL1 = 0xc648,
RPR_EL1 = 0xc65b,
BPR1_EL1 = 0xc663,
CTLR_EL1 = 0xc664,
SRE_EL1 = 0xc665,
IGRPEN0_EL1 = 0xc666,
IGRPEN1_EL1 = 0xc667,
SRE_EL2 = 0xe64d,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_ich_reg_t {
AP0R0_EL2 = 0xe640,
AP1R0_EL2 = 0xe648,
HCR_EL2 = 0xe658,
VTR_EL2 = 0xe659,
MISR_EL2 = 0xe65a,
EISR_EL2 = 0xe65b,
ELRSR_EL2 = 0xe65d,
VMCR_EL2 = 0xe65f,
LR0_EL2 = 0xe660,
LR1_EL2 = 0xe661,
LR2_EL2 = 0xe662,
LR3_EL2 = 0xe663,
LR4_EL2 = 0xe664,
LR5_EL2 = 0xe665,
LR6_EL2 = 0xe666,
LR7_EL2 = 0xe667,
LR8_EL2 = 0xe668,
LR9_EL2 = 0xe669,
LR10_EL2 = 0xe66a,
LR11_EL2 = 0xe66b,
LR12_EL2 = 0xe66c,
LR13_EL2 = 0xe66d,
LR14_EL2 = 0xe66e,
LR15_EL2 = 0xe66f,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_icv_reg_t {
PMR_EL1 = 0xc230,
BPR0_EL1 = 0xc643,
AP0R0_EL1 = 0xc644,
AP1R0_EL1 = 0xc648,
RPR_EL1 = 0xc65b,
BPR1_EL1 = 0xc663,
CTLR_EL1 = 0xc664,
SRE_EL1 = 0xc665,
IGRPEN0_EL1 = 0xc666,
IGRPEN1_EL1 = 0xc667,
}
#[repr(C)]
#[cfg(feature = "macos-15-0")]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum hv_gic_msi_reg_t {
TYPER = 0x0008,
SET_SPI_NSR = 0x0040,
}
unsafe extern "C" {
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_config_create() -> hv_gic_config_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_config_set_distributor_base(
config: hv_gic_config_t,
distributor_base_address: hv_ipa_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_config_set_redistributor_base(
config: hv_gic_config_t,
redistributor_base_address: hv_ipa_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_config_set_msi_region_base(
config: hv_gic_config_t,
msi_region_base_address: hv_ipa_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_config_set_msi_interrupt_range(
config: hv_gic_config_t,
msi_intid_base: u32,
msi_intid_count: u32,
) -> hv_return_t;
}
unsafe extern "C" {
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_create(gic_config: hv_gic_config_t) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_spi(intid: u32, level: bool) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_send_msi(address: hv_ipa_t, intid: u32) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_distributor_reg(
reg: hv_gic_distributor_reg_t,
value: *mut u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_distributor_reg(reg: hv_gic_distributor_reg_t, value: u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_redistributor_base(
vcpu: hv_vcpu_t,
redistributor_base_address: *mut hv_ipa_t,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_redistributor_reg(
vcpu: hv_vcpu_t,
reg: hv_gic_redistributor_reg_t,
value: *mut u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_redistributor_reg(
vcpu: hv_vcpu_t,
reg: hv_gic_redistributor_reg_t,
value: u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_icc_reg(
vcpu: hv_vcpu_t,
reg: hv_gic_icc_reg_t,
value: *mut u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_icc_reg(vcpu: hv_vcpu_t, reg: hv_gic_icc_reg_t, value: u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_ich_reg(
vcpu: hv_vcpu_t,
reg: hv_gic_ich_reg_t,
value: *mut u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_ich_reg(vcpu: hv_vcpu_t, reg: hv_gic_ich_reg_t, value: u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_icv_reg(
vcpu: hv_vcpu_t,
reg: hv_gic_icv_reg_t,
value: *mut u64,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_icv_reg(vcpu: hv_vcpu_t, reg: hv_gic_icv_reg_t, value: u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_msi_reg(reg: hv_gic_msi_reg_t, value: *mut u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_msi_reg(reg: hv_gic_msi_reg_t, value: u64) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_set_state(gic_state_data: *const c_void, gic_state_size: usize) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_reset() -> hv_return_t;
}
unsafe extern "C" {
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_distributor_size(distributor_size: *mut usize) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_distributor_base_alignment(
distributor_base_alignment: *mut usize,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_redistributor_region_size(
redistributor_region_size: *mut usize,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_redistributor_size(redistributor_size: *mut usize) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_redistributor_base_alignment(
redistributor_base_alignment: *mut usize,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_msi_region_size(msi_region_size: *mut usize) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_msi_region_base_alignment(
msi_region_base_alignment: *mut usize,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_spi_interrupt_range(
spi_intid_base: *mut u32,
spi_intid_count: *mut u32,
) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_get_intid(interrupt: hv_gic_intid_t, intid: *mut u32) -> hv_return_t;
}
unsafe extern "C" {
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_state_create() -> hv_gic_state_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_state_get_size(state: hv_gic_state_t, gic_state_size: *mut usize) -> hv_return_t;
#[cfg(feature = "macos-15-0")]
pub fn hv_gic_state_get_data(state: hv_gic_state_t, gic_state_data: *mut c_void)
-> hv_return_t;
}