--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp Thu Apr 28 17:36:37 2016 +0200
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp Thu Apr 28 13:26:29 2016 +0000
@@ -71,6 +71,7 @@
int VM_Version::_variant;
int VM_Version::_revision;
int VM_Version::_stepping;
+VM_Version::PsrInfo VM_Version::_psr_info = { 0, };
static BufferBlob* stub_blob;
static const int stub_size = 550;
@@ -95,13 +96,16 @@
__ c_stub_prolog(1, 0, MacroAssembler::ret_type_void);
#endif
- // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
+ // void getPsrInfo(VM_Version::PsrInfo* psr_info);
address entry = __ pc();
- // TODO : redefine fields in CpuidInfo and generate
- // code to fill them in
+ __ enter();
+ __ get_dczid_el0(rscratch1);
+ __ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::dczid_el0_offset())));
+
+ __ leave();
__ ret(lr);
# undef __
@@ -118,6 +122,8 @@
_supports_atomic_getset8 = true;
_supports_atomic_getadd8 = true;
+ getPsrInfo_stub(&_psr_info);
+
if (FLAG_IS_DEFAULT(AllocatePrefetchDistance))
FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
if (FLAG_IS_DEFAULT(AllocatePrefetchStepSize))
@@ -285,6 +291,18 @@
FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
}
+ if (is_zva_enabled()) {
+ if (FLAG_IS_DEFAULT(UseBlockZeroing)) {
+ FLAG_SET_DEFAULT(UseBlockZeroing, true);
+ }
+ if (FLAG_IS_DEFAULT(BlockZeroingLowLimit)) {
+ FLAG_SET_DEFAULT(BlockZeroingLowLimit, 4 * VM_Version::zva_length());
+ }
+ } else if (UseBlockZeroing) {
+ warning("DC ZVA is not available on this CPU");
+ FLAG_SET_DEFAULT(UseBlockZeroing, false);
+ }
+
// This machine allows unaligned memory accesses
if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
FLAG_SET_DEFAULT(UseUnalignedAccesses, true);