Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2/*
3 * Author: Hanlu Li <lihanlu@loongson.cn>
4 * Huacai Chen <chenhuacai@loongson.cn>
5 *
6 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
7 */
8#ifndef _UAPI_ASM_PTRACE_H
9#define _UAPI_ASM_PTRACE_H
10
11#include <linux/types.h>
12
13#ifndef __KERNEL__
14#include <stdint.h>
15#endif
16
17/*
18 * For PTRACE_{POKE,PEEK}USR. 0 - 31 are GPRs,
19 * 32 is syscall's original ARG0, 33 is PC, 34 is BADVADDR.
20 */
21#define GPR_BASE 0
22#define GPR_NUM 32
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)
27
28#define NUM_FPU_REGS 32
29
30struct user_pt_regs {
31 /* Main processor registers. */
32 unsigned long regs[32];
33
34 /* Original syscall arg0. */
35 unsigned long orig_a0;
36
37 /* Special CSR registers. */
38 unsigned long csr_era;
39 unsigned long csr_badv;
40 unsigned long reserved[10];
41} __attribute__((aligned(8)));
42
43struct user_fp_state {
44 uint64_t fpr[32];
45 uint64_t fcc;
46 uint32_t fcsr;
47};
48
49struct user_watch_state {
50 uint64_t dbg_info;
51 struct {
52 uint64_t addr;
53 uint64_t mask;
54 uint32_t ctrl;
55 uint32_t pad;
56 } dbg_regs[8];
57};
58
59#define PTRACE_SYSEMU 0x1f
60#define PTRACE_SYSEMU_SINGLESTEP 0x20
61
62#endif /* _UAPI_ASM_PTRACE_H */