68 static std::map<uint64_t, const char *> vm_instruction_error_codes
71 {1U,
"VMCALL executed in VMX root operation"},
72 {2U,
"VMCLEAR with invalid physical address"},
73 {3U,
"VMCLEAR with VMXON pointer"},
74 {4U,
"VMLAUNCH with non-clear VMCS"},
75 {5U,
"VMRESUME with non-launched VMCS"},
76 {6U,
"VMRESUME after VMXOFF (VMXOFF AND VMXON between VMLAUNCH and VMRESUME)"},
77 {7U,
"VM entry with invalid control field(s)"},
78 {8U,
"VM entry with invalid host-state field(s)"},
79 {9U,
"VMPTRLD with invalid physical address"},
80 {10U,
"VMPTRLD with VMXON pointer"},
81 {11U,
"VMPTRLD with incorrect VMCS revision identifier"},
82 {12U,
"VMREAD/VMWRITE from/to unsupported VMCS component"},
83 {13U,
"VMWRITE to read-only VMCS component"},
84 {15U,
"VMXON executed in VMX root operation"},
85 {16U,
"VM entry with invalid executive-VMCS pointer"},
86 {17U,
"VM entry with non-launched executive VMCS"},
88 18U,
"VM entry with executive-VMCS pointer not VMXON pointer " 89 "(when attempting to deactivate the dual-monitor treatment of SMIs and SMM)" 92 19U,
"VMCALL with non-clear VMCS (when attempting to activate" 93 " the dual-monitor treatment of SMIs and SMM)" 95 {20U,
"VMCALL with invalid VM-exit control fields"},
97 22U,
"VMCALL with incorrect MSEG revision identifier (when attempting " 98 "to activate the dual-monitor treatment of SMIs and SMM)" 100 {23U,
"VMXOFF under dual-monitor treatment of SMIs and SMM"},
102 24U,
"VMCALL with invalid SMM-monitor features (when attempting to " 103 "activate the dual-monitor treatment of SMIs and SMM)" 106 25U,
"VM entry with invalid VM-execution control fields in executive" 107 " VMCS (when attempting to return from SMM)" 109 {26U,
"VM entry with events blocked by MOV SS"},
110 {28U,
"Invalid operand to INVEPT/INVVPID"},
111 {29U,
"Unknown VM-instruction error"}
115 static std::map<uint64_t, std::string> exit_reasons
178 {0x0000BEEF,
"unknown"_s}
183 vmcs_promote_fail(
bool state_save)
197 setup_check_all_paths(std::vector<struct control_flow_path> &cfg)
199 std::vector<struct control_flow_path> sub_cfg;
205 path.
setup = [sub_cfg]
207 for (
const auto &sub_path : sub_cfg)
215 setup_launch_success_msrs()
321 vmcs_ut::test_launch_success()
323 MockRepository mocks;
328 setup_vmcs_intrinsics(mocks, mm);
329 setup_vmcs_x64_state_intrinsics(mocks, host_state);
330 setup_vmcs_x64_state_intrinsics(mocks, guest_state);
331 setup_launch_success_msrs();
342 vmcs_ut::test_launch_vmlaunch_failure()
344 MockRepository mocks;
349 setup_vmcs_intrinsics(mocks, mm);
350 setup_vmcs_x64_state_intrinsics(mocks, host_state);
351 setup_vmcs_x64_state_intrinsics(mocks, guest_state);
354 mocks.OnCallFunc(
__vmwrite).Return(
true);
355 Call &launch_call = mocks.ExpectCallFunc(
vmcs_launch);
361 std::vector<struct control_flow_path> cfg;
363 setup_check_all_paths(cfg);
365 for (
const auto &sub_path : cfg)
373 vmcs_ut::test_launch_vmlaunch_demote_failure()
375 MockRepository mocks;
380 setup_vmcs_intrinsics(mocks, mm);
381 setup_vmcs_x64_state_intrinsics(mocks, host_state);
382 setup_vmcs_x64_state_intrinsics(mocks, guest_state);
384 mocks.OnCallFunc(
__vmwrite).Return(
true);
391 std::vector<struct control_flow_path> cfg;
393 setup_check_all_paths(cfg);
395 for (
const auto &sub_path : cfg)
403 vmcs_ut::test_launch_create_vmcs_region_failure()
405 MockRepository mocks;
410 setup_vmcs_intrinsics(mocks, mm);
411 setup_vmcs_x64_state_intrinsics(mocks, host_state);
412 setup_vmcs_x64_state_intrinsics(mocks, guest_state);
414 auto ___ = gsl::finally([&]
427 vmcs_ut::test_launch_create_exit_handler_stack_failure()
429 MockRepository mocks;
434 setup_vmcs_intrinsics(mocks, mm);
440 auto ___ = gsl::finally([&]
450 vmcs_ut::test_launch_clear_failure()
452 MockRepository mocks;
457 setup_vmcs_intrinsics(mocks, mm);
463 auto ___ = gsl::finally([&]
472 vmcs_ut::test_launch_load_failure()
474 MockRepository mocks;
479 setup_vmcs_intrinsics(mocks, mm);
485 auto ___ = gsl::finally([&]
494 vmcs_ut::test_promote_failure()
496 MockRepository mocks;
508 vmcs_ut::test_resume_failure()
510 MockRepository mocks;
511 mocks.OnCallFunc(
vmcs_resume).Do(vmcs_resume_fail);
521 vmcs_ut::test_get_vmcs_field()
523 constexpr
const auto name =
"field";
533 vmcs_ut::test_get_vmcs_field_if_exists()
535 constexpr
const auto name =
"field";
539 g_vmcs_fields[0U] = 42U;
546 vmcs_ut::test_set_vmcs_field()
548 constexpr
const auto name(
"field");
550 g_vmcs_fields[0U] = 0U;
560 vmcs_ut::test_set_vmcs_field_if_exists()
562 constexpr
const auto name(
"field");
565 g_vmcs_fields[0U] = 42U;
581 vmcs_ut::test_set_vm_control()
583 constexpr
const auto name =
"control";
585 auto mask = 0x0000000000000040UL;
586 auto ctls_addr = 0UL;
607 vmcs_ut::test_set_vm_control_if_allowed()
609 constexpr
const auto name =
"control";
612 auto mask = 0x0000000000000040UL;
613 auto ctls_addr = 0UL;
618 g_vmcs_fields[ctls_addr] =
mask;
636 vmcs_ut::test_set_vm_function_control()
638 constexpr
const auto name =
"control";
640 auto mask = 0x0000000000000040UL;
641 auto ctls_addr = 0UL;
655 vmcs_ut::test_set_vm_function_control_if_allowed()
657 constexpr
const auto name =
"control";
660 auto mask = 0x0000000000000040UL;
661 auto ctls_addr = 0UL;
675 vmcs_ut::test_vmcs_vm_instruction_error_description()
677 using namespace vmcs::vm_instruction_error;
686 vmcs_ut::test_vmcs_vm_instruction_error_description_if_exists()
688 using namespace vmcs::vm_instruction_error;
699 vmcs_ut::test_vmcs_exit_reason_basic_exit_reason_description()
701 using namespace vmcs::exit_reason;
710 vmcs_ut::test_vmcs_exit_reason_basic_exit_reason_description_if_exists()
712 using namespace vmcs::exit_reason;
723 vmcs_ut::test_vmcs_virtual_processor_identifier()
730 this->
expect_true(vmcs::virtual_processor_identifier::get() == 100UL);
738 this->
expect_exception([&] { vmcs::virtual_processor_identifier::get(); },
""_ut_lee);
743 this->
expect_true(vmcs::virtual_processor_identifier::get() == 200UL);
747 vmcs_ut::test_vmcs_posted_interrupt_notification_vector()
753 this->
expect_true(vmcs::posted_interrupt_notification_vector::get() == 100UL);
763 vmcs_ut::test_vmcs_eptp_index()
770 this->
expect_true(vmcs::eptp_index::get() == 100UL);
783 this->
expect_true(vmcs::eptp_index::get() == 200UL);
787 vmcs_ut::test_vmcs_guest_es_selector()
790 this->
expect_true(vmcs::guest_es_selector::get() == 100UL);
798 vmcs_ut::test_vmcs_guest_es_selector_rpl()
801 this->
expect_true(vmcs::guest_es_selector::rpl::get() == 1UL);
804 this->
expect_true(vmcs::guest_es_selector::rpl::get() == 0UL);
814 vmcs_ut::test_vmcs_guest_es_selector_ti()
817 this->
expect_true(vmcs::guest_es_selector::ti::get());
830 vmcs_ut::test_vmcs_guest_es_selector_index()
833 this->
expect_true(vmcs::guest_es_selector::index::get() == 1UL);
836 this->
expect_true(vmcs::guest_es_selector::index::get() == 0UL);
846 vmcs_ut::test_vmcs_guest_cs_selector()
850 this->
expect_true(vmcs::guest_cs_selector::get() == 100UL);
858 vmcs_ut::test_vmcs_guest_cs_selector_rpl()
861 this->
expect_true(vmcs::guest_cs_selector::rpl::get() == 1UL);
864 this->
expect_true(vmcs::guest_cs_selector::rpl::get() == 0UL);
874 vmcs_ut::test_vmcs_guest_cs_selector_ti()
877 this->
expect_true(vmcs::guest_cs_selector::ti::get());
890 vmcs_ut::test_vmcs_guest_cs_selector_index()
893 this->
expect_true(vmcs::guest_cs_selector::index::get() == 1UL);
896 this->
expect_true(vmcs::guest_cs_selector::index::get() == 0UL);
906 vmcs_ut::test_vmcs_guest_ss_selector()
910 this->
expect_true(vmcs::guest_ss_selector::get() == 100UL);
918 vmcs_ut::test_vmcs_guest_ss_selector_rpl()
921 this->
expect_true(vmcs::guest_ss_selector::rpl::get() == 1UL);
924 this->
expect_true(vmcs::guest_ss_selector::rpl::get() == 0UL);
934 vmcs_ut::test_vmcs_guest_ss_selector_ti()
937 this->
expect_true(vmcs::guest_ss_selector::ti::get());
950 vmcs_ut::test_vmcs_guest_ss_selector_index()
953 this->
expect_true(vmcs::guest_ss_selector::index::get() == 1UL);
956 this->
expect_true(vmcs::guest_ss_selector::index::get() == 0UL);
966 vmcs_ut::test_vmcs_guest_ds_selector()
970 this->
expect_true(vmcs::guest_ds_selector::get() == 100UL);
978 vmcs_ut::test_vmcs_guest_ds_selector_rpl()
981 this->
expect_true(vmcs::guest_ds_selector::rpl::get() == 1UL);
984 this->
expect_true(vmcs::guest_ds_selector::rpl::get() == 0UL);
994 vmcs_ut::test_vmcs_guest_ds_selector_ti()
997 this->
expect_true(vmcs::guest_ds_selector::ti::get());
1000 this->
expect_false(vmcs::guest_ds_selector::ti::get());
1010 vmcs_ut::test_vmcs_guest_ds_selector_index()
1013 this->
expect_true(vmcs::guest_ds_selector::index::get() == 1UL);
1016 this->
expect_true(vmcs::guest_ds_selector::index::get() == 0UL);
1026 vmcs_ut::test_vmcs_guest_fs_selector()
1030 this->
expect_true(vmcs::guest_fs_selector::get() == 100UL);
1038 vmcs_ut::test_vmcs_guest_fs_selector_rpl()
1041 this->
expect_true(vmcs::guest_fs_selector::rpl::get() == 1UL);
1044 this->
expect_true(vmcs::guest_fs_selector::rpl::get() == 0UL);
1054 vmcs_ut::test_vmcs_guest_fs_selector_ti()
1057 this->
expect_true(vmcs::guest_fs_selector::ti::get());
1060 this->
expect_false(vmcs::guest_fs_selector::ti::get());
1070 vmcs_ut::test_vmcs_guest_fs_selector_index()
1073 this->
expect_true(vmcs::guest_fs_selector::index::get() == 1UL);
1076 this->
expect_true(vmcs::guest_fs_selector::index::get() == 0UL);
1086 vmcs_ut::test_vmcs_guest_gs_selector()
1090 this->
expect_true(vmcs::guest_gs_selector::get() == 100UL);
1098 vmcs_ut::test_vmcs_guest_gs_selector_rpl()
1101 this->
expect_true(vmcs::guest_gs_selector::rpl::get() == 1UL);
1104 this->
expect_true(vmcs::guest_gs_selector::rpl::get() == 0UL);
1114 vmcs_ut::test_vmcs_guest_gs_selector_ti()
1117 this->
expect_true(vmcs::guest_gs_selector::ti::get());
1120 this->
expect_false(vmcs::guest_gs_selector::ti::get());
1130 vmcs_ut::test_vmcs_guest_gs_selector_index()
1133 this->
expect_true(vmcs::guest_gs_selector::index::get() == 1UL);
1136 this->
expect_true(vmcs::guest_gs_selector::index::get() == 0UL);
1146 vmcs_ut::test_vmcs_guest_ldtr_selector()
1150 this->
expect_true(vmcs::guest_ldtr_selector::get() == 100UL);
1158 vmcs_ut::test_vmcs_guest_ldtr_selector_rpl()
1161 this->
expect_true(vmcs::guest_ldtr_selector::rpl::get() == 1UL);
1164 this->
expect_true(vmcs::guest_ldtr_selector::rpl::get() == 0UL);
1174 vmcs_ut::test_vmcs_guest_ldtr_selector_ti()
1177 this->
expect_true(vmcs::guest_ldtr_selector::ti::get());
1180 this->
expect_false(vmcs::guest_ldtr_selector::ti::get());
1190 vmcs_ut::test_vmcs_guest_ldtr_selector_index()
1193 this->
expect_true(vmcs::guest_ldtr_selector::index::get() == 1UL);
1196 this->
expect_true(vmcs::guest_ldtr_selector::index::get() == 0UL);
1206 vmcs_ut::test_vmcs_guest_tr_selector()
1210 this->
expect_true(vmcs::guest_tr_selector::get() == 100UL);
1218 vmcs_ut::test_vmcs_guest_tr_selector_rpl()
1221 this->
expect_true(vmcs::guest_tr_selector::rpl::get() == 1UL);
1224 this->
expect_true(vmcs::guest_tr_selector::rpl::get() == 0UL);
1234 vmcs_ut::test_vmcs_guest_tr_selector_ti()
1237 this->
expect_true(vmcs::guest_tr_selector::ti::get());
1240 this->
expect_false(vmcs::guest_tr_selector::ti::get());
1250 vmcs_ut::test_vmcs_guest_tr_selector_index()
1253 this->
expect_true(vmcs::guest_tr_selector::index::get() == 1UL);
1256 this->
expect_true(vmcs::guest_tr_selector::index::get() == 0UL);
1266 vmcs_ut::test_vmcs_guest_interrupt_status()
1274 this->
expect_true(vmcs::guest_interrupt_status::get() == 100UL);
1282 this->
expect_exception([&] { vmcs::guest_interrupt_status::get(); },
""_ut_lee);
1287 this->
expect_true(vmcs::guest_interrupt_status::get() == 200UL);
1291 vmcs_ut::test_vmcs_host_es_selector()
1295 this->
expect_true(vmcs::host_es_selector::get() == 100UL);
1304 vmcs_ut::test_vmcs_host_es_selector_rpl()
1307 this->
expect_true(vmcs::host_es_selector::rpl::get() == 1UL);
1310 this->
expect_true(vmcs::host_es_selector::rpl::get() == 0UL);
1320 vmcs_ut::test_vmcs_host_es_selector_ti()
1323 this->
expect_true(vmcs::host_es_selector::ti::get());
1336 vmcs_ut::test_vmcs_host_es_selector_index()
1339 this->
expect_true(vmcs::host_es_selector::index::get() == 1UL);
1342 this->
expect_true(vmcs::host_es_selector::index::get() == 0UL);
1352 vmcs_ut::test_vmcs_host_cs_selector()
1356 this->
expect_true(vmcs::host_cs_selector::get() == 100UL);
1365 vmcs_ut::test_vmcs_host_cs_selector_rpl()
1368 this->
expect_true(vmcs::host_cs_selector::rpl::get() == 1UL);
1371 this->
expect_true(vmcs::host_cs_selector::rpl::get() == 0UL);
1381 vmcs_ut::test_vmcs_host_cs_selector_ti()
1384 this->
expect_true(vmcs::host_cs_selector::ti::get());
1397 vmcs_ut::test_vmcs_host_cs_selector_index()
1400 this->
expect_true(vmcs::host_cs_selector::index::get() == 1UL);
1403 this->
expect_true(vmcs::host_cs_selector::index::get() == 0UL);
1413 vmcs_ut::test_vmcs_host_ss_selector()
1417 this->
expect_true(vmcs::host_ss_selector::get() == 100UL);
1426 vmcs_ut::test_vmcs_host_ss_selector_rpl()
1429 this->
expect_true(vmcs::host_ss_selector::rpl::get() == 1UL);
1432 this->
expect_true(vmcs::host_ss_selector::rpl::get() == 0UL);
1442 vmcs_ut::test_vmcs_host_ss_selector_ti()
1445 this->
expect_true(vmcs::host_ss_selector::ti::get());
1458 vmcs_ut::test_vmcs_host_ss_selector_index()
1461 this->
expect_true(vmcs::host_ss_selector::index::get() == 1UL);
1464 this->
expect_true(vmcs::host_ss_selector::index::get() == 0UL);
1474 vmcs_ut::test_vmcs_host_ds_selector()
1478 this->
expect_true(vmcs::host_ds_selector::get() == 100UL);
1487 vmcs_ut::test_vmcs_host_ds_selector_rpl()
1490 this->
expect_true(vmcs::host_ds_selector::rpl::get() == 1UL);
1493 this->
expect_true(vmcs::host_ds_selector::rpl::get() == 0UL);
1503 vmcs_ut::test_vmcs_host_ds_selector_ti()
1506 this->
expect_true(vmcs::host_ds_selector::ti::get());
1519 vmcs_ut::test_vmcs_host_ds_selector_index()
1522 this->
expect_true(vmcs::host_ds_selector::index::get() == 1UL);
1525 this->
expect_true(vmcs::host_ds_selector::index::get() == 0UL);
1535 vmcs_ut::test_vmcs_host_fs_selector()
1539 this->
expect_true(vmcs::host_fs_selector::get() == 100UL);
1548 vmcs_ut::test_vmcs_host_fs_selector_rpl()
1551 this->
expect_true(vmcs::host_fs_selector::rpl::get() == 1UL);
1554 this->
expect_true(vmcs::host_fs_selector::rpl::get() == 0UL);
1564 vmcs_ut::test_vmcs_host_fs_selector_ti()
1567 this->
expect_true(vmcs::host_fs_selector::ti::get());
1580 vmcs_ut::test_vmcs_host_fs_selector_index()
1583 this->
expect_true(vmcs::host_fs_selector::index::get() == 1UL);
1586 this->
expect_true(vmcs::host_fs_selector::index::get() == 0UL);
1596 vmcs_ut::test_vmcs_host_gs_selector()
1600 this->
expect_true(vmcs::host_gs_selector::get() == 100UL);
1609 vmcs_ut::test_vmcs_host_gs_selector_rpl()
1612 this->
expect_true(vmcs::host_gs_selector::rpl::get() == 1UL);
1615 this->
expect_true(vmcs::host_gs_selector::rpl::get() == 0UL);
1625 vmcs_ut::test_vmcs_host_gs_selector_ti()
1628 this->
expect_true(vmcs::host_gs_selector::ti::get());
1641 vmcs_ut::test_vmcs_host_gs_selector_index()
1644 this->
expect_true(vmcs::host_gs_selector::index::get() == 1UL);
1647 this->
expect_true(vmcs::host_gs_selector::index::get() == 0UL);
1657 vmcs_ut::test_vmcs_host_tr_selector()
1661 this->
expect_true(vmcs::host_tr_selector::get() == 100UL);
1670 vmcs_ut::test_vmcs_host_tr_selector_rpl()
1673 this->
expect_true(vmcs::host_tr_selector::rpl::get() == 1UL);
1676 this->
expect_true(vmcs::host_tr_selector::rpl::get() == 0UL);
1686 vmcs_ut::test_vmcs_host_tr_selector_ti()
1689 this->
expect_true(vmcs::host_tr_selector::ti::get());
1702 vmcs_ut::test_vmcs_host_tr_selector_index()
1705 this->
expect_true(vmcs::host_tr_selector::index::get() == 1UL);
1708 this->
expect_true(vmcs::host_tr_selector::index::get() == 0UL);
1718 vmcs_ut::test_vmcs_address_of_io_bitmap_a()
1723 this->
expect_true(vmcs::address_of_io_bitmap_a::get() == 1UL);
1730 vmcs_ut::test_vmcs_address_of_io_bitmap_b()
1735 this->
expect_true(vmcs::address_of_io_bitmap_b::get() == 1UL);
1742 vmcs_ut::test_vmcs_address_of_msr_bitmap()
1748 this->
expect_true(vmcs::address_of_msr_bitmap::get() == 1UL);
1755 vmcs_ut::test_vmcs_vm_exit_msr_store_address()
1760 this->
expect_true(vmcs::vm_exit_msr_store_address::get() == 1UL);
1767 vmcs_ut::test_vmcs_vm_exit_msr_load_address()
1772 this->
expect_true(vmcs::vm_exit_msr_load_address::get() == 1UL);
1779 vmcs_ut::test_vmcs_vm_entry_msr_load_address()
1784 this->
expect_true(vmcs::vm_entry_msr_load_address::get() == 1UL);
1791 vmcs_ut::test_vmcs_executive_vmcs_pointer()
1796 this->
expect_true(vmcs::executive_vmcs_pointer::get() == 1UL);
1803 vmcs_ut::test_vmcs_pml_address()
1810 this->
expect_true(vmcs::pml_address::get() == 1UL);
1827 vmcs_ut::test_vmcs_tsc_offset()
1832 this->
expect_true(vmcs::tsc_offset::get() == 1UL);
1839 vmcs_ut::test_vmcs_virtual_apic_address()
1845 this->
expect_true(vmcs::virtual_apic_address::get() == 1UL);
1852 vmcs_ut::test_vmcs_apic_access_address()
1859 this->
expect_true(vmcs::apic_access_address::get() == 1UL);
1868 this->
expect_exception([&] { vmcs::apic_access_address::get(); },
""_ut_lee);
1876 vmcs_ut::test_vmcs_posted_interrupt_descriptor_address()
1882 this->
expect_true(vmcs::posted_interrupt_descriptor_address::get() == 1UL);
1889 vmcs_ut::test_vmcs_vm_function_controls()
1896 this->
expect_true(vmcs::vm_function_controls::get() == 1UL);
1905 this->
expect_exception([&] { vmcs::vm_function_controls::get(); },
""_ut_lee);
1913 vmcs_ut::test_vmcs_vm_function_controls_eptp_switching()
1933 vmcs_ut::test_vmcs_vm_function_controls_reserved()
1939 this->
expect_true(vmcs::vm_function_controls::reserved::get() == 0xEU);
1946 vmcs_ut::test_vmcs_ept_pointer()
1953 this->
expect_true(vmcs::ept_pointer::get() == 1UL);
1970 vmcs_ut::test_vmcs_ept_pointer_memory_type()
1983 this->
expect_exception([&] { vmcs::ept_pointer::memory_type::get(); },
""_ut_lee);
1990 vmcs_ut::test_vmcs_ept_pointer_page_walk_length_minus_one()
1996 this->
expect_true(vmcs::ept_pointer::page_walk_length_minus_one::get() == 2UL);
2003 this->
expect_exception([&] { vmcs::ept_pointer::page_walk_length_minus_one::get(); },
""_ut_lee);
2010 vmcs_ut::test_vmcs_ept_pointer_accessed_and_dirty_flags()
2029 vmcs_ut::test_vmcs_ept_pointer_phys_addr()
2035 this->
expect_true(vmcs::ept_pointer::phys_addr::get() == 0x0000ABCDEF123000UL);
2042 vmcs_ut::test_vmcs_ept_pointer_reserved()
2048 this->
expect_true(vmcs::ept_pointer::reserved::get() == 0x80U);
2055 vmcs_ut::test_vmcs_eoi_exit_bitmap_0()
2062 this->
expect_true(vmcs::eoi_exit_bitmap_0::get() == 1UL);
2071 this->
expect_exception([&] { vmcs::eoi_exit_bitmap_0::get(); },
""_ut_lee);
2079 vmcs_ut::test_vmcs_eoi_exit_bitmap_1()
2086 this->
expect_true(vmcs::eoi_exit_bitmap_1::get() == 1UL);
2095 this->
expect_exception([&] { vmcs::eoi_exit_bitmap_1::get(); },
""_ut_lee);
2103 vmcs_ut::test_vmcs_eoi_exit_bitmap_2()
2110 this->
expect_true(vmcs::eoi_exit_bitmap_2::get() == 1UL);
2119 this->
expect_exception([&] { vmcs::eoi_exit_bitmap_2::get(); },
""_ut_lee);
2127 vmcs_ut::test_vmcs_eoi_exit_bitmap_3()
2134 this->
expect_true(vmcs::eoi_exit_bitmap_3::get() == 1UL);
2143 this->
expect_exception([&] { vmcs::eoi_exit_bitmap_3::get(); },
""_ut_lee);
2151 vmcs_ut::test_vmcs_eptp_list_address()
2159 this->
expect_true(vmcs::eptp_list_address::get() == 1UL);
2168 this->
expect_exception([&] { vmcs::eptp_list_address::get(); },
""_ut_lee);
2176 vmcs_ut::test_vmcs_vmread_bitmap_address()
2183 this->
expect_true(vmcs::vmread_bitmap_address::get() == 1UL);
2192 this->
expect_exception([&] { vmcs::vmread_bitmap_address::get(); },
""_ut_lee);
2200 vmcs_ut::test_vmcs_vmwrite_bitmap_address()
2207 this->
expect_true(vmcs::vmwrite_bitmap_address::get() == 1UL);
2216 this->
expect_exception([&] { vmcs::vmwrite_bitmap_address::get(); },
""_ut_lee);
2224 vmcs_ut::test_vmcs_virtualization_exception_information_address()
2231 this->
expect_true(vmcs::virtualization_exception_information_address::get() == 1UL);
2240 this->
expect_exception([&] { vmcs::virtualization_exception_information_address::get(); },
""_ut_lee);
2248 vmcs_ut::test_vmcs_xss_exiting_bitmap()
2255 this->
expect_true(vmcs::xss_exiting_bitmap::get() == 1UL);
2264 this->
expect_exception([&] { vmcs::xss_exiting_bitmap::get(); },
""_ut_lee);
2272 vmcs_ut::test_vmcs_vmcs_link_pointer()
2277 this->
expect_true(vmcs::vmcs_link_pointer::get() == 1UL);
2284 vmcs_ut::test_vmcs_guest_ia32_debugctl()
2289 this->
expect_true(vmcs::guest_ia32_debugctl::get() == 1UL);
2296 vmcs_ut::test_vmcs_guest_ia32_debugctl_lbr()
2312 vmcs_ut::test_vmcs_guest_ia32_debugctl_btf()
2328 vmcs_ut::test_vmcs_guest_ia32_debugctl_tr()
2344 vmcs_ut::test_vmcs_guest_ia32_debugctl_bts()
2360 vmcs_ut::test_vmcs_guest_ia32_debugctl_btint()
2376 vmcs_ut::test_vmcs_guest_ia32_debugctl_bt_off_os()
2392 vmcs_ut::test_vmcs_guest_ia32_debugctl_bt_off_user()
2408 vmcs_ut::test_vmcs_guest_ia32_debugctl_freeze_lbrs_on_pmi()
2425 vmcs_ut::test_vmcs_guest_ia32_debugctl_freeze_perfmon_on_pmi()
2441 vmcs_ut::test_vmcs_guest_ia32_debugctl_enable_uncore_pmi()
2457 vmcs_ut::test_vmcs_guest_ia32_debugctl_freeze_while_smm()
2473 vmcs_ut::test_vmcs_guest_ia32_debugctl_rtm_debug()
2489 vmcs_ut::test_vmcs_guest_ia32_debugctl_reserved()
2492 this->
expect_true(vmcs::guest_ia32_debugctl::reserved::get() == 0xCU);
2499 vmcs_ut::test_vmcs_guest_ia32_pat()
2505 this->
expect_true(vmcs::guest_ia32_pat::get() == 1UL);
2512 vmcs_ut::test_vmcs_guest_ia32_pat_pa0()
2517 this->
expect_true(vmcs::guest_ia32_pat::pa0::get() == 1UL);
2524 vmcs_ut::test_vmcs_guest_ia32_pat_pa0_memory_type()
2526 using namespace vmcs::guest_ia32_pat;
2549 vmcs_ut::test_vmcs_guest_ia32_pat_pa0_reserved()
2554 this->
expect_true(vmcs::guest_ia32_pat::pa0::reserved::get() == 1UL);
2561 vmcs_ut::test_vmcs_guest_ia32_pat_pa1()
2566 this->
expect_true(vmcs::guest_ia32_pat::pa1::get() == 1UL);
2573 vmcs_ut::test_vmcs_guest_ia32_pat_pa1_memory_type()
2575 using namespace vmcs::guest_ia32_pat;
2598 vmcs_ut::test_vmcs_guest_ia32_pat_pa1_reserved()
2603 this->
expect_true(vmcs::guest_ia32_pat::pa1::reserved::get() == 1UL);
2610 vmcs_ut::test_vmcs_guest_ia32_pat_pa2()
2615 this->
expect_true(vmcs::guest_ia32_pat::pa2::get() == 1UL);
2622 vmcs_ut::test_vmcs_guest_ia32_pat_pa2_memory_type()
2624 using namespace vmcs::guest_ia32_pat;
2647 vmcs_ut::test_vmcs_guest_ia32_pat_pa2_reserved()
2652 this->
expect_true(vmcs::guest_ia32_pat::pa2::reserved::get() == 1UL);
2659 vmcs_ut::test_vmcs_guest_ia32_pat_pa3()
2664 this->
expect_true(vmcs::guest_ia32_pat::pa3::get() == 1UL);
2671 vmcs_ut::test_vmcs_guest_ia32_pat_pa3_memory_type()
2673 using namespace vmcs::guest_ia32_pat;
2696 vmcs_ut::test_vmcs_guest_ia32_pat_pa3_reserved()
2701 this->
expect_true(vmcs::guest_ia32_pat::pa3::reserved::get() == 1UL);
2708 vmcs_ut::test_vmcs_guest_ia32_pat_pa4()
2713 this->
expect_true(vmcs::guest_ia32_pat::pa4::get() == 1UL);
2720 vmcs_ut::test_vmcs_guest_ia32_pat_pa4_memory_type()
2722 using namespace vmcs::guest_ia32_pat;
2745 vmcs_ut::test_vmcs_guest_ia32_pat_pa4_reserved()
2750 this->
expect_true(vmcs::guest_ia32_pat::pa4::reserved::get() == 1UL);
2757 vmcs_ut::test_vmcs_guest_ia32_pat_pa5()
2762 this->
expect_true(vmcs::guest_ia32_pat::pa5::get() == 1UL);
2769 vmcs_ut::test_vmcs_guest_ia32_pat_pa5_memory_type()
2771 using namespace vmcs::guest_ia32_pat;
2794 vmcs_ut::test_vmcs_guest_ia32_pat_pa5_reserved()
2799 this->
expect_true(vmcs::guest_ia32_pat::pa5::reserved::get() == 1UL);
2806 vmcs_ut::test_vmcs_guest_ia32_pat_pa6()
2811 this->
expect_true(vmcs::guest_ia32_pat::pa6::get() == 1UL);
2818 vmcs_ut::test_vmcs_guest_ia32_pat_pa6_memory_type()
2820 using namespace vmcs::guest_ia32_pat;
2843 vmcs_ut::test_vmcs_guest_ia32_pat_pa6_reserved()
2848 this->
expect_true(vmcs::guest_ia32_pat::pa6::reserved::get() == 1UL);
2855 vmcs_ut::test_vmcs_guest_ia32_pat_pa7()
2860 this->
expect_true(vmcs::guest_ia32_pat::pa7::get() == 1UL);
2867 vmcs_ut::test_vmcs_guest_ia32_pat_pa7_memory_type()
2869 using namespace vmcs::guest_ia32_pat;
2892 vmcs_ut::test_vmcs_guest_ia32_pat_pa7_reserved()
2897 this->
expect_true(vmcs::guest_ia32_pat::pa7::reserved::get() == 1UL);
2904 vmcs_ut::test_vmcs_guest_ia32_efer()
2910 this->
expect_true(vmcs::guest_ia32_efer::get() == 1UL);
2917 vmcs_ut::test_vmcs_guest_ia32_efer_sce()
2935 vmcs_ut::test_vmcs_guest_ia32_efer_lme()
2953 vmcs_ut::test_vmcs_guest_ia32_efer_lma()
2971 vmcs_ut::test_vmcs_guest_ia32_efer_nxe()
2989 vmcs_ut::test_vmcs_guest_ia32_efer_reserved()
2994 this->
expect_true(vmcs::guest_ia32_efer::reserved::get() == 0xEU);
3001 vmcs_ut::test_vmcs_guest_ia32_perf_global_ctrl()
3007 this->
expect_true(vmcs::guest_ia32_perf_global_ctrl::get() == 1UL);
3014 vmcs_ut::test_vmcs_guest_ia32_perf_global_ctrl_reserved()
3020 this->
expect_true(vmcs::guest_ia32_perf_global_ctrl::reserved::get() == 0xCUL);
3027 vmcs_ut::test_vmcs_guest_pdpte0()
3035 this->
expect_true(vmcs::guest_pdpte0::get() == 1UL);
3042 vmcs_ut::test_vmcs_guest_pdpte0_present()
3061 vmcs_ut::test_vmcs_guest_pdpte0_reserved()
3067 this->
expect_true(vmcs::guest_pdpte0::reserved::get() == 6U);
3074 vmcs_ut::test_vmcs_guest_pdpte0_pwt()
3093 vmcs_ut::test_vmcs_guest_pdpte0_pcd()
3112 vmcs_ut::test_vmcs_guest_pdpte0_page_directory_addr()
3119 this->
expect_true(vmcs::guest_pdpte0::page_directory_addr::get() == 0x100000000UL);
3126 vmcs_ut::test_vmcs_guest_pdpte1()
3134 this->
expect_true(vmcs::guest_pdpte1::get() == 1UL);
3141 vmcs_ut::test_vmcs_guest_pdpte1_present()
3160 vmcs_ut::test_vmcs_guest_pdpte1_reserved()
3166 this->
expect_true(vmcs::guest_pdpte1::reserved::get() == 6U);
3173 vmcs_ut::test_vmcs_guest_pdpte1_pwt()
3192 vmcs_ut::test_vmcs_guest_pdpte1_pcd()
3211 vmcs_ut::test_vmcs_guest_pdpte1_page_directory_addr()
3218 this->
expect_true(vmcs::guest_pdpte1::page_directory_addr::get() == 0x100000000UL);
3225 vmcs_ut::test_vmcs_guest_pdpte2()
3233 this->
expect_true(vmcs::guest_pdpte2::get() == 1UL);
3240 vmcs_ut::test_vmcs_guest_pdpte2_present()
3259 vmcs_ut::test_vmcs_guest_pdpte2_reserved()
3265 this->
expect_true(vmcs::guest_pdpte2::reserved::get() == 6U);
3272 vmcs_ut::test_vmcs_guest_pdpte2_pwt()
3291 vmcs_ut::test_vmcs_guest_pdpte2_pcd()
3310 vmcs_ut::test_vmcs_guest_pdpte2_page_directory_addr()
3317 this->
expect_true(vmcs::guest_pdpte2::page_directory_addr::get() == 0x100000000UL);
3324 vmcs_ut::test_vmcs_guest_pdpte3()
3332 this->
expect_true(vmcs::guest_pdpte3::get() == 1UL);
3339 vmcs_ut::test_vmcs_guest_pdpte3_present()
3358 vmcs_ut::test_vmcs_guest_pdpte3_reserved()
3364 this->
expect_true(vmcs::guest_pdpte3::reserved::get() == 6U);
3371 vmcs_ut::test_vmcs_guest_pdpte3_pwt()
3390 vmcs_ut::test_vmcs_guest_pdpte3_pcd()
3409 vmcs_ut::test_vmcs_guest_pdpte3_page_directory_addr()
3416 this->
expect_true(vmcs::guest_pdpte3::page_directory_addr::get() == 0x100000000UL);
3423 vmcs_ut::test_vmcs_guest_ia32_bndcfgs()
3433 this->
expect_true(vmcs::guest_ia32_bndcfgs::get() == 1UL);
3440 vmcs_ut::test_vmcs_guest_ia32_bndcfgs_en()
3458 vmcs_ut::test_vmcs_guest_ia32_bndcfgs_bndpreserve()
3476 vmcs_ut::test_vmcs_guest_ia32_bndcfgs_reserved()
3481 this->
expect_true(vmcs::guest_ia32_bndcfgs::reserved::get() == 0xCUL);
3488 vmcs_ut::test_vmcs_guest_ia32_bndcfgs_base_addr_of_bnd_directory()
3493 this->
expect_true(vmcs::guest_ia32_bndcfgs::base_addr_of_bnd_directory::get() == 0x100000UL);
3500 vmcs_ut::test_vmcs_guest_physical_address()
3507 this->
expect_true(vmcs::guest_physical_address::get() == 0x1U);
3514 this->
expect_exception([&] { vmcs::guest_physical_address::get(); },
""_ut_lee);
3519 vmcs_ut::test_vmcs_host_ia32_pat()
3525 this->
expect_true(vmcs::host_ia32_pat::get() == 1UL);
3532 vmcs_ut::test_vmcs_host_ia32_pat_pa0()
3537 this->
expect_true(vmcs::host_ia32_pat::pa0::get() == 1UL);
3544 vmcs_ut::test_vmcs_host_ia32_pat_pa0_memory_type()
3546 using namespace vmcs::host_ia32_pat;
3569 vmcs_ut::test_vmcs_host_ia32_pat_pa0_reserved()
3574 this->
expect_true(vmcs::host_ia32_pat::pa0::reserved::get() == 1UL);
3581 vmcs_ut::test_vmcs_host_ia32_pat_pa1()
3586 this->
expect_true(vmcs::host_ia32_pat::pa1::get() == 1UL);
3593 vmcs_ut::test_vmcs_host_ia32_pat_pa1_memory_type()
3595 using namespace vmcs::host_ia32_pat;
3618 vmcs_ut::test_vmcs_host_ia32_pat_pa1_reserved()
3623 this->
expect_true(vmcs::host_ia32_pat::pa1::reserved::get() == 1UL);
3630 vmcs_ut::test_vmcs_host_ia32_pat_pa2()
3635 this->
expect_true(vmcs::host_ia32_pat::pa2::get() == 1UL);
3642 vmcs_ut::test_vmcs_host_ia32_pat_pa2_memory_type()
3644 using namespace vmcs::host_ia32_pat;
3667 vmcs_ut::test_vmcs_host_ia32_pat_pa2_reserved()
3672 this->
expect_true(vmcs::host_ia32_pat::pa2::reserved::get() == 1UL);
3679 vmcs_ut::test_vmcs_host_ia32_pat_pa3()
3684 this->
expect_true(vmcs::host_ia32_pat::pa3::get() == 1UL);
3691 vmcs_ut::test_vmcs_host_ia32_pat_pa3_memory_type()
3693 using namespace vmcs::host_ia32_pat;
3716 vmcs_ut::test_vmcs_host_ia32_pat_pa3_reserved()
3721 this->
expect_true(vmcs::host_ia32_pat::pa3::reserved::get() == 1UL);
3728 vmcs_ut::test_vmcs_host_ia32_pat_pa4()
3733 this->
expect_true(vmcs::host_ia32_pat::pa4::get() == 1UL);
3740 vmcs_ut::test_vmcs_host_ia32_pat_pa4_memory_type()
3742 using namespace vmcs::host_ia32_pat;
3765 vmcs_ut::test_vmcs_host_ia32_pat_pa4_reserved()
3770 this->
expect_true(vmcs::host_ia32_pat::pa4::reserved::get() == 1UL);
3777 vmcs_ut::test_vmcs_host_ia32_pat_pa5()
3782 this->
expect_true(vmcs::host_ia32_pat::pa5::get() == 1UL);
3789 vmcs_ut::test_vmcs_host_ia32_pat_pa5_memory_type()
3791 using namespace vmcs::host_ia32_pat;
3814 vmcs_ut::test_vmcs_host_ia32_pat_pa5_reserved()
3819 this->
expect_true(vmcs::host_ia32_pat::pa5::reserved::get() == 1UL);
3826 vmcs_ut::test_vmcs_host_ia32_pat_pa6()
3831 this->
expect_true(vmcs::host_ia32_pat::pa6::get() == 1UL);
3838 vmcs_ut::test_vmcs_host_ia32_pat_pa6_memory_type()
3840 using namespace vmcs::host_ia32_pat;
3863 vmcs_ut::test_vmcs_host_ia32_pat_pa6_reserved()
3868 this->
expect_true(vmcs::host_ia32_pat::pa6::reserved::get() == 1UL);
3875 vmcs_ut::test_vmcs_host_ia32_pat_pa7()
3880 this->
expect_true(vmcs::host_ia32_pat::pa7::get() == 1UL);
3887 vmcs_ut::test_vmcs_host_ia32_pat_pa7_memory_type()
3889 using namespace vmcs::host_ia32_pat;
3912 vmcs_ut::test_vmcs_host_ia32_pat_pa7_reserved()
3917 this->
expect_true(vmcs::host_ia32_pat::pa7::reserved::get() == 1UL);
3924 vmcs_ut::test_vmcs_host_ia32_efer()
3930 this->
expect_true(vmcs::host_ia32_efer::get() == 1UL);
3937 vmcs_ut::test_vmcs_host_ia32_efer_sce()
3955 vmcs_ut::test_vmcs_host_ia32_efer_lme()
3973 vmcs_ut::test_vmcs_host_ia32_efer_lma()
3991 vmcs_ut::test_vmcs_host_ia32_efer_nxe()
4009 vmcs_ut::test_vmcs_host_ia32_efer_reserved()
4014 this->
expect_true(vmcs::host_ia32_efer::reserved::get() == 0xEU);
4021 vmcs_ut::test_vmcs_host_ia32_perf_global_ctrl()
4027 this->
expect_true(vmcs::host_ia32_perf_global_ctrl::get() == 1UL);
4034 vmcs_ut::test_vmcs_host_ia32_perf_global_ctrl_reserved()
4040 this->
expect_true(vmcs::host_ia32_perf_global_ctrl::reserved::get() == 0xCUL);
4047 vmcs_ut::test_vmcs_guest_rflags()
4052 this->
expect_true(vmcs::guest_rflags::get() == 100UL);
4059 vmcs_ut::test_vmcs_guest_rflags_carry_flag()
4075 vmcs_ut::test_vmcs_guest_rflags_parity_flag()
4091 vmcs_ut::test_vmcs_guest_rflags_auxiliary_carry_flag()
4107 vmcs_ut::test_vmcs_guest_rflags_zero_flag()
4123 vmcs_ut::test_vmcs_guest_rflags_sign_flag()
4139 vmcs_ut::test_vmcs_guest_rflags_trap_flag()
4155 vmcs_ut::test_vmcs_guest_rflags_interrupt_enable_flag()
4171 vmcs_ut::test_vmcs_guest_rflags_direction_flag()
4187 vmcs_ut::test_vmcs_guest_rflags_overflow_flag()
4203 vmcs_ut::test_vmcs_guest_rflags_privilege_level()
4206 this->
expect_true(vmcs::guest_rflags::privilege_level::get() == 1UL);
4209 this->
expect_true(vmcs::guest_rflags::privilege_level::get() == 2UL);
4219 vmcs_ut::test_vmcs_guest_rflags_nested_task()
4235 vmcs_ut::test_vmcs_guest_rflags_resume_flag()
4251 vmcs_ut::test_vmcs_guest_rflags_virtual_8086_mode()
4267 vmcs_ut::test_vmcs_guest_rflags_alignment_check_access_control()
4283 vmcs_ut::test_vmcs_guest_rflags_virtual_interupt_flag()
4299 vmcs_ut::test_vmcs_guest_rflags_virtual_interupt_pending()
4315 vmcs_ut::test_vmcs_guest_rflags_id_flag()
4331 vmcs_ut::test_vmcs_guest_rflags_reserved()
4334 this->
expect_true(vmcs::guest_rflags::reserved::get() == 0x100000000UL);
4341 vmcs_ut::test_vmcs_guest_rflags_always_disabled()
4344 this->
expect_true(vmcs::guest_rflags::always_disabled::get() == 0x100000000UL);
4351 vmcs_ut::test_vmcs_guest_rflags_always_enabled()
4354 this->
expect_true(vmcs::guest_rflags::always_enabled::get() == 2UL);
4361 vmcs_ut::test_vmcs_guest_pending_debug_exceptions()
4366 this->
expect_true(vmcs::guest_pending_debug_exceptions::get() == 1UL);
4373 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_b0()
4389 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_b1()
4405 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_b2()
4421 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_b3()
4437 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_reserved()
4440 this->
expect_true(vmcs::guest_pending_debug_exceptions::get() == 0x10UL);
4447 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_enabled_breakpoint()
4463 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_bs()
4479 vmcs_ut::test_vmcs_guest_pending_debug_exceptions_rtm()
4495 vmcs_ut::test_vmcs_guest_ia32_sysenter_esp()
4503 this->
expect_true(vmcs::guest_ia32_sysenter_esp::get() == 0xFFFFFFFFU);
4507 vmcs_ut::test_vmcs_guest_ia32_sysenter_eip()
4515 this->
expect_true(vmcs::guest_ia32_sysenter_esp::get() == 0xFFFFFFFFU);
4519 vmcs_ut::test_vmcs_guest_cr0()
4527 this->
expect_true(vmcs::guest_cr0::get() == 0xFFFFFFFFU);
4533 vmcs_ut::test_vmcs_guest_cr0_protection_enable()
4549 vmcs_ut::test_vmcs_guest_cr0_monitor_coprocessor()
4565 vmcs_ut::test_vmcs_guest_cr0_emulation()
4581 vmcs_ut::test_vmcs_guest_cr0_task_switched()
4597 vmcs_ut::test_vmcs_guest_cr0_extension_type()
4613 vmcs_ut::test_vmcs_guest_cr0_numeric_error()
4629 vmcs_ut::test_vmcs_guest_cr0_write_protect()
4645 vmcs_ut::test_vmcs_guest_cr0_alignment_mask()
4661 vmcs_ut::test_vmcs_guest_cr0_not_write_through()
4677 vmcs_ut::test_vmcs_guest_cr0_cache_disable()
4693 vmcs_ut::test_vmcs_guest_cr0_paging()
4709 vmcs_ut::test_vmcs_guest_cr3()
4714 this->
expect_true(vmcs::guest_cr3::get() == 100UL);
4721 vmcs_ut::test_vmcs_guest_cr4()
4729 this->
expect_true(vmcs::guest_cr4::get() == 0xFFFFFFFFU);
4735 vmcs_ut::test_vmcs_guest_cr4_v8086_mode_extensions()
4751 vmcs_ut::test_vmcs_guest_cr4_protected_mode_virtual_interrupts()
4767 vmcs_ut::test_vmcs_guest_cr4_time_stamp_disable()
4783 vmcs_ut::test_vmcs_guest_cr4_debugging_extensions()
4799 vmcs_ut::test_vmcs_guest_cr4_page_size_extensions()
4815 vmcs_ut::test_vmcs_guest_cr4_physical_address_extensions()
4831 vmcs_ut::test_vmcs_guest_cr4_machine_check_enable()
4847 vmcs_ut::test_vmcs_guest_cr4_page_global_enable()
4863 vmcs_ut::test_vmcs_guest_cr4_performance_monitor_counter_enable()
4879 vmcs_ut::test_vmcs_guest_cr4_osfxsr()
4895 vmcs_ut::test_vmcs_guest_cr4_osxmmexcpt()
4911 vmcs_ut::test_vmcs_guest_cr4_vmx_enable_bit()
4927 vmcs_ut::test_vmcs_guest_cr4_smx_enable_bit()
4943 vmcs_ut::test_vmcs_guest_cr4_fsgsbase_enable_bit()
4959 vmcs_ut::test_vmcs_guest_cr4_pcid_enable_bit()
4975 vmcs_ut::test_vmcs_guest_cr4_osxsave()
4991 vmcs_ut::test_vmcs_guest_cr4_smep_enable_bit()
5007 vmcs_ut::test_vmcs_guest_cr4_smap_enable_bit()
5023 vmcs_ut::test_vmcs_guest_cr4_protection_key_enable_bit()
5039 vmcs_ut::test_vmcs_guest_es_base()
5044 this->
expect_true(vmcs::guest_es_base::get() == 1UL);
5051 vmcs_ut::test_vmcs_guest_cs_base()
5056 this->
expect_true(vmcs::guest_cs_base::get() == 1UL);
5063 vmcs_ut::test_vmcs_guest_ss_base()
5068 this->
expect_true(vmcs::guest_ss_base::get() == 1UL);
5075 vmcs_ut::test_vmcs_guest_ds_base()
5080 this->
expect_true(vmcs::guest_ds_base::get() == 1UL);
5087 vmcs_ut::test_vmcs_guest_fs_base()
5092 this->
expect_true(vmcs::guest_fs_base::get() == 1UL);
5099 vmcs_ut::test_vmcs_guest_gs_base()
5104 this->
expect_true(vmcs::guest_gs_base::get() == 1UL);
5111 vmcs_ut::test_vmcs_guest_ldtr_base()
5116 this->
expect_true(vmcs::guest_ldtr_base::get() == 1UL);
5123 vmcs_ut::test_vmcs_guest_tr_base()
5128 this->
expect_true(vmcs::guest_tr_base::get() == 1UL);
5135 vmcs_ut::test_vmcs_guest_gdtr_base()
5140 this->
expect_true(vmcs::guest_gdtr_base::get() == 1UL);
5147 vmcs_ut::test_vmcs_guest_idtr_base()
5152 this->
expect_true(vmcs::guest_idtr_base::get() == 1UL);
5159 vmcs_ut::test_vmcs_guest_dr7()
5171 vmcs_ut::test_vmcs_guest_rsp()
5183 vmcs_ut::test_vmcs_guest_rip()
5195 vmcs_ut::test_vmcs_host_cr0()
5203 this->
expect_true(vmcs::host_cr0::get() == 0xFFFFFFFFU);
5209 vmcs_ut::test_vmcs_host_cr0_protection_enable()
5225 vmcs_ut::test_vmcs_host_cr0_monitor_coprocessor()
5241 vmcs_ut::test_vmcs_host_cr0_emulation()
5257 vmcs_ut::test_vmcs_host_cr0_task_switched()
5273 vmcs_ut::test_vmcs_host_cr0_extension_type()
5289 vmcs_ut::test_vmcs_host_cr0_numeric_error()
5305 vmcs_ut::test_vmcs_host_cr0_write_protect()
5321 vmcs_ut::test_vmcs_host_cr0_alignment_mask()
5337 vmcs_ut::test_vmcs_host_cr0_not_write_through()
5353 vmcs_ut::test_vmcs_host_cr0_cache_disable()
5369 vmcs_ut::test_vmcs_host_cr0_paging()
5385 vmcs_ut::test_vmcs_host_cr3()
5393 this->
expect_true(vmcs::host_cr3::get() == 0xFFFFFFFFU);
5397 vmcs_ut::test_vmcs_host_cr4()
5405 this->
expect_true(vmcs::host_cr4::get() == 0xFFFFFFFFU);
5411 vmcs_ut::test_vmcs_host_cr4_v8086_mode_extensions()
5427 vmcs_ut::test_vmcs_host_cr4_protected_mode_virtual_interrupts()
5443 vmcs_ut::test_vmcs_host_cr4_time_stamp_disable()
5459 vmcs_ut::test_vmcs_host_cr4_debugging_extensions()
5475 vmcs_ut::test_vmcs_host_cr4_page_size_extensions()
5491 vmcs_ut::test_vmcs_host_cr4_physical_address_extensions()
5507 vmcs_ut::test_vmcs_host_cr4_machine_check_enable()
5523 vmcs_ut::test_vmcs_host_cr4_page_global_enable()
5539 vmcs_ut::test_vmcs_host_cr4_performance_monitor_counter_enable()
5555 vmcs_ut::test_vmcs_host_cr4_osfxsr()
5571 vmcs_ut::test_vmcs_host_cr4_osxmmexcpt()
5587 vmcs_ut::test_vmcs_host_cr4_vmx_enable_bit()
5603 vmcs_ut::test_vmcs_host_cr4_smx_enable_bit()
5619 vmcs_ut::test_vmcs_host_cr4_fsgsbase_enable_bit()
5635 vmcs_ut::test_vmcs_host_cr4_pcid_enable_bit()
5651 vmcs_ut::test_vmcs_host_cr4_osxsave()
5667 vmcs_ut::test_vmcs_host_cr4_smep_enable_bit()
5683 vmcs_ut::test_vmcs_host_cr4_smap_enable_bit()
5699 vmcs_ut::test_vmcs_host_cr4_protection_key_enable_bit()
5715 vmcs_ut::test_vmcs_host_fs_base()
5720 this->
expect_true(vmcs::host_fs_base::get() == 1UL);
5727 vmcs_ut::test_vmcs_host_gs_base()
5732 this->
expect_true(vmcs::host_gs_base::get() == 1UL);
5739 vmcs_ut::test_vmcs_host_tr_base()
5744 this->
expect_true(vmcs::host_tr_base::get() == 1UL);
5751 vmcs_ut::test_vmcs_host_gdtr_base()
5756 this->
expect_true(vmcs::host_gdtr_base::get() == 1UL);
5763 vmcs_ut::test_vmcs_host_idtr_base()
5768 this->
expect_true(vmcs::host_idtr_base::get() == 1UL);
5775 vmcs_ut::test_vmcs_host_ia32_sysenter_esp()
5780 this->
expect_true(vmcs::host_ia32_sysenter_esp::get() == 1UL);
5787 vmcs_ut::test_vmcs_host_ia32_sysenter_eip()
5792 this->
expect_true(vmcs::host_ia32_sysenter_eip::get() == 1UL);
5799 vmcs_ut::test_vmcs_host_rsp()
5811 vmcs_ut::test_vmcs_host_rip()
5823 vmcs_ut::test_vmcs_guest_es_limit()
5828 this->
expect_true(vmcs::guest_es_limit::get() == 1UL);
5835 vmcs_ut::test_vmcs_guest_cs_limit()
5840 this->
expect_true(vmcs::guest_cs_limit::get() == 1UL);
5847 vmcs_ut::test_vmcs_guest_ss_limit()
5852 this->
expect_true(vmcs::guest_ss_limit::get() == 1UL);
5860 vmcs_ut::test_vmcs_guest_ds_limit()
5865 this->
expect_true(vmcs::guest_ds_limit::get() == 1UL);
5872 vmcs_ut::test_vmcs_guest_fs_limit()
5877 this->
expect_true(vmcs::guest_fs_limit::get() == 1UL);
5884 vmcs_ut::test_vmcs_guest_gs_limit()
5889 this->
expect_true(vmcs::guest_gs_limit::get() == 1UL);
5896 vmcs_ut::test_vmcs_guest_ldtr_limit()
5901 this->
expect_true(vmcs::guest_ldtr_limit::get() == 1UL);
5908 vmcs_ut::test_vmcs_guest_tr_limit()
5913 this->
expect_true(vmcs::guest_tr_limit::get() == 1UL);
5920 vmcs_ut::test_vmcs_guest_gdtr_limit()
5925 this->
expect_true(vmcs::guest_gdtr_limit::get() == 1UL);
5932 vmcs_ut::test_vmcs_guest_idtr_limit()
5937 this->
expect_true(vmcs::guest_idtr_limit::get() == 1UL);
5944 vmcs_ut::test_vmcs_guest_es_access_rights()
5948 this->
expect_true(vmcs::guest_es_access_rights::get() == 100UL);
5955 vmcs_ut::test_vmcs_guest_es_access_rights_type()
5958 this->
expect_true(vmcs::guest_es_access_rights::type::get() == 1UL);
5965 vmcs_ut::test_vmcs_guest_es_access_rights_s()
5968 this->
expect_true(vmcs::guest_es_access_rights::s::get() == 1UL);
5975 vmcs_ut::test_vmcs_guest_es_access_rights_dpl()
5978 this->
expect_true(vmcs::guest_es_access_rights::dpl::get() == 1UL);
5985 vmcs_ut::test_vmcs_guest_es_access_rights_present()
5988 this->
expect_true(vmcs::guest_es_access_rights::present::get() == 1UL);
5995 vmcs_ut::test_vmcs_guest_es_access_rights_avl()
5998 this->
expect_true(vmcs::guest_es_access_rights::avl::get() == 1UL);
6005 vmcs_ut::test_vmcs_guest_es_access_rights_l()
6008 this->
expect_true(vmcs::guest_es_access_rights::l::get() == 1UL);
6015 vmcs_ut::test_vmcs_guest_es_access_rights_db()
6018 this->
expect_true(vmcs::guest_es_access_rights::db::get() == 1UL);
6025 vmcs_ut::test_vmcs_guest_es_access_rights_granularity()
6028 this->
expect_true(vmcs::guest_es_access_rights::granularity::get() == 1UL);
6035 vmcs_ut::test_vmcs_guest_es_access_rights_reserved()
6038 this->
expect_true(vmcs::guest_es_access_rights::reserved::get() == 0x00F00U);
6045 vmcs_ut::test_vmcs_guest_es_access_rights_unusable()
6048 this->
expect_true(vmcs::guest_es_access_rights::unusable::get() == 1UL);
6055 vmcs_ut::test_vmcs_guest_cs_access_rights()
6059 this->
expect_true(vmcs::guest_cs_access_rights::get() == 100UL);
6066 vmcs_ut::test_vmcs_guest_cs_access_rights_type()
6069 this->
expect_true(vmcs::guest_cs_access_rights::type::get() == 1UL);
6076 vmcs_ut::test_vmcs_guest_cs_access_rights_s()
6079 this->
expect_true(vmcs::guest_cs_access_rights::s::get() == 1UL);
6086 vmcs_ut::test_vmcs_guest_cs_access_rights_dpl()
6089 this->
expect_true(vmcs::guest_cs_access_rights::dpl::get() == 1UL);
6096 vmcs_ut::test_vmcs_guest_cs_access_rights_present()
6099 this->
expect_true(vmcs::guest_cs_access_rights::present::get() == 1UL);
6106 vmcs_ut::test_vmcs_guest_cs_access_rights_avl()
6109 this->
expect_true(vmcs::guest_cs_access_rights::avl::get() == 1UL);
6116 vmcs_ut::test_vmcs_guest_cs_access_rights_l()
6119 this->
expect_true(vmcs::guest_cs_access_rights::l::get() == 1UL);
6126 vmcs_ut::test_vmcs_guest_cs_access_rights_db()
6129 this->
expect_true(vmcs::guest_cs_access_rights::db::get() == 1UL);
6136 vmcs_ut::test_vmcs_guest_cs_access_rights_granularity()
6139 this->
expect_true(vmcs::guest_cs_access_rights::granularity::get() == 1UL);
6146 vmcs_ut::test_vmcs_guest_cs_access_rights_reserved()
6149 this->
expect_true(vmcs::guest_cs_access_rights::reserved::get() == 0x00F00U);
6156 vmcs_ut::test_vmcs_guest_cs_access_rights_unusable()
6159 this->
expect_true(vmcs::guest_cs_access_rights::unusable::get() == 1UL);
6166 vmcs_ut::test_vmcs_guest_ss_access_rights()
6170 this->
expect_true(vmcs::guest_ss_access_rights::get() == 100UL);
6177 vmcs_ut::test_vmcs_guest_ss_access_rights_type()
6180 this->
expect_true(vmcs::guest_ss_access_rights::type::get() == 1UL);
6187 vmcs_ut::test_vmcs_guest_ss_access_rights_s()
6190 this->
expect_true(vmcs::guest_ss_access_rights::s::get() == 1UL);
6197 vmcs_ut::test_vmcs_guest_ss_access_rights_dpl()
6200 this->
expect_true(vmcs::guest_ss_access_rights::dpl::get() == 1UL);
6207 vmcs_ut::test_vmcs_guest_ss_access_rights_present()
6210 this->
expect_true(vmcs::guest_ss_access_rights::present::get() == 1UL);
6217 vmcs_ut::test_vmcs_guest_ss_access_rights_avl()
6220 this->
expect_true(vmcs::guest_ss_access_rights::avl::get() == 1UL);
6227 vmcs_ut::test_vmcs_guest_ss_access_rights_l()
6230 this->
expect_true(vmcs::guest_ss_access_rights::l::get() == 1UL);
6237 vmcs_ut::test_vmcs_guest_ss_access_rights_db()
6240 this->
expect_true(vmcs::guest_ss_access_rights::db::get() == 1UL);
6247 vmcs_ut::test_vmcs_guest_ss_access_rights_granularity()
6250 this->
expect_true(vmcs::guest_ss_access_rights::granularity::get() == 1UL);
6257 vmcs_ut::test_vmcs_guest_ss_access_rights_reserved()
6260 this->
expect_true(vmcs::guest_ss_access_rights::reserved::get() == 0x00F00U);
6267 vmcs_ut::test_vmcs_guest_ss_access_rights_unusable()
6270 this->
expect_true(vmcs::guest_ss_access_rights::unusable::get() == 1UL);
6277 vmcs_ut::test_vmcs_guest_ds_access_rights()
6281 this->
expect_true(vmcs::guest_ds_access_rights::get() == 100UL);
6288 vmcs_ut::test_vmcs_guest_ds_access_rights_type()
6291 this->
expect_true(vmcs::guest_ds_access_rights::type::get() == 1UL);
6298 vmcs_ut::test_vmcs_guest_ds_access_rights_s()
6301 this->
expect_true(vmcs::guest_ds_access_rights::s::get() == 1UL);
6308 vmcs_ut::test_vmcs_guest_ds_access_rights_dpl()
6311 this->
expect_true(vmcs::guest_ds_access_rights::dpl::get() == 1UL);
6318 vmcs_ut::test_vmcs_guest_ds_access_rights_present()
6321 this->
expect_true(vmcs::guest_ds_access_rights::present::get() == 1UL);
6328 vmcs_ut::test_vmcs_guest_ds_access_rights_avl()
6331 this->
expect_true(vmcs::guest_ds_access_rights::avl::get() == 1UL);
6338 vmcs_ut::test_vmcs_guest_ds_access_rights_l()
6341 this->
expect_true(vmcs::guest_ds_access_rights::l::get() == 1UL);
6348 vmcs_ut::test_vmcs_guest_ds_access_rights_db()
6351 this->
expect_true(vmcs::guest_ds_access_rights::db::get() == 1UL);
6358 vmcs_ut::test_vmcs_guest_ds_access_rights_granularity()
6361 this->
expect_true(vmcs::guest_ds_access_rights::granularity::get() == 1UL);
6368 vmcs_ut::test_vmcs_guest_ds_access_rights_reserved()
6371 this->
expect_true(vmcs::guest_ds_access_rights::reserved::get() == 0x00F00U);
6378 vmcs_ut::test_vmcs_guest_ds_access_rights_unusable()
6381 this->
expect_true(vmcs::guest_ds_access_rights::unusable::get() == 1UL);
6388 vmcs_ut::test_vmcs_guest_fs_access_rights()
6392 this->
expect_true(vmcs::guest_fs_access_rights::get() == 100UL);
6399 vmcs_ut::test_vmcs_guest_fs_access_rights_type()
6402 this->
expect_true(vmcs::guest_fs_access_rights::type::get() == 1UL);
6409 vmcs_ut::test_vmcs_guest_fs_access_rights_s()
6412 this->
expect_true(vmcs::guest_fs_access_rights::s::get() == 1UL);
6419 vmcs_ut::test_vmcs_guest_fs_access_rights_dpl()
6422 this->
expect_true(vmcs::guest_fs_access_rights::dpl::get() == 1UL);
6429 vmcs_ut::test_vmcs_guest_fs_access_rights_present()
6432 this->
expect_true(vmcs::guest_fs_access_rights::present::get() == 1UL);
6439 vmcs_ut::test_vmcs_guest_fs_access_rights_avl()
6442 this->
expect_true(vmcs::guest_fs_access_rights::avl::get() == 1UL);
6449 vmcs_ut::test_vmcs_guest_fs_access_rights_l()
6452 this->
expect_true(vmcs::guest_fs_access_rights::l::get() == 1UL);
6459 vmcs_ut::test_vmcs_guest_fs_access_rights_db()
6462 this->
expect_true(vmcs::guest_fs_access_rights::db::get() == 1UL);
6469 vmcs_ut::test_vmcs_guest_fs_access_rights_granularity()
6472 this->
expect_true(vmcs::guest_fs_access_rights::granularity::get() == 1UL);
6479 vmcs_ut::test_vmcs_guest_fs_access_rights_reserved()
6482 this->
expect_true(vmcs::guest_fs_access_rights::reserved::get() == 0x00F00U);
6489 vmcs_ut::test_vmcs_guest_fs_access_rights_unusable()
6492 this->
expect_true(vmcs::guest_fs_access_rights::unusable::get() == 1UL);
6499 vmcs_ut::test_vmcs_guest_gs_access_rights()
6503 this->
expect_true(vmcs::guest_gs_access_rights::get() == 100UL);
6510 vmcs_ut::test_vmcs_guest_gs_access_rights_type()
6513 this->
expect_true(vmcs::guest_gs_access_rights::type::get() == 1UL);
6520 vmcs_ut::test_vmcs_guest_gs_access_rights_s()
6523 this->
expect_true(vmcs::guest_gs_access_rights::s::get() == 1UL);
6530 vmcs_ut::test_vmcs_guest_gs_access_rights_dpl()
6533 this->
expect_true(vmcs::guest_gs_access_rights::dpl::get() == 1UL);
6540 vmcs_ut::test_vmcs_guest_gs_access_rights_present()
6543 this->
expect_true(vmcs::guest_gs_access_rights::present::get() == 1UL);
6550 vmcs_ut::test_vmcs_guest_gs_access_rights_avl()
6553 this->
expect_true(vmcs::guest_gs_access_rights::avl::get() == 1UL);
6560 vmcs_ut::test_vmcs_guest_gs_access_rights_l()
6563 this->
expect_true(vmcs::guest_gs_access_rights::l::get() == 1UL);
6570 vmcs_ut::test_vmcs_guest_gs_access_rights_db()
6573 this->
expect_true(vmcs::guest_gs_access_rights::db::get() == 1UL);
6580 vmcs_ut::test_vmcs_guest_gs_access_rights_granularity()
6583 this->
expect_true(vmcs::guest_gs_access_rights::granularity::get() == 1UL);
6590 vmcs_ut::test_vmcs_guest_gs_access_rights_reserved()
6593 this->
expect_true(vmcs::guest_gs_access_rights::reserved::get() == 0x00F00U);
6600 vmcs_ut::test_vmcs_guest_gs_access_rights_unusable()
6603 this->
expect_true(vmcs::guest_gs_access_rights::unusable::get() == 1UL);
6610 vmcs_ut::test_vmcs_guest_ldtr_access_rights()
6614 this->
expect_true(vmcs::guest_ldtr_access_rights::get() == 100UL);
6621 vmcs_ut::test_vmcs_guest_ldtr_access_rights_type()
6624 this->
expect_true(vmcs::guest_ldtr_access_rights::type::get() == 1UL);
6631 vmcs_ut::test_vmcs_guest_ldtr_access_rights_s()
6634 this->
expect_true(vmcs::guest_ldtr_access_rights::s::get() == 1UL);
6641 vmcs_ut::test_vmcs_guest_ldtr_access_rights_dpl()
6644 this->
expect_true(vmcs::guest_ldtr_access_rights::dpl::get() == 1UL);
6651 vmcs_ut::test_vmcs_guest_ldtr_access_rights_present()
6654 this->
expect_true(vmcs::guest_ldtr_access_rights::present::get() == 1UL);
6661 vmcs_ut::test_vmcs_guest_ldtr_access_rights_avl()
6664 this->
expect_true(vmcs::guest_ldtr_access_rights::avl::get() == 1UL);
6671 vmcs_ut::test_vmcs_guest_ldtr_access_rights_l()
6674 this->
expect_true(vmcs::guest_ldtr_access_rights::l::get() == 1UL);
6681 vmcs_ut::test_vmcs_guest_ldtr_access_rights_db()
6684 this->
expect_true(vmcs::guest_ldtr_access_rights::db::get() == 1UL);
6691 vmcs_ut::test_vmcs_guest_ldtr_access_rights_granularity()
6694 this->
expect_true(vmcs::guest_ldtr_access_rights::granularity::get() == 1UL);
6701 vmcs_ut::test_vmcs_guest_ldtr_access_rights_reserved()
6704 this->
expect_true(vmcs::guest_ldtr_access_rights::reserved::get() == 0x00F00U);
6711 vmcs_ut::test_vmcs_guest_ldtr_access_rights_unusable()
6714 this->
expect_true(vmcs::guest_ldtr_access_rights::unusable::get() == 1UL);
6721 vmcs_ut::test_vmcs_guest_tr_access_rights()
6725 this->
expect_true(vmcs::guest_tr_access_rights::get() == 100UL);
6732 vmcs_ut::test_vmcs_guest_tr_access_rights_type()
6735 this->
expect_true(vmcs::guest_tr_access_rights::type::get() == 1UL);
6742 vmcs_ut::test_vmcs_guest_tr_access_rights_s()
6745 this->
expect_true(vmcs::guest_tr_access_rights::s::get() == 1UL);
6752 vmcs_ut::test_vmcs_guest_tr_access_rights_dpl()
6755 this->
expect_true(vmcs::guest_tr_access_rights::dpl::get() == 1UL);
6762 vmcs_ut::test_vmcs_guest_tr_access_rights_present()
6765 this->
expect_true(vmcs::guest_tr_access_rights::present::get() == 1UL);
6772 vmcs_ut::test_vmcs_guest_tr_access_rights_avl()
6775 this->
expect_true(vmcs::guest_tr_access_rights::avl::get() == 1UL);
6782 vmcs_ut::test_vmcs_guest_tr_access_rights_l()
6785 this->
expect_true(vmcs::guest_tr_access_rights::l::get() == 1UL);
6792 vmcs_ut::test_vmcs_guest_tr_access_rights_db()
6795 this->
expect_true(vmcs::guest_tr_access_rights::db::get() == 1UL);
6802 vmcs_ut::test_vmcs_guest_tr_access_rights_granularity()
6805 this->
expect_true(vmcs::guest_tr_access_rights::granularity::get() == 1UL);
6812 vmcs_ut::test_vmcs_guest_tr_access_rights_reserved()
6815 this->
expect_true(vmcs::guest_tr_access_rights::reserved::get() == 0x00F00U);
6822 vmcs_ut::test_vmcs_guest_tr_access_rights_unusable()
6825 this->
expect_true(vmcs::guest_tr_access_rights::unusable::get() == 1UL);
6832 vmcs_ut::test_vmcs_guest_interruptibility_state()
6837 this->
expect_true(vmcs::guest_interruptibility_state::get() == 1UL);
6844 vmcs_ut::test_vmcs_guest_interruptibility_state_blocking_by_sti()
6846 using namespace vmcs::guest_interruptibility_state;
6856 vmcs_ut::test_vmcs_guest_interruptibility_state_blocking_by_mov_ss()
6858 using namespace vmcs::guest_interruptibility_state;
6861 this->
expect_true(blocking_by_mov_ss::get() == 1UL);
6868 vmcs_ut::test_vmcs_guest_interruptibility_state_blocking_by_smi()
6870 using namespace vmcs::guest_interruptibility_state;
6880 vmcs_ut::test_vmcs_guest_interruptibility_state_blocking_by_nmi()
6882 using namespace vmcs::guest_interruptibility_state;
6892 vmcs_ut::test_vmcs_guest_interruptibility_state_enclave_interruption()
6894 using namespace vmcs::guest_interruptibility_state;
6897 this->
expect_true(enclave_interruption::get() == 1UL);
6904 vmcs_ut::test_vmcs_guest_interruptibility_state_reserved()
6906 using namespace vmcs::guest_interruptibility_state;
6916 vmcs_ut::test_vmcs_guest_activity_state()
6921 this->
expect_true(vmcs::guest_activity_state::get() == 0U);
6924 this->
expect_true(vmcs::guest_activity_state::get() == 1U);
6934 vmcs_ut::test_vmcs_guest_smbase()
6939 this->
expect_true(vmcs::guest_smbase::get() == 1UL);
6946 vmcs_ut::test_vmcs_guest_ia32_sysenter_cs()
6951 this->
expect_true(vmcs::guest_ia32_sysenter_cs::get() == 1UL);
6958 vmcs_ut::test_vmcs_vmx_preemption_timer_value()
6964 this->
expect_true(vmcs::vmx_preemption_timer_value::get() == 1UL);
6971 vmcs_ut::test_vmcs_host_ia32_sysenter_cs()
6976 this->
expect_true(vmcs::host_ia32_sysenter_cs::get() == 42U);
6983 vmcs_ut::test_vmcs_cr0_guest_host_mask()
6988 this->
expect_true(vmcs::cr0_guest_host_mask::get() == 1UL);
6995 vmcs_ut::test_vmcs_cr4_guest_host_mask()
7000 this->
expect_true(vmcs::cr4_guest_host_mask::get() == 1UL);
7007 vmcs_ut::test_vmcs_cr0_read_shadow()
7012 this->
expect_true(vmcs::cr0_read_shadow::get() == 1UL);
7019 vmcs_ut::test_vmcs_cr4_read_shadow()
7024 this->
expect_true(vmcs::cr4_read_shadow::get() == 1UL);
7031 vmcs_ut::test_vmcs_cr3_target_value_0()
7036 this->
expect_true(vmcs::cr3_target_value_0::get() == 1UL);
7043 vmcs_ut::test_vmcs_cr3_target_value_1()
7048 this->
expect_true(vmcs::cr3_target_value_1::get() == 1UL);
7055 vmcs_ut::test_vmcs_cr3_target_value_2()
7060 this->
expect_true(vmcs::cr3_target_value_2::get() == 1UL);
7067 vmcs_ut::test_vmcs_cr3_target_value_3()
7072 this->
expect_true(vmcs::cr3_target_value_3::get() == 1UL);
7079 vmcs_ut::test_vmcs_pin_based_vm_execution_controls()
7084 this->
expect_true(vmcs::pin_based_vm_execution_controls::get() == 1UL);
7091 vmcs_ut::test_vmcs_pin_based_vm_execution_controls_external_interrupt_exiting()
7093 using namespace vmcs::pin_based_vm_execution_controls::external_interrupt_exiting;
7111 vmcs_ut::test_vmcs_pin_based_vm_execution_controls_nmi_exiting()
7113 using namespace vmcs::pin_based_vm_execution_controls::nmi_exiting;
7131 vmcs_ut::test_vmcs_pin_based_vm_execution_controls_virtual_nmis()
7133 using namespace vmcs::pin_based_vm_execution_controls::virtual_nmis;
7151 vmcs_ut::test_vmcs_pin_based_vm_execution_controls_activate_vmx_preemption_timer()
7153 using namespace vmcs::pin_based_vm_execution_controls::activate_vmx_preemption_timer;
7171 vmcs_ut::test_vmcs_pin_based_vm_execution_controls_process_posted_interrupts()
7173 using namespace vmcs::pin_based_vm_execution_controls::process_posted_interrupts;
7191 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls()
7196 this->
expect_true(vmcs::primary_processor_based_vm_execution_controls::get() == 1UL);
7203 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_interrupt_window_exiting()
7205 using namespace vmcs::primary_processor_based_vm_execution_controls::interrupt_window_exiting;
7223 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_use_tsc_offsetting()
7225 using namespace vmcs::primary_processor_based_vm_execution_controls::use_tsc_offsetting;
7243 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_hlt_exiting()
7245 using namespace vmcs::primary_processor_based_vm_execution_controls::hlt_exiting;
7263 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_invlpg_exiting()
7265 using namespace vmcs::primary_processor_based_vm_execution_controls::invlpg_exiting;
7283 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_mwait_exiting()
7285 using namespace vmcs::primary_processor_based_vm_execution_controls::mwait_exiting;
7303 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_rdpmc_exiting()
7305 using namespace vmcs::primary_processor_based_vm_execution_controls::rdpmc_exiting;
7323 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_rdtsc_exiting()
7325 using namespace vmcs::primary_processor_based_vm_execution_controls::rdtsc_exiting;
7343 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_cr3_load_exiting()
7345 using namespace vmcs::primary_processor_based_vm_execution_controls::cr3_load_exiting;
7363 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_cr3_store_exiting()
7365 using namespace vmcs::primary_processor_based_vm_execution_controls::cr3_store_exiting;
7383 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_cr8_load_exiting()
7385 using namespace vmcs::primary_processor_based_vm_execution_controls::cr8_load_exiting;
7403 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_cr8_store_exiting()
7405 using namespace vmcs::primary_processor_based_vm_execution_controls::cr8_store_exiting;
7423 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_use_tpr_shadow()
7425 using namespace vmcs::primary_processor_based_vm_execution_controls::use_tpr_shadow;
7443 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_nmi_window_exiting()
7445 using namespace vmcs::primary_processor_based_vm_execution_controls::nmi_window_exiting;
7463 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_mov_dr_exiting()
7465 using namespace vmcs::primary_processor_based_vm_execution_controls::mov_dr_exiting;
7483 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_unconditional_io_exiting()
7485 using namespace vmcs::primary_processor_based_vm_execution_controls::unconditional_io_exiting;
7503 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_use_io_bitmaps()
7505 using namespace vmcs::primary_processor_based_vm_execution_controls::use_io_bitmaps;
7523 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_monitor_trap_flag()
7543 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_use_msr_bitmap()
7545 using namespace vmcs::primary_processor_based_vm_execution_controls::use_msr_bitmap;
7563 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_monitor_exiting()
7565 using namespace vmcs::primary_processor_based_vm_execution_controls::monitor_exiting;
7583 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_pause_exiting()
7585 using namespace vmcs::primary_processor_based_vm_execution_controls::pause_exiting;
7603 vmcs_ut::test_vmcs_primary_processor_based_vm_execution_controls_activate_secondary_controls()
7605 using namespace vmcs::primary_processor_based_vm_execution_controls::activate_secondary_controls;
7623 vmcs_ut::test_vmcs_exception_bitmap()
7628 this->
expect_true(vmcs::exception_bitmap::get() == 1UL);
7635 vmcs_ut::test_vmcs_page_fault_error_code_mask()
7640 this->
expect_true(vmcs::page_fault_error_code_mask::get() == 1UL);
7647 vmcs_ut::test_vmcs_page_fault_error_code_match()
7652 this->
expect_true(vmcs::page_fault_error_code_match::get() == 1UL);
7659 vmcs_ut::test_vmcs_cr3_target_count()
7664 this->
expect_true(vmcs::cr3_target_count::get() == 1UL);
7671 vmcs_ut::test_vmcs_vm_exit_controls()
7676 this->
expect_true(vmcs::vm_exit_controls::get() == 1UL);
7683 vmcs_ut::test_vmcs_vm_exit_controls_save_debug_controls()
7685 using namespace vmcs::vm_exit_controls::save_debug_controls;
7703 vmcs_ut::test_vmcs_vm_exit_controls_host_address_space_size()
7705 using namespace vmcs::vm_exit_controls::host_address_space_size;
7723 vmcs_ut::test_vmcs_vm_exit_controls_load_ia32_perf_global_ctrl()
7725 using namespace vmcs::vm_exit_controls::load_ia32_perf_global_ctrl;
7743 vmcs_ut::test_vmcs_vm_exit_controls_acknowledge_interrupt_on_exit()
7745 using namespace vmcs::vm_exit_controls::acknowledge_interrupt_on_exit;
7763 vmcs_ut::test_vmcs_vm_exit_controls_save_ia32_pat()
7765 using namespace vmcs::vm_exit_controls::save_ia32_pat;
7783 vmcs_ut::test_vmcs_vm_exit_controls_load_ia32_pat()
7785 using namespace vmcs::vm_exit_controls::load_ia32_pat;
7803 vmcs_ut::test_vmcs_vm_exit_controls_save_ia32_efer()
7805 using namespace vmcs::vm_exit_controls::save_ia32_efer;
7823 vmcs_ut::test_vmcs_vm_exit_controls_load_ia32_efer()
7825 using namespace vmcs::vm_exit_controls::load_ia32_efer;
7843 vmcs_ut::test_vmcs_vm_exit_controls_save_vmx_preemption_timer_value()
7845 using namespace vmcs::vm_exit_controls::save_vmx_preemption_timer_value;
7863 vmcs_ut::test_vmcs_vm_exit_controls_clear_ia32_bndcfgs()
7865 using namespace vmcs::vm_exit_controls::clear_ia32_bndcfgs;
7883 vmcs_ut::test_vmcs_vm_exit_msr_store_count()
7888 this->
expect_true(vmcs::vm_exit_msr_store_count::get() == 1UL);
7895 vmcs_ut::test_vmcs_vm_exit_msr_load_count()
7900 this->
expect_true(vmcs::vm_exit_msr_load_count::get() == 1UL);
7907 vmcs_ut::test_vmcs_vm_entry_controls()
7912 this->
expect_true(vmcs::vm_entry_controls::get() == 1UL);
7919 vmcs_ut::test_vmcs_vm_entry_controls_load_debug_controls()
7921 using namespace vmcs::vm_entry_controls::load_debug_controls;
7939 vmcs_ut::test_vmcs_vm_entry_controls_ia_32e_mode_guest()
7941 using namespace vmcs::vm_entry_controls::ia_32e_mode_guest;
7959 vmcs_ut::test_vmcs_vm_entry_controls_entry_to_smm()
7961 using namespace vmcs::vm_entry_controls::entry_to_smm;
7979 vmcs_ut::test_vmcs_vm_entry_controls_deactivate_dual_monitor_treatment()
7981 using namespace vmcs::vm_entry_controls::deactivate_dual_monitor_treatment;
7999 vmcs_ut::test_vmcs_vm_entry_controls_load_ia32_perf_global_ctrl()
8001 using namespace vmcs::vm_entry_controls::load_ia32_perf_global_ctrl;
8019 vmcs_ut::test_vmcs_vm_entry_controls_load_ia32_pat()
8021 using namespace vmcs::vm_entry_controls::load_ia32_pat;
8039 vmcs_ut::test_vmcs_vm_entry_controls_load_ia32_efer()
8041 using namespace vmcs::vm_entry_controls::load_ia32_efer;
8059 vmcs_ut::test_vmcs_vm_entry_controls_load_ia32_bndcfgs()
8061 using namespace vmcs::vm_entry_controls::load_ia32_bndcfgs;
8079 vmcs_ut::test_vmcs_vm_entry_msr_load_count()
8084 this->
expect_true(vmcs::vm_entry_msr_load_count::get() == 1UL);
8091 vmcs_ut::test_vmcs_vm_entry_interruption_information_field()
8096 this->
expect_true(vmcs::vm_entry_interruption_information_field::get() == 1UL);
8103 vmcs_ut::test_vmcs_vm_entry_interruption_information_field_vector()
8105 using namespace vmcs::vm_entry_interruption_information_field;
8117 vmcs_ut::test_vmcs_vm_entry_interruption_information_field_type()
8119 using namespace vmcs::vm_entry_interruption_information_field;
8132 vmcs_ut::test_vmcs_vm_entry_interruption_information_field_deliver_error_code_bit()
8134 using namespace vmcs::vm_entry_interruption_information_field;
8155 vmcs_ut::test_vmcs_vm_entry_interruption_information_field_reserved()
8157 using namespace vmcs::vm_entry_interruption_information_field;
8170 vmcs_ut::test_vmcs_vm_entry_interruption_information_field_valid_bit()
8172 using namespace vmcs::vm_entry_interruption_information_field;
8193 vmcs_ut::test_vmcs_vm_entry_exception_error_code()
8198 this->
expect_true(vmcs::vm_entry_exception_error_code::get() == 1UL);
8205 vmcs_ut::test_vmcs_vm_entry_instruction_length()
8210 this->
expect_true(vmcs::vm_entry_instruction_length::get() == 1UL);
8217 vmcs_ut::test_vmcs_tpr_threshold()
8219 using namespace msrs::ia32_vmx_true_procbased_ctls;
8228 this->
expect_true(vmcs::tpr_threshold::get() == 0xF03UL);
8235 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls()
8237 using namespace msrs::ia32_vmx_true_procbased_ctls;
8246 this->
expect_true(vmcs::secondary_processor_based_vm_execution_controls::get() == 1UL);
8253 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_virtualize_apic_accesses()
8255 using namespace vmcs::secondary_processor_based_vm_execution_controls::virtualize_apic_accesses;
8256 using namespace msrs::ia32_vmx_true_procbased_ctls;
8275 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_ept()
8277 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_ept;
8278 using namespace msrs::ia32_vmx_true_procbased_ctls;
8297 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_descriptor_table_exiting()
8299 using namespace vmcs::secondary_processor_based_vm_execution_controls::descriptor_table_exiting;
8300 using namespace msrs::ia32_vmx_true_procbased_ctls;
8319 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_rdtscp()
8321 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_rdtscp;
8322 using namespace msrs::ia32_vmx_true_procbased_ctls;
8341 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_virtualize_x2apic_mode()
8343 using namespace vmcs::secondary_processor_based_vm_execution_controls::virtualize_x2apic_mode;
8344 using namespace msrs::ia32_vmx_true_procbased_ctls;
8363 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_vpid()
8365 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_vpid;
8366 using namespace msrs::ia32_vmx_true_procbased_ctls;
8385 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_wbinvd_exiting()
8387 using namespace vmcs::secondary_processor_based_vm_execution_controls::wbinvd_exiting;
8388 using namespace msrs::ia32_vmx_true_procbased_ctls;
8407 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_unrestricted_guest()
8409 using namespace vmcs::secondary_processor_based_vm_execution_controls::unrestricted_guest;
8410 using namespace msrs::ia32_vmx_true_procbased_ctls;
8429 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_apic_register_virtualization()
8431 using namespace vmcs::secondary_processor_based_vm_execution_controls::apic_register_virtualization;
8432 using namespace msrs::ia32_vmx_true_procbased_ctls;
8451 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_virtual_interrupt_delivery()
8453 using namespace vmcs::secondary_processor_based_vm_execution_controls::virtual_interrupt_delivery;
8454 using namespace msrs::ia32_vmx_true_procbased_ctls;
8473 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_pause_loop_exiting()
8475 using namespace vmcs::secondary_processor_based_vm_execution_controls::pause_loop_exiting;
8476 using namespace msrs::ia32_vmx_true_procbased_ctls;
8495 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_rdrand_exiting()
8497 using namespace vmcs::secondary_processor_based_vm_execution_controls::rdrand_exiting;
8498 using namespace msrs::ia32_vmx_true_procbased_ctls;
8517 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_invpcid()
8519 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_invpcid;
8520 using namespace msrs::ia32_vmx_true_procbased_ctls;
8539 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_vm_functions()
8541 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_vm_functions;
8542 using namespace msrs::ia32_vmx_true_procbased_ctls;
8561 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_vmcs_shadowing()
8563 using namespace vmcs::secondary_processor_based_vm_execution_controls::vmcs_shadowing;
8564 using namespace msrs::ia32_vmx_true_procbased_ctls;
8583 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_rdseed_exiting()
8585 using namespace vmcs::secondary_processor_based_vm_execution_controls::rdseed_exiting;
8586 using namespace msrs::ia32_vmx_true_procbased_ctls;
8605 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_pml()
8607 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_pml;
8608 using namespace msrs::ia32_vmx_true_procbased_ctls;
8627 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_ept_violation_ve()
8629 using namespace vmcs::secondary_processor_based_vm_execution_controls::ept_violation_ve;
8630 using namespace msrs::ia32_vmx_true_procbased_ctls;
8649 vmcs_ut::test_vmcs_secondary_processor_based_vm_execution_controls_enable_xsaves_xrstors()
8651 using namespace vmcs::secondary_processor_based_vm_execution_controls::enable_xsaves_xrstors;
8652 using namespace msrs::ia32_vmx_true_procbased_ctls;
8671 vmcs_ut::test_vmcs_ple_gap()
8673 using namespace msrs::ia32_vmx_true_procbased_ctls;
8681 this->
expect_true(vmcs::ple_gap::get() == 0x11UL);
8694 this->
expect_true(vmcs::ple_gap::get() == 0xFFFUL);
8698 vmcs_ut::test_vmcs_ple_window()
8700 using namespace msrs::ia32_vmx_true_procbased_ctls;
8708 this->
expect_true(vmcs::ple_window::get() == 0x11UL);
8721 this->
expect_true(vmcs::ple_window::get() == 0xFFFUL);
8725 vmcs_ut::test_vmcs_vm_instruction_error()
8729 for (
auto && code : vm_instruction_error_codes)
8732 this->
expect_true(vmcs::vm_instruction_error::get() == code.first);
8740 vmcs_ut::test_vmcs_exit_reason()
8745 this->
expect_true(vmcs::exit_reason::get() == 1UL);
8752 vmcs_ut::test_vmcs_exit_reason_basic_exit_reason()
8754 using namespace vmcs::exit_reason;
8756 for (
auto && reason : exit_reasons)
8759 this->
expect_true(basic_exit_reason::get() == reason.first);
8767 vmcs_ut::test_vmcs_exit_reason_reserved()
8769 using namespace vmcs::exit_reason;
8777 vmcs_ut::test_vmcs_exit_reason_vm_exit_incident_to_enclave_mode()
8779 using namespace vmcs::exit_reason;
8781 g_vmcs_fields[
addr] = 0UL;
8791 vmcs_ut::test_vmcs_exit_reason_pending_mtf_vm_exit()
8793 using namespace vmcs::exit_reason;
8795 g_vmcs_fields[
addr] = 0UL;
8805 vmcs_ut::test_vmcs_exit_reason_vm_exit_from_vmx_root_operation()
8807 using namespace vmcs::exit_reason;
8809 g_vmcs_fields[
addr] = 0UL;
8819 vmcs_ut::test_vmcs_exit_reason_vm_entry_failure()
8821 using namespace vmcs::exit_reason;
8823 g_vmcs_fields[
addr] = 0UL;
8833 vmcs_ut::test_vmcs_vm_exit_interruption_information()
8838 this->
expect_true(vmcs::vm_exit_interruption_information::get() == 1UL);
8843 vmcs_ut::test_vmcs_vm_exit_interruption_information_vector()
8847 this->
expect_true(vmcs::vm_exit_interruption_information::vector::get() == 0xFFUL);
8852 vmcs_ut::test_vmcs_vm_exit_interruption_information_interruption_type()
8856 this->
expect_true(vmcs::vm_exit_interruption_information::interruption_type::get() == 7UL);
8861 vmcs_ut::test_vmcs_vm_exit_interruption_information_error_code_valid()
8873 vmcs_ut::test_vmcs_vm_exit_interruption_information_nmi_blocking_due_to_iret()
8885 vmcs_ut::test_vmcs_vm_exit_interruption_information_reserved()
8889 this->
expect_true(vmcs::vm_exit_interruption_information::reserved::get() == 0xEE000U);
8894 vmcs_ut::test_vmcs_vm_exit_interruption_information_valid_bit()
8906 vmcs_ut::test_vmcs_vm_exit_interruption_error_code()
8911 this->
expect_true(vmcs::vm_exit_interruption_error_code::get() == 1U);
8916 vmcs_ut::test_vmcs_idt_vectoring_information()
8921 this->
expect_true(vmcs::idt_vectoring_information::get() == 1UL);
8926 vmcs_ut::test_vmcs_idt_vectoring_information_vector()
8930 this->
expect_true(vmcs::idt_vectoring_information::vector::get() == 0xFFUL);
8935 vmcs_ut::test_vmcs_idt_vectoring_information_interruption_type()
8939 this->
expect_true(vmcs::idt_vectoring_information::interruption_type::get() == 7UL);
8944 vmcs_ut::test_vmcs_idt_vectoring_information_error_code_valid()
8956 vmcs_ut::test_vmcs_idt_vectoring_information_reserved()
8960 this->
expect_true(vmcs::idt_vectoring_information::reserved::get() == 0xEE000U);
8965 vmcs_ut::test_vmcs_idt_vectoring_information_valid_bit()
8977 vmcs_ut::test_vmcs_idt_vectoring_error_code()
8982 this->
expect_true(vmcs::idt_vectoring_error_code::get() == 1U);
8987 vmcs_ut::test_vmcs_vm_exit_instruction_length()
8992 this->
expect_true(vmcs::vm_exit_instruction_length::get() == 1U);
8997 vmcs_ut::test_vmcs_vm_exit_instruction_information()
9002 this->
expect_true(vmcs::vm_exit_instruction_information::get() == 1UL);
9007 vmcs_ut::test_vmcs_vm_exit_instruction_information_ins()
9009 using namespace vmcs::vm_exit_instruction_information;
9011 g_vmcs_fields[
addr] = 1UL;
9019 vmcs_ut::test_vmcs_vm_exit_instruction_information_ins_address_size()
9021 using namespace vmcs::vm_exit_instruction_information;
9031 vmcs_ut::test_vmcs_vm_exit_instruction_information_outs()
9033 using namespace vmcs::vm_exit_instruction_information;
9035 g_vmcs_fields[
addr] = 1UL;
9043 vmcs_ut::test_vmcs_vm_exit_instruction_information_outs_address_size()
9045 using namespace vmcs::vm_exit_instruction_information;
9055 vmcs_ut::test_vmcs_vm_exit_instruction_information_outs_segment_register()
9057 using namespace vmcs::vm_exit_instruction_information;
9067 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept()
9069 using namespace vmcs::vm_exit_instruction_information;
9071 g_vmcs_fields[
addr] = 1UL;
9079 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_scaling()
9081 using namespace vmcs::vm_exit_instruction_information;
9091 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_address_size()
9093 using namespace vmcs::vm_exit_instruction_information;
9103 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_segment_register()
9105 using namespace vmcs::vm_exit_instruction_information;
9115 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_index_reg()
9117 using namespace vmcs::vm_exit_instruction_information;
9127 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_index_reg_invalid()
9129 using namespace vmcs::vm_exit_instruction_information;
9139 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_base_reg()
9141 using namespace vmcs::vm_exit_instruction_information;
9151 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_base_reg_invalid()
9153 using namespace vmcs::vm_exit_instruction_information;
9163 vmcs_ut::test_vmcs_vm_exit_instruction_information_invept_reg2()
9165 using namespace vmcs::vm_exit_instruction_information;
9175 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid()
9177 using namespace vmcs::vm_exit_instruction_information;
9179 g_vmcs_fields[
addr] = 1UL;
9187 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_scaling()
9189 using namespace vmcs::vm_exit_instruction_information;
9199 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_address_size()
9201 using namespace vmcs::vm_exit_instruction_information;
9211 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_segment_register()
9213 using namespace vmcs::vm_exit_instruction_information;
9223 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_index_reg()
9225 using namespace vmcs::vm_exit_instruction_information;
9235 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_index_reg_invalid()
9237 using namespace vmcs::vm_exit_instruction_information;
9247 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_base_reg()
9249 using namespace vmcs::vm_exit_instruction_information;
9259 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_base_reg_invalid()
9261 using namespace vmcs::vm_exit_instruction_information;
9271 vmcs_ut::test_vmcs_vm_exit_instruction_information_invpcid_reg2()
9273 using namespace vmcs::vm_exit_instruction_information;
9283 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid()
9285 using namespace vmcs::vm_exit_instruction_information;
9287 g_vmcs_fields[
addr] = 1UL;
9295 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_scaling()
9297 using namespace vmcs::vm_exit_instruction_information;
9307 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_address_size()
9309 using namespace vmcs::vm_exit_instruction_information;
9319 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_segment_register()
9321 using namespace vmcs::vm_exit_instruction_information;
9331 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_index_reg()
9333 using namespace vmcs::vm_exit_instruction_information;
9343 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_index_reg_invalid()
9345 using namespace vmcs::vm_exit_instruction_information;
9355 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_base_reg()
9357 using namespace vmcs::vm_exit_instruction_information;
9367 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_base_reg_invalid()
9369 using namespace vmcs::vm_exit_instruction_information;
9379 vmcs_ut::test_vmcs_vm_exit_instruction_information_invvpid_reg2()
9381 using namespace vmcs::vm_exit_instruction_information;
9391 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt()
9393 using namespace vmcs::vm_exit_instruction_information;
9395 g_vmcs_fields[
addr] = 1UL;
9403 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_scaling()
9405 using namespace vmcs::vm_exit_instruction_information;
9415 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_address_size()
9417 using namespace vmcs::vm_exit_instruction_information;
9427 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_operand_size()
9429 using namespace vmcs::vm_exit_instruction_information;
9439 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_segment_register()
9441 using namespace vmcs::vm_exit_instruction_information;
9451 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_index_reg()
9453 using namespace vmcs::vm_exit_instruction_information;
9463 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_index_reg_invalid()
9465 using namespace vmcs::vm_exit_instruction_information;
9475 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_base_reg()
9477 using namespace vmcs::vm_exit_instruction_information;
9487 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_base_reg_invalid()
9489 using namespace vmcs::vm_exit_instruction_information;
9499 vmcs_ut::test_vmcs_vm_exit_instruction_information_lidt_instruction_identity()
9501 using namespace vmcs::vm_exit_instruction_information;
9511 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt()
9513 using namespace vmcs::vm_exit_instruction_information;
9515 g_vmcs_fields[
addr] = 1UL;
9523 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_scaling()
9525 using namespace vmcs::vm_exit_instruction_information;
9535 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_address_size()
9537 using namespace vmcs::vm_exit_instruction_information;
9547 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_operand_size()
9549 using namespace vmcs::vm_exit_instruction_information;
9559 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_segment_register()
9561 using namespace vmcs::vm_exit_instruction_information;
9571 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_index_reg()
9573 using namespace vmcs::vm_exit_instruction_information;
9583 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_index_reg_invalid()
9585 using namespace vmcs::vm_exit_instruction_information;
9595 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_base_reg()
9597 using namespace vmcs::vm_exit_instruction_information;
9607 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_base_reg_invalid()
9609 using namespace vmcs::vm_exit_instruction_information;
9619 vmcs_ut::test_vmcs_vm_exit_instruction_information_lgdt_instruction_identity()
9621 using namespace vmcs::vm_exit_instruction_information;
9631 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt()
9633 using namespace vmcs::vm_exit_instruction_information;
9635 g_vmcs_fields[
addr] = 1UL;
9643 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_scaling()
9645 using namespace vmcs::vm_exit_instruction_information;
9655 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_address_size()
9657 using namespace vmcs::vm_exit_instruction_information;
9667 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_operand_size()
9669 using namespace vmcs::vm_exit_instruction_information;
9679 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_segment_register()
9681 using namespace vmcs::vm_exit_instruction_information;
9691 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_index_reg()
9693 using namespace vmcs::vm_exit_instruction_information;
9703 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_index_reg_invalid()
9705 using namespace vmcs::vm_exit_instruction_information;
9715 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_base_reg()
9717 using namespace vmcs::vm_exit_instruction_information;
9727 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_base_reg_invalid()
9729 using namespace vmcs::vm_exit_instruction_information;
9739 vmcs_ut::test_vmcs_vm_exit_instruction_information_sidt_instruction_identity()
9741 using namespace vmcs::vm_exit_instruction_information;
9751 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt()
9753 using namespace vmcs::vm_exit_instruction_information;
9755 g_vmcs_fields[
addr] = 1UL;
9763 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_scaling()
9765 using namespace vmcs::vm_exit_instruction_information;
9775 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_address_size()
9777 using namespace vmcs::vm_exit_instruction_information;
9787 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_operand_size()
9789 using namespace vmcs::vm_exit_instruction_information;
9799 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_segment_register()
9801 using namespace vmcs::vm_exit_instruction_information;
9811 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_index_reg()
9813 using namespace vmcs::vm_exit_instruction_information;
9823 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_index_reg_invalid()
9825 using namespace vmcs::vm_exit_instruction_information;
9835 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_base_reg()
9837 using namespace vmcs::vm_exit_instruction_information;
9847 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_base_reg_invalid()
9849 using namespace vmcs::vm_exit_instruction_information;
9859 vmcs_ut::test_vmcs_vm_exit_instruction_information_sgdt_instruction_identity()
9861 using namespace vmcs::vm_exit_instruction_information;
9871 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt()
9873 using namespace vmcs::vm_exit_instruction_information;
9875 g_vmcs_fields[
addr] = 1UL;
9883 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_scaling()
9885 using namespace vmcs::vm_exit_instruction_information;
9895 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_reg1()
9897 using namespace vmcs::vm_exit_instruction_information;
9907 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_address_size()
9909 using namespace vmcs::vm_exit_instruction_information;
9919 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_mem_reg()
9921 using namespace vmcs::vm_exit_instruction_information;
9931 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_segment_register()
9933 using namespace vmcs::vm_exit_instruction_information;
9943 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_index_reg()
9945 using namespace vmcs::vm_exit_instruction_information;
9955 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_index_reg_invalid()
9957 using namespace vmcs::vm_exit_instruction_information;
9967 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_base_reg()
9969 using namespace vmcs::vm_exit_instruction_information;
9979 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_base_reg_invalid()
9981 using namespace vmcs::vm_exit_instruction_information;
9991 vmcs_ut::test_vmcs_vm_exit_instruction_information_lldt_instruction_identity()
9993 using namespace vmcs::vm_exit_instruction_information;
10003 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr()
10005 using namespace vmcs::vm_exit_instruction_information;
10007 g_vmcs_fields[
addr] = 1UL;
10015 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_scaling()
10017 using namespace vmcs::vm_exit_instruction_information;
10027 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_reg1()
10029 using namespace vmcs::vm_exit_instruction_information;
10039 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_address_size()
10041 using namespace vmcs::vm_exit_instruction_information;
10051 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_mem_reg()
10053 using namespace vmcs::vm_exit_instruction_information;
10063 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_segment_register()
10065 using namespace vmcs::vm_exit_instruction_information;
10075 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_index_reg()
10077 using namespace vmcs::vm_exit_instruction_information;
10087 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_index_reg_invalid()
10089 using namespace vmcs::vm_exit_instruction_information;
10099 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_base_reg()
10101 using namespace vmcs::vm_exit_instruction_information;
10111 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_base_reg_invalid()
10113 using namespace vmcs::vm_exit_instruction_information;
10123 vmcs_ut::test_vmcs_vm_exit_instruction_information_ltr_instruction_identity()
10125 using namespace vmcs::vm_exit_instruction_information;
10135 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt()
10137 using namespace vmcs::vm_exit_instruction_information;
10139 g_vmcs_fields[
addr] = 1UL;
10147 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_scaling()
10149 using namespace vmcs::vm_exit_instruction_information;
10159 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_reg1()
10161 using namespace vmcs::vm_exit_instruction_information;
10171 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_address_size()
10173 using namespace vmcs::vm_exit_instruction_information;
10183 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_mem_reg()
10185 using namespace vmcs::vm_exit_instruction_information;
10195 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_segment_register()
10197 using namespace vmcs::vm_exit_instruction_information;
10207 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_index_reg()
10209 using namespace vmcs::vm_exit_instruction_information;
10219 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_index_reg_invalid()
10221 using namespace vmcs::vm_exit_instruction_information;
10231 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_base_reg()
10233 using namespace vmcs::vm_exit_instruction_information;
10243 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_base_reg_invalid()
10245 using namespace vmcs::vm_exit_instruction_information;
10255 vmcs_ut::test_vmcs_vm_exit_instruction_information_sldt_instruction_identity()
10257 using namespace vmcs::vm_exit_instruction_information;
10267 vmcs_ut::test_vmcs_vm_exit_instruction_information_str()
10269 using namespace vmcs::vm_exit_instruction_information;
10271 g_vmcs_fields[
addr] = 1UL;
10279 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_scaling()
10281 using namespace vmcs::vm_exit_instruction_information;
10291 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_reg1()
10293 using namespace vmcs::vm_exit_instruction_information;
10303 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_address_size()
10305 using namespace vmcs::vm_exit_instruction_information;
10315 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_mem_reg()
10317 using namespace vmcs::vm_exit_instruction_information;
10327 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_segment_register()
10329 using namespace vmcs::vm_exit_instruction_information;
10339 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_index_reg()
10341 using namespace vmcs::vm_exit_instruction_information;
10351 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_index_reg_invalid()
10353 using namespace vmcs::vm_exit_instruction_information;
10363 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_base_reg()
10365 using namespace vmcs::vm_exit_instruction_information;
10375 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_base_reg_invalid()
10377 using namespace vmcs::vm_exit_instruction_information;
10387 vmcs_ut::test_vmcs_vm_exit_instruction_information_str_instruction_identity()
10389 using namespace vmcs::vm_exit_instruction_information;
10399 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdrand()
10401 using namespace vmcs::vm_exit_instruction_information;
10403 g_vmcs_fields[
addr] = 1UL;
10411 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdrand_destination_register()
10413 using namespace vmcs::vm_exit_instruction_information;
10423 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdrand_operand_size()
10425 using namespace vmcs::vm_exit_instruction_information;
10435 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdseed()
10437 using namespace vmcs::vm_exit_instruction_information;
10439 g_vmcs_fields[
addr] = 1UL;
10447 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdseed_destination_register()
10449 using namespace vmcs::vm_exit_instruction_information;
10459 vmcs_ut::test_vmcs_vm_exit_instruction_information_rdseed_operand_size()
10461 using namespace vmcs::vm_exit_instruction_information;
10471 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear()
10473 using namespace vmcs::vm_exit_instruction_information;
10475 g_vmcs_fields[
addr] = 1UL;
10483 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_scaling()
10485 using namespace vmcs::vm_exit_instruction_information;
10495 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_address_size()
10497 using namespace vmcs::vm_exit_instruction_information;
10507 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_segment_register()
10509 using namespace vmcs::vm_exit_instruction_information;
10519 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_index_reg()
10521 using namespace vmcs::vm_exit_instruction_information;
10531 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_index_reg_invalid()
10533 using namespace vmcs::vm_exit_instruction_information;
10543 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_base_reg()
10545 using namespace vmcs::vm_exit_instruction_information;
10555 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmclear_base_reg_invalid()
10557 using namespace vmcs::vm_exit_instruction_information;
10567 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld()
10569 using namespace vmcs::vm_exit_instruction_information;
10571 g_vmcs_fields[
addr] = 1UL;
10579 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_scaling()
10581 using namespace vmcs::vm_exit_instruction_information;
10591 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_address_size()
10593 using namespace vmcs::vm_exit_instruction_information;
10603 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_segment_register()
10605 using namespace vmcs::vm_exit_instruction_information;
10615 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_index_reg()
10617 using namespace vmcs::vm_exit_instruction_information;
10627 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_index_reg_invalid()
10629 using namespace vmcs::vm_exit_instruction_information;
10639 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_base_reg()
10641 using namespace vmcs::vm_exit_instruction_information;
10651 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrld_base_reg_invalid()
10653 using namespace vmcs::vm_exit_instruction_information;
10663 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst()
10665 using namespace vmcs::vm_exit_instruction_information;
10667 g_vmcs_fields[
addr] = 1UL;
10675 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_scaling()
10677 using namespace vmcs::vm_exit_instruction_information;
10687 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_address_size()
10689 using namespace vmcs::vm_exit_instruction_information;
10699 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_segment_register()
10701 using namespace vmcs::vm_exit_instruction_information;
10711 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_index_reg()
10713 using namespace vmcs::vm_exit_instruction_information;
10723 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_index_reg_invalid()
10725 using namespace vmcs::vm_exit_instruction_information;
10735 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_base_reg()
10737 using namespace vmcs::vm_exit_instruction_information;
10747 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmptrst_base_reg_invalid()
10749 using namespace vmcs::vm_exit_instruction_information;
10759 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon()
10761 using namespace vmcs::vm_exit_instruction_information;
10763 g_vmcs_fields[
addr] = 1UL;
10771 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_scaling()
10773 using namespace vmcs::vm_exit_instruction_information;
10783 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_address_size()
10785 using namespace vmcs::vm_exit_instruction_information;
10795 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_segment_register()
10797 using namespace vmcs::vm_exit_instruction_information;
10807 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_index_reg()
10809 using namespace vmcs::vm_exit_instruction_information;
10819 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_index_reg_invalid()
10821 using namespace vmcs::vm_exit_instruction_information;
10831 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_base_reg()
10833 using namespace vmcs::vm_exit_instruction_information;
10843 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmxon_base_reg_invalid()
10845 using namespace vmcs::vm_exit_instruction_information;
10855 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors()
10857 using namespace vmcs::vm_exit_instruction_information;
10859 g_vmcs_fields[
addr] = 1UL;
10867 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_scaling()
10869 using namespace vmcs::vm_exit_instruction_information;
10879 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_address_size()
10881 using namespace vmcs::vm_exit_instruction_information;
10891 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_segment_register()
10893 using namespace vmcs::vm_exit_instruction_information;
10903 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_index_reg()
10905 using namespace vmcs::vm_exit_instruction_information;
10915 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_index_reg_invalid()
10917 using namespace vmcs::vm_exit_instruction_information;
10927 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_base_reg()
10929 using namespace vmcs::vm_exit_instruction_information;
10939 vmcs_ut::test_vmcs_vm_exit_instruction_information_xrstors_base_reg_invalid()
10941 using namespace vmcs::vm_exit_instruction_information;
10951 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves()
10953 using namespace vmcs::vm_exit_instruction_information;
10955 g_vmcs_fields[
addr] = 1UL;
10963 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_scaling()
10965 using namespace vmcs::vm_exit_instruction_information;
10975 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_address_size()
10977 using namespace vmcs::vm_exit_instruction_information;
10987 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_segment_register()
10989 using namespace vmcs::vm_exit_instruction_information;
10999 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_index_reg()
11001 using namespace vmcs::vm_exit_instruction_information;
11011 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_index_reg_invalid()
11013 using namespace vmcs::vm_exit_instruction_information;
11023 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_base_reg()
11025 using namespace vmcs::vm_exit_instruction_information;
11035 vmcs_ut::test_vmcs_vm_exit_instruction_information_xsaves_base_reg_invalid()
11037 using namespace vmcs::vm_exit_instruction_information;
11047 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread()
11049 using namespace vmcs::vm_exit_instruction_information;
11051 g_vmcs_fields[
addr] = 1UL;
11059 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_scaling()
11061 using namespace vmcs::vm_exit_instruction_information;
11071 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_reg1()
11073 using namespace vmcs::vm_exit_instruction_information;
11083 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_address_size()
11085 using namespace vmcs::vm_exit_instruction_information;
11095 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_mem_reg()
11097 using namespace vmcs::vm_exit_instruction_information;
11107 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_segment_register()
11109 using namespace vmcs::vm_exit_instruction_information;
11119 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_index_reg()
11121 using namespace vmcs::vm_exit_instruction_information;
11131 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_index_reg_invalid()
11133 using namespace vmcs::vm_exit_instruction_information;
11143 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_base_reg()
11145 using namespace vmcs::vm_exit_instruction_information;
11155 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_base_reg_invalid()
11157 using namespace vmcs::vm_exit_instruction_information;
11167 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmread_reg2()
11169 using namespace vmcs::vm_exit_instruction_information;
11179 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite()
11181 using namespace vmcs::vm_exit_instruction_information;
11183 g_vmcs_fields[
addr] = 1UL;
11191 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_scaling()
11193 using namespace vmcs::vm_exit_instruction_information;
11203 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_reg1()
11205 using namespace vmcs::vm_exit_instruction_information;
11215 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_address_size()
11217 using namespace vmcs::vm_exit_instruction_information;
11227 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_mem_reg()
11229 using namespace vmcs::vm_exit_instruction_information;
11239 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_segment_register()
11241 using namespace vmcs::vm_exit_instruction_information;
11251 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_index_reg()
11253 using namespace vmcs::vm_exit_instruction_information;
11263 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_index_reg_invalid()
11265 using namespace vmcs::vm_exit_instruction_information;
11275 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_base_reg()
11277 using namespace vmcs::vm_exit_instruction_information;
11287 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_base_reg_invalid()
11289 using namespace vmcs::vm_exit_instruction_information;
11299 vmcs_ut::test_vmcs_vm_exit_instruction_information_vmwrite_reg2()
11301 using namespace vmcs::vm_exit_instruction_information;
11311 vmcs_ut::test_vmcs_exit_qualification()
11316 this->
expect_true(vmcs::exit_qualification::get() == 1UL);
11323 vmcs_ut::test_vmcs_exit_qualification_debug_exception()
11328 this->
expect_true(vmcs::exit_qualification::debug_exception::get() == 1UL);
11335 vmcs_ut::test_vmcs_exit_qualification_debug_exception_b0()
11349 vmcs_ut::test_vmcs_exit_qualification_debug_exception_b1()
11363 vmcs_ut::test_vmcs_exit_qualification_debug_exception_b2()
11377 vmcs_ut::test_vmcs_exit_qualification_debug_exception_b3()
11391 vmcs_ut::test_vmcs_exit_qualification_debug_exception_reserved()
11394 this->
expect_true(vmcs::exit_qualification::debug_exception::reserved::get() == 0x600U);
11395 this->
expect_true(vmcs::exit_qualification::debug_exception::reserved::get(0x600UL) == 0x600U);
11402 vmcs_ut::test_vmcs_exit_qualification_debug_exception_bd()
11416 vmcs_ut::test_vmcs_exit_qualification_debug_exception_bs()
11430 vmcs_ut::test_vmcs_exit_qualification_page_fault_exception()
11442 vmcs_ut::test_vmcs_exit_qualification_sipi()
11447 this->
expect_true(vmcs::exit_qualification::sipi::get() == 0x34UL);
11454 vmcs_ut::test_vmcs_exit_qualification_sipi_vector()
11457 this->
expect_true(vmcs::exit_qualification::sipi::vector::get() == 0x34UL);
11458 this->
expect_true(vmcs::exit_qualification::sipi::vector::get(0xF34UL) == 0x34UL);
11465 vmcs_ut::test_vmcs_exit_qualification_task_switch()
11470 this->
expect_true(vmcs::exit_qualification::task_switch::get() == 0x1UL);
11477 vmcs_ut::test_vmcs_exit_qualification_task_switch_tss_selector()
11480 this->
expect_true(vmcs::exit_qualification::task_switch::tss_selector::get() == 0x3456UL);
11481 this->
expect_true(vmcs::exit_qualification::task_switch::tss_selector::get(0xF0003456UL) == 0x3456UL);
11488 vmcs_ut::test_vmcs_exit_qualification_task_switch_reserved()
11491 this->
expect_true(vmcs::exit_qualification::task_switch::reserved::get() == 0xFFF0000UL);
11492 this->
expect_true(vmcs::exit_qualification::task_switch::reserved::get(0xFFF0000UL) == 0xFFF0000UL);
11499 vmcs_ut::test_vmcs_exit_qualification_task_switch_source_of_task_switch_init()
11519 vmcs_ut::test_vmcs_exit_qualification_invept()
11522 this->
expect_true(vmcs::exit_qualification::invept::get() == 0x1UL);
11529 vmcs_ut::test_vmcs_exit_qualification_invpcid()
11532 this->
expect_true(vmcs::exit_qualification::invpcid::get() == 0x1UL);
11539 vmcs_ut::test_vmcs_exit_qualification_invvpid()
11542 this->
expect_true(vmcs::exit_qualification::invvpid::get() == 0x1UL);
11549 vmcs_ut::test_vmcs_exit_qualification_lgdt()
11552 this->
expect_true(vmcs::exit_qualification::lgdt::get() == 0x1UL);
11559 vmcs_ut::test_vmcs_exit_qualification_lidt()
11562 this->
expect_true(vmcs::exit_qualification::lidt::get() == 0x1UL);
11569 vmcs_ut::test_vmcs_exit_qualification_lldt()
11572 this->
expect_true(vmcs::exit_qualification::lldt::get() == 0x1UL);
11579 vmcs_ut::test_vmcs_exit_qualification_ltr()
11582 this->
expect_true(vmcs::exit_qualification::ltr::get() == 0x1UL);
11589 vmcs_ut::test_vmcs_exit_qualification_sgdt()
11592 this->
expect_true(vmcs::exit_qualification::sgdt::get() == 0x1UL);
11599 vmcs_ut::test_vmcs_exit_qualification_sidt()
11602 this->
expect_true(vmcs::exit_qualification::sidt::get() == 0x1UL);
11609 vmcs_ut::test_vmcs_exit_qualification_sldt()
11612 this->
expect_true(vmcs::exit_qualification::sldt::get() == 0x1UL);
11619 vmcs_ut::test_vmcs_exit_qualification_str()
11622 this->
expect_true(vmcs::exit_qualification::str::get() == 0x1UL);
11629 vmcs_ut::test_vmcs_exit_qualification_vmclear()
11632 this->
expect_true(vmcs::exit_qualification::vmclear::get() == 0x1UL);
11639 vmcs_ut::test_vmcs_exit_qualification_vmptrld()
11642 this->
expect_true(vmcs::exit_qualification::vmptrld::get() == 0x1UL);
11649 vmcs_ut::test_vmcs_exit_qualification_vmread()
11652 this->
expect_true(vmcs::exit_qualification::vmread::get() == 0x1UL);
11659 vmcs_ut::test_vmcs_exit_qualification_vmwrite()
11662 this->
expect_true(vmcs::exit_qualification::vmwrite::get() == 0x1UL);
11669 vmcs_ut::test_vmcs_exit_qualification_vmxon()
11672 this->
expect_true(vmcs::exit_qualification::vmxon::get() == 0x1UL);
11679 vmcs_ut::test_vmcs_exit_qualification_xrstors()
11682 this->
expect_true(vmcs::exit_qualification::xrstors::get() == 0x1UL);
11689 vmcs_ut::test_vmcs_exit_qualification_xsaves()
11692 this->
expect_true(vmcs::exit_qualification::xsaves::get() == 0x1UL);
11699 vmcs_ut::test_vmcs_exit_qualification_control_register_access()
11704 this->
expect_true(vmcs::exit_qualification::control_register_access::get() == 0x34UL);
11711 vmcs_ut::test_vmcs_exit_qualification_control_register_access_control_register_number()
11714 this->
expect_true(vmcs::exit_qualification::control_register_access::control_register_number::get() == 0x2UL);
11715 this->
expect_true(vmcs::exit_qualification::control_register_access::control_register_number::get(0x42UL) == 0x2UL);
11722 vmcs_ut::test_vmcs_exit_qualification_control_register_access_access_type()
11724 using namespace vmcs::exit_qualification::control_register_access;
11742 vmcs_ut::test_vmcs_exit_qualification_control_register_access_lmsw_operand_type()
11744 using namespace vmcs::exit_qualification::control_register_access;
11755 vmcs_ut::test_vmcs_exit_qualification_control_register_access_reserved()
11758 this->
expect_true(vmcs::exit_qualification::control_register_access::reserved::get() == 0x3080UL);
11759 this->
expect_true(vmcs::exit_qualification::control_register_access::reserved::get(0x3080UL) == 0x3080UL);
11766 vmcs_ut::test_vmcs_exit_qualification_control_register_access_general_purpose_register()
11768 using namespace vmcs::exit_qualification::control_register_access;
11779 vmcs_ut::test_vmcs_exit_qualification_control_register_access_source_data()
11781 using namespace vmcs::exit_qualification::control_register_access;
11785 this->
expect_true(source_data::get(0x30000UL) == 3UL);
11792 vmcs_ut::test_vmcs_exit_qualification_mov_dr()
11797 this->
expect_true(vmcs::exit_qualification::mov_dr::get() == 0x34UL);
11804 vmcs_ut::test_vmcs_exit_qualification_mov_dr_debug_register_number()
11807 this->
expect_true(vmcs::exit_qualification::mov_dr::debug_register_number::get() == 0x2UL);
11808 this->
expect_true(vmcs::exit_qualification::mov_dr::debug_register_number::get(0x42UL) == 0x2UL);
11815 vmcs_ut::test_vmcs_exit_qualification_mov_dr_reserved()
11818 this->
expect_true(vmcs::exit_qualification::mov_dr::reserved::get() == 0x88UL);
11819 this->
expect_true(vmcs::exit_qualification::mov_dr::reserved::get(0x88UL) == 0x88UL);
11826 vmcs_ut::test_vmcs_exit_qualification_mov_dr_direction_of_access()
11839 vmcs_ut::test_vmcs_exit_qualification_mov_dr_general_purpose_register()
11852 vmcs_ut::test_vmcs_exit_qualification_io_instruction()
11857 this->
expect_true(vmcs::exit_qualification::io_instruction::get() == 0x34UL);
11864 vmcs_ut::test_vmcs_exit_qualification_io_instruction_size_of_access()
11880 vmcs_ut::test_vmcs_exit_qualification_io_instruction_direction_of_access()
11893 vmcs_ut::test_vmcs_exit_qualification_io_instruction_string_instruction()
11906 vmcs_ut::test_vmcs_exit_qualification_io_instruction_rep_prefixed()
11919 vmcs_ut::test_vmcs_exit_qualification_io_instruction_operand_encoding()
11932 vmcs_ut::test_vmcs_exit_qualification_io_instruction_reserved()
11938 this->
expect_true(reserved::get(0x0UL) == 0x0UL);
11945 vmcs_ut::test_vmcs_exit_qualification_io_instruction_port_number()
11951 this->
expect_true(port_number::get(0x0UL) == 0x0UL);
11958 vmcs_ut::test_vmcs_exit_qualification_mwait()
11972 vmcs_ut::test_vmcs_exit_qualification_linear_apic_access()
11974 using namespace vmcs::exit_qualification::linear_apic_access;
11986 vmcs_ut::test_vmcs_exit_qualification_linear_apic_access_offset()
11988 using namespace vmcs::exit_qualification::linear_apic_access;
11999 vmcs_ut::test_vmcs_exit_qualification_linear_apic_access_access_type()
12001 using namespace vmcs::exit_qualification::linear_apic_access;
12019 vmcs_ut::test_vmcs_exit_qualification_linear_apic_access_reserved()
12021 using namespace vmcs::exit_qualification::linear_apic_access;
12032 vmcs_ut::test_vmcs_exit_qualification_guest_physical_apic_access()
12034 using namespace vmcs::exit_qualification::guest_physical_apic_access;
12046 vmcs_ut::test_vmcs_exit_qualification_guest_physical_apic_access_access_type()
12048 using namespace vmcs::exit_qualification::guest_physical_apic_access;
12059 vmcs_ut::test_vmcs_exit_qualification_guest_physical_apic_access_reserved()
12061 using namespace vmcs::exit_qualification::guest_physical_apic_access;
12072 vmcs_ut::test_vmcs_exit_qualification_ept_violation()
12077 this->
expect_true(vmcs::exit_qualification::ept_violation::get() == 1UL);
12084 vmcs_ut::test_vmcs_exit_qualification_ept_violation_data_read()
12100 vmcs_ut::test_vmcs_exit_qualification_ept_violation_data_write()
12116 vmcs_ut::test_vmcs_exit_qualification_ept_violation_instruction_fetch()
12132 vmcs_ut::test_vmcs_exit_qualification_ept_violation_readable()
12148 vmcs_ut::test_vmcs_exit_qualification_ept_violation_writeable()
12164 vmcs_ut::test_vmcs_exit_qualification_ept_violation_executable()
12180 vmcs_ut::test_vmcs_exit_qualification_ept_violation_reserved()
12186 this->
expect_true(reserved::get(0x40UL) == 0x40UL);
12193 vmcs_ut::test_vmcs_exit_qualification_ept_violation_valid_guest_linear_address()
12209 vmcs_ut::test_vmcs_exit_qualification_ept_violation_nmi_unblocking_due_to_iret()
12225 vmcs_ut::test_vmcs_exit_qualification_eoi_virtualization()
12230 this->
expect_true(vmcs::exit_qualification::eoi_virtualization::get() == 1UL);
12237 vmcs_ut::test_vmcs_exit_qualification_eoi_virtualization_vector()
12239 using namespace vmcs::exit_qualification::eoi_virtualization;
12250 vmcs_ut::test_vmcs_exit_qualification_apic_write()
12255 this->
expect_true(vmcs::exit_qualification::apic_write::get() == 1UL);
12262 vmcs_ut::test_vmcs_exit_qualification_apic_write_offset()
12275 vmcs_ut::test_vmcs_io_rcx()
12285 vmcs_ut::test_vmcs_io_rsi()
12295 vmcs_ut::test_vmcs_io_rdi()
12305 vmcs_ut::test_vmcs_io_rip()
12315 vmcs_ut::test_vmcs_guest_linear_address()
12318 this->
expect_true(vmcs::guest_linear_address::get() == 1U);
constexpr const auto cpuid
auto set_vm_control_if_allowed(bool val, MA msr_addr, CA ctls_addr, const char *name, M mask, bool verbose, bool field_exists) noexcept
#define expect_exception(f, e)
constexpr const auto vmx_preemption_timer_expired
void uint64_t uint64_t * rcx
auto get_vmcs_field_if_exists(T addr, const char *name, bool verbose, bool exists)
auto set_vm_function_control(bool val, MA msr_addr, CA ctls_addr, const char *name, M mask, bool field_exists)
auto address_if_exists(bool verbose=false) noexcept
constexpr const auto from_dr
constexpr const auto instruction_fetch
virtual intel_x64::cr0::value_type cr0() const
virtual intel_x64::cr3::value_type cr3() const
#define RUN_UNITTEST_WITH_MOCKS(a, b)
virtual gdt_x64::access_rights_type ldtr_access_rights() const
virtual gdt_x64::access_rights_type gs_access_rights() const
virtual x64::segment_register::type es() const
constexpr const auto ring0_cs_descriptor
constexpr const auto nmi_window
virtual gdt_x64::limit_type es_limit() const
constexpr const auto vm_entry_failure_invalid_guest_state
bool __vmwrite(uint64_t field, uint64_t val) noexcept
constexpr const auto shutdown
virtual gdt_x64::limit_type ldtr_limit() const
virtual intel_x64::msrs::value_type ia32_gs_base_msr() const
constexpr const auto task_gate_in_idt
auto is_disabled_if_exists(bool verbose=false) noexcept
virtual x64::segment_register::type cs() const
constexpr const auto read_during_instruction_execution
virtual intel_x64::msrs::value_type ia32_sysenter_esp_msr() const
constexpr const auto call_instruction
constexpr const auto exception_or_non_maskable_interrupt
virtual gdt_x64::limit_type cs_limit() const
constexpr const auto io_instruction
void pin_ctl_allow1(uint64_t mask)
std::map< uint64_t, uint64_t > g_vmcs_fields
constexpr const auto vmptrld
virtual gdt_x64::limit_type gs_limit() const
constexpr const auto rdtscp
#define expect_no_exception(f)
constexpr const auto instruction_fetch_or_execution
constexpr const auto mask
constexpr const auto external_interrupt
virtual gdt_x64::base_type ldtr_base() const
auto description_if_exists(bool verbose=false) noexcept
auto vm_instruction_error_description(T error, bool exists)
constexpr const auto rdtsc
virtual x64::segment_register::type ldtr() const
constexpr const auto mask
virtual gdt_x64::base_type ds_base() const
constexpr const auto lmsw
constexpr const auto ept_violation
virtual intel_x64::msrs::value_type ia32_sysenter_cs_msr() const
constexpr const auto pause
virtual gdt_x64::limit_type ss_limit() const
constexpr const auto invalid
constexpr const auto mask
void vmcs_resume(state_save_intel_x64 *state_save)
virtual gdt_x64::base_type tr_base() const
constexpr const auto xsaves
constexpr const auto mov_to_cr
virtual x64::segment_register::type tr() const
constexpr const auto unusable
virtual pointer physint_to_virtptr(integer_pointer phys) const
virtual gdt_x64::access_rights_type es_access_rights() const
constexpr const auto xrstors
auto get_if_exists(bool verbose=false) noexcept
constexpr const auto to_dr
constexpr const auto invpcid
virtual integer_pointer virtptr_to_physint(pointer virt) const
constexpr const auto invept
constexpr const auto init_signal
constexpr const auto not_string
constexpr const auto interrupt_window
constexpr const auto apic_write
constexpr const auto hardware_exception
constexpr const auto triple_fault
virtual x64::segment_register::type ss() const
void setup_check_control_vmx_controls_all_paths(std::vector< struct control_flow_path > &cfg)
constexpr const auto invd
void * physint_to_virtptr(uintptr_t phys)
constexpr const auto tpr_below_threshold
auto set_vmcs_field_if_exists(V val, A addr, const char *name, bool verbose, bool exists) noexcept
virtual gdt_x64::size_type gdt_limit() const
virtual x64::segment_register::type fs() const
constexpr const auto rdmsr
void enable_if_exists(bool verbose=false) noexcept
virtual gdt_x64::base_type es_base() const
constexpr const auto other_smi
constexpr const auto jmp_instruction
constexpr const auto from
constexpr const auto xsetbv
constexpr const auto vm_entry_failure_machine_check_event
void proc_ctl2_disallow1(uint64_t mask)
constexpr const auto addr
std::map< msrs::field_type, msrs::value_type > g_msrs
virtual gdt_x64::limit_type ds_limit() const
constexpr const auto getsec
bool __vmlaunch_demote(void) noexcept
constexpr const auto monitor
constexpr const auto vmread
void set_if_exists(T val, bool verbose=false) noexcept
std::map< cpuid::field_type, cpuid::value_type > g_eax_cpuid
virtual x64::segment_register::type gs() const
constexpr const auto vmwrite
constexpr const auto string
constexpr const auto rdrand
constexpr const auto vmresume
constexpr const auto two_byte
size_t g_new_throws_bad_alloc
virtual gdt_x64::access_rights_type fs_access_rights() const
void disable_if_exists(bool verbose=false) noexcept
constexpr const auto write_back
virtual intel_x64::msrs::value_type ia32_efer_msr() const
constexpr const auto wbinvd
virtual gdt_x64::limit_type fs_limit() const
constexpr const auto rdpmc
static memory_manager_x64 * instance() noexcept
constexpr const auto write_during_instruction_execution
virtual intel_x64::msrs::value_type ia32_perf_global_ctrl_msr() const
constexpr const auto apic_access
virtual gdt_x64::base_type cs_base() const
auto is_enabled_if_exists(bool verbose=false) noexcept
constexpr const auto event_delivery
constexpr const auto ring0_tr_descriptor
constexpr const auto uncacheable_minus
constexpr const auto control_register_accesses
auto basic_exit_reason_description(T reason, bool exists)
constexpr const auto access_to_gdtr_or_idtr
constexpr const auto reserved
auto set_vmcs_field(V val, A addr, const char *name, bool exists)
constexpr const auto ring0_gs_descriptor
virtual intel_x64::cr4::value_type cr4() const
virtual idt_x64::size_type idt_limit() const
constexpr const auto write_protected
virtual gdt_x64::base_type fs_base() const
void proc_ctl2_allow1(uint64_t mask)
virtual gdt_x64::limit_type tr_limit() const
auto basic_exit_reason_description_if_exists(T reason, bool verbose, bool exists)
constexpr const auto vmxon
constexpr const auto mov_from_cr
constexpr const auto rdseed
constexpr const auto uncacheable
void proc_ctl_allow1(uint64_t mask)
virtual gdt_x64::access_rights_type ds_access_rights() const
auto vm_instruction_error_description_if_exists(T error, bool verbose, bool exists)
virtual gdt_x64::access_rights_type cs_access_rights() const
constexpr const auto access_to_ldtr_or_tr
virtual x64::segment_register::type ds() const
virtual intel_x64::msrs::value_type ia32_sysenter_eip_msr() const
virtual x64::dr7::value_type dr7() const
constexpr const auto mov_dr
virtual gdt_x64::base_type gs_base() const
constexpr const auto name
auto get_vmcs_field(T addr, const char *name, bool exists)
constexpr const auto monitor_trap_flag
void setup_check_guest_state_all_paths(std::vector< struct control_flow_path > &cfg)
void enable_if_allowed(bool verbose=false) noexcept
virtual gdt_x64::base_type ss_base() const
constexpr const auto invlpg
virtual intel_x64::msrs::value_type ia32_debugctl_msr() const
constexpr const auto vmlaunch
constexpr const auto mwait
virtual gdt_x64::access_rights_type ss_access_rights() const
constexpr const auto msr_addr
constexpr const auto wrmsr
constexpr const auto ring0_ss_descriptor
constexpr const auto iret_instruction
auto set_vm_control(bool val, MA msr_addr, CA ctls_addr, const char *name, M mask, bool field_exists)
constexpr const auto vmclear
constexpr const auto one_byte
virtual idt_x64::integer_pointer idt_base() const
void disable_if_allowed(bool verbose=false) noexcept
void vmfunc_ctl_allow1(uint64_t mask)
auto set_vm_function_control_if_allowed(bool val, MA msr_addr, CA ctls_addr, const char *name, M mask, bool verbose, bool field_exists) noexcept
virtual x64::rflags::value_type rflags() const
constexpr const auto write_through
constexpr const auto invvpid
constexpr const auto wait_for_sipi
uintptr_t virtptr_to_physint(void *ptr)
virtual intel_x64::msrs::value_type ia32_pat_msr() const
constexpr const auto vmxoff
constexpr const auto clts
constexpr const auto ring0_fs_descriptor
virtual void dump() const
constexpr const auto vm_entry_failure_msr_loading
constexpr const auto immediate
constexpr const auto virtualized_eoi
void setup_check_host_state_all_paths(std::vector< struct control_flow_path > &cfg)
bool g_virt_to_phys_return_nullptr
constexpr const auto four_byte
constexpr const auto vmptrst
constexpr const auto ept_misconfiguration
constexpr const auto not_rep
constexpr const auto active
constexpr const auto vmfunc
constexpr const auto sipi
constexpr const auto write_combining
virtual gdt_x64::access_rights_type tr_access_rights() const
void vmcs_launch(state_save_intel_x64 *state_save)
virtual intel_x64::msrs::value_type ia32_fs_base_msr() const
virtual gdt_x64::integer_pointer gdt_base() const
constexpr const auto task_switch
std::function< void()> setup