ptrace.h (2820B)
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 24struct 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 */ 51struct 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 */ 76struct 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 */