1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux 1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ >> 2 #ifndef _UAPI_ASMAXP_PTRACE_H >> 3 #define _UAPI_ASMAXP_PTRACE_H >> 4 >> 5 2 /* 6 /* 3 * Copyright (C) 2010 Tobias Klauser <tklauser !! 7 * This struct defines the way the registers are stored on the 4 * Copyright (C) 2004 Microtronix Datacom Ltd !! 8 * kernel stack during a system call or other kernel entry 5 * 9 * 6 * based on m68k asm/processor.h !! 10 * NOTE! I want to minimize the overhead of system calls, so this >> 11 * struct has as little information as possible. It does not have 7 * 12 * 8 * This file is subject to the terms and condi !! 13 * - floating point regs: the kernel doesn't change those 9 * License. See the file "COPYING" in the mai !! 14 * - r9-15: saved by the C compiler 10 * for more details. !! 15 * >> 16 * This makes "fork()" and "exec()" a bit more complex, but should >> 17 * give us low system call latency. 11 */ 18 */ 12 19 13 #ifndef _UAPI_ASM_NIOS2_PTRACE_H !! 20 struct pt_regs { 14 #define _UAPI_ASM_NIOS2_PTRACE_H !! 21 unsigned long r0; 15 !! 22 unsigned long r1; 16 #ifndef __ASSEMBLY__ !! 23 unsigned long r2; 17 !! 24 unsigned long r3; 18 #include <linux/types.h> !! 25 unsigned long r4; >> 26 unsigned long r5; >> 27 unsigned long r6; >> 28 unsigned long r7; >> 29 unsigned long r8; >> 30 unsigned long r19; >> 31 unsigned long r20; >> 32 unsigned long r21; >> 33 unsigned long r22; >> 34 unsigned long r23; >> 35 unsigned long r24; >> 36 unsigned long r25; >> 37 unsigned long r26; >> 38 unsigned long r27; >> 39 unsigned long r28; >> 40 unsigned long hae; >> 41 /* JRP - These are the values provided to a0-a2 by PALcode */ >> 42 unsigned long trap_a0; >> 43 unsigned long trap_a1; >> 44 unsigned long trap_a2; >> 45 /* These are saved by PAL-code: */ >> 46 unsigned long ps; >> 47 unsigned long pc; >> 48 unsigned long gp; >> 49 unsigned long r16; >> 50 unsigned long r17; >> 51 unsigned long r18; >> 52 }; 19 53 20 /* 54 /* 21 * Register numbers used by 'ptrace' system ca !! 55 * This is the extended stack used by signal handlers and the context >> 56 * switcher: it's pushed after the normal "struct pt_regs". 22 */ 57 */ 23 !! 58 struct switch_stack { 24 /* GP registers */ !! 59 unsigned long r9; 25 #define PTR_R0 0 !! 60 unsigned long r10; 26 #define PTR_R1 1 !! 61 unsigned long r11; 27 #define PTR_R2 2 !! 62 unsigned long r12; 28 #define PTR_R3 3 !! 63 unsigned long r13; 29 #define PTR_R4 4 !! 64 unsigned long r14; 30 #define PTR_R5 5 !! 65 unsigned long r15; 31 #define PTR_R6 6 !! 66 unsigned long r26; 32 #define PTR_R7 7 !! 67 #ifndef __KERNEL__ 33 #define PTR_R8 8 !! 68 unsigned long fp[32]; /* fp[31] is fpcr */ 34 #define PTR_R9 9 !! 69 #endif 35 #define PTR_R10 10 << 36 #define PTR_R11 11 << 37 #define PTR_R12 12 << 38 #define PTR_R13 13 << 39 #define PTR_R14 14 << 40 #define PTR_R15 15 << 41 #define PTR_R16 16 << 42 #define PTR_R17 17 << 43 #define PTR_R18 18 << 44 #define PTR_R19 19 << 45 #define PTR_R20 20 << 46 #define PTR_R21 21 << 47 #define PTR_R22 22 << 48 #define PTR_R23 23 << 49 #define PTR_R24 24 << 50 #define PTR_R25 25 << 51 #define PTR_GP 26 << 52 #define PTR_SP 27 << 53 #define PTR_FP 28 << 54 #define PTR_EA 29 << 55 #define PTR_BA 30 << 56 #define PTR_RA 31 << 57 /* Control registers */ << 58 #define PTR_PC 32 << 59 #define PTR_STATUS 33 << 60 #define PTR_ESTATUS 34 << 61 #define PTR_BSTATUS 35 << 62 #define PTR_IENABLE 36 << 63 #define PTR_IPENDING 37 << 64 #define PTR_CPUID 38 << 65 #define PTR_CTL6 39 << 66 #define PTR_EXCEPTION 40 << 67 #define PTR_PTEADDR 41 << 68 #define PTR_TLBACC 42 << 69 #define PTR_TLBMISC 43 << 70 #define PTR_ECCINJ 44 << 71 #define PTR_BADADDR 45 << 72 #define PTR_CONFIG 46 << 73 #define PTR_MPUBASE 47 << 74 #define PTR_MPUACC 48 << 75 << 76 #define NUM_PTRACE_REG (PTR_MPUACC + 1) << 77 << 78 /* User structures for general purpose registe << 79 struct user_pt_regs { << 80 __u32 regs[49]; << 81 }; 70 }; 82 71 83 #endif /* __ASSEMBLY__ */ !! 72 84 #endif /* _UAPI_ASM_NIOS2_PTRACE_H */ !! 73 #endif /* _UAPI_ASMAXP_PTRACE_H */ 85 74
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.