1 /* SPDX-License-Identifier: GPL-2.0 */ 2 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd. 3 4 #ifndef _CSKY_PTRACE_H 5 #define _CSKY_PTRACE_H 6 7 #ifndef __ASSEMBLY__ 8 9 struct pt_regs { 10 unsigned long tls; 11 unsigned long lr; 12 unsigned long pc; 13 unsigned long sr; 14 unsigned long usp; 15 16 /* 17 * a0, a1, a2, a3: 18 * abiv1: r2, r3, r4, r5 19 * abiv2: r0, r1, r2, r3 20 */ 21 unsigned long orig_a0; 22 unsigned long a0; 23 unsigned long a1; 24 unsigned long a2; 25 unsigned long a3; 26 27 /* 28 * ABIV2: r4 ~ r13 29 * ABIV1: r6 ~ r14, r1 30 */ 31 unsigned long regs[10]; 32 33 #if defined(__CSKYABIV2__) 34 /* r16 ~ r30 */ 35 unsigned long exregs[15]; 36 37 unsigned long rhi; 38 unsigned long rlo; 39 unsigned long dcsr; 40 #endif 41 }; 42 43 struct user_fp { 44 unsigned long vr[96]; 45 unsigned long fcr; 46 unsigned long fesr; 47 unsigned long fid; 48 unsigned long reserved; 49 }; 50 51 #ifdef __KERNEL__ 52 53 #define PS_S 0x80000000 /* Supervisor Mode */ 54 55 #define arch_has_single_step() (1) 56 #define current_pt_regs() \ 57 ({ (struct pt_regs *)((char *)current_thread_info() + THREAD_SIZE) - 1; }) 58 59 #define user_stack_pointer(regs) ((regs)->usp) 60 61 #define user_mode(regs) (!((regs)->sr & PS_S)) 62 #define instruction_pointer(regs) ((regs)->pc) 63 #define profile_pc(regs) instruction_pointer(regs) 64 65 #endif /* __KERNEL__ */ 66 #endif /* __ASSEMBLY__ */ 67 #endif /* _CSKY_PTRACE_H */ 68