test.cpp
Go to the documentation of this file.
1 //
2 // Bareflank Hypervisor
3 //
4 // Copyright (C) 2015 Assured Information Security, Inc.
5 // Author: Rian Quinn <quinnr@ainfosec.com>
6 // Author: Brendan Kerrigan <kerriganb@ainfosec.com>
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Lesser General Public
10 // License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 
22 #include <test.h>
23 
25 {
26 }
27 
28 bool
30 {
31  return true;
32 }
33 
34 bool
36 {
37  return true;
38 }
39 
40 bool
42 {
43  this->test_gdt_reg_set_get();
44  this->test_gdt_reg_base_set_get();
45  this->test_gdt_reg_limit_set_get();
46  this->test_gdt_constructor_no_size();
47  this->test_gdt_constructor_zero_size();
48  this->test_gdt_constructor_size();
49  this->test_gdt_base();
50  this->test_gdt_limit();
51  this->test_gdt_set_base_zero_index();
52  this->test_gdt_set_base_invalid_index();
53  this->test_gdt_set_base_tss_at_end_of_gdt();
54  this->test_gdt_set_base_descriptor_success();
55  this->test_gdt_set_base_tss_success();
56  this->test_gdt_base_zero_index();
57  this->test_gdt_base_invalid_index();
58  this->test_gdt_base_tss_at_end_of_gdt();
59  this->test_gdt_base_descriptor_success();
60  this->test_gdt_base_tss_success();
61  this->test_gdt_set_limit_zero_index();
62  this->test_gdt_set_limit_invalid_index();
63  this->test_gdt_set_limit_descriptor_success();
64  this->test_gdt_limit_zero_index();
65  this->test_gdt_limit_invalid_index();
66  this->test_gdt_limit_descriptor_success();
67  this->test_gdt_limit_descriptor_in_bytes_success();
68  this->test_gdt_set_access_rights_zero_index();
69  this->test_gdt_set_access_rights_invalid_index();
70  this->test_gdt_set_access_rights_descriptor_success();
71  this->test_gdt_access_rights_zero_index();
72  this->test_gdt_access_rights_invalid_index();
73  this->test_gdt_access_rights_descriptor_success();
74 
75  this->test_idt_reg_set_get();
76  this->test_idt_reg_base_set_get();
77  this->test_idt_reg_limit_set_get();
78  this->test_idt_constructor_no_size();
79  this->test_idt_constructor_zero_size();
80  this->test_idt_constructor_size();
81  this->test_idt_base();
82  this->test_idt_limit();
83 
84  this->test_general_msr_access();
85  this->test_ia32_feature_control();
86  this->test_ia32_feature_control_lock_bit();
87  this->test_ia32_feature_control_enable_vmx_inside_smx();
88  this->test_ia32_feature_control_enable_vmx_outside_smx();
89  this->test_ia32_feature_control_senter_local_function_enables();
90  this->test_ia32_feature_control_senter_gloabl_function_enable();
91  this->test_ia32_feature_control_sgx_launch_control_enable();
92  this->test_ia32_feature_control_sgx_global_enable();
93  this->test_ia32_feature_control_lmce();
94  this->test_ia32_sysenter_cs();
95  this->test_ia32_sysenter_esp();
96  this->test_ia32_sysenter_eip();
97  this->test_ia32_debugctl();
98  this->test_ia32_debugctl_lbr();
99  this->test_ia32_debugctl_btf();
100  this->test_ia32_debugctl_tr();
101  this->test_ia32_debugctl_bts();
102  this->test_ia32_debugctl_btint();
103  this->test_ia32_debugctl_bt_off_os();
104  this->test_ia32_debugctl_bt_off_user();
105  this->test_ia32_debugctl_freeze_lbrs_on_pmi();
106  this->test_ia32_debugctl_freeze_perfmon_on_pmi();
107  this->test_ia32_debugctl_enable_uncore_pmi();
108  this->test_ia32_debugctl_freeze_while_smm();
109  this->test_ia32_debugctl_rtm_debug();
110  this->test_ia32_debugctl_reserved();
111  this->test_ia32_pat();
112  this->test_ia32_pat_pa0();
113  this->test_ia32_pat_pa1();
114  this->test_ia32_pat_pa2();
115  this->test_ia32_pat_pa3();
116  this->test_ia32_pat_pa4();
117  this->test_ia32_pat_pa5();
118  this->test_ia32_pat_pa6();
119  this->test_ia32_pat_pa7();
120  this->test_ia32_pat_pa();
121  this->test_ia32_perf_global_ctrl();
122  this->test_ia32_perf_global_ctrl_pmc0();
123  this->test_ia32_perf_global_ctrl_pmc1();
124  this->test_ia32_perf_global_ctrl_pmc2();
125  this->test_ia32_perf_global_ctrl_pmc3();
126  this->test_ia32_perf_global_ctrl_pmc4();
127  this->test_ia32_perf_global_ctrl_pmc5();
128  this->test_ia32_perf_global_ctrl_pmc6();
129  this->test_ia32_perf_global_ctrl_pmc7();
130  this->test_ia32_perf_global_ctrl_fixed_ctr0();
131  this->test_ia32_perf_global_ctrl_fixed_ctr1();
132  this->test_ia32_perf_global_ctrl_fixed_ctr2();
133  this->test_ia32_vmx_basic();
134  this->test_ia32_vmx_basic_revision_id();
135  this->test_ia32_vmx_basic_vmxon_vmcs_region_size();
136  this->test_ia32_vmx_basic_physical_address_width();
137  this->test_ia32_vmx_basic_dual_monitor_mode_support();
138  this->test_ia32_vmx_basic_memory_type();
139  this->test_ia32_vmx_basic_ins_outs_exit_information();
140  this->test_ia32_vmx_basic_true_based_controls();
141  this->test_ia32_vmx_misc();
142  this->test_ia32_vmx_misc_preemption_timer_decrement();
143  this->test_ia32_vmx_misc_store_efer_lma_on_vm_exit();
144  this->test_ia32_vmx_misc_activity_state_hlt_support();
145  this->test_ia32_vmx_misc_activity_state_shutdown_support();
146  this->test_ia32_vmx_misc_activity_state_wait_for_sipi_support();
147  this->test_ia32_vmx_misc_processor_trace_support();
148  this->test_ia32_vmx_misc_rdmsr_in_smm_support();
149  this->test_ia32_vmx_misc_cr3_targets();
150  this->test_ia32_vmx_misc_max_num_msr_load_store_on_exit();
151  this->test_ia32_vmx_misc_vmxoff_blocked_smi_support();
152  this->test_ia32_vmx_misc_vmwrite_all_fields_support();
153  this->test_ia32_vmx_misc_injection_with_instruction_length_of_zero();
154  this->test_ia32_vmx_cr0_fixed0();
155  this->test_ia32_vmx_cr0_fixed1();
156  this->test_ia32_vmx_cr4_fixed0();
157  this->test_ia32_vmx_cr4_fixed1();
158  this->test_ia32_vmx_procbased_ctls2();
159  this->test_ia32_vmx_procbased_ctls2_virtualize_apic_accesses();
160  this->test_ia32_vmx_procbased_ctls2_enable_ept();
161  this->test_ia32_vmx_procbased_ctls2_descriptor_table_exiting();
162  this->test_ia32_vmx_procbased_ctls2_enable_rdtscp();
163  this->test_ia32_vmx_procbased_ctls2_virtualize_x2apic_mode();
164  this->test_ia32_vmx_procbased_ctls2_enable_vpid();
165  this->test_ia32_vmx_procbased_ctls2_wbinvd_exiting();
166  this->test_ia32_vmx_procbased_ctls2_unrestricted_guest();
167  this->test_ia32_vmx_procbased_ctls2_apic_register_virtualization();
168  this->test_ia32_vmx_procbased_ctls2_virtual_interrupt_delivery();
169  this->test_ia32_vmx_procbased_ctls2_pause_loop_exiting();
170  this->test_ia32_vmx_procbased_ctls2_rdrand_exiting();
171  this->test_ia32_vmx_procbased_ctls2_enable_invpcid();
172  this->test_ia32_vmx_procbased_ctls2_enable_vm_functions();
173  this->test_ia32_vmx_procbased_ctls2_vmcs_shadowing();
174  this->test_ia32_vmx_procbased_ctls2_rdseed_exiting();
175  this->test_ia32_vmx_procbased_ctls2_enable_pml();
176  this->test_ia32_vmx_procbased_ctls2_ept_violation_ve();
177  this->test_ia32_vmx_procbased_ctls2_enable_xsaves_xrstors();
178  this->test_ia32_vmx_ept_vpid_cap();
179  this->test_ia32_vmx_ept_vpid_cap_execute_only_translation();
180  this->test_ia32_vmx_ept_vpid_cap_page_walk_length_of_4();
181  this->test_ia32_vmx_ept_vpid_cap_memory_type_uncacheable_supported();
182  this->test_ia32_vmx_ept_vpid_cap_memory_type_write_back_supported();
183  this->test_ia32_vmx_ept_vpid_cap_pde_2mb_support();
184  this->test_ia32_vmx_ept_vpid_cap_pdpte_1gb_support();
185  this->test_ia32_vmx_ept_vpid_cap_invept_support();
186  this->test_ia32_vmx_ept_vpid_cap_accessed_dirty_support();
187  this->test_ia32_vmx_ept_vpid_cap_invept_single_context_support();
188  this->test_ia32_vmx_ept_vpid_cap_invept_all_context_support();
189  this->test_ia32_vmx_ept_vpid_cap_invvpid_support();
190  this->test_ia32_vmx_ept_vpid_cap_invvpid_individual_address_support();
191  this->test_ia32_vmx_ept_vpid_cap_invvpid_single_context_support();
192  this->test_ia32_vmx_ept_vpid_cap_invvpid_all_context_support();
193  this->test_ia32_vmx_ept_vpid_cap_invvpid_single_context_retaining_globals_support();
194  this->test_ia32_vmx_true_pinbased_ctls();
195  this->test_ia32_vmx_true_pinbased_ctls_external_interrupt_exiting();
196  this->test_ia32_vmx_true_pinbased_ctls_nmi_exiting();
197  this->test_ia32_vmx_true_pinbased_ctls_virtual_nmis();
198  this->test_ia32_vmx_true_pinbased_ctls_activate_vmx_preemption_timer();
199  this->test_ia32_vmx_true_pinbased_ctls_process_posted_interrupts();
200  this->test_ia32_vmx_true_procbased_ctls();
201  this->test_ia32_vmx_true_procbased_ctls_interrupt_window_exiting();
202  this->test_ia32_vmx_true_procbased_ctls_use_tsc_offsetting();
203  this->test_ia32_vmx_true_procbased_ctls_hlt_exiting();
204  this->test_ia32_vmx_true_procbased_ctls_invlpg_exiting();
205  this->test_ia32_vmx_true_procbased_ctls_mwait_exiting();
206  this->test_ia32_vmx_true_procbased_ctls_rdpmc_exiting();
207  this->test_ia32_vmx_true_procbased_ctls_rdtsc_exiting();
208  this->test_ia32_vmx_true_procbased_ctls_cr3_load_exiting();
209  this->test_ia32_vmx_true_procbased_ctls_cr3_store_exiting();
210  this->test_ia32_vmx_true_procbased_ctls_cr8_load_exiting();
211  this->test_ia32_vmx_true_procbased_ctls_cr8_store_exiting();
212  this->test_ia32_vmx_true_procbased_ctls_use_tpr_shadow();
213  this->test_ia32_vmx_true_procbased_ctls_nmi_window_exiting();
214  this->test_ia32_vmx_true_procbased_ctls_mov_dr_exiting();
215  this->test_ia32_vmx_true_procbased_ctls_unconditional_io_exiting();
216  this->test_ia32_vmx_true_procbased_ctls_use_io_bitmaps();
217  this->test_ia32_vmx_true_procbased_ctls_monitor_trap_flag();
218  this->test_ia32_vmx_true_procbased_ctls_use_msr_bitmap();
219  this->test_ia32_vmx_true_procbased_ctls_monitor_exiting();
220  this->test_ia32_vmx_true_procbased_ctls_pause_exiting();
221  this->test_ia32_vmx_true_procbased_ctls_activate_secondary_controls();
222  this->test_ia32_vmx_true_exit_ctls();
223  this->test_ia32_vmx_true_exit_ctls_save_debug_controls();
224  this->test_ia32_vmx_true_exit_ctls_host_address_space_size();
225  this->test_ia32_vmx_true_exit_ctls_load_ia32_perf_global_ctrl();
226  this->test_ia32_vmx_true_exit_ctls_acknowledge_interrupt_on_exit();
227  this->test_ia32_vmx_true_exit_ctls_save_ia32_pat();
228  this->test_ia32_vmx_true_exit_ctls_load_ia32_pat();
229  this->test_ia32_vmx_true_exit_ctls_save_ia32_efer();
230  this->test_ia32_vmx_true_exit_ctls_load_ia32_efer();
231  this->test_ia32_vmx_true_exit_ctls_save_vmx_preemption_timer_value();
232  this->test_ia32_vmx_true_exit_ctls_clear_ia32_bndcfgs();
233  this->test_ia32_vmx_true_entry_ctls();
234  this->test_ia32_vmx_true_entry_ctls_load_debug_controls();
235  this->test_ia32_vmx_true_entry_ctls_ia_32e_mode_guest();
236  this->test_ia32_vmx_true_entry_ctls_entry_to_smm();
237  this->test_ia32_vmx_true_entry_ctls_deactivate_dual_monitor_treatment();
238  this->test_ia32_vmx_true_entry_ctls_load_ia32_perf_global_ctrl();
239  this->test_ia32_vmx_true_entry_ctls_load_ia32_pat();
240  this->test_ia32_vmx_true_entry_ctls_load_ia32_efer();
241  this->test_ia32_vmx_true_entry_ctls_load_ia32_bndcfgs();
242  this->test_ia32_vmx_vmfunc();
243  this->test_ia32_vmx_vmfunc_eptp_switching();
244  this->test_ia32_efer();
245  this->test_ia32_efer_sce();
246  this->test_ia32_efer_lme();
247  this->test_ia32_efer_lma();
248  this->test_ia32_efer_nxe();
249  this->test_ia32_efer_reserved();
250  this->test_ia32_fs_base();
251  this->test_ia32_gs_base();
252 
253  this->test_rflags_x64();
254  this->test_rflags_x64_carry_flag();
255  this->test_rflags_x64_parity_flag();
256  this->test_rflags_x64_auxiliary_carry_flag();
257  this->test_rflags_x64_zero_flag();
258  this->test_rflags_x64_sign_flag();
259  this->test_rflags_x64_trap_flag();
260  this->test_rflags_x64_interrupt_enable_flag();
261  this->test_rflags_x64_direction_flag();
262  this->test_rflags_x64_overflow_flag();
263  this->test_rflags_x64_privilege_level();
264  this->test_rflags_x64_nested_task();
265  this->test_rflags_x64_resume_flag();
266  this->test_rflags_x64_virtual_8086_mode();
267  this->test_rflags_x64_alignment_check_access_control();
268  this->test_rflags_x64_virtual_interupt_flag();
269  this->test_rflags_x64_virtual_interupt_pending();
270  this->test_rflags_x64_id_flag();
271  this->test_rflags_x64_reserved();
272  this->test_rflags_x64_always_disabled();
273  this->test_rflags_x64_always_enabled();
274 
275  this->test_cr0_intel_x64();
276  this->test_cr0_intel_x64_protection_enable();
277  this->test_cr0_intel_x64_monitor_coprocessor();
278  this->test_cr0_intel_x64_emulation();
279  this->test_cr0_intel_x64_task_switched();
280  this->test_cr0_intel_x64_extension_type();
281  this->test_cr0_intel_x64_numeric_error();
282  this->test_cr0_intel_x64_write_protect();
283  this->test_cr0_intel_x64_alignment_mask();
284  this->test_cr0_intel_x64_not_write_through();
285  this->test_cr0_intel_x64_cache_disable();
286  this->test_cr0_intel_x64_paging();
287  this->test_cr2_intel_x64();
288  this->test_cr3_intel_x64();
289  this->test_cr4_intel_x64();
290  this->test_cr4_intel_x64_v8086_mode_extensions();
291  this->test_cr4_intel_x64_protected_mode_virtual_interrupts();
292  this->test_cr4_intel_x64_time_stamp_disable();
293  this->test_cr4_intel_x64_debugging_extensions();
294  this->test_cr4_intel_x64_page_size_extensions();
295  this->test_cr4_intel_x64_physical_address_extensions();
296  this->test_cr4_intel_x64_machine_check_enable();
297  this->test_cr4_intel_x64_page_global_enable();
298  this->test_cr4_intel_x64_performance_monitor_counter_enable();
299  this->test_cr4_intel_x64_osfxsr();
300  this->test_cr4_intel_x64_osxmmexcpt();
301  this->test_cr4_intel_x64_vmx_enable_bit();
302  this->test_cr4_intel_x64_smx_enable_bit();
303  this->test_cr4_intel_x64_fsgsbase_enable_bit();
304  this->test_cr4_intel_x64_pcid_enable_bit();
305  this->test_cr4_intel_x64_osxsave();
306  this->test_cr4_intel_x64_smep_enable_bit();
307  this->test_cr4_intel_x64_smap_enable_bit();
308  this->test_cr4_intel_x64_protection_key_enable_bit();
309 
310  this->test_srs_x64_es();
311  this->test_srs_x64_es_rpl();
312  this->test_srs_x64_es_ti();
313  this->test_srs_x64_es_index();
314  this->test_srs_x64_cs();
315  this->test_srs_x64_cs_rpl();
316  this->test_srs_x64_cs_ti();
317  this->test_srs_x64_cs_index();
318  this->test_srs_x64_ss();
319  this->test_srs_x64_ss_rpl();
320  this->test_srs_x64_ss_ti();
321  this->test_srs_x64_ss_index();
322  this->test_srs_x64_ds();
323  this->test_srs_x64_ds_rpl();
324  this->test_srs_x64_ds_ti();
325  this->test_srs_x64_ds_index();
326  this->test_srs_x64_fs();
327  this->test_srs_x64_fs_rpl();
328  this->test_srs_x64_fs_ti();
329  this->test_srs_x64_fs_index();
330  this->test_srs_x64_gs();
331  this->test_srs_x64_gs_rpl();
332  this->test_srs_x64_gs_ti();
333  this->test_srs_x64_gs_index();
334  this->test_srs_x64_ldtr();
335  this->test_srs_x64_ldtr_rpl();
336  this->test_srs_x64_ldtr_ti();
337  this->test_srs_x64_ldtr_index();
338  this->test_srs_x64_tr();
339  this->test_srs_x64_tr_rpl();
340  this->test_srs_x64_tr_ti();
341  this->test_srs_x64_tr_index();
342 
343  this->test_portio_x64_byte();
344  this->test_portio_x64_word();
345  this->test_portio_x64_doubleword();
346 
347  this->test_vmx_intel_x64_vmxon_nullptr();
348  this->test_vmx_intel_x64_vmxon_failure();
349  this->test_vmx_intel_x64_vmxon_success();
350  this->test_vmx_intel_x64_vmxoff_failure();
351  this->test_vmx_intel_x64_vmxoff_success();
352  this->test_vmx_intel_x64_vmclear_nullptr();
353  this->test_vmx_intel_x64_vmclear_failure();
354  this->test_vmx_intel_x64_vmclear_success();
355  this->test_vmx_intel_x64_vmload_nullptr();
356  this->test_vmx_intel_x64_vmload_failure();
357  this->test_vmx_intel_x64_vmload_success();
358  this->test_vmx_intel_x64_vmreset_nullptr();
359  this->test_vmx_intel_x64_vmreset_failure();
360  this->test_vmx_intel_x64_vmreset_success();
361  this->test_vmx_intel_x64_vmread_failure();
362  this->test_vmx_intel_x64_vmwrite_failure();
363  this->test_vmx_intel_x64_vmread_vmwrite_succcess();
364  this->test_vmx_intel_x64_vmlaunch_demote_failure();
365  this->test_vmx_intel_x64_vmlaunch_demote_success();
366  this->test_vmx_intel_x64_invept();
367  this->test_vmx_intel_x64_invvpid();
368 
369  this->test_cpuid_x64_cpuid();
370  this->test_cpuid_x64_cpuid_eax();
371  this->test_cpuid_x64_cpuid_ebx();
372  this->test_cpuid_x64_cpuid_ecx();
373  this->test_cpuid_x64_cpuid_edx();
374  this->test_cpuid_x64_cpuid_addr_size_phys();
375  this->test_cpuid_x64_cpuid_addr_size_linear();
376  this->test_cpuid_x64_cpuid_feature_information_ecx_sse3();
377  this->test_cpuid_x64_cpuid_feature_information_ecx_pclmulqdq();
378  this->test_cpuid_x64_cpuid_feature_information_ecx_dtes64();
379  this->test_cpuid_x64_cpuid_feature_information_ecx_monitor();
380  this->test_cpuid_x64_cpuid_feature_information_ecx_ds_cpl();
381  this->test_cpuid_x64_cpuid_feature_information_ecx_vmx();
382  this->test_cpuid_x64_cpuid_feature_information_ecx_smx();
383  this->test_cpuid_x64_cpuid_feature_information_ecx_eist();
384  this->test_cpuid_x64_cpuid_feature_information_ecx_tm2();
385  this->test_cpuid_x64_cpuid_feature_information_ecx_ssse3();
386  this->test_cpuid_x64_cpuid_feature_information_ecx_cnxt_id();
387  this->test_cpuid_x64_cpuid_feature_information_ecx_sdbg();
388  this->test_cpuid_x64_cpuid_feature_information_ecx_fma();
389  this->test_cpuid_x64_cpuid_feature_information_ecx_cmpxchg16b();
390  this->test_cpuid_x64_cpuid_feature_information_ecx_xtpr_update_control();
391  this->test_cpuid_x64_cpuid_feature_information_ecx_pdcm();
392  this->test_cpuid_x64_cpuid_feature_information_ecx_pcid();
393  this->test_cpuid_x64_cpuid_feature_information_ecx_dca();
394  this->test_cpuid_x64_cpuid_feature_information_ecx_sse41();
395  this->test_cpuid_x64_cpuid_feature_information_ecx_sse42();
396  this->test_cpuid_x64_cpuid_feature_information_ecx_x2apic();
397  this->test_cpuid_x64_cpuid_feature_information_ecx_movbe();
398  this->test_cpuid_x64_cpuid_feature_information_ecx_popcnt();
399  this->test_cpuid_x64_cpuid_feature_information_ecx_tsc_deadline();
400  this->test_cpuid_x64_cpuid_feature_information_ecx_aesni();
401  this->test_cpuid_x64_cpuid_feature_information_ecx_xsave();
402  this->test_cpuid_x64_cpuid_feature_information_ecx_osxsave();
403  this->test_cpuid_x64_cpuid_feature_information_ecx_avx();
404  this->test_cpuid_x64_cpuid_feature_information_ecx_f16c();
405  this->test_cpuid_x64_cpuid_feature_information_ecx_rdrand();
406  this->test_cpuid_x64_cpuid_feature_information_ecx_dump();
407  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_fsgsbase();
408  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_ia32_tsc_adjust();
409  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_sgx();
410  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_bmi1();
411  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_hle();
412  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_avx2();
413  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_fdp_excptn_only();
414  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_smep();
415  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_bmi2();
416  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_enhanced_rep();
417  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_invpcid();
418  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rtm();
419  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdt_m();
420  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_depreciated_fpu_cs_ds();
421  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_mpx();
422  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdt_a();
423  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdseed();
424  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_adx();
425  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_smap();
426  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_clflushopt();
427  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_clwb();
428  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_processor_trace();
429  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_sha();
430  this->test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_dump();
431  this->test_cpuid_x64_cpuid_arch_perf_monitoring_eax_version_id();
432  this->test_cpuid_x64_cpuid_arch_perf_monitoring_eax_gppmc_count();
433  this->test_cpuid_x64_cpuid_arch_perf_monitoring_eax_gppmc_bit_width();
434  this->test_cpuid_x64_cpuid_arch_perf_monitoring_eax_ebx_enumeration_length();
435  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_core_cycle_event();
436  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_instr_retired_event();
437  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_reference_cycles_event();
438  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_llc_reference_event();
439  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_llc_misses_event();
440  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_branch_instr_retired_event();
441  this->test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_branch_mispredict_retired_event();
442  this->test_cpuid_x64_cpuid_arch_perf_monitoring_edx_ffpmc_count();
443  this->test_cpuid_x64_cpuid_arch_perf_monitoring_edx_ffpmc_bit_width();
444 
445  this->test_pm_x64_halt();
446  this->test_pm_x64_stop();
447 
448  this->test_cache_x64_invd();
449  this->test_cache_x64_wbinvd();
450  this->test_cache_x64_clflush();
451 
452  this->test_tlb_x64_invlpg();
453 
454  this->test_debug_x64_dr7();
455 
456  this->test_pdpte_x64_reserved_mask();
457  this->test_pdpte_x64_page_directory_addr_mask();
458 
459  this->test_rdtsc_x64();
460  this->test_rdtscp_x64();
461 
462  return true;
463 }
464 
465 int
466 main(int argc, char *argv[])
467 {
469 }
int main(int argc, char *argv[])
Definition: test.cpp:221
intrinsics_ut()
Definition: test.cpp:24
bool init() override
Definition: test.cpp:29
#define RUN_ALL_TESTS(ut)
Definition: unittest.h:246
bool list() override
Definition: test.cpp:41
bool fini() override
Definition: test.cpp:35