# HG changeset patch # User zmajo # Date 1422610808 -3600 # Node ID 4b2830dcf178ac2d933aa04db5c3b9d0b2ec928e # Parent 80ce7fc26d44fe747469d00c40790c6363491a37 8071818: Incorrect addressing mode used for ldf in SPARC assembler Summary: Update MacroAssembler::ldf to select addressing mode depending on Address parameter. Reviewed-by: kvn, dlong diff -r 80ce7fc26d44 -r 4b2830dcf178 src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp --- a/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp Mon Feb 16 07:19:22 2015 -0800 +++ b/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp Fri Jan 30 10:40:08 2015 +0100 @@ -630,7 +630,12 @@ inline void MacroAssembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); - ldf(w, a.base(), a.disp() + offset, d); + if (a.has_index()) { + assert(offset == 0, ""); + ldf(w, a.base(), a.index(), d); + } else { + ldf(w, a.base(), a.disp() + offset, d); + } } // returns if membar generates anything, obviously this code should mirror