17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #ifndef CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
27 #define CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
28
29 #include "runtime/globals_extension.hpp"
30 #include "runtime/vm_version.hpp"
31
32 class VM_Version : public Abstract_VM_Version {
33 public:
34 protected:
35 static int _cpu;
36 static int _model;
37 static int _stepping;
38 static int _cpuFeatures; // features returned by the "cpuid" instruction
39 // 0 if this instruction is not available
40 static const char* _features_str;
41
42 static void get_processor_features();
43
44 public:
45 // Initialization
46 static void initialize();
47
48 // Asserts
49 static void assert_is_initialized() {
50 }
51
52 static const char* cpu_features() { return _features_str; }
53
54 };
55
56 #endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #ifndef CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
27 #define CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
28
29 #include "runtime/globals_extension.hpp"
30 #include "runtime/vm_version.hpp"
31
32 class VM_Version : public Abstract_VM_Version {
33 public:
34 protected:
35 static int _cpu;
36 static int _model;
37 static int _variant;
38 static int _revision;
39 static int _stepping;
40 static int _cpuFeatures; // features returned by the "cpuid" instruction
41 // 0 if this instruction is not available
42 static const char* _features_str;
43
44 static void get_processor_features();
45
46 public:
47 // Initialization
48 static void initialize();
49
50 // Asserts
51 static void assert_is_initialized() {
52 }
53
54 enum {
55 CPU_ARM = 'A',
56 CPU_BROADCOM = 'B',
57 CPU_CAVIUM = 'C',
58 CPU_DEC = 'D',
59 CPU_INFINEON = 'I',
60 CPU_MOTOROLA = 'M',
61 CPU_NVIDIA = 'N',
62 CPU_AMCC = 'P',
63 CPU_QUALCOM = 'Q',
64 CPU_MARVELL = 'V',
65 CPU_INTEL = 'i',
66 } cpuFamily;
67
68 enum {
69 CPU_FP = (1<<0),
70 CPU_ASIMD = (1<<1),
71 CPU_EVTSTRM = (1<<2),
72 CPU_AES = (1<<3),
73 CPU_PMULL = (1<<4),
74 CPU_SHA1 = (1<<5),
75 CPU_SHA2 = (1<<6),
76 CPU_CRC32 = (1<<7),
77 CPU_A53MAC = (1 << 30),
78 CPU_DMB_ATOMICS = (1 << 31),
79 } cpuFeatureFlags;
80
81 static const char* cpu_features() { return _features_str; }
82 static int cpu_family() { return _cpu; }
83 static int cpu_model() { return _model; }
84 static int cpu_variant() { return _variant; }
85 static int cpu_revision() { return _revision; }
86 static int cpu_cpuFeatures() { return _cpuFeatures; }
87
88 };
89
90 #endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|