Skip to content

Commit 1ebf510

Browse files
committed
8315743: RISC-V: Cleanup masm lr()/sc() methods
Reviewed-by: fyang, luhenry
1 parent bd52bbf commit 1ebf510

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

src/hotspot/cpu/riscv/macroAssembler_riscv.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,11 +2592,11 @@ void MacroAssembler::cmpxchgptr(Register oldv, Register newv, Register addr, Reg
25922592
Label retry_load, nope;
25932593
bind(retry_load);
25942594
// Load reserved from the memory location
2595-
lr_d(tmp, addr, Assembler::aqrl);
2595+
load_reserved(tmp, addr, int64, Assembler::aqrl);
25962596
// Fail and exit if it is not what we expect
25972597
bne(tmp, oldv, nope);
25982598
// If the store conditional succeeds, tmp will be zero
2599-
sc_d(tmp, newv, addr, Assembler::rl);
2599+
store_conditional(tmp, newv, addr, int64, Assembler::rl);
26002600
beqz(tmp, succeed);
26012601
// Retry only when the store conditional failed
26022602
j(retry_load);
@@ -2615,36 +2615,38 @@ void MacroAssembler::cmpxchg_obj_header(Register oldv, Register newv, Register o
26152615
cmpxchgptr(oldv, newv, obj, tmp, succeed, fail);
26162616
}
26172617

2618-
void MacroAssembler::load_reserved(Register addr,
2618+
void MacroAssembler::load_reserved(Register dst,
2619+
Register addr,
26192620
enum operand_size size,
26202621
Assembler::Aqrl acquire) {
26212622
switch (size) {
26222623
case int64:
2623-
lr_d(t0, addr, acquire);
2624+
lr_d(dst, addr, acquire);
26242625
break;
26252626
case int32:
2626-
lr_w(t0, addr, acquire);
2627+
lr_w(dst, addr, acquire);
26272628
break;
26282629
case uint32:
2629-
lr_w(t0, addr, acquire);
2630+
lr_w(dst, addr, acquire);
26302631
zero_extend(t0, t0, 32);
26312632
break;
26322633
default:
26332634
ShouldNotReachHere();
26342635
}
26352636
}
26362637

2637-
void MacroAssembler::store_conditional(Register addr,
2638+
void MacroAssembler::store_conditional(Register dst,
26382639
Register new_val,
2640+
Register addr,
26392641
enum operand_size size,
26402642
Assembler::Aqrl release) {
26412643
switch (size) {
26422644
case int64:
2643-
sc_d(t0, new_val, addr, release);
2645+
sc_d(dst, new_val, addr, release);
26442646
break;
26452647
case int32:
26462648
case uint32:
2647-
sc_w(t0, new_val, addr, release);
2649+
sc_w(dst, new_val, addr, release);
26482650
break;
26492651
default:
26502652
ShouldNotReachHere();
@@ -2778,9 +2780,9 @@ void MacroAssembler::cmpxchg(Register addr, Register expected,
27782780

27792781
Label retry_load, done, ne_done;
27802782
bind(retry_load);
2781-
load_reserved(addr, size, acquire);
2783+
load_reserved(t0, addr, size, acquire);
27822784
bne(t0, expected, ne_done);
2783-
store_conditional(addr, new_val, size, release);
2785+
store_conditional(t0, new_val, addr, size, release);
27842786
bnez(t0, retry_load);
27852787

27862788
// equal, succeed
@@ -2812,9 +2814,9 @@ void MacroAssembler::cmpxchg_weak(Register addr, Register expected,
28122814
assert_different_registers(new_val, t0);
28132815

28142816
Label fail, done;
2815-
load_reserved(addr, size, acquire);
2817+
load_reserved(t0, addr, size, acquire);
28162818
bne(t0, expected, fail);
2817-
store_conditional(addr, new_val, size, release);
2819+
store_conditional(t0, new_val, addr, size, release);
28182820
bnez(t0, fail);
28192821

28202822
// Success

src/hotspot/cpu/riscv/macroAssembler_riscv.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,8 +1453,8 @@ class MacroAssembler: public Assembler {
14531453
int bitset_to_regs(unsigned int bitset, unsigned char* regs);
14541454
Address add_memory_helper(const Address dst, Register tmp);
14551455

1456-
void load_reserved(Register addr, enum operand_size size, Assembler::Aqrl acquire);
1457-
void store_conditional(Register addr, Register new_val, enum operand_size size, Assembler::Aqrl release);
1456+
void load_reserved(Register dst, Register addr, enum operand_size size, Assembler::Aqrl acquire);
1457+
void store_conditional(Register dst, Register new_val, Register addr, enum operand_size size, Assembler::Aqrl release);
14581458

14591459
public:
14601460
void fast_lock(Register obj, Register hdr, Register tmp1, Register tmp2, Label& slow);

0 commit comments

Comments
 (0)