33 #include "runtime/vm_version.hpp"
34 #include "utilities/formatBuffer.hpp"
35 #include "utilities/macros.hpp"
36 #include "utilities/ostream.hpp"
37
38 int VM_Version::_cpu;
39 int VM_Version::_model;
40 int VM_Version::_model2;
41 int VM_Version::_variant;
42 int VM_Version::_revision;
43 int VM_Version::_stepping;
44
45 int VM_Version::_zva_length;
46 int VM_Version::_dcache_line_size;
47 int VM_Version::_icache_line_size;
48 int VM_Version::_initial_sve_vector_length;
49 int VM_Version::_max_supported_sve_vector_length;
50 bool VM_Version::_rop_protection;
51 uintptr_t VM_Version::_pac_mask;
52
53 SpinWait VM_Version::_spin_wait;
54
55 const char* VM_Version::_features_names[MAX_CPU_FEATURES] = { nullptr };
56
57 static SpinWait get_spin_wait_desc() {
58 SpinWait spin_wait(OnSpinWaitInst, OnSpinWaitInstCount);
59 if (spin_wait.inst() == SpinWait::SB && !VM_Version::supports_sb()) {
60 vm_exit_during_initialization("OnSpinWaitInst is SB but current CPU does not support SB instruction");
61 }
62
63 return spin_wait;
64 }
65
66 void VM_Version::initialize() {
67 #define SET_CPU_FEATURE_NAME(id, name, bit) \
68 _features_names[bit] = XSTR(name);
69 CPU_FEATURE_FLAGS(SET_CPU_FEATURE_NAME)
70 #undef SET_CPU_FEATURE_NAME
71
72 _supports_atomic_getset4 = true;
73 _supports_atomic_getadd4 = true;
74 _supports_atomic_getset8 = true;
75 _supports_atomic_getadd8 = true;
76
|
33 #include "runtime/vm_version.hpp"
34 #include "utilities/formatBuffer.hpp"
35 #include "utilities/macros.hpp"
36 #include "utilities/ostream.hpp"
37
38 int VM_Version::_cpu;
39 int VM_Version::_model;
40 int VM_Version::_model2;
41 int VM_Version::_variant;
42 int VM_Version::_revision;
43 int VM_Version::_stepping;
44
45 int VM_Version::_zva_length;
46 int VM_Version::_dcache_line_size;
47 int VM_Version::_icache_line_size;
48 int VM_Version::_initial_sve_vector_length;
49 int VM_Version::_max_supported_sve_vector_length;
50 bool VM_Version::_rop_protection;
51 uintptr_t VM_Version::_pac_mask;
52
53 const char* VM_Version::_features_names[MAX_CPU_FEATURES] = { nullptr };
54
55 SpinWait VM_Version::_spin_wait;
56
57 static SpinWait get_spin_wait_desc() {
58 SpinWait spin_wait(OnSpinWaitInst, OnSpinWaitInstCount);
59 if (spin_wait.inst() == SpinWait::SB && !VM_Version::supports_sb()) {
60 vm_exit_during_initialization("OnSpinWaitInst is SB but current CPU does not support SB instruction");
61 }
62
63 return spin_wait;
64 }
65
66 void VM_Version::initialize() {
67 #define SET_CPU_FEATURE_NAME(id, name, bit) \
68 _features_names[bit] = XSTR(name);
69 CPU_FEATURE_FLAGS(SET_CPU_FEATURE_NAME)
70 #undef SET_CPU_FEATURE_NAME
71
72 _supports_atomic_getset4 = true;
73 _supports_atomic_getadd4 = true;
74 _supports_atomic_getset8 = true;
75 _supports_atomic_getadd8 = true;
76
|