linux/arch/nds32/include/asm/ptrace.h
<<
>>
Prefs
   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
  21struct 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
  52static inline bool in_syscall(struct pt_regs const *regs)
  53{
  54        return regs->syscallno != NO_SYSCALL;
  55}
  56
  57static inline void forget_syscall(struct pt_regs *regs)
  58{
  59        regs->syscallno = NO_SYSCALL;
  60}
  61static inline unsigned long regs_return_value(struct pt_regs *regs)
  62{
  63        return regs->uregs[0];
  64}
  65extern void show_regs(struct pt_regs *);
  66/* Avoid circular header include via sched.h */
  67struct 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
  78