Widen the page fault handler's virtual address contract

This commit is contained in:
Rian Quinn 2021-09-15 14:59:50 -06:00
parent 006cdae168
commit 5149638800
10 changed files with 266 additions and 248 deletions

View file

@ -76,7 +76,7 @@ jobs:
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y clang cmake ninja-build
sudo apt-get install -y clang lld cmake ninja-build
shell: bash
- name: Validate Compliance
run: |
@ -173,7 +173,7 @@ jobs:
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y clang cmake ninja-build llvm
sudo apt-get install -y clang lld cmake ninja-build llvm
wget https://github.com/mozilla/grcov/releases/download/v0.8.0/grcov-linux-x86_64.tar.bz2
tar xvf grcov-linux-x86_64.tar.bz2
sudo mv grcov /usr/bin/

View file

@ -22,7 +22,7 @@
FetchContent_Declare(
bsl
GIT_REPOSITORY https://github.com/bareflank/bsl.git
GIT_TAG e91073c9f0b9831caeb5b65cddce553b3a8c3047
GIT_TAG 1874ee51007ecf49537215899bce7afb5a3d7227
)
FetchContent_GetProperties(bsl)

View file

@ -51,6 +51,9 @@ namespace mk
tls_t &mut_tls, page_pool_t &mut_page_pool, ext_t *const pmut_ext) noexcept
-> bsl::errc_type
{
constexpr auto min_addr{HYPERVISOR_EXT_DIRECT_MAP_ADDR};
constexpr auto max_addr{(min_addr + HYPERVISOR_EXT_DIRECT_MAP_SIZE).checked()};
/// NOTE:
/// - When the microkernel is still bootstrapping, the pmut_ext field in
/// the TLS has not yet been set, so pmut_ext could actually be a
@ -61,7 +64,16 @@ namespace mk
return bsl::errc_failure;
}
return pmut_ext->map_page_direct(mut_tls, mut_page_pool, bsl::to_umx(mut_tls.esr_pf_addr));
auto const virt{bsl::to_umx(mut_tls.esr_pf_addr)};
if (bsl::unlikely(virt <= min_addr)) {
return bsl::errc_failure;
}
if (bsl::unlikely(virt >= max_addr)) {
return bsl::errc_failure;
}
return pmut_ext->map_page_direct(mut_tls, mut_page_pool, virt);
}
}

View file

@ -1444,21 +1444,15 @@ namespace mk
tls_t &mut_tls, page_pool_t &mut_page_pool, bsl::safe_umx const &page_virt) noexcept
-> bsl::errc_type
{
constexpr auto min_addr{HYPERVISOR_EXT_DIRECT_MAP_ADDR};
constexpr auto max_addr{(min_addr + HYPERVISOR_EXT_DIRECT_MAP_SIZE).checked()};
bsl::expects(bsl::to_umx(mut_tls.active_vmid) < m_direct_map_rpts.size());
bsl::expects(page_virt.is_valid_and_checked());
bsl::expects(page_virt.is_pos());
bsl::expects(page_virt >= min_addr);
bsl::expects(page_virt <= max_addr);
auto *const pmut_direct_map_rpt{
m_direct_map_rpts.at_if(bsl::to_idx(mut_tls.active_vmid))};
bsl::expects(nullptr != pmut_direct_map_rpt);
auto const aligned_virt{syscall::bf_page_aligned(page_virt)};
auto const aligned_phys{(page_virt - min_addr).checked()};
auto const aligned_phys{(page_virt - HYPERVISOR_EXT_DIRECT_MAP_ADDR).checked()};
/// NOTE:
/// - The validity of page_virt is performed above which is why

View file

@ -1208,31 +1208,31 @@ namespace mk
return bsl::to_u64(m_gprs.r15);
}
case syscall::bf_reg_t::bf_reg_t_guest_cr2: {
case syscall::bf_reg_t::bf_reg_t_cr2: {
return bsl::to_u64(m_vmcs_missing_registers.guest_cr2);
}
case syscall::bf_reg_t::bf_reg_t_guest_dr6: {
case syscall::bf_reg_t::bf_reg_t_dr6: {
return bsl::to_u64(m_vmcs_missing_registers.guest_dr6);
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_star: {
case syscall::bf_reg_t::bf_reg_t_ia32_star: {
return bsl::to_u64(m_vmcs_missing_registers.guest_ia32_star);
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_lstar: {
case syscall::bf_reg_t::bf_reg_t_ia32_lstar: {
return bsl::to_u64(m_vmcs_missing_registers.guest_ia32_lstar);
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_cstar: {
case syscall::bf_reg_t::bf_reg_t_ia32_cstar: {
return bsl::to_u64(m_vmcs_missing_registers.guest_ia32_cstar);
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_fmask: {
case syscall::bf_reg_t::bf_reg_t_ia32_fmask: {
return bsl::to_u64(m_vmcs_missing_registers.guest_ia32_fmask);
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_kernel_gs_base: {
case syscall::bf_reg_t::bf_reg_t_ia32_kernel_gs_base: {
return bsl::to_u64(m_vmcs_missing_registers.guest_ia32_kernel_gs_base);
}
@ -1252,47 +1252,47 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_selector: {
case syscall::bf_reg_t::bf_reg_t_es_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_ES_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_selector: {
case syscall::bf_reg_t::bf_reg_t_cs_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CS_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_selector: {
case syscall::bf_reg_t::bf_reg_t_ss_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_SS_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_selector: {
case syscall::bf_reg_t::bf_reg_t_ds_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_DS_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_selector: {
case syscall::bf_reg_t::bf_reg_t_fs_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_FS_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_selector: {
case syscall::bf_reg_t::bf_reg_t_gs_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GS_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_selector: {
case syscall::bf_reg_t::bf_reg_t_ldtr_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_LDTR_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_selector: {
case syscall::bf_reg_t::bf_reg_t_tr_selector: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_TR_SELECTOR, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_interrupt_status: {
case syscall::bf_reg_t::bf_reg_t_interrupt_status: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_INTERRUPT_STATUS, mut_val.data());
break;
}
@ -1435,7 +1435,7 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_physical_address: {
case syscall::bf_reg_t::bf_reg_t_physical_address: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PHYSICAL_ADDRESS, mut_val.data());
break;
}
@ -1445,52 +1445,52 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_debugctl: {
case syscall::bf_reg_t::bf_reg_t_ia32_debugctl: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_DEBUGCTL, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_pat: {
case syscall::bf_reg_t::bf_reg_t_ia32_pat: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_PAT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_efer: {
case syscall::bf_reg_t::bf_reg_t_ia32_efer: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_EFER, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_perf_global_ctrl: {
case syscall::bf_reg_t::bf_reg_t_ia32_perf_global_ctrl: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_PERF_GLOBAL_CTRL, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte0: {
case syscall::bf_reg_t::bf_reg_t_pdpte0: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PDPTE0, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte1: {
case syscall::bf_reg_t::bf_reg_t_pdpte1: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PDPTE1, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte2: {
case syscall::bf_reg_t::bf_reg_t_pdpte2: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PDPTE2, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte3: {
case syscall::bf_reg_t::bf_reg_t_pdpte3: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PDPTE3, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_bndcfgs: {
case syscall::bf_reg_t::bf_reg_t_ia32_bndcfgs: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_BNDCFGS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rtit_ctl: {
case syscall::bf_reg_t::bf_reg_t_rtit_ctl: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_RTIT_CTL, mut_val.data());
break;
}
@ -1630,112 +1630,112 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_limit: {
case syscall::bf_reg_t::bf_reg_t_es_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_ES_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_limit: {
case syscall::bf_reg_t::bf_reg_t_cs_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CS_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_limit: {
case syscall::bf_reg_t::bf_reg_t_ss_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_SS_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_limit: {
case syscall::bf_reg_t::bf_reg_t_ds_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_DS_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_limit: {
case syscall::bf_reg_t::bf_reg_t_fs_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_FS_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_limit: {
case syscall::bf_reg_t::bf_reg_t_gs_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GS_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_limit: {
case syscall::bf_reg_t::bf_reg_t_ldtr_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_LDTR_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_limit: {
case syscall::bf_reg_t::bf_reg_t_tr_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_TR_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gdtr_limit: {
case syscall::bf_reg_t::bf_reg_t_gdtr_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GDTR_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_idtr_limit: {
case syscall::bf_reg_t::bf_reg_t_idtr_limit: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IDTR_LIMIT, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_access_rights: {
case syscall::bf_reg_t::bf_reg_t_es_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_ES_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_cs_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CS_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ss_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_SS_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ds_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_DS_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_fs_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_FS_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_gs_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GS_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ldtr_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_LDTR_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_access_rights: {
case syscall::bf_reg_t::bf_reg_t_tr_attrib: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_TR_ACCESS_RIGHTS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_interruptibility_state: {
case syscall::bf_reg_t::bf_reg_t_interruptibility_state: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_INTERRUPTIBILITY_STATE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_activity_state: {
case syscall::bf_reg_t::bf_reg_t_activity_state: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_ACTIVITY_STATE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_smbase: {
case syscall::bf_reg_t::bf_reg_t_smbase: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_SMBASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_cs: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_cs: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_SYSENTER_CS, mut_val.data());
break;
}
@ -1810,107 +1810,107 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_linear_address: {
case syscall::bf_reg_t::bf_reg_t_linear_address: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_LINEAR_ADDRESS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr0: {
case syscall::bf_reg_t::bf_reg_t_cr0: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CR0, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr3: {
case syscall::bf_reg_t::bf_reg_t_cr3: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CR3, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr4: {
case syscall::bf_reg_t::bf_reg_t_cr4: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CR4, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_base: {
case syscall::bf_reg_t::bf_reg_t_es_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_ES_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_base: {
case syscall::bf_reg_t::bf_reg_t_cs_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_CS_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_base: {
case syscall::bf_reg_t::bf_reg_t_ss_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_SS_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_base: {
case syscall::bf_reg_t::bf_reg_t_ds_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_DS_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_base: {
case syscall::bf_reg_t::bf_reg_t_fs_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_FS_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_base: {
case syscall::bf_reg_t::bf_reg_t_gs_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GS_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_base: {
case syscall::bf_reg_t::bf_reg_t_ldtr_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_LDTR_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_base: {
case syscall::bf_reg_t::bf_reg_t_tr_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_TR_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gdtr_base: {
case syscall::bf_reg_t::bf_reg_t_gdtr_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_GDTR_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_idtr_base: {
case syscall::bf_reg_t::bf_reg_t_idtr_base: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IDTR_BASE, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_dr7: {
case syscall::bf_reg_t::bf_reg_t_dr7: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_DR7, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rsp: {
case syscall::bf_reg_t::bf_reg_t_rsp: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_RSP, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rip: {
case syscall::bf_reg_t::bf_reg_t_rip: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_RIP, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rflags: {
case syscall::bf_reg_t::bf_reg_t_rflags: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_RFLAGS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pending_debug_exceptions: {
case syscall::bf_reg_t::bf_reg_t_pending_debug_exceptions: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_PENDING_DEBUG_EXCEPTIONS, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_esp: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_esp: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_SYSENTER_ESP, mut_val.data());
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_eip: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_eip: {
mut_ret = intrinsic.vmrd64(VMCS_GUEST_IA32_SYSENTER_EIP, mut_val.data());
break;
}
@ -2104,37 +2104,37 @@ namespace mk
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr2: {
case syscall::bf_reg_t::bf_reg_t_cr2: {
m_vmcs_missing_registers.guest_cr2 = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_dr6: {
case syscall::bf_reg_t::bf_reg_t_dr6: {
m_vmcs_missing_registers.guest_dr6 = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_star: {
case syscall::bf_reg_t::bf_reg_t_ia32_star: {
m_vmcs_missing_registers.guest_ia32_star = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_lstar: {
case syscall::bf_reg_t::bf_reg_t_ia32_lstar: {
m_vmcs_missing_registers.guest_ia32_lstar = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_cstar: {
case syscall::bf_reg_t::bf_reg_t_ia32_cstar: {
m_vmcs_missing_registers.guest_ia32_cstar = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_fmask: {
case syscall::bf_reg_t::bf_reg_t_ia32_fmask: {
m_vmcs_missing_registers.guest_ia32_fmask = val.get();
return bsl::errc_success;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_kernel_gs_base: {
case syscall::bf_reg_t::bf_reg_t_ia32_kernel_gs_base: {
m_vmcs_missing_registers.guest_ia32_kernel_gs_base = val.get();
return bsl::errc_success;
}
@ -2156,47 +2156,47 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_selector: {
case syscall::bf_reg_t::bf_reg_t_es_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_ES_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_selector: {
case syscall::bf_reg_t::bf_reg_t_cs_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_CS_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_selector: {
case syscall::bf_reg_t::bf_reg_t_ss_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_SS_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_selector: {
case syscall::bf_reg_t::bf_reg_t_ds_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_DS_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_selector: {
case syscall::bf_reg_t::bf_reg_t_fs_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_FS_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_selector: {
case syscall::bf_reg_t::bf_reg_t_gs_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_GS_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_selector: {
case syscall::bf_reg_t::bf_reg_t_ldtr_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_LDTR_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_selector: {
case syscall::bf_reg_t::bf_reg_t_tr_selector: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_TR_SELECTOR, bsl::to_u16(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_interrupt_status: {
case syscall::bf_reg_t::bf_reg_t_interrupt_status: {
mut_ret = mut_intrinsic.vmwr16(VMCS_GUEST_INTERRUPT_STATUS, bsl::to_u16(val));
break;
}
@ -2339,7 +2339,7 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_physical_address: {
case syscall::bf_reg_t::bf_reg_t_physical_address: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_PHYSICAL_ADDRESS, bsl::to_u64(val));
break;
}
@ -2349,53 +2349,53 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_debugctl: {
case syscall::bf_reg_t::bf_reg_t_ia32_debugctl: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_DEBUGCTL, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_pat: {
case syscall::bf_reg_t::bf_reg_t_ia32_pat: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_PAT, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_efer: {
case syscall::bf_reg_t::bf_reg_t_ia32_efer: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_EFER, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_perf_global_ctrl: {
case syscall::bf_reg_t::bf_reg_t_ia32_perf_global_ctrl: {
mut_ret =
mut_intrinsic.vmwr64(VMCS_GUEST_IA32_PERF_GLOBAL_CTRL, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte0: {
case syscall::bf_reg_t::bf_reg_t_pdpte0: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_PDPTE0, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte1: {
case syscall::bf_reg_t::bf_reg_t_pdpte1: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_PDPTE1, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte2: {
case syscall::bf_reg_t::bf_reg_t_pdpte2: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_PDPTE2, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pdpte3: {
case syscall::bf_reg_t::bf_reg_t_pdpte3: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_PDPTE3, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_bndcfgs: {
case syscall::bf_reg_t::bf_reg_t_ia32_bndcfgs: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_BNDCFGS, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rtit_ctl: {
case syscall::bf_reg_t::bf_reg_t_rtit_ctl: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_RTIT_CTL, bsl::to_u64(val));
break;
}
@ -2543,113 +2543,113 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_limit: {
case syscall::bf_reg_t::bf_reg_t_es_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_ES_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_limit: {
case syscall::bf_reg_t::bf_reg_t_cs_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_CS_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_limit: {
case syscall::bf_reg_t::bf_reg_t_ss_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_SS_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_limit: {
case syscall::bf_reg_t::bf_reg_t_ds_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_DS_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_limit: {
case syscall::bf_reg_t::bf_reg_t_fs_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_FS_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_limit: {
case syscall::bf_reg_t::bf_reg_t_gs_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_GS_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_limit: {
case syscall::bf_reg_t::bf_reg_t_ldtr_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_LDTR_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_limit: {
case syscall::bf_reg_t::bf_reg_t_tr_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_TR_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gdtr_limit: {
case syscall::bf_reg_t::bf_reg_t_gdtr_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_GDTR_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_idtr_limit: {
case syscall::bf_reg_t::bf_reg_t_idtr_limit: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_IDTR_LIMIT, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_access_rights: {
case syscall::bf_reg_t::bf_reg_t_es_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_ES_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_cs_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_CS_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ss_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_SS_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ds_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_DS_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_fs_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_FS_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_access_rights: {
case syscall::bf_reg_t::bf_reg_t_gs_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_GS_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_access_rights: {
case syscall::bf_reg_t::bf_reg_t_ldtr_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_LDTR_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_access_rights: {
case syscall::bf_reg_t::bf_reg_t_tr_attrib: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_TR_ACCESS_RIGHTS, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_interruptibility_state: {
case syscall::bf_reg_t::bf_reg_t_interruptibility_state: {
mut_ret =
mut_intrinsic.vmwr32(VMCS_GUEST_INTERRUPTIBILITY_STATE, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_activity_state: {
case syscall::bf_reg_t::bf_reg_t_activity_state: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_ACTIVITY_STATE, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_smbase: {
case syscall::bf_reg_t::bf_reg_t_smbase: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_SMBASE, bsl::to_u32(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_cs: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_cs: {
mut_ret = mut_intrinsic.vmwr32(VMCS_GUEST_IA32_SYSENTER_CS, bsl::to_u32(val));
break;
}
@ -2725,108 +2725,108 @@ namespace mk
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_linear_address: {
case syscall::bf_reg_t::bf_reg_t_linear_address: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_LINEAR_ADDRESS, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr0: {
case syscall::bf_reg_t::bf_reg_t_cr0: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_CR0, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr3: {
case syscall::bf_reg_t::bf_reg_t_cr3: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_CR3, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cr4: {
case syscall::bf_reg_t::bf_reg_t_cr4: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_CR4, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_es_base: {
case syscall::bf_reg_t::bf_reg_t_es_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_ES_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_cs_base: {
case syscall::bf_reg_t::bf_reg_t_cs_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_CS_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ss_base: {
case syscall::bf_reg_t::bf_reg_t_ss_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_SS_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ds_base: {
case syscall::bf_reg_t::bf_reg_t_ds_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_DS_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_fs_base: {
case syscall::bf_reg_t::bf_reg_t_fs_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_FS_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gs_base: {
case syscall::bf_reg_t::bf_reg_t_gs_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_GS_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ldtr_base: {
case syscall::bf_reg_t::bf_reg_t_ldtr_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_LDTR_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_tr_base: {
case syscall::bf_reg_t::bf_reg_t_tr_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_TR_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_gdtr_base: {
case syscall::bf_reg_t::bf_reg_t_gdtr_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_GDTR_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_idtr_base: {
case syscall::bf_reg_t::bf_reg_t_idtr_base: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IDTR_BASE, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_dr7: {
case syscall::bf_reg_t::bf_reg_t_dr7: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_DR7, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rsp: {
case syscall::bf_reg_t::bf_reg_t_rsp: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_RSP, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rip: {
case syscall::bf_reg_t::bf_reg_t_rip: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_RIP, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_rflags: {
case syscall::bf_reg_t::bf_reg_t_rflags: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_RFLAGS, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_pending_debug_exceptions: {
case syscall::bf_reg_t::bf_reg_t_pending_debug_exceptions: {
mut_ret =
mut_intrinsic.vmwr64(VMCS_GUEST_PENDING_DEBUG_EXCEPTIONS, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_esp: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_esp: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_SYSENTER_ESP, bsl::to_u64(val));
break;
}
case syscall::bf_reg_t::bf_reg_t_guest_ia32_sysenter_eip: {
case syscall::bf_reg_t::bf_reg_t_ia32_sysenter_eip: {
mut_ret = mut_intrinsic.vmwr64(VMCS_GUEST_IA32_SYSENTER_EIP, bsl::to_u64(val));
break;
}
@ -3223,14 +3223,14 @@ namespace mk
this->dump_field("tr_limit ", intrinsic.vmrd32(VMCS_GUEST_TR_LIMIT));
this->dump_field("gdtr_limit ", intrinsic.vmrd32(VMCS_GUEST_GDTR_LIMIT));
this->dump_field("idtr_limit ", intrinsic.vmrd32(VMCS_GUEST_IDTR_LIMIT));
this->dump_field("es_access_rights ", intrinsic.vmrd32(VMCS_GUEST_ES_ACCESS_RIGHTS));
this->dump_field("cs_access_rights ", intrinsic.vmrd32(VMCS_GUEST_CS_ACCESS_RIGHTS));
this->dump_field("ss_access_rights ", intrinsic.vmrd32(VMCS_GUEST_SS_ACCESS_RIGHTS));
this->dump_field("ds_access_rights ", intrinsic.vmrd32(VMCS_GUEST_DS_ACCESS_RIGHTS));
this->dump_field("fs_access_rights ", intrinsic.vmrd32(VMCS_GUEST_FS_ACCESS_RIGHTS));
this->dump_field("gs_access_rights ", intrinsic.vmrd32(VMCS_GUEST_GS_ACCESS_RIGHTS));
this->dump_field("ldtr_access_rights ", intrinsic.vmrd32(VMCS_GUEST_LDTR_ACCESS_RIGHTS));
this->dump_field("tr_access_rights ", intrinsic.vmrd32(VMCS_GUEST_TR_ACCESS_RIGHTS));
this->dump_field("es_attrib ", intrinsic.vmrd32(VMCS_GUEST_ES_ACCESS_RIGHTS));
this->dump_field("cs_attrib ", intrinsic.vmrd32(VMCS_GUEST_CS_ACCESS_RIGHTS));
this->dump_field("ss_attrib ", intrinsic.vmrd32(VMCS_GUEST_SS_ACCESS_RIGHTS));
this->dump_field("ds_attrib ", intrinsic.vmrd32(VMCS_GUEST_DS_ACCESS_RIGHTS));
this->dump_field("fs_attrib ", intrinsic.vmrd32(VMCS_GUEST_FS_ACCESS_RIGHTS));
this->dump_field("gs_attrib ", intrinsic.vmrd32(VMCS_GUEST_GS_ACCESS_RIGHTS));
this->dump_field("ldtr_attrib ", intrinsic.vmrd32(VMCS_GUEST_LDTR_ACCESS_RIGHTS));
this->dump_field("tr_attrib ", intrinsic.vmrd32(VMCS_GUEST_TR_ACCESS_RIGHTS));
this->dump_field("guest_interruptibility_state ", intrinsic.vmrd32(VMCS_GUEST_INTERRUPTIBILITY_STATE));
this->dump_field("guest_activity_state ", intrinsic.vmrd32(VMCS_GUEST_ACTIVITY_STATE));
this->dump_field("guest_smbase ", intrinsic.vmrd32(VMCS_GUEST_SMBASE));

View file

@ -27,7 +27,9 @@
#if __has_include("page_pool_helpers.hpp")
#include "page_pool_helpers.hpp" // IWYU pragma: export
#else
#endif
#if __has_include("basic_page_pool_helpers.hpp")
#include "basic_page_pool_helpers.hpp" // IWYU pragma: export
#endif

View file

@ -27,7 +27,9 @@
#if __has_include("page_pool_helpers.hpp")
#include "page_pool_helpers.hpp" // IWYU pragma: export
#else
#endif
#if __has_include("basic_page_pool_helpers.hpp")
#include "basic_page_pool_helpers.hpp" // IWYU pragma: export
#endif

View file

@ -27,7 +27,13 @@
#if __has_include("root_page_table_helpers.hpp")
#include "root_page_table_helpers.hpp" // IWYU pragma: export
#else
#endif
#if __has_include("second_level_page_table_helpers.hpp")
#include "second_level_page_table_helpers.hpp" // IWYU pragma: export
#endif
#if __has_include("basic_root_page_table_helpers.hpp")
#include "basic_root_page_table_helpers.hpp" // IWYU pragma: export
#endif

View file

@ -27,7 +27,9 @@
#if __has_include("spinlock_helpers.hpp")
#include "spinlock_helpers.hpp" // IWYU pragma: export
#else
#endif
#if __has_include("basic_spinlock_helpers.hpp")
#include "basic_spinlock_helpers.hpp" // IWYU pragma: export
#endif

View file

@ -70,20 +70,20 @@ namespace syscall
bf_reg_t_r14 = static_cast<bsl::uint64>(14),
/// @brief defines the r15 register
bf_reg_t_r15 = static_cast<bsl::uint64>(15),
/// @brief defines the bf_reg_t_guest_cr2 register
bf_reg_t_guest_cr2 = static_cast<bsl::uint64>(16),
/// @brief defines the bf_reg_t_guest_dr6 register
bf_reg_t_guest_dr6 = static_cast<bsl::uint64>(17),
/// @brief defines the bf_reg_t_guest_ia32_star register
bf_reg_t_guest_ia32_star = static_cast<bsl::uint64>(18),
/// @brief defines the bf_reg_t_guest_ia32_lstar register
bf_reg_t_guest_ia32_lstar = static_cast<bsl::uint64>(19),
/// @brief defines the bf_reg_t_guest_ia32_cstar register
bf_reg_t_guest_ia32_cstar = static_cast<bsl::uint64>(20),
/// @brief defines the bf_reg_t_guest_ia32_fmask register
bf_reg_t_guest_ia32_fmask = static_cast<bsl::uint64>(21),
/// @brief defines the bf_reg_t_guest_ia32_kernel_gs_base register
bf_reg_t_guest_ia32_kernel_gs_base = static_cast<bsl::uint64>(22),
/// @brief defines the bf_reg_t_cr2 register
bf_reg_t_cr2 = static_cast<bsl::uint64>(16),
/// @brief defines the bf_reg_t_dr6 register
bf_reg_t_dr6 = static_cast<bsl::uint64>(17),
/// @brief defines the bf_reg_t_ia32_star register
bf_reg_t_ia32_star = static_cast<bsl::uint64>(18),
/// @brief defines the bf_reg_t_ia32_lstar register
bf_reg_t_ia32_lstar = static_cast<bsl::uint64>(19),
/// @brief defines the bf_reg_t_ia32_cstar register
bf_reg_t_ia32_cstar = static_cast<bsl::uint64>(20),
/// @brief defines the bf_reg_t_ia32_fmask register
bf_reg_t_ia32_fmask = static_cast<bsl::uint64>(21),
/// @brief defines the bf_reg_t_ia32_kernel_gs_base register
bf_reg_t_ia32_kernel_gs_base = static_cast<bsl::uint64>(22),
/// @brief defines the virtual_processor_identifier register
bf_reg_t_virtual_processor_identifier = static_cast<bsl::uint64>(23),
/// @brief defines the posted_interrupt_notification_vector register
@ -91,23 +91,23 @@ namespace syscall
/// @brief defines the eptp_index register
bf_reg_t_eptp_index = static_cast<bsl::uint64>(25),
/// @brief defines the guest_es_selector register
bf_reg_t_guest_es_selector = static_cast<bsl::uint64>(26),
bf_reg_t_es_selector = static_cast<bsl::uint64>(26),
/// @brief defines the guest_cs_selector register
bf_reg_t_guest_cs_selector = static_cast<bsl::uint64>(27),
bf_reg_t_cs_selector = static_cast<bsl::uint64>(27),
/// @brief defines the guest_ss_selector register
bf_reg_t_guest_ss_selector = static_cast<bsl::uint64>(28),
bf_reg_t_ss_selector = static_cast<bsl::uint64>(28),
/// @brief defines the guest_ds_selector register
bf_reg_t_guest_ds_selector = static_cast<bsl::uint64>(29),
bf_reg_t_ds_selector = static_cast<bsl::uint64>(29),
/// @brief defines the guest_fs_selector register
bf_reg_t_guest_fs_selector = static_cast<bsl::uint64>(30),
bf_reg_t_fs_selector = static_cast<bsl::uint64>(30),
/// @brief defines the guest_gs_selector register
bf_reg_t_guest_gs_selector = static_cast<bsl::uint64>(31),
bf_reg_t_gs_selector = static_cast<bsl::uint64>(31),
/// @brief defines the guest_ldtr_selector register
bf_reg_t_guest_ldtr_selector = static_cast<bsl::uint64>(32),
bf_reg_t_ldtr_selector = static_cast<bsl::uint64>(32),
/// @brief defines the guest_tr_selector register
bf_reg_t_guest_tr_selector = static_cast<bsl::uint64>(33),
bf_reg_t_tr_selector = static_cast<bsl::uint64>(33),
/// @brief defines the guest_interrupt_status register
bf_reg_t_guest_interrupt_status = static_cast<bsl::uint64>(34),
bf_reg_t_interrupt_status = static_cast<bsl::uint64>(34),
/// @brief defines the pml_index register
bf_reg_t_pml_index = static_cast<bsl::uint64>(35),
/// @brief defines the address_of_io_bitmap_a register
@ -163,29 +163,29 @@ namespace syscall
/// @brief defines the tls_multiplier register
bf_reg_t_tls_multiplier = static_cast<bsl::uint64>(61),
/// @brief defines the guest_physical_address register
bf_reg_t_guest_physical_address = static_cast<bsl::uint64>(62),
bf_reg_t_physical_address = static_cast<bsl::uint64>(62),
/// @brief defines the vmcs_link_pointer register
bf_reg_t_vmcs_link_pointer = static_cast<bsl::uint64>(63),
/// @brief defines the guest_ia32_debugctl register
bf_reg_t_guest_ia32_debugctl = static_cast<bsl::uint64>(64),
bf_reg_t_ia32_debugctl = static_cast<bsl::uint64>(64),
/// @brief defines the guest_ia32_pat register
bf_reg_t_guest_ia32_pat = static_cast<bsl::uint64>(65),
bf_reg_t_ia32_pat = static_cast<bsl::uint64>(65),
/// @brief defines the guest_ia32_efer register
bf_reg_t_guest_ia32_efer = static_cast<bsl::uint64>(66),
bf_reg_t_ia32_efer = static_cast<bsl::uint64>(66),
/// @brief defines the guest_ia32_perf_global_ctrl register
bf_reg_t_guest_ia32_perf_global_ctrl = static_cast<bsl::uint64>(67),
bf_reg_t_ia32_perf_global_ctrl = static_cast<bsl::uint64>(67),
/// @brief defines the guest_pdpte0 register
bf_reg_t_guest_pdpte0 = static_cast<bsl::uint64>(68),
bf_reg_t_pdpte0 = static_cast<bsl::uint64>(68),
/// @brief defines the guest_pdpte1 register
bf_reg_t_guest_pdpte1 = static_cast<bsl::uint64>(69),
bf_reg_t_pdpte1 = static_cast<bsl::uint64>(69),
/// @brief defines the guest_pdpte2 register
bf_reg_t_guest_pdpte2 = static_cast<bsl::uint64>(70),
bf_reg_t_pdpte2 = static_cast<bsl::uint64>(70),
/// @brief defines the guest_pdpte3 register
bf_reg_t_guest_pdpte3 = static_cast<bsl::uint64>(71),
bf_reg_t_pdpte3 = static_cast<bsl::uint64>(71),
/// @brief defines the guest_ia32_bndcfgs register
bf_reg_t_guest_ia32_bndcfgs = static_cast<bsl::uint64>(72),
bf_reg_t_ia32_bndcfgs = static_cast<bsl::uint64>(72),
/// @brief defines the guest_rtit_ctl register
bf_reg_t_guest_rtit_ctl = static_cast<bsl::uint64>(73),
bf_reg_t_rtit_ctl = static_cast<bsl::uint64>(73),
/// @brief defines the pin_based_vm_execution_ctls register
bf_reg_t_pin_based_vm_execution_ctls = static_cast<bsl::uint64>(74),
/// @brief defines the primary_proc_based_vm_execution_ctls register
@ -239,50 +239,50 @@ namespace syscall
/// @brief defines the vmexit_instruction_information register
bf_reg_t_vmexit_instruction_information = static_cast<bsl::uint64>(99),
/// @brief defines the guest_es_limit register
bf_reg_t_guest_es_limit = static_cast<bsl::uint64>(100),
bf_reg_t_es_limit = static_cast<bsl::uint64>(100),
/// @brief defines the guest_cs_limit register
bf_reg_t_guest_cs_limit = static_cast<bsl::uint64>(101),
bf_reg_t_cs_limit = static_cast<bsl::uint64>(101),
/// @brief defines the guest_ss_limit register
bf_reg_t_guest_ss_limit = static_cast<bsl::uint64>(102),
bf_reg_t_ss_limit = static_cast<bsl::uint64>(102),
/// @brief defines the guest_ds_limit register
bf_reg_t_guest_ds_limit = static_cast<bsl::uint64>(103),
bf_reg_t_ds_limit = static_cast<bsl::uint64>(103),
/// @brief defines the guest_fs_limit register
bf_reg_t_guest_fs_limit = static_cast<bsl::uint64>(104),
bf_reg_t_fs_limit = static_cast<bsl::uint64>(104),
/// @brief defines the guest_gs_limit register
bf_reg_t_guest_gs_limit = static_cast<bsl::uint64>(105),
bf_reg_t_gs_limit = static_cast<bsl::uint64>(105),
/// @brief defines the guest_ldtr_limit register
bf_reg_t_guest_ldtr_limit = static_cast<bsl::uint64>(106),
bf_reg_t_ldtr_limit = static_cast<bsl::uint64>(106),
/// @brief defines the guest_tr_limit register
bf_reg_t_guest_tr_limit = static_cast<bsl::uint64>(107),
bf_reg_t_tr_limit = static_cast<bsl::uint64>(107),
/// @brief defines the guest_gdtr_limit register
bf_reg_t_guest_gdtr_limit = static_cast<bsl::uint64>(108),
bf_reg_t_gdtr_limit = static_cast<bsl::uint64>(108),
/// @brief defines the guest_idtr_limit register
// NOLINTNEXTLINE(bsl-identifier-typographically-unambiguous)
bf_reg_t_guest_idtr_limit = static_cast<bsl::uint64>(109),
/// @brief defines the guest_es_access_rights register
bf_reg_t_guest_es_access_rights = static_cast<bsl::uint64>(110),
/// @brief defines the guest_cs_access_rights register
bf_reg_t_guest_cs_access_rights = static_cast<bsl::uint64>(111),
/// @brief defines the guest_ss_access_rights register
bf_reg_t_guest_ss_access_rights = static_cast<bsl::uint64>(112),
/// @brief defines the guest_ds_access_rights register
bf_reg_t_guest_ds_access_rights = static_cast<bsl::uint64>(113),
/// @brief defines the guest_fs_access_rights register
bf_reg_t_guest_fs_access_rights = static_cast<bsl::uint64>(114),
/// @brief defines the guest_gs_access_rights register
bf_reg_t_guest_gs_access_rights = static_cast<bsl::uint64>(115),
/// @brief defines the guest_ldtr_access_rights register
bf_reg_t_guest_ldtr_access_rights = static_cast<bsl::uint64>(116),
/// @brief defines the guest_tr_access_rights register
bf_reg_t_guest_tr_access_rights = static_cast<bsl::uint64>(117),
bf_reg_t_idtr_limit = static_cast<bsl::uint64>(109),
/// @brief defines the guest_es_attrib register
bf_reg_t_es_attrib = static_cast<bsl::uint64>(110),
/// @brief defines the guest_cs_attrib register
bf_reg_t_cs_attrib = static_cast<bsl::uint64>(111),
/// @brief defines the guest_ss_attrib register
bf_reg_t_ss_attrib = static_cast<bsl::uint64>(112),
/// @brief defines the guest_ds_attrib register
bf_reg_t_ds_attrib = static_cast<bsl::uint64>(113),
/// @brief defines the guest_fs_attrib register
bf_reg_t_fs_attrib = static_cast<bsl::uint64>(114),
/// @brief defines the guest_gs_attrib register
bf_reg_t_gs_attrib = static_cast<bsl::uint64>(115),
/// @brief defines the guest_ldtr_attrib register
bf_reg_t_ldtr_attrib = static_cast<bsl::uint64>(116),
/// @brief defines the guest_tr_attrib register
bf_reg_t_tr_attrib = static_cast<bsl::uint64>(117),
/// @brief defines the guest_interruptibility_state register
bf_reg_t_guest_interruptibility_state = static_cast<bsl::uint64>(118),
bf_reg_t_interruptibility_state = static_cast<bsl::uint64>(118),
/// @brief defines the guest_activity_state register
bf_reg_t_guest_activity_state = static_cast<bsl::uint64>(119),
bf_reg_t_activity_state = static_cast<bsl::uint64>(119),
/// @brief defines the guest_smbase register
bf_reg_t_guest_smbase = static_cast<bsl::uint64>(120),
bf_reg_t_smbase = static_cast<bsl::uint64>(120),
/// @brief defines the guest_ia32_sysenter_cs register
bf_reg_t_guest_ia32_sysenter_cs = static_cast<bsl::uint64>(121),
bf_reg_t_ia32_sysenter_cs = static_cast<bsl::uint64>(121),
/// @brief defines the vmx_preemption_timer_value register
bf_reg_t_vmx_preemption_timer_value = static_cast<bsl::uint64>(122),
/// @brief defines the cr0_guest_host_mask register
@ -312,48 +312,48 @@ namespace syscall
/// @brief defines the io_rip register
bf_reg_t_io_rip = static_cast<bsl::uint64>(135),
/// @brief defines the guest_linear_address register
bf_reg_t_guest_linear_address = static_cast<bsl::uint64>(136),
bf_reg_t_linear_address = static_cast<bsl::uint64>(136),
/// @brief defines the guest_cr0 register
bf_reg_t_guest_cr0 = static_cast<bsl::uint64>(137),
bf_reg_t_cr0 = static_cast<bsl::uint64>(137),
/// @brief defines the guest_cr3 register
bf_reg_t_guest_cr3 = static_cast<bsl::uint64>(138),
bf_reg_t_cr3 = static_cast<bsl::uint64>(138),
/// @brief defines the guest_cr4 register
bf_reg_t_guest_cr4 = static_cast<bsl::uint64>(139),
bf_reg_t_cr4 = static_cast<bsl::uint64>(139),
/// @brief defines the guest_es_base register
bf_reg_t_guest_es_base = static_cast<bsl::uint64>(140),
bf_reg_t_es_base = static_cast<bsl::uint64>(140),
/// @brief defines the guest_cs_base register
bf_reg_t_guest_cs_base = static_cast<bsl::uint64>(141),
bf_reg_t_cs_base = static_cast<bsl::uint64>(141),
/// @brief defines the guest_ss_base register
bf_reg_t_guest_ss_base = static_cast<bsl::uint64>(142),
bf_reg_t_ss_base = static_cast<bsl::uint64>(142),
/// @brief defines the guest_ds_base register
bf_reg_t_guest_ds_base = static_cast<bsl::uint64>(143),
bf_reg_t_ds_base = static_cast<bsl::uint64>(143),
/// @brief defines the guest_fs_base register
bf_reg_t_guest_fs_base = static_cast<bsl::uint64>(144),
bf_reg_t_fs_base = static_cast<bsl::uint64>(144),
/// @brief defines the guest_gs_base register
bf_reg_t_guest_gs_base = static_cast<bsl::uint64>(145),
bf_reg_t_gs_base = static_cast<bsl::uint64>(145),
/// @brief defines the guest_ldtr_base register
bf_reg_t_guest_ldtr_base = static_cast<bsl::uint64>(146),
bf_reg_t_ldtr_base = static_cast<bsl::uint64>(146),
/// @brief defines the guest_tr_base register
bf_reg_t_guest_tr_base = static_cast<bsl::uint64>(147),
bf_reg_t_tr_base = static_cast<bsl::uint64>(147),
/// @brief defines the guest_gdtr_base register
bf_reg_t_guest_gdtr_base = static_cast<bsl::uint64>(148),
bf_reg_t_gdtr_base = static_cast<bsl::uint64>(148),
/// @brief defines the guest_idtr_base register
// NOLINTNEXTLINE(bsl-identifier-typographically-unambiguous)
bf_reg_t_guest_idtr_base = static_cast<bsl::uint64>(149),
bf_reg_t_idtr_base = static_cast<bsl::uint64>(149),
/// @brief defines the guest_dr7 register
bf_reg_t_guest_dr7 = static_cast<bsl::uint64>(150),
bf_reg_t_dr7 = static_cast<bsl::uint64>(150),
/// @brief defines the guest_rsp register
bf_reg_t_guest_rsp = static_cast<bsl::uint64>(151),
bf_reg_t_rsp = static_cast<bsl::uint64>(151),
/// @brief defines the guest_rip register
bf_reg_t_guest_rip = static_cast<bsl::uint64>(152),
bf_reg_t_rip = static_cast<bsl::uint64>(152),
/// @brief defines the guest_rflags register
bf_reg_t_guest_rflags = static_cast<bsl::uint64>(153),
bf_reg_t_rflags = static_cast<bsl::uint64>(153),
/// @brief defines the guest_pending_debug_exceptions register
bf_reg_t_guest_pending_debug_exceptions = static_cast<bsl::uint64>(154),
bf_reg_t_pending_debug_exceptions = static_cast<bsl::uint64>(154),
/// @brief defines the guest_ia32_sysenter_esp register
bf_reg_t_guest_ia32_sysenter_esp = static_cast<bsl::uint64>(155),
bf_reg_t_ia32_sysenter_esp = static_cast<bsl::uint64>(155),
/// @brief defines the guest_ia32_sysenter_eip register
bf_reg_t_guest_ia32_sysenter_eip = static_cast<bsl::uint64>(156),
bf_reg_t_ia32_sysenter_eip = static_cast<bsl::uint64>(156),
/// @brief defines an invalid bf_reg_t
bf_reg_t_invalid = static_cast<bsl::uint64>(BF_MAX_REG_T)
};