Commit | Line | Data |
---|---|---|
106174d0 LFT |
1 | /* |
2 | * Copyright (C) 2013 Altera Corporation | |
3 | * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch> | |
4 | * Copyright (C) 2004 Microtronix Datacom Ltd | |
5 | * | |
6 | * based on m68k asm/processor.h | |
7 | * | |
8 | * This file is subject to the terms and conditions of the GNU General Public | |
9 | * License. See the file "COPYING" in the main directory of this archive | |
10 | * for more details. | |
11 | */ | |
12 | ||
13 | #ifndef _ASM_NIOS2_PTRACE_H | |
14 | #define _ASM_NIOS2_PTRACE_H | |
15 | ||
16 | #include <uapi/asm/ptrace.h> | |
17 | ||
92d5dd8c CLT |
18 | /* This struct defines the way the registers are stored on the |
19 | stack during a system call. */ | |
20 | ||
106174d0 | 21 | #ifndef __ASSEMBLY__ |
92d5dd8c CLT |
22 | struct pt_regs { |
23 | unsigned long r8; /* r8-r15 Caller-saved GP registers */ | |
24 | unsigned long r9; | |
25 | unsigned long r10; | |
26 | unsigned long r11; | |
27 | unsigned long r12; | |
28 | unsigned long r13; | |
29 | unsigned long r14; | |
30 | unsigned long r15; | |
31 | unsigned long r1; /* Assembler temporary */ | |
32 | unsigned long r2; /* Retval LS 32bits */ | |
33 | unsigned long r3; /* Retval MS 32bits */ | |
34 | unsigned long r4; /* r4-r7 Register arguments */ | |
35 | unsigned long r5; | |
36 | unsigned long r6; | |
37 | unsigned long r7; | |
38 | unsigned long orig_r2; /* Copy of r2 ?? */ | |
39 | unsigned long ra; /* Return address */ | |
40 | unsigned long fp; /* Frame pointer */ | |
41 | unsigned long sp; /* Stack pointer */ | |
42 | unsigned long gp; /* Global pointer */ | |
43 | unsigned long estatus; | |
44 | unsigned long ea; /* Exception return address (pc) */ | |
45 | unsigned long orig_r7; | |
46 | }; | |
47 | ||
48 | /* | |
49 | * This is the extended stack used by signal handlers and the context | |
50 | * switcher: it's pushed after the normal "struct pt_regs". | |
51 | */ | |
52 | struct switch_stack { | |
53 | unsigned long r16; /* r16-r23 Callee-saved GP registers */ | |
54 | unsigned long r17; | |
55 | unsigned long r18; | |
56 | unsigned long r19; | |
57 | unsigned long r20; | |
58 | unsigned long r21; | |
59 | unsigned long r22; | |
60 | unsigned long r23; | |
61 | unsigned long fp; | |
62 | unsigned long gp; | |
63 | unsigned long ra; | |
64 | }; | |
65 | ||
106174d0 LFT |
66 | #define user_mode(regs) (((regs)->estatus & ESTATUS_EU)) |
67 | ||
68 | #define instruction_pointer(regs) ((regs)->ra) | |
69 | #define profile_pc(regs) instruction_pointer(regs) | |
70 | #define user_stack_pointer(regs) ((regs)->sp) | |
71 | extern void show_regs(struct pt_regs *); | |
72 | ||
73 | #define current_pt_regs() \ | |
74 | ((struct pt_regs *)((unsigned long)current_thread_info() + THREAD_SIZE)\ | |
75 | - 1) | |
76 | ||
77 | int do_syscall_trace_enter(void); | |
78 | void do_syscall_trace_exit(void); | |
79 | #endif /* __ASSEMBLY__ */ | |
80 | #endif /* _ASM_NIOS2_PTRACE_H */ |