--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp Wed May 25 15:05:26 2016 +0000
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp Wed May 25 13:30:07 2016 +0000
@@ -42,6 +42,7 @@
struct PsrInfo {
uint32_t dczid_el0;
+ uint32_t ctr_el0;
};
static PsrInfo _psr_info;
static void get_processor_features();
@@ -78,6 +79,7 @@
CPU_SHA2 = (1<<6),
CPU_CRC32 = (1<<7),
CPU_LSE = (1<<8),
+ CPU_STXR_PREFETCH= (1 << 29),
CPU_A53MAC = (1 << 30),
CPU_DMB_ATOMICS = (1 << 31),
};
@@ -88,6 +90,7 @@
static int cpu_variant() { return _variant; }
static int cpu_revision() { return _revision; }
static ByteSize dczid_el0_offset() { return byte_offset_of(PsrInfo, dczid_el0); }
+ static ByteSize ctr_el0_offset() { return byte_offset_of(PsrInfo, ctr_el0); }
static bool is_zva_enabled() {
// Check the DZP bit (bit 4) of dczid_el0 is zero
// and block size (bit 0~3) is not zero.
@@ -98,6 +101,12 @@
assert(is_zva_enabled(), "ZVA not available");
return 4 << (_psr_info.dczid_el0 & 0xf);
}
+ static int icache_line_size() {
+ return (1 << (_psr_info.ctr_el0 & 0x0f)) * 4;
+ }
+ static int dcache_line_size() {
+ return (1 << ((_psr_info.ctr_el0 >> 16) & 0x0f)) * 4;
+ }
};
#endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP