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