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

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. in_syscall
  2. forget_syscall
  3. regs_return_value

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 // Copyright (C) 2005-2017 Andes Technology Corporation
   3 
   4 #ifndef __ASM_NDS32_PTRACE_H
   5 #define __ASM_NDS32_PTRACE_H
   6 
   7 #include <uapi/asm/ptrace.h>
   8 
   9 /*
  10  * If pt_regs.syscallno == NO_SYSCALL, then the thread is not executing
  11  * a syscall -- i.e., its most recent entry into the kernel from
  12  * userspace was not via syscall, or otherwise a tracer cancelled the
  13  * syscall.
  14  *
  15  * This must have the value -1, for ABI compatibility with ptrace etc.
  16  */
  17 #define NO_SYSCALL (-1)
  18 #ifndef __ASSEMBLY__
  19 #include <linux/types.h>
  20 
  21 struct pt_regs {
  22         union {
  23                 struct user_pt_regs user_regs;
  24                 struct {
  25                         long uregs[26];
  26                         long fp;
  27                         long gp;
  28                         long lp;
  29                         long sp;
  30                         long ipc;
  31 #if defined(CONFIG_HWZOL)
  32                         long lb;
  33                         long le;
  34                         long lc;
  35 #else
  36                         long dummy[3];
  37 #endif
  38                         long syscallno;
  39                 };
  40         };
  41         long orig_r0;
  42         long ir0;
  43         long ipsw;
  44         long pipsw;
  45         long pipc;
  46         long pp0;
  47         long pp1;
  48         long fucop_ctl;
  49         long osp;
  50 };
  51 
  52 static inline bool in_syscall(struct pt_regs const *regs)
  53 {
  54         return regs->syscallno != NO_SYSCALL;
  55 }
  56 
  57 static inline void forget_syscall(struct pt_regs *regs)
  58 {
  59         regs->syscallno = NO_SYSCALL;
  60 }
  61 static inline unsigned long regs_return_value(struct pt_regs *regs)
  62 {
  63         return regs->uregs[0];
  64 }
  65 extern void show_regs(struct pt_regs *);
  66 /* Avoid circular header include via sched.h */
  67 struct task_struct;
  68 
  69 #define arch_has_single_step()          (1)
  70 #define user_mode(regs)                 (((regs)->ipsw & PSW_mskPOM) == 0)
  71 #define interrupts_enabled(regs)        (!!((regs)->ipsw & PSW_mskGIE))
  72 #define user_stack_pointer(regs)        ((regs)->sp)
  73 #define instruction_pointer(regs)       ((regs)->ipc)
  74 #define profile_pc(regs)                instruction_pointer(regs)
  75 
  76 #endif /* __ASSEMBLY__ */
  77 #endif

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