linux/arch/parisc/include/uapi/asm/ptrace.h
<<
>>
Prefs
   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 */
  97