< prev index next >

src/hotspot/cpu/arm/stubGenerator_arm.cpp

Print this page

        

*** 745,758 **** start = __ pc(); Register result_lo = R0; Register result_hi = R1; Register src = R0; ! if (!os::is_MP()) { ! __ ldmia(src, RegisterSet(result_lo, result_hi)); ! __ bx(LR); ! } else if (VM_Version::supports_ldrexd()) { __ ldrexd(result_lo, Address(src)); __ clrex(); // FIXME: safe to remove? __ bx(LR); } else { __ stop("Atomic load(jlong) unsupported on this platform"); --- 745,755 ---- start = __ pc(); Register result_lo = R0; Register result_hi = R1; Register src = R0; ! if (VM_Version::supports_ldrexd()) { __ ldrexd(result_lo, Address(src)); __ clrex(); // FIXME: safe to remove? __ bx(LR); } else { __ stop("Atomic load(jlong) unsupported on this platform");
*** 772,785 **** Register dest = R2; Register scratch_lo = R2; Register scratch_hi = R3; /* After load from stack */ Register result = R3; ! if (!os::is_MP()) { ! __ stmia(dest, RegisterSet(newval_lo, newval_hi)); ! __ bx(LR); ! } else if (VM_Version::supports_ldrexd()) { __ mov(Rtemp, dest); // get dest to Rtemp Label retry; __ bind(retry); __ ldrexd(scratch_lo, Address(Rtemp)); __ strexd(result, R0, Address(Rtemp)); --- 769,779 ---- Register dest = R2; Register scratch_lo = R2; Register scratch_hi = R3; /* After load from stack */ Register result = R3; ! if (VM_Version::supports_ldrexd()) { __ mov(Rtemp, dest); // get dest to Rtemp Label retry; __ bind(retry); __ ldrexd(scratch_lo, Address(Rtemp)); __ strexd(result, R0, Address(Rtemp));
< prev index next >