RFR: 8131483 : aarch64: illegal stlxr instructions
Andrew Dinn
adinn at redhat.com
Thu Jul 16 09:50:59 UTC 2015
The fix looks ok to me (I checked places where this code gets called
and it is safe to clobber rscratch2).
regards,
Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Matt Parson (USA), Charlie Peters
(USA), Michael O'Neill (Ireland)
On 16/07/15 10:25, Edward Nevill wrote:
> 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