Ley Foon Tan | 106174d | 2014-11-06 15:20:13 +0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch> |
| 3 | * Copyright (C) 2004 Microtronix Datacom Ltd |
| 4 | * |
| 5 | * based on m68k asm/processor.h |
| 6 | * |
| 7 | * This file is subject to the terms and conditions of the GNU General Public |
| 8 | * License. See the file "COPYING" in the main directory of this archive |
| 9 | * for more details. |
| 10 | */ |
| 11 | |
| 12 | #ifndef _UAPI_ASM_NIOS2_PTRACE_H |
| 13 | #define _UAPI_ASM_NIOS2_PTRACE_H |
| 14 | |
| 15 | #ifndef __ASSEMBLY__ |
| 16 | |
| 17 | /* |
| 18 | * Register numbers used by 'ptrace' system call interface. |
| 19 | */ |
| 20 | |
| 21 | /* GP registers */ |
| 22 | #define PTR_R0 0 |
| 23 | #define PTR_R1 1 |
| 24 | #define PTR_R2 2 |
| 25 | #define PTR_R3 3 |
| 26 | #define PTR_R4 4 |
| 27 | #define PTR_R5 5 |
| 28 | #define PTR_R6 6 |
| 29 | #define PTR_R7 7 |
| 30 | #define PTR_R8 8 |
| 31 | #define PTR_R9 9 |
| 32 | #define PTR_R10 10 |
| 33 | #define PTR_R11 11 |
| 34 | #define PTR_R12 12 |
| 35 | #define PTR_R13 13 |
| 36 | #define PTR_R14 14 |
| 37 | #define PTR_R15 15 |
| 38 | #define PTR_R16 16 |
| 39 | #define PTR_R17 17 |
| 40 | #define PTR_R18 18 |
| 41 | #define PTR_R19 19 |
| 42 | #define PTR_R20 20 |
| 43 | #define PTR_R21 21 |
| 44 | #define PTR_R22 22 |
| 45 | #define PTR_R23 23 |
| 46 | #define PTR_R24 24 |
| 47 | #define PTR_R25 25 |
| 48 | #define PTR_GP 26 |
| 49 | #define PTR_SP 27 |
| 50 | #define PTR_FP 28 |
| 51 | #define PTR_EA 29 |
| 52 | #define PTR_BA 30 |
| 53 | #define PTR_RA 31 |
| 54 | /* Control registers */ |
| 55 | #define PTR_PC 32 |
| 56 | #define PTR_STATUS 33 |
| 57 | #define PTR_ESTATUS 34 |
| 58 | #define PTR_BSTATUS 35 |
| 59 | #define PTR_IENABLE 36 |
| 60 | #define PTR_IPENDING 37 |
| 61 | #define PTR_CPUID 38 |
| 62 | #define PTR_CTL6 39 |
| 63 | #define PTR_CTL7 40 |
| 64 | #define PTR_PTEADDR 41 |
| 65 | #define PTR_TLBACC 42 |
| 66 | #define PTR_TLBMISC 43 |
| 67 | |
| 68 | #define NUM_PTRACE_REG (PTR_TLBMISC + 1) |
| 69 | |
| 70 | /* this struct defines the way the registers are stored on the |
| 71 | stack during a system call. |
| 72 | |
| 73 | There is a fake_regs in setup.c that has to match pt_regs.*/ |
| 74 | |
| 75 | struct pt_regs { |
| 76 | unsigned long r8; /* r8-r15 Caller-saved GP registers */ |
| 77 | unsigned long r9; |
| 78 | unsigned long r10; |
| 79 | unsigned long r11; |
| 80 | unsigned long r12; |
| 81 | unsigned long r13; |
| 82 | unsigned long r14; |
| 83 | unsigned long r15; |
| 84 | unsigned long r1; /* Assembler temporary */ |
| 85 | unsigned long r2; /* Retval LS 32bits */ |
| 86 | unsigned long r3; /* Retval MS 32bits */ |
| 87 | unsigned long r4; /* r4-r7 Register arguments */ |
| 88 | unsigned long r5; |
| 89 | unsigned long r6; |
| 90 | unsigned long r7; |
| 91 | unsigned long orig_r2; /* Copy of r2 ?? */ |
| 92 | unsigned long ra; /* Return address */ |
| 93 | unsigned long fp; /* Frame pointer */ |
| 94 | unsigned long sp; /* Stack pointer */ |
| 95 | unsigned long gp; /* Global pointer */ |
| 96 | unsigned long estatus; |
| 97 | unsigned long ea; /* Exception return address (pc) */ |
| 98 | unsigned long orig_r7; |
| 99 | }; |
| 100 | |
| 101 | /* |
| 102 | * This is the extended stack used by signal handlers and the context |
| 103 | * switcher: it's pushed after the normal "struct pt_regs". |
| 104 | */ |
| 105 | struct switch_stack { |
| 106 | unsigned long r16; /* r16-r23 Callee-saved GP registers */ |
| 107 | unsigned long r17; |
| 108 | unsigned long r18; |
| 109 | unsigned long r19; |
| 110 | unsigned long r20; |
| 111 | unsigned long r21; |
| 112 | unsigned long r22; |
| 113 | unsigned long r23; |
| 114 | unsigned long fp; |
| 115 | unsigned long gp; |
| 116 | unsigned long ra; |
| 117 | }; |
| 118 | |
| 119 | #endif /* __ASSEMBLY__ */ |
| 120 | #endif /* _UAPI_ASM_NIOS2_PTRACE_H */ |