< 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 >