rseq/selftests: Add support for RISC-V
Add support for RISC-V in the rseq selftests, which covers both 64-bit and 32-bit ISA with little endian mode. Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Tested-by: Eric Lin <eric.lin@sifive.com> Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
committed by
Palmer Dabbelt
parent
93917ad509
commit
6d1a6f464e
@@ -207,6 +207,29 @@ unsigned int yield_mod_cnt, nr_abort;
|
||||
"addiu " INJECT_ASM_REG ", -1\n\t" \
|
||||
"bnez " INJECT_ASM_REG ", 222b\n\t" \
|
||||
"333:\n\t"
|
||||
#elif defined(__riscv)
|
||||
|
||||
#define RSEQ_INJECT_INPUT \
|
||||
, [loop_cnt_1]"m"(loop_cnt[1]) \
|
||||
, [loop_cnt_2]"m"(loop_cnt[2]) \
|
||||
, [loop_cnt_3]"m"(loop_cnt[3]) \
|
||||
, [loop_cnt_4]"m"(loop_cnt[4]) \
|
||||
, [loop_cnt_5]"m"(loop_cnt[5]) \
|
||||
, [loop_cnt_6]"m"(loop_cnt[6])
|
||||
|
||||
#define INJECT_ASM_REG "t1"
|
||||
|
||||
#define RSEQ_INJECT_CLOBBER \
|
||||
, INJECT_ASM_REG
|
||||
|
||||
#define RSEQ_INJECT_ASM(n) \
|
||||
"lw " INJECT_ASM_REG ", %[loop_cnt_" #n "]\n\t" \
|
||||
"beqz " INJECT_ASM_REG ", 333f\n\t" \
|
||||
"222:\n\t" \
|
||||
"addi " INJECT_ASM_REG "," INJECT_ASM_REG ", -1\n\t" \
|
||||
"bnez " INJECT_ASM_REG ", 222b\n\t" \
|
||||
"333:\n\t"
|
||||
|
||||
|
||||
#else
|
||||
#error unsupported target
|
||||
|
||||
Reference in New Issue
Block a user