root/arch/s390/kernel/compat_ptrace.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _PTRACE32_H
   3 #define _PTRACE32_H
   4 
   5 #include <asm/ptrace.h>    /* needed for NUM_CR_WORDS */
   6 #include "compat_linux.h"  /* needed for psw_compat_t */
   7 
   8 struct compat_per_struct_kernel {
   9         __u32 cr9;              /* PER control bits */
  10         __u32 cr10;             /* PER starting address */
  11         __u32 cr11;             /* PER ending address */
  12         __u32 bits;             /* Obsolete software bits */
  13         __u32 starting_addr;    /* User specified start address */
  14         __u32 ending_addr;      /* User specified end address */
  15         __u16 perc_atmid;       /* PER trap ATMID */
  16         __u32 address;          /* PER trap instruction address */
  17         __u8  access_id;        /* PER trap access identification */
  18 };
  19 
  20 struct compat_user_regs_struct
  21 {
  22         psw_compat_t psw;
  23         u32 gprs[NUM_GPRS];
  24         u32 acrs[NUM_ACRS];
  25         u32 orig_gpr2;
  26         /* nb: there's a 4-byte hole here */
  27         s390_fp_regs fp_regs;
  28         /*
  29          * These per registers are in here so that gdb can modify them
  30          * itself as there is no "official" ptrace interface for hardware
  31          * watchpoints. This is the way intel does it.
  32          */
  33         struct compat_per_struct_kernel per_info;
  34         u32  ieee_instruction_pointer;  /* obsolete, always 0 */
  35 };
  36 
  37 struct compat_user {
  38         /* We start with the registers, to mimic the way that "memory"
  39            is returned from the ptrace(3,...) function.  */
  40         struct compat_user_regs_struct regs;
  41         /* The rest of this junk is to help gdb figure out what goes where */
  42         u32 u_tsize;            /* Text segment size (pages). */
  43         u32 u_dsize;            /* Data segment size (pages). */
  44         u32 u_ssize;            /* Stack segment size (pages). */
  45         u32 start_code;         /* Starting virtual address of text. */
  46         u32 start_stack;        /* Starting virtual address of stack area.
  47                                    This is actually the bottom of the stack,
  48                                    the top of the stack is always found in the
  49                                    esp register.  */
  50         s32 signal;              /* Signal that caused the core dump. */
  51         u32 u_ar0;               /* Used by gdb to help find the values for */
  52                                  /* the registers. */
  53         u32 magic;               /* To uniquely identify a core file */
  54         char u_comm[32];         /* User command that was responsible */
  55 };
  56 
  57 typedef struct
  58 {
  59         __u32   len;
  60         __u32   kernel_addr;
  61         __u32   process_addr;
  62 } compat_ptrace_area;
  63 
  64 #endif /* _PTRACE32_H */

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