1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * published by the Free Software Foundation. 8 * 9 * Amit Bhor, Sameer Dhavale: Codito Technologies 2004 10 */ 11 12 #ifndef _UAPI__ASM_ARC_PTRACE_H 13 #define _UAPI__ASM_ARC_PTRACE_H 14 15 #define PTRACE_GET_THREAD_AREA 25 16 17 #ifndef __ASSEMBLY__ 18 /* 19 * Userspace ABI: Register state needed by 20 * -ptrace (gdbserver) 21 * -sigcontext (SA_SIGNINFO signal frame) 22 * 23 * This is to decouple pt_regs from user-space ABI, to be able to change it 24 * w/o affecting the ABI. 25 * 26 * The intermediate pad,pad2 are relics of initial layout based on pt_regs 27 * for optimizations when copying pt_regs to/from user_regs_struct. 28 * We no longer need them, but can't be changed as they are part of ABI now. 29 * 30 * Also, sigcontext only care about the scratch regs as that is what we really 31 * save/restore for signal handling. However gdb also uses the same struct 32 * hence callee regs need to be in there too. 33 */ 34 struct user_regs_struct { 35 36 unsigned long pad; 37 struct { 38 unsigned long bta, lp_start, lp_end, lp_count; 39 unsigned long status32, ret, blink, fp, gp; 40 unsigned long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0; 41 unsigned long sp; 42 } scratch; 43 unsigned long pad2; 44 struct { 45 unsigned long r25, r24, r23, r22, r21, r20; 46 unsigned long r19, r18, r17, r16, r15, r14, r13; 47 } callee; 48 unsigned long efa; /* break pt addr, for break points in delay slots */ 49 unsigned long stop_pc; /* give dbg stop_pc after ensuring brkpt trap */ 50 }; 51 52 struct user_regs_arcv2 { 53 unsigned long r30, r58, r59; 54 }; 55 56 #endif /* !__ASSEMBLY__ */ 57 58 #endif /* _UAPI__ASM_ARC_PTRACE_H */