22 #ifndef CRS_INTEL_X64_H 23 #define CRS_INTEL_X64_H 51 template<class T, class = typename std::enable_if<std::is_integral<T>::value>
::type>
54 namespace protection_enable
56 constexpr
const auto mask = 0x0000000000000001UL;
57 constexpr
const auto from = 0;
58 constexpr
const auto name =
"protection_enable";
67 namespace monitor_coprocessor
69 constexpr
const auto mask = 0x0000000000000002UL;
70 constexpr
const auto from = 1;
71 constexpr
const auto name =
"monitor_coprocessor";
82 constexpr
const auto mask = 0x0000000000000004UL;
83 constexpr
const auto from = 2;
84 constexpr
const auto name =
"emulation";
93 namespace task_switched
95 constexpr
const auto mask = 0x0000000000000008UL;
96 constexpr
const auto from = 3;
97 constexpr
const auto name =
"task_switched";
106 namespace extension_type
108 constexpr
const auto mask = 0x0000000000000010UL;
110 constexpr
const auto name =
"extension_type";
119 namespace numeric_error
121 constexpr
const auto mask = 0x0000000000000020UL;
123 constexpr
const auto name =
"numeric_error";
132 namespace write_protect
134 constexpr
const auto mask = 0x0000000000010000UL;
135 constexpr
const auto from = 16;
136 constexpr
const auto name =
"write_protect";
145 namespace alignment_mask
147 constexpr
const auto mask = 0x0000000000040000UL;
148 constexpr
const auto from = 18;
149 constexpr
const auto name =
"alignment_mask";
158 namespace not_write_through
160 constexpr
const auto mask = 0x0000000020000000UL;
161 constexpr
const auto from = 29;
162 constexpr
const auto name =
"not_write_through";
171 namespace cache_disable
173 constexpr
const auto mask = 0x0000000040000000UL;
174 constexpr
const auto from = 30;
175 constexpr
const auto name =
"cache_disable";
186 constexpr
const auto mask = 0x0000000080000000UL;
187 constexpr
const auto from = 31;
188 constexpr
const auto name =
"paging";
199 bfdebug <<
"cr0 enabled flags:" << bfendl;
233 template<class T, class = typename std::enable_if<std::is_integral<T>::value>
::type>
244 template<class T, class = typename std::enable_if<std::is_integral<T>::value>
::type>
255 template<class T, class = typename std::enable_if<std::is_integral<T>::value>
::type>
258 namespace v8086_mode_extensions
260 constexpr
const auto mask = 0x0000000000000001UL;
262 constexpr
const auto name =
"v8086_mode_extensions";
271 namespace protected_mode_virtual_interrupts
273 constexpr
const auto mask = 0x0000000000000002UL;
275 constexpr
const auto name =
"protected_mode_virtual_interrupts";
284 namespace time_stamp_disable
286 constexpr
const auto mask = 0x0000000000000004UL;
288 constexpr
const auto name =
"time_stamp_disable";
297 namespace debugging_extensions
299 constexpr
const auto mask = 0x0000000000000008UL;
301 constexpr
const auto name =
"debugging_extensions";
310 namespace page_size_extensions
312 constexpr
const auto mask = 0x0000000000000010UL;
314 constexpr
const auto name =
"page_size_extensions";
323 namespace physical_address_extensions
325 constexpr
const auto mask = 0x0000000000000020UL;
327 constexpr
const auto name =
"physical_address_extensions";
336 namespace machine_check_enable
338 constexpr
const auto mask = 0x0000000000000040UL;
340 constexpr
const auto name =
"machine_check_enable";
349 namespace page_global_enable
351 constexpr
const auto mask = 0x0000000000000080UL;
353 constexpr
const auto name =
"page_global_enable";
362 namespace performance_monitor_counter_enable
364 constexpr
const auto mask = 0x0000000000000100UL;
366 constexpr
const auto name =
"performance_monitor_counter_enable";
377 constexpr
const auto mask = 0x0000000000000200UL;
379 constexpr
const auto name =
"osfxsr";
390 constexpr
const auto mask = 0x0000000000000400UL;
391 constexpr
const auto from = 10;
392 constexpr
const auto name =
"osxmmexcpt";
401 namespace vmx_enable_bit
403 constexpr
const auto mask = 0x0000000000002000UL;
404 constexpr
const auto from = 13;
405 constexpr
const auto name =
"vmx_enable_bit";
414 namespace smx_enable_bit
416 constexpr
const auto mask = 0x0000000000004000UL;
417 constexpr
const auto from = 14;
418 constexpr
const auto name =
"smx_enable_bit";
427 namespace fsgsbase_enable_bit
429 constexpr
const auto mask = 0x0000000000010000UL;
430 constexpr
const auto from = 16;
431 constexpr
const auto name =
"fsgsbase_enable_bit";
440 namespace pcid_enable_bit
442 constexpr
const auto mask = 0x0000000000020000UL;
443 constexpr
const auto from = 17;
444 constexpr
const auto name =
"pcid_enable_bit";
455 constexpr
const auto mask = 0x0000000000040000UL;
456 constexpr
const auto from = 18;
457 constexpr
const auto name =
"osxsave";
466 namespace smep_enable_bit
468 constexpr
const auto mask = 0x0000000000100000UL;
469 constexpr
const auto from = 20;
470 constexpr
const auto name =
"smep_enable_bit";
479 namespace smap_enable_bit
481 constexpr
const auto mask = 0x0000000000200000UL;
482 constexpr
const auto from = 21;
483 constexpr
const auto name =
"smap_enable_bit";
492 namespace protection_key_enable_bit
494 constexpr
const auto mask = 0x0000000000400000UL;
495 constexpr
const auto from = 22;
496 constexpr
const auto name =
"protection_key_enable_bit";
507 bfdebug <<
"cr4 enabled flags:" << bfendl;
void uintptr_t uintptr_t cr3
void __write_cr2(uint64_t val) noexcept
void __write_cr4(uint64_t val) noexcept
constexpr const auto mask
constexpr const auto mask
constexpr const auto mask
constexpr const auto from
constexpr const auto from
constexpr const auto name
constexpr const auto name
constexpr const auto from
constexpr const auto from
constexpr const auto name
constexpr const auto name
constexpr const auto from
constexpr const auto from
constexpr const auto from
constexpr const auto name
constexpr const auto from
constexpr const auto mask
constexpr const auto from
constexpr const auto from
constexpr const auto name
constexpr const auto mask
constexpr const auto name
constexpr const auto name
uint64_t __read_cr0(void) noexcept
constexpr const auto name
constexpr const auto name
constexpr const auto name
auto get_bit(T t, B b) noexcept
constexpr const auto from
constexpr const auto from
constexpr const auto from
constexpr const auto name
void uint64_t uint64_t uint64_t *rdx noexcept
constexpr const auto from
constexpr const auto name
constexpr const auto name
constexpr const auto from
uint64_t __read_cr2(void) noexcept
constexpr const auto mask
constexpr const auto name
constexpr const auto name
constexpr const auto from
uint64_t __read_cr4(void) noexcept
constexpr const auto from
constexpr const auto name
constexpr const auto mask
constexpr const auto mask
constexpr const auto name
constexpr const auto mask
constexpr const auto mask
constexpr const auto mask
constexpr const auto mask
constexpr const auto from
constexpr const auto name
constexpr const auto name
constexpr const auto mask
constexpr const auto name
constexpr const auto from
auto clear_bit(T t, B b) noexcept
constexpr const auto mask
constexpr const auto name
constexpr const auto name
auto set_bit(T t, B b) noexcept
constexpr const auto mask
constexpr const auto from
constexpr const auto mask
constexpr const auto from
constexpr const auto from
constexpr const auto from
void __write_cr3(uint64_t val) noexcept
constexpr const auto mask
constexpr const auto name
constexpr const auto mask
constexpr const auto mask
constexpr const auto from
constexpr const auto mask
constexpr const auto from
constexpr const auto mask
constexpr const auto from
constexpr const auto mask
constexpr const auto mask
constexpr const auto name
constexpr const auto mask
constexpr const auto name
constexpr const auto from
constexpr const auto mask
constexpr const auto from
constexpr const auto mask
constexpr const auto name
constexpr const auto name
constexpr const auto mask
constexpr const auto mask
constexpr const auto mask
constexpr const auto from
void __write_cr0(uint64_t val) noexcept
constexpr const auto name
uint64_t __read_cr3(void) noexcept