RFR: 8131483 : aarch64: illegal stlxr instructions
Edward Nevill
edward.nevill at gmail.com
Thu Jul 16 09:25:30 UTC 2015
Hi,
http://cr.openjdk.java.net/~enevill/8131483/webrev
Fixes an issue reported by one of our partners where the aarch64 port is generating illegal instructions on their HW.
The instruction in question is
stlxr(rscratch1, end, rscratch1)
According to the ARM ARM this is unpredictable and an implementation may treat this as undefined which our partners HW does. The relevant section from the ARM ARM is:-
STLXR
For a description of this instruction and the encoding, see STLXR on page C6-702.
CONSTRAINED UNPREDICTABLE behavior
If s == t || (pair && s == t2), then one of the following behaviors can occur:
The instruction is UNDEFINED.
The instruction executes as a NOP.
The instruction performs the store to the specified address, but the value stored is UNKNOWN.
If s == n && n != 31 then one of the following behaviors can occur:
The instruction is UNDEFINED.
The instruction executes as a NOP.
The instruction performs the store to an UNKNOWN address.
Thanks for the review,
Ed.
More information about the hotspot-compiler-dev
mailing list