| #ifndef _UAPI_ASMAXP_PTRACE_H | |
| #define _UAPI_ASMAXP_PTRACE_H | |
| /* | |
| * This struct defines the way the registers are stored on the | |
| * kernel stack during a system call or other kernel entry | |
| * | |
| * NOTE! I want to minimize the overhead of system calls, so this | |
| * struct has as little information as possible. I does not have | |
| * | |
| * - floating point regs: the kernel doesn't change those | |
| * - r9-15: saved by the C compiler | |
| * | |
| * This makes "fork()" and "exec()" a bit more complex, but should | |
| * give us low system call latency. | |
| */ | |
| struct pt_regs { | |
| unsigned long r0; | |
| unsigned long r1; | |
| unsigned long r2; | |
| unsigned long r3; | |
| unsigned long r4; | |
| unsigned long r5; | |
| unsigned long r6; | |
| unsigned long r7; | |
| unsigned long r8; | |
| unsigned long r19; | |
| unsigned long r20; | |
| unsigned long r21; | |
| unsigned long r22; | |
| unsigned long r23; | |
| unsigned long r24; | |
| unsigned long r25; | |
| unsigned long r26; | |
| unsigned long r27; | |
| unsigned long r28; | |
| unsigned long hae; | |
| /* JRP - These are the values provided to a0-a2 by PALcode */ | |
| unsigned long trap_a0; | |
| unsigned long trap_a1; | |
| unsigned long trap_a2; | |
| /* These are saved by PAL-code: */ | |
| unsigned long ps; | |
| unsigned long pc; | |
| unsigned long gp; | |
| unsigned long r16; | |
| unsigned long r17; | |
| unsigned long r18; | |
| }; | |
| /* | |
| * This is the extended stack used by signal handlers and the context | |
| * switcher: it's pushed after the normal "struct pt_regs". | |
| */ | |
| struct switch_stack { | |
| unsigned long r9; | |
| unsigned long r10; | |
| unsigned long r11; | |
| unsigned long r12; | |
| unsigned long r13; | |
| unsigned long r14; | |
| unsigned long r15; | |
| unsigned long r26; | |
| unsigned long fp[32]; /* fp[31] is fpcr */ | |
| }; | |
| #endif /* _UAPI_ASMAXP_PTRACE_H */ |