mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
riscv, bpf: Add support arena atomics for RV64
Add arena atomics support for RMW atomics and load-acquire and store-release instructions. Non-Zacas cmpxchg is implemented via loop, which is not currently supported because it requires more complex extable and loop logic. Signed-off-by: Pu Lehui <pulehui@huawei.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Tested-by: Björn Töpel <bjorn@rivosinc.com> Reviewed-by: Björn Töpel <bjorn@rivosinc.com> Acked-by: Björn Töpel <bjorn@kernel.org> Link: https://lore.kernel.org/bpf/20250719091730.2660197-10-pulehui@huaweicloud.com
This commit is contained in:
committed by
Daniel Borkmann
parent
b18f4aae6a
commit
fb7cefabae
@@ -1301,8 +1301,10 @@ static inline void emit_cmpxchg(u8 rd, u8 rs, u8 r0, bool is64, struct rv_jit_co
|
||||
int jmp_offset;
|
||||
|
||||
if (rv_ext_enabled(ZACAS)) {
|
||||
ctx->ex_insn_off = ctx->ninsns;
|
||||
emit(is64 ? rvzacas_amocas_d(r0, rs, rd, 1, 1) :
|
||||
rvzacas_amocas_w(r0, rs, rd, 1, 1), ctx);
|
||||
ctx->ex_jmp_off = ctx->ninsns;
|
||||
if (!is64)
|
||||
emit_zextw(r0, r0, ctx);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user