1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
3 * Author: Hanlu Li <lihanlu@loongson.cn>
4 * Huacai Chen <chenhuacai@loongson.cn>
6 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
8 #ifndef _UAPI_ASM_PTRACE_H
9 #define _UAPI_ASM_PTRACE_H
11 #include <linux/types.h>
18 * For PTRACE_{POKE,PEEK}USR. 0 - 31 are GPRs,
19 * 32 is syscall's original ARG0, 33 is PC, 34 is BADVADDR.
23 #define GPR_END (GPR_BASE + GPR_NUM - 1)
24 #define ARG0 (GPR_END + 1)
25 #define PC (GPR_END + 2)
26 #define BADVADDR (GPR_END + 3)
28 #define NUM_FPU_REGS 32
31 /* Main processor registers. */
32 unsigned long regs[32];
34 /* Original syscall arg0. */
35 unsigned long orig_a0;
37 /* Special CSR registers. */
38 unsigned long csr_era;
39 unsigned long csr_badv;
40 unsigned long reserved[10];
41 } __attribute__((aligned(8)));
43 struct user_fp_state {
49 struct user_lsx_state {
50 /* 32 registers, 128 bits width per register. */
54 struct user_lasx_state {
55 /* 32 registers, 256 bits width per register. */
59 struct user_lbt_state {
65 struct user_watch_state {
75 #define PTRACE_SYSEMU 0x1f
76 #define PTRACE_SYSEMU_SINGLESTEP 0x20
78 #endif /* _UAPI_ASM_PTRACE_H */