src/cpu/x86/vm/vm_version_x86.hpp

changeset 6429
606acabe7b5c
parent 6388
98af1e198e73
child 6537
0118c8c7b80f
     1.1 --- a/src/cpu/x86/vm/vm_version_x86.hpp	Sat Mar 22 00:26:48 2014 +0400
     1.2 +++ b/src/cpu/x86/vm/vm_version_x86.hpp	Thu Mar 20 17:49:27 2014 -0700
     1.3 @@ -207,7 +207,9 @@
     1.4                          : 2,
     1.5                     bmi2 : 1,
     1.6                     erms : 1,
     1.7 -                        : 22;
     1.8 +                        : 1,
     1.9 +                   rtm  : 1,
    1.10 +                        : 20;
    1.11      } bits;
    1.12    };
    1.13  
    1.14 @@ -257,7 +259,8 @@
    1.15      CPU_ERMS   = (1 << 20), // enhanced 'rep movsb/stosb' instructions
    1.16      CPU_CLMUL  = (1 << 21), // carryless multiply for CRC
    1.17      CPU_BMI1   = (1 << 22),
    1.18 -    CPU_BMI2   = (1 << 23)
    1.19 +    CPU_BMI2   = (1 << 23),
    1.20 +    CPU_RTM    = (1 << 24)  // Restricted Transactional Memory instructions
    1.21    } cpuFeatureFlags;
    1.22  
    1.23    enum {
    1.24 @@ -444,6 +447,8 @@
    1.25        result |= CPU_ERMS;
    1.26      if (_cpuid_info.std_cpuid1_ecx.bits.clmul != 0)
    1.27        result |= CPU_CLMUL;
    1.28 +    if (_cpuid_info.sef_cpuid7_ebx.bits.rtm != 0)
    1.29 +      result |= CPU_RTM;
    1.30  
    1.31      // AMD features.
    1.32      if (is_amd()) {
    1.33 @@ -514,6 +519,9 @@
    1.34    // Initialization
    1.35    static void initialize();
    1.36  
    1.37 +  // Override Abstract_VM_Version implementation
    1.38 +  static bool use_biased_locking();
    1.39 +
    1.40    // Asserts
    1.41    static void assert_is_initialized() {
    1.42      assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
    1.43 @@ -606,6 +614,7 @@
    1.44    static bool supports_aes()      { return (_cpuFeatures & CPU_AES) != 0; }
    1.45    static bool supports_erms()     { return (_cpuFeatures & CPU_ERMS) != 0; }
    1.46    static bool supports_clmul()    { return (_cpuFeatures & CPU_CLMUL) != 0; }
    1.47 +  static bool supports_rtm()      { return (_cpuFeatures & CPU_RTM) != 0; }
    1.48    static bool supports_bmi1()     { return (_cpuFeatures & CPU_BMI1) != 0; }
    1.49    static bool supports_bmi2()     { return (_cpuFeatures & CPU_BMI2) != 0; }
    1.50    // Intel features

mercurial