Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.2-rc6 106 lines 2.1 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2012 Regents of the University of California 4 */ 5 6#ifndef _ASM_RISCV_PTRACE_H 7#define _ASM_RISCV_PTRACE_H 8 9#include <uapi/asm/ptrace.h> 10#include <asm/csr.h> 11 12#ifndef __ASSEMBLY__ 13 14struct pt_regs { 15 unsigned long sepc; 16 unsigned long ra; 17 unsigned long sp; 18 unsigned long gp; 19 unsigned long tp; 20 unsigned long t0; 21 unsigned long t1; 22 unsigned long t2; 23 unsigned long s0; 24 unsigned long s1; 25 unsigned long a0; 26 unsigned long a1; 27 unsigned long a2; 28 unsigned long a3; 29 unsigned long a4; 30 unsigned long a5; 31 unsigned long a6; 32 unsigned long a7; 33 unsigned long s2; 34 unsigned long s3; 35 unsigned long s4; 36 unsigned long s5; 37 unsigned long s6; 38 unsigned long s7; 39 unsigned long s8; 40 unsigned long s9; 41 unsigned long s10; 42 unsigned long s11; 43 unsigned long t3; 44 unsigned long t4; 45 unsigned long t5; 46 unsigned long t6; 47 /* Supervisor CSRs */ 48 unsigned long sstatus; 49 unsigned long sbadaddr; 50 unsigned long scause; 51 /* a0 value before the syscall */ 52 unsigned long orig_a0; 53}; 54 55#ifdef CONFIG_64BIT 56#define REG_FMT "%016lx" 57#else 58#define REG_FMT "%08lx" 59#endif 60 61#define user_mode(regs) (((regs)->sstatus & SR_SPP) == 0) 62 63 64/* Helpers for working with the instruction pointer */ 65static inline unsigned long instruction_pointer(struct pt_regs *regs) 66{ 67 return regs->sepc; 68} 69static inline void instruction_pointer_set(struct pt_regs *regs, 70 unsigned long val) 71{ 72 regs->sepc = val; 73} 74 75#define profile_pc(regs) instruction_pointer(regs) 76 77/* Helpers for working with the user stack pointer */ 78static inline unsigned long user_stack_pointer(struct pt_regs *regs) 79{ 80 return regs->sp; 81} 82static inline void user_stack_pointer_set(struct pt_regs *regs, 83 unsigned long val) 84{ 85 regs->sp = val; 86} 87 88/* Helpers for working with the frame pointer */ 89static inline unsigned long frame_pointer(struct pt_regs *regs) 90{ 91 return regs->s0; 92} 93static inline void frame_pointer_set(struct pt_regs *regs, 94 unsigned long val) 95{ 96 regs->s0 = val; 97} 98 99static inline unsigned long regs_return_value(struct pt_regs *regs) 100{ 101 return regs->a0; 102} 103 104#endif /* __ASSEMBLY__ */ 105 106#endif /* _ASM_RISCV_PTRACE_H */