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