diff options
author | Sven Schnelle <[email protected]> | 2021-09-09 20:59:17 +0200 |
---|---|---|
committer | Vasily Gorbik <[email protected]> | 2021-10-04 09:49:37 +0200 |
commit | d340d28a968ec479d0ed3c38ab716ed821d82ad8 (patch) | |
tree | 279dc018a3f65ac79c59e4c8d03d5a9eeeaef9c1 /arch/s390/lib/test_kprobes_asm.S | |
parent | f768a20c0a6e5f2396b9ab99bbbfd39d91228df9 (diff) |
kprobes: add testcases for s390
Add a few testcases to make sure that it's not possible to place
a kprobe in the mid of an instruction on s390.
Signed-off-by: Sven Schnelle <[email protected]>
Acked-by: Heiko Carstens <[email protected]>
Signed-off-by: Vasily Gorbik <[email protected]>
Diffstat (limited to 'arch/s390/lib/test_kprobes_asm.S')
-rw-r--r-- | arch/s390/lib/test_kprobes_asm.S | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/s390/lib/test_kprobes_asm.S b/arch/s390/lib/test_kprobes_asm.S new file mode 100644 index 000000000000..ade7a3042334 --- /dev/null +++ b/arch/s390/lib/test_kprobes_asm.S @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#include <linux/linkage.h> +#include <asm/ftrace.h> + +#define KPROBES_TARGET_START(name) \ + SYM_FUNC_START(name); \ + FTRACE_GEN_NOP_ASM(name) + +#define KPROBES_TARGET_END(name) \ + SYM_FUNC_END(name); \ + SYM_DATA(name##_offs, .quad 1b - name) + +KPROBES_TARGET_START(kprobes_target_in_insn4) + .word 0x4700 // bc 0,0 +1: .word 0x0000 + br %r14 +KPROBES_TARGET_END(kprobes_target_in_insn4) + +KPROBES_TARGET_START(kprobes_target_in_insn6_lo) + .word 0xe310 // ly 1,0 +1: .word 0x0000 + .word 0x0058 + br %r14 +KPROBES_TARGET_END(kprobes_target_in_insn6_lo) + +KPROBES_TARGET_START(kprobes_target_in_insn6_hi) + .word 0xe310 // ly 1,0 + .word 0x0000 +1: .word 0x0058 + br %r14 +KPROBES_TARGET_END(kprobes_target_in_insn6_hi) + +KPROBES_TARGET_START(kprobes_target_bp) + nop + .word 0x0000 + nop +1: br %r14 +KPROBES_TARGET_END(kprobes_target_bp) + +KPROBES_TARGET_START(kprobes_target_odd) + .byte 0x07 +1: .byte 0x07 + br %r14 +KPROBES_TARGET_END(kprobes_target_odd) |