< prev index next >
src/hotspot/cpu/arm/vm_version_arm_32.cpp
Print this page
*** 102,111 ****
--- 102,123 ----
extern "C" address check_vfp3_32_fault_instr;
extern "C" address check_vfp_fault_instr;
extern "C" address check_simd_fault_instr;
+ void VM_Version::early_initialize() {
+
+ // Make sure that _arm_arch is initialized so that any calls to OrderAccess will
+ // use proper dmb instruction
+ get_os_cpu_info();
+
+ _kuser_helper_version = *(int*)KUSER_HELPER_VERSION_ADDR;
+ // armv7 has the ldrexd instruction that can be used to implement cx8
+ // armv5 with linux >= 3.1 can use kernel helper routine
+ _supports_cx8 = (supports_ldrexd() || supports_kuser_cmpxchg64());
+ }
+
void VM_Version::initialize() {
ResourceMark rm;
// Making this stub must be FIRST use of assembler
const int stub_size = 128;
*** 214,237 ****
if (UseVectorizedMismatchIntrinsic) {
warning("vectorizedMismatch intrinsic is not available on this CPU.");
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
}
- get_os_cpu_info();
-
- _kuser_helper_version = *(int*)KUSER_HELPER_VERSION_ADDR;
-
#ifdef COMPILER2
// C2 is only supported on v7+ VFP at this time
if (_arm_arch < 7 || !has_vfp()) {
vm_exit_during_initialization("Server VM is only supported on ARMv7+ VFP");
}
#endif
- // armv7 has the ldrexd instruction that can be used to implement cx8
- // armv5 with linux >= 3.1 can use kernel helper routine
- _supports_cx8 = (supports_ldrexd() || supports_kuser_cmpxchg64());
// ARM doesn't have special instructions for these but ldrex/ldrexd
// enable shorter instruction sequences that the ones based on cas.
_supports_atomic_getset4 = supports_ldrex();
_supports_atomic_getadd4 = supports_ldrex();
_supports_atomic_getset8 = supports_ldrexd();
--- 226,242 ----
< prev index next >