From 51496388003adfc06154ce0940861a4a63deda0f Mon Sep 17 00:00:00 2001 From: Rian Quinn Date: Wed, 15 Sep 2021 14:59:50 -0600 Subject: [PATCH] Widen the page fault handler's virtual address contract --- .github/workflows/ccpp.yml | 4 +- cmake/depend/bsl.cmake | 2 +- kernel/src/dispatch_esr_page_fault.hpp | 14 +- kernel/src/ext_t.hpp | 8 +- kernel/src/x64/intel/vs_t.hpp | 296 ++++++++++++------------- lib/mocks/basic_page_pool_t.hpp | 4 +- lib/src/basic_page_pool_t.hpp | 4 +- lib/src/basic_root_page_table_t.hpp | 8 +- lib/src/basic_spinlock_t.hpp | 4 +- syscall/include/x64/intel/bf_reg_t.hpp | 170 +++++++------- 10 files changed, 266 insertions(+), 248 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index cb237ad0..d5ab4e0e 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -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/ diff --git a/cmake/depend/bsl.cmake b/cmake/depend/bsl.cmake index f2bb8b3e..22995d01 100644 --- a/cmake/depend/bsl.cmake +++ b/cmake/depend/bsl.cmake @@ -22,7 +22,7 @@ FetchContent_Declare( bsl GIT_REPOSITORY https://github.com/bareflank/bsl.git - GIT_TAG e91073c9f0b9831caeb5b65cddce553b3a8c3047 + GIT_TAG 1874ee51007ecf49537215899bce7afb5a3d7227 ) FetchContent_GetProperties(bsl) diff --git a/kernel/src/dispatch_esr_page_fault.hpp b/kernel/src/dispatch_esr_page_fault.hpp index ae72d8f1..c6e9ca5a 100644 --- a/kernel/src/dispatch_esr_page_fault.hpp +++ b/kernel/src/dispatch_esr_page_fault.hpp @@ -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); } } diff --git a/kernel/src/ext_t.hpp b/kernel/src/ext_t.hpp index 8bf4ab53..ba3b3662 100644 --- a/kernel/src/ext_t.hpp +++ b/kernel/src/ext_t.hpp @@ -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 diff --git a/kernel/src/x64/intel/vs_t.hpp b/kernel/src/x64/intel/vs_t.hpp index a932cad0..3b714f40 100644 --- a/kernel/src/x64/intel/vs_t.hpp +++ b/kernel/src/x64/intel/vs_t.hpp @@ -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)); diff --git a/lib/mocks/basic_page_pool_t.hpp b/lib/mocks/basic_page_pool_t.hpp index d3e33f6f..7effa775 100644 --- a/lib/mocks/basic_page_pool_t.hpp +++ b/lib/mocks/basic_page_pool_t.hpp @@ -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 diff --git a/lib/src/basic_page_pool_t.hpp b/lib/src/basic_page_pool_t.hpp index aeece72f..eaa76604 100644 --- a/lib/src/basic_page_pool_t.hpp +++ b/lib/src/basic_page_pool_t.hpp @@ -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 diff --git a/lib/src/basic_root_page_table_t.hpp b/lib/src/basic_root_page_table_t.hpp index 532c9209..ec1fe741 100644 --- a/lib/src/basic_root_page_table_t.hpp +++ b/lib/src/basic_root_page_table_t.hpp @@ -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 diff --git a/lib/src/basic_spinlock_t.hpp b/lib/src/basic_spinlock_t.hpp index c80ab4a3..8af7da76 100644 --- a/lib/src/basic_spinlock_t.hpp +++ b/lib/src/basic_spinlock_t.hpp @@ -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 diff --git a/syscall/include/x64/intel/bf_reg_t.hpp b/syscall/include/x64/intel/bf_reg_t.hpp index 03ca7ccf..757d940f 100644 --- a/syscall/include/x64/intel/bf_reg_t.hpp +++ b/syscall/include/x64/intel/bf_reg_t.hpp @@ -70,20 +70,20 @@ namespace syscall bf_reg_t_r14 = static_cast(14), /// @brief defines the r15 register bf_reg_t_r15 = static_cast(15), - /// @brief defines the bf_reg_t_guest_cr2 register - bf_reg_t_guest_cr2 = static_cast(16), - /// @brief defines the bf_reg_t_guest_dr6 register - bf_reg_t_guest_dr6 = static_cast(17), - /// @brief defines the bf_reg_t_guest_ia32_star register - bf_reg_t_guest_ia32_star = static_cast(18), - /// @brief defines the bf_reg_t_guest_ia32_lstar register - bf_reg_t_guest_ia32_lstar = static_cast(19), - /// @brief defines the bf_reg_t_guest_ia32_cstar register - bf_reg_t_guest_ia32_cstar = static_cast(20), - /// @brief defines the bf_reg_t_guest_ia32_fmask register - bf_reg_t_guest_ia32_fmask = static_cast(21), - /// @brief defines the bf_reg_t_guest_ia32_kernel_gs_base register - bf_reg_t_guest_ia32_kernel_gs_base = static_cast(22), + /// @brief defines the bf_reg_t_cr2 register + bf_reg_t_cr2 = static_cast(16), + /// @brief defines the bf_reg_t_dr6 register + bf_reg_t_dr6 = static_cast(17), + /// @brief defines the bf_reg_t_ia32_star register + bf_reg_t_ia32_star = static_cast(18), + /// @brief defines the bf_reg_t_ia32_lstar register + bf_reg_t_ia32_lstar = static_cast(19), + /// @brief defines the bf_reg_t_ia32_cstar register + bf_reg_t_ia32_cstar = static_cast(20), + /// @brief defines the bf_reg_t_ia32_fmask register + bf_reg_t_ia32_fmask = static_cast(21), + /// @brief defines the bf_reg_t_ia32_kernel_gs_base register + bf_reg_t_ia32_kernel_gs_base = static_cast(22), /// @brief defines the virtual_processor_identifier register bf_reg_t_virtual_processor_identifier = static_cast(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(25), /// @brief defines the guest_es_selector register - bf_reg_t_guest_es_selector = static_cast(26), + bf_reg_t_es_selector = static_cast(26), /// @brief defines the guest_cs_selector register - bf_reg_t_guest_cs_selector = static_cast(27), + bf_reg_t_cs_selector = static_cast(27), /// @brief defines the guest_ss_selector register - bf_reg_t_guest_ss_selector = static_cast(28), + bf_reg_t_ss_selector = static_cast(28), /// @brief defines the guest_ds_selector register - bf_reg_t_guest_ds_selector = static_cast(29), + bf_reg_t_ds_selector = static_cast(29), /// @brief defines the guest_fs_selector register - bf_reg_t_guest_fs_selector = static_cast(30), + bf_reg_t_fs_selector = static_cast(30), /// @brief defines the guest_gs_selector register - bf_reg_t_guest_gs_selector = static_cast(31), + bf_reg_t_gs_selector = static_cast(31), /// @brief defines the guest_ldtr_selector register - bf_reg_t_guest_ldtr_selector = static_cast(32), + bf_reg_t_ldtr_selector = static_cast(32), /// @brief defines the guest_tr_selector register - bf_reg_t_guest_tr_selector = static_cast(33), + bf_reg_t_tr_selector = static_cast(33), /// @brief defines the guest_interrupt_status register - bf_reg_t_guest_interrupt_status = static_cast(34), + bf_reg_t_interrupt_status = static_cast(34), /// @brief defines the pml_index register bf_reg_t_pml_index = static_cast(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(61), /// @brief defines the guest_physical_address register - bf_reg_t_guest_physical_address = static_cast(62), + bf_reg_t_physical_address = static_cast(62), /// @brief defines the vmcs_link_pointer register bf_reg_t_vmcs_link_pointer = static_cast(63), /// @brief defines the guest_ia32_debugctl register - bf_reg_t_guest_ia32_debugctl = static_cast(64), + bf_reg_t_ia32_debugctl = static_cast(64), /// @brief defines the guest_ia32_pat register - bf_reg_t_guest_ia32_pat = static_cast(65), + bf_reg_t_ia32_pat = static_cast(65), /// @brief defines the guest_ia32_efer register - bf_reg_t_guest_ia32_efer = static_cast(66), + bf_reg_t_ia32_efer = static_cast(66), /// @brief defines the guest_ia32_perf_global_ctrl register - bf_reg_t_guest_ia32_perf_global_ctrl = static_cast(67), + bf_reg_t_ia32_perf_global_ctrl = static_cast(67), /// @brief defines the guest_pdpte0 register - bf_reg_t_guest_pdpte0 = static_cast(68), + bf_reg_t_pdpte0 = static_cast(68), /// @brief defines the guest_pdpte1 register - bf_reg_t_guest_pdpte1 = static_cast(69), + bf_reg_t_pdpte1 = static_cast(69), /// @brief defines the guest_pdpte2 register - bf_reg_t_guest_pdpte2 = static_cast(70), + bf_reg_t_pdpte2 = static_cast(70), /// @brief defines the guest_pdpte3 register - bf_reg_t_guest_pdpte3 = static_cast(71), + bf_reg_t_pdpte3 = static_cast(71), /// @brief defines the guest_ia32_bndcfgs register - bf_reg_t_guest_ia32_bndcfgs = static_cast(72), + bf_reg_t_ia32_bndcfgs = static_cast(72), /// @brief defines the guest_rtit_ctl register - bf_reg_t_guest_rtit_ctl = static_cast(73), + bf_reg_t_rtit_ctl = static_cast(73), /// @brief defines the pin_based_vm_execution_ctls register bf_reg_t_pin_based_vm_execution_ctls = static_cast(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(99), /// @brief defines the guest_es_limit register - bf_reg_t_guest_es_limit = static_cast(100), + bf_reg_t_es_limit = static_cast(100), /// @brief defines the guest_cs_limit register - bf_reg_t_guest_cs_limit = static_cast(101), + bf_reg_t_cs_limit = static_cast(101), /// @brief defines the guest_ss_limit register - bf_reg_t_guest_ss_limit = static_cast(102), + bf_reg_t_ss_limit = static_cast(102), /// @brief defines the guest_ds_limit register - bf_reg_t_guest_ds_limit = static_cast(103), + bf_reg_t_ds_limit = static_cast(103), /// @brief defines the guest_fs_limit register - bf_reg_t_guest_fs_limit = static_cast(104), + bf_reg_t_fs_limit = static_cast(104), /// @brief defines the guest_gs_limit register - bf_reg_t_guest_gs_limit = static_cast(105), + bf_reg_t_gs_limit = static_cast(105), /// @brief defines the guest_ldtr_limit register - bf_reg_t_guest_ldtr_limit = static_cast(106), + bf_reg_t_ldtr_limit = static_cast(106), /// @brief defines the guest_tr_limit register - bf_reg_t_guest_tr_limit = static_cast(107), + bf_reg_t_tr_limit = static_cast(107), /// @brief defines the guest_gdtr_limit register - bf_reg_t_guest_gdtr_limit = static_cast(108), + bf_reg_t_gdtr_limit = static_cast(108), /// @brief defines the guest_idtr_limit register // NOLINTNEXTLINE(bsl-identifier-typographically-unambiguous) - bf_reg_t_guest_idtr_limit = static_cast(109), - /// @brief defines the guest_es_access_rights register - bf_reg_t_guest_es_access_rights = static_cast(110), - /// @brief defines the guest_cs_access_rights register - bf_reg_t_guest_cs_access_rights = static_cast(111), - /// @brief defines the guest_ss_access_rights register - bf_reg_t_guest_ss_access_rights = static_cast(112), - /// @brief defines the guest_ds_access_rights register - bf_reg_t_guest_ds_access_rights = static_cast(113), - /// @brief defines the guest_fs_access_rights register - bf_reg_t_guest_fs_access_rights = static_cast(114), - /// @brief defines the guest_gs_access_rights register - bf_reg_t_guest_gs_access_rights = static_cast(115), - /// @brief defines the guest_ldtr_access_rights register - bf_reg_t_guest_ldtr_access_rights = static_cast(116), - /// @brief defines the guest_tr_access_rights register - bf_reg_t_guest_tr_access_rights = static_cast(117), + bf_reg_t_idtr_limit = static_cast(109), + /// @brief defines the guest_es_attrib register + bf_reg_t_es_attrib = static_cast(110), + /// @brief defines the guest_cs_attrib register + bf_reg_t_cs_attrib = static_cast(111), + /// @brief defines the guest_ss_attrib register + bf_reg_t_ss_attrib = static_cast(112), + /// @brief defines the guest_ds_attrib register + bf_reg_t_ds_attrib = static_cast(113), + /// @brief defines the guest_fs_attrib register + bf_reg_t_fs_attrib = static_cast(114), + /// @brief defines the guest_gs_attrib register + bf_reg_t_gs_attrib = static_cast(115), + /// @brief defines the guest_ldtr_attrib register + bf_reg_t_ldtr_attrib = static_cast(116), + /// @brief defines the guest_tr_attrib register + bf_reg_t_tr_attrib = static_cast(117), /// @brief defines the guest_interruptibility_state register - bf_reg_t_guest_interruptibility_state = static_cast(118), + bf_reg_t_interruptibility_state = static_cast(118), /// @brief defines the guest_activity_state register - bf_reg_t_guest_activity_state = static_cast(119), + bf_reg_t_activity_state = static_cast(119), /// @brief defines the guest_smbase register - bf_reg_t_guest_smbase = static_cast(120), + bf_reg_t_smbase = static_cast(120), /// @brief defines the guest_ia32_sysenter_cs register - bf_reg_t_guest_ia32_sysenter_cs = static_cast(121), + bf_reg_t_ia32_sysenter_cs = static_cast(121), /// @brief defines the vmx_preemption_timer_value register bf_reg_t_vmx_preemption_timer_value = static_cast(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(135), /// @brief defines the guest_linear_address register - bf_reg_t_guest_linear_address = static_cast(136), + bf_reg_t_linear_address = static_cast(136), /// @brief defines the guest_cr0 register - bf_reg_t_guest_cr0 = static_cast(137), + bf_reg_t_cr0 = static_cast(137), /// @brief defines the guest_cr3 register - bf_reg_t_guest_cr3 = static_cast(138), + bf_reg_t_cr3 = static_cast(138), /// @brief defines the guest_cr4 register - bf_reg_t_guest_cr4 = static_cast(139), + bf_reg_t_cr4 = static_cast(139), /// @brief defines the guest_es_base register - bf_reg_t_guest_es_base = static_cast(140), + bf_reg_t_es_base = static_cast(140), /// @brief defines the guest_cs_base register - bf_reg_t_guest_cs_base = static_cast(141), + bf_reg_t_cs_base = static_cast(141), /// @brief defines the guest_ss_base register - bf_reg_t_guest_ss_base = static_cast(142), + bf_reg_t_ss_base = static_cast(142), /// @brief defines the guest_ds_base register - bf_reg_t_guest_ds_base = static_cast(143), + bf_reg_t_ds_base = static_cast(143), /// @brief defines the guest_fs_base register - bf_reg_t_guest_fs_base = static_cast(144), + bf_reg_t_fs_base = static_cast(144), /// @brief defines the guest_gs_base register - bf_reg_t_guest_gs_base = static_cast(145), + bf_reg_t_gs_base = static_cast(145), /// @brief defines the guest_ldtr_base register - bf_reg_t_guest_ldtr_base = static_cast(146), + bf_reg_t_ldtr_base = static_cast(146), /// @brief defines the guest_tr_base register - bf_reg_t_guest_tr_base = static_cast(147), + bf_reg_t_tr_base = static_cast(147), /// @brief defines the guest_gdtr_base register - bf_reg_t_guest_gdtr_base = static_cast(148), + bf_reg_t_gdtr_base = static_cast(148), /// @brief defines the guest_idtr_base register // NOLINTNEXTLINE(bsl-identifier-typographically-unambiguous) - bf_reg_t_guest_idtr_base = static_cast(149), + bf_reg_t_idtr_base = static_cast(149), /// @brief defines the guest_dr7 register - bf_reg_t_guest_dr7 = static_cast(150), + bf_reg_t_dr7 = static_cast(150), /// @brief defines the guest_rsp register - bf_reg_t_guest_rsp = static_cast(151), + bf_reg_t_rsp = static_cast(151), /// @brief defines the guest_rip register - bf_reg_t_guest_rip = static_cast(152), + bf_reg_t_rip = static_cast(152), /// @brief defines the guest_rflags register - bf_reg_t_guest_rflags = static_cast(153), + bf_reg_t_rflags = static_cast(153), /// @brief defines the guest_pending_debug_exceptions register - bf_reg_t_guest_pending_debug_exceptions = static_cast(154), + bf_reg_t_pending_debug_exceptions = static_cast(154), /// @brief defines the guest_ia32_sysenter_esp register - bf_reg_t_guest_ia32_sysenter_esp = static_cast(155), + bf_reg_t_ia32_sysenter_esp = static_cast(155), /// @brief defines the guest_ia32_sysenter_eip register - bf_reg_t_guest_ia32_sysenter_eip = static_cast(156), + bf_reg_t_ia32_sysenter_eip = static_cast(156), /// @brief defines an invalid bf_reg_t bf_reg_t_invalid = static_cast(BF_MAX_REG_T) };