--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed May 25 15:05:26 2016 +0000
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed May 25 13:30:07 2016 +0000
@@ -1643,7 +1643,8 @@
return;
}
Label retry_load;
- prfm(Address(counter_addr), PSTL1STRM);
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
+ prfm(Address(counter_addr), PSTL1STRM);
bind(retry_load);
// flush and load exclusive from the memory location
ldxrw(tmp, counter_addr);
@@ -2084,7 +2085,8 @@
membar(AnyAny);
} else {
Label retry_load, nope;
- prfm(Address(addr), PSTL1STRM);
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
+ prfm(Address(addr), PSTL1STRM);
bind(retry_load);
// flush and load exclusive from the memory location
// and fail if it is not what we expect
@@ -2120,7 +2122,8 @@
membar(AnyAny);
} else {
Label retry_load, nope;
- prfm(Address(addr), PSTL1STRM);
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
+ prfm(Address(addr), PSTL1STRM);
bind(retry_load);
// flush and load exclusive from the memory location
// and fail if it is not what we expect
@@ -2155,7 +2158,8 @@
} else {
BLOCK_COMMENT("cmpxchg {");
Label retry_load, done;
- prfm(Address(addr), PSTL1STRM);
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
+ prfm(Address(addr), PSTL1STRM);
bind(retry_load);
load_exclusive(tmp, addr, size, acquire);
if (size == xword)
@@ -2194,7 +2198,8 @@
result = different(prev, incr, addr) ? prev : rscratch2; \
\
Label retry_load; \
- prfm(Address(addr), PSTL1STRM); \
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH)) \
+ prfm(Address(addr), PSTL1STRM); \
bind(retry_load); \
LDXR(result, addr); \
OP(rscratch1, result, incr); \
@@ -2224,7 +2229,8 @@
result = different(prev, newv, addr) ? prev : rscratch2; \
\
Label retry_load; \
- prfm(Address(addr), PSTL1STRM); \
+ if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH)) \
+ prfm(Address(addr), PSTL1STRM); \
bind(retry_load); \
LDXR(result, addr); \
STXR(rscratch1, newv, addr); \