mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 02:56:02 +02:00
riscv: kprobes: add test case for c.jal instruction simulation
Add a test case validating that kprobes correctly simulates the c.jal instruction on RV32. The test uses two probe points: a forward c.jal and a backward c.jal, and verifies that the containing function returns the expected magic value KPROBE_TEST_MAGIC after kprobe interception. Co-developed-by: Xiaofeng Yuan <xiaofengmian@163.com> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Xiaofeng Yuan <xiaofengmian@163.com> Reviewed-by: Charlie Jenkins <thecharlesjenkins@gmail.com> Tested-by: Charlie Jenkins <thecharlesjenkins@gmail.com> Link: https://patch.msgid.link/20260701081033.49871-3-xiaofengmian@163.com Signed-off-by: Paul Walmsley <pjw@kernel.org>
This commit is contained in:
parent
540ad5ad05
commit
0d4a777c4c
|
|
@ -179,6 +179,23 @@ test_kprobes_c_bnez_addr3:
|
|||
ret
|
||||
SYM_FUNC_END(test_kprobes_c_bnez)
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
SYM_FUNC_START(test_kprobes_c_jal)
|
||||
li a0, 0
|
||||
mv a1, ra
|
||||
test_kprobes_c_jal_addr1:
|
||||
c.jal 2f
|
||||
ret
|
||||
1: li a0, KPROBE_TEST_MAGIC_UPPER
|
||||
ret
|
||||
test_kprobes_c_jal_addr2:
|
||||
2: c.jal 1b
|
||||
li a2, KPROBE_TEST_MAGIC_LOWER
|
||||
add a0, a0, a2
|
||||
jr a1
|
||||
SYM_FUNC_END(test_kprobes_c_jal)
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_RISCV_ISA_C */
|
||||
|
||||
.section .rodata
|
||||
|
|
@ -209,6 +226,10 @@ SYM_DATA_START(test_kprobes_addresses)
|
|||
RISCV_PTR test_kprobes_c_bnez_addr1
|
||||
RISCV_PTR test_kprobes_c_bnez_addr2
|
||||
RISCV_PTR test_kprobes_c_bnez_addr3
|
||||
#ifdef CONFIG_32BIT
|
||||
RISCV_PTR test_kprobes_c_jal_addr1
|
||||
RISCV_PTR test_kprobes_c_jal_addr2
|
||||
#endif
|
||||
#endif /* CONFIG_RISCV_ISA_C */
|
||||
RISCV_PTR 0
|
||||
SYM_DATA_END(test_kprobes_addresses)
|
||||
|
|
@ -226,6 +247,9 @@ SYM_DATA_START(test_kprobes_functions)
|
|||
RISCV_PTR test_kprobes_c_jalr
|
||||
RISCV_PTR test_kprobes_c_beqz
|
||||
RISCV_PTR test_kprobes_c_bnez
|
||||
#ifdef CONFIG_32BIT
|
||||
RISCV_PTR test_kprobes_c_jal
|
||||
#endif
|
||||
#endif /* CONFIG_RISCV_ISA_C */
|
||||
RISCV_PTR 0
|
||||
SYM_DATA_END(test_kprobes_functions)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user