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