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 30 struct 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 43 struct user_fp_state { 44 uint64_t fpr[32]; 45 uint64_t fcc; 46 uint32_t fcsr; 47 }; 48 49 struct 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 */ 63