1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg 3 ** Copyright (C) 2000 Grant Grundler, Hewlett-Packard 4 */ 5 #ifndef _UAPI_PARISC_PTRACE_H 6 #define _UAPI_PARISC_PTRACE_H 7 8 9 #include <linux/types.h> 10 11 /* This struct defines the way the registers are stored on the 12 * stack during a system call. 13 * 14 * N.B. gdb/strace care about the size and offsets within this 15 * structure. If you change things, you may break object compatibility 16 * for those applications. 17 * 18 * Please do NOT use this structure for future programs, but use 19 * user_regs_struct (see below) instead. 20 * 21 * It can be accessed through PTRACE_PEEKUSR/PTRACE_POKEUSR only. 22 */ 23 24 struct pt_regs { 25 unsigned long gr[32]; /* PSW is in gr[0] */ 26 __u64 fr[32]; 27 unsigned long sr[ 8]; 28 unsigned long iasq[2]; 29 unsigned long iaoq[2]; 30 unsigned long cr27; 31 unsigned long pad0; /* available for other uses */ 32 unsigned long orig_r28; 33 unsigned long ksp; 34 unsigned long kpc; 35 unsigned long sar; /* CR11 */ 36 unsigned long iir; /* CR19 */ 37 unsigned long isr; /* CR20 */ 38 unsigned long ior; /* CR21 */ 39 unsigned long ipsw; /* CR22 */ 40 }; 41 42 /** 43 * struct user_regs_struct - User general purpose registers 44 * 45 * This is the user-visible general purpose register state structure 46 * which is used to define the elf_gregset_t. 47 * 48 * It can be accessed through PTRACE_GETREGSET with NT_PRSTATUS 49 * and through PTRACE_GETREGS. 50 */ 51 struct user_regs_struct { 52 unsigned long gr[32]; /* PSW is in gr[0] */ 53 unsigned long sr[8]; 54 unsigned long iaoq[2]; 55 unsigned long iasq[2]; 56 unsigned long sar; /* CR11 */ 57 unsigned long iir; /* CR19 */ 58 unsigned long isr; /* CR20 */ 59 unsigned long ior; /* CR21 */ 60 unsigned long ipsw; /* CR22 */ 61 unsigned long cr0; 62 unsigned long cr24, cr25, cr26, cr27, cr28, cr29, cr30, cr31; 63 unsigned long cr8, cr9, cr12, cr13, cr10, cr15; 64 unsigned long _pad[80-64]; /* pad to ELF_NGREG (80) */ 65 }; 66 67 /** 68 * struct user_fp_struct - User floating point registers 69 * 70 * This is the user-visible floating point register state structure. 71 * It uses the same layout and size as elf_fpregset_t. 72 * 73 * It can be accessed through PTRACE_GETREGSET with NT_PRFPREG 74 * and through PTRACE_GETFPREGS. 75 */ 76 struct user_fp_struct { 77 __u64 fr[32]; 78 }; 79 80 81 /* 82 * The numbers chosen here are somewhat arbitrary but absolutely MUST 83 * not overlap with any of the number assigned in <linux/ptrace.h>. 84 * 85 * These ones are taken from IA-64 on the assumption that theirs are 86 * the most correct (and we also want to support PTRACE_SINGLEBLOCK 87 * since we have taken branch traps too) 88 */ 89 #define PTRACE_SINGLEBLOCK 12 /* resume execution until next branch */ 90 91 #define PTRACE_GETREGS 18 92 #define PTRACE_SETREGS 19 93 #define PTRACE_GETFPREGS 14 94 #define PTRACE_SETFPREGS 15 95 96 #endif /* _UAPI_PARISC_PTRACE_H */ 97