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