root/arch/parisc/include/uapi/asm/ptrace.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */

/* [<][>][^][v][top][bottom][index][help] */