root/arch/openrisc/include/asm/ptrace.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. regs_return_value

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * OpenRISC Linux
   4  *
   5  * Linux architectural port borrowing liberally from similar works of
   6  * others.  All original copyrights apply as per the original source
   7  * declaration.
   8  *
   9  * OpenRISC implementation:
  10  * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
  11  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  12  * et al.
  13  */
  14 #ifndef __ASM_OPENRISC_PTRACE_H
  15 #define __ASM_OPENRISC_PTRACE_H
  16 
  17 
  18 #include <asm/spr_defs.h>
  19 #include <uapi/asm/ptrace.h>
  20 
  21 /*
  22  * Make kernel PTrace/register structures opaque to userspace... userspace can
  23  * access thread state via the regset mechanism.  This allows us a bit of
  24  * flexibility in how we order the registers on the stack, permitting some
  25  * optimizations like packing call-clobbered registers together so that
  26  * they share a cacheline (not done yet, though... future optimization).
  27  */
  28 
  29 #ifndef __ASSEMBLY__
  30 /*
  31  * This struct describes how the registers are laid out on the kernel stack
  32  * during a syscall or other kernel entry.
  33  *
  34  * This structure should always be cacheline aligned on the stack.
  35  * FIXME: I don't think that's the case right now.  The alignment is
  36  * taken care of elsewhere... head.S, process.c, etc.
  37  */
  38 
  39 struct pt_regs {
  40         union {
  41                 struct {
  42                         /* Named registers */
  43                         long  sr;       /* Stored in place of r0 */
  44                         long  sp;       /* r1 */
  45                 };
  46                 struct {
  47                         /* Old style */
  48                         long offset[2];
  49                         long gprs[30];
  50                 };
  51                 struct {
  52                         /* New style */
  53                         long gpr[32];
  54                 };
  55         };
  56         long  pc;
  57         /* For restarting system calls:
  58          * Set to syscall number for syscall exceptions,
  59          * -1 for all other exceptions.
  60          */
  61         long  orig_gpr11;       /* For restarting system calls */
  62         long dummy;             /* Cheap alignment fix */
  63         long dummy2;            /* Cheap alignment fix */
  64 };
  65 
  66 /* TODO: Rename this to REDZONE because that's what it is */
  67 #define STACK_FRAME_OVERHEAD  128  /* size of minimum stack frame */
  68 
  69 #define instruction_pointer(regs)       ((regs)->pc)
  70 #define user_mode(regs)                 (((regs)->sr & SPR_SR_SM) == 0)
  71 #define user_stack_pointer(regs)        ((unsigned long)(regs)->sp)
  72 #define profile_pc(regs)                instruction_pointer(regs)
  73 
  74 static inline long regs_return_value(struct pt_regs *regs)
  75 {
  76         return regs->gpr[11];
  77 }
  78 
  79 #endif /* __ASSEMBLY__ */
  80 
  81 /*
  82  * Offsets used by 'ptrace' system call interface.
  83  */
  84 #define PT_SR         0
  85 #define PT_SP         4
  86 #define PT_GPR2       8
  87 #define PT_GPR3       12
  88 #define PT_GPR4       16
  89 #define PT_GPR5       20
  90 #define PT_GPR6       24
  91 #define PT_GPR7       28
  92 #define PT_GPR8       32
  93 #define PT_GPR9       36
  94 #define PT_GPR10      40
  95 #define PT_GPR11      44
  96 #define PT_GPR12      48
  97 #define PT_GPR13      52
  98 #define PT_GPR14      56
  99 #define PT_GPR15      60
 100 #define PT_GPR16      64
 101 #define PT_GPR17      68
 102 #define PT_GPR18      72
 103 #define PT_GPR19      76
 104 #define PT_GPR20      80
 105 #define PT_GPR21      84
 106 #define PT_GPR22      88
 107 #define PT_GPR23      92
 108 #define PT_GPR24      96
 109 #define PT_GPR25      100
 110 #define PT_GPR26      104
 111 #define PT_GPR27      108
 112 #define PT_GPR28      112
 113 #define PT_GPR29      116
 114 #define PT_GPR30      120
 115 #define PT_GPR31      124
 116 #define PT_PC         128
 117 #define PT_ORIG_GPR11 132
 118 #define PT_SYSCALLNO  136
 119 
 120 #endif /* __ASM_OPENRISC_PTRACE_H */

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