61 if (0 != ((~cr0 & ia32_vmx_cr0_fixed0) | (cr0 & ~ia32_vmx_cr0_fixed1)))
63 bferror <<
" failed: check_host_cr0_for_unsupported_bits" << bfendl;
64 bferror <<
" - ia32_vmx_cr0_fixed0: " <<
view_as_pointer(ia32_vmx_cr0_fixed0) << bfendl;
65 bferror <<
" - ia32_vmx_cr0_fixed1: " <<
view_as_pointer(ia32_vmx_cr0_fixed1) << bfendl;
68 throw std::logic_error(
"invalid cr0");
79 if (0 != ((~cr4 & ia32_vmx_cr4_fixed0) | (cr4 & ~ia32_vmx_cr4_fixed1)))
81 bferror <<
" failed: check_host_cr4_for_unsupported_bits" << bfendl;
82 bferror <<
" - ia32_vmx_cr4_fixed0: " <<
view_as_pointer(ia32_vmx_cr4_fixed0) << bfendl;
83 bferror <<
" - ia32_vmx_cr4_fixed1: " <<
view_as_pointer(ia32_vmx_cr4_fixed1) << bfendl;
86 throw std::logic_error(
"invalid cr4");
94 throw std::logic_error(
"host cr3 too large");
101 throw std::logic_error(
"host sysenter esp must be canonical");
108 throw std::logic_error(
"host sysenter eip must be canonical");
118 throw std::logic_error(
"host perf global ctrl msr reserved bits must be 0");
128 throw std::logic_error(
"pat0 has a reserved memory type");
131 throw std::logic_error(
"pat1 has a reserved memory type");
134 throw std::logic_error(
"pat2 has a reserved memory type");
137 throw std::logic_error(
"pat3 has a reserved memory type");
140 throw std::logic_error(
"pat4 has a reserved memory type");
143 throw std::logic_error(
"pat5 has a reserved memory type");
146 throw std::logic_error(
"pat6 has a reserved memory type");
149 throw std::logic_error(
"pat7 has a reserved memory type");
159 throw std::logic_error(
"host_ia32_efer reserved bits must be 0 if " 160 "load_ia32_efer exit control is enabled");
166 throw std::logic_error(
"host addr space is 0, but efer.lma is 1");
169 throw std::logic_error(
"host addr space is 1, but efer.lma is 0");
175 throw std::logic_error(
"efer.lme is 0, but efer.lma is 1");
178 throw std::logic_error(
"efer.lme is 1, but efer.lma is 0");
205 throw std::logic_error(
"host es ti flag must be 0");
208 throw std::logic_error(
"host es rpl flag must be 0");
215 throw std::logic_error(
"host cs ti flag must be 0");
218 throw std::logic_error(
"host cs rpl flag must be 0");
225 throw std::logic_error(
"host ss ti flag must be 0");
228 throw std::logic_error(
"host ss rpl flag must be 0");
235 throw std::logic_error(
"host ds ti flag must be 0");
238 throw std::logic_error(
"host ds rpl flag must be 0");
245 throw std::logic_error(
"host fs ti flag must be 0");
248 throw std::logic_error(
"host fs rpl flag must be 0");
255 throw std::logic_error(
"host gs ti flag must be 0");
258 throw std::logic_error(
"host gs rpl flag must be 0");
265 throw std::logic_error(
"host tr ti flag must be 0");
268 throw std::logic_error(
"host tr rpl flag must be 0");
275 throw std::logic_error(
"host cs cannot equal 0");
282 throw std::logic_error(
"host tr cannot equal 0");
292 throw std::logic_error(
"host ss cannot equal 0");
299 throw std::logic_error(
"host fs base must be canonical");
306 throw std::logic_error(
"host gs base must be canonical");
313 throw std::logic_error(
"host gdtr base must be canonical");
320 throw std::logic_error(
"host idtr base must be canonical");
327 throw std::logic_error(
"host tr base must be canonical");
346 throw std::logic_error(
"ia 32e mode must be 0 if efer.lma == 0");
349 throw std::logic_error(
"host addr space must be 0 if efer.lma == 0");
359 throw std::logic_error(
"host addr space must be 1 if efer.lma == 1");
369 throw std::logic_error(
"ia 32e mode must be disabled if host addr space is disabled");
372 throw std::logic_error(
"cr4 pcide must be disabled if host addr space is disabled");
375 throw std::logic_error(
"rip bits 63:32 must be 0 if host addr space is disabled");
385 throw std::logic_error(
"cr4 pae must be enabled if host addr space is enabled");
388 throw std::logic_error(
"host rip must be canonical");
void host_gs_selector_rpl_ti_equal_zero()
void host_cr4_for_unsupported_bits()
void host_es_selector_rpl_ti_equal_zero()
void host_ia32_sysenter_eip_canonical_address()
auto is_physical_address_valid(T addr)
void host_segment_and_descriptor_table_registers_all()
void host_tr_selector_rpl_ti_equal_zero()
void host_tr_not_equal_zero()
void host_tr_canonical_base_address()
void host_fs_selector_rpl_ti_equal_zero()
void host_ds_selector_rpl_ti_equal_zero()
auto memory_type_reserved(T memory_type)
void host_gs_canonical_base_address()
void host_ss_not_equal_zero()
void host_cr0_for_unsupported_bits()
void host_fs_canonical_base_address()
void host_verify_load_ia32_perf_global_ctrl()
void host_cs_selector_rpl_ti_equal_zero()
void host_control_registers_and_msrs_all()
void host_address_space_size_all()
void host_cr3_for_unsupported_bits()
void host_address_space_enabled()
void host_cs_not_equal_zero()
const void * view_as_pointer(const T val)
void host_verify_load_ia32_efer()
void host_if_outside_ia32e_mode()
void host_ss_selector_rpl_ti_equal_zero()
void host_address_space_disabled()
auto is_address_canonical(T addr)
void host_verify_load_ia32_pat()
void host_address_space_size_exit_ctl_is_set()
void host_idtr_canonical_base_address()
void host_ia32_sysenter_esp_canonical_address()
void host_gdtr_canonical_base_address()