1 #ifndef _UAPI_ASMAXP_PTRACE_H 2 #define _UAPI_ASMAXP_PTRACE_H 3 4 5 /* 6 * This struct defines the way the registers are stored on the 7 * kernel stack during a system call or other kernel entry 8 * 9 * NOTE! I want to minimize the overhead of system calls, so this 10 * struct has as little information as possible. I does not have 11 * 12 * - floating point regs: the kernel doesn't change those 13 * - r9-15: saved by the C compiler 14 * 15 * This makes "fork()" and "exec()" a bit more complex, but should 16 * give us low system call latency. 17 */ 18 19 struct pt_regs { 20 unsigned long r0; 21 unsigned long r1; 22 unsigned long r2; 23 unsigned long r3; 24 unsigned long r4; 25 unsigned long r5; 26 unsigned long r6; 27 unsigned long r7; 28 unsigned long r8; 29 unsigned long r19; 30 unsigned long r20; 31 unsigned long r21; 32 unsigned long r22; 33 unsigned long r23; 34 unsigned long r24; 35 unsigned long r25; 36 unsigned long r26; 37 unsigned long r27; 38 unsigned long r28; 39 unsigned long hae; 40 /* JRP - These are the values provided to a0-a2 by PALcode */ 41 unsigned long trap_a0; 42 unsigned long trap_a1; 43 unsigned long trap_a2; 44 /* These are saved by PAL-code: */ 45 unsigned long ps; 46 unsigned long pc; 47 unsigned long gp; 48 unsigned long r16; 49 unsigned long r17; 50 unsigned long r18; 51 }; 52 53 /* 54 * This is the extended stack used by signal handlers and the context 55 * switcher: it's pushed after the normal "struct pt_regs". 56 */ 57 struct switch_stack { 58 unsigned long r9; 59 unsigned long r10; 60 unsigned long r11; 61 unsigned long r12; 62 unsigned long r13; 63 unsigned long r14; 64 unsigned long r15; 65 unsigned long r26; 66 unsigned long fp[32]; /* fp[31] is fpcr */ 67 }; 68 69 70 #endif /* _UAPI_ASMAXP_PTRACE_H */ 71