1 #ifndef __ASM_PTRACE_H 2 #define __ASM_PTRACE_H 3 4 #define PTRACE_GETREGS 12 5 #define PTRACE_SETREGS 13 6 #define PTRACE_GETFPREGS 14 7 #define PTRACE_SETFPREGS 15 8 9 #define PTRACE_GETWMMXREGS 18 10 #define PTRACE_SETWMMXREGS 19 11 12 #define PTRACE_OLDSETOPTIONS 21 13 14 #define PTRACE_GET_THREAD_AREA 22 15 16 #define PTRACE_SET_SYSCALL 23 17 18 #define PTRACE_GETCRUNCHREGS 25 19 #define PTRACE_SETCRUNCHREGS 26 20 21 #define USR26_MODE 0x00000000 22 #define FIQ26_MODE 0x00000001 23 #define IRQ26_MODE 0x00000002 24 #define SVC26_MODE 0x00000003 25 #define USR_MODE 0x00000010 26 #define FIQ_MODE 0x00000011 27 #define IRQ_MODE 0x00000012 28 #define SVC_MODE 0x00000013 29 #define ABT_MODE 0x00000017 30 #define UND_MODE 0x0000001b 31 #define SYSTEM_MODE 0x0000001f 32 #define MODE32_BIT 0x00000010 33 #define MODE_MASK 0x0000001f 34 #define PSR_T_BIT 0x00000020 35 #define PSR_F_BIT 0x00000040 36 #define PSR_I_BIT 0x00000080 37 #define PSR_J_BIT 0x01000000 38 #define PSR_Q_BIT 0x08000000 39 #define PSR_V_BIT 0x10000000 40 #define PSR_C_BIT 0x20000000 41 #define PSR_Z_BIT 0x40000000 42 #define PSR_N_BIT 0x80000000 43 #define PCMASK 0 44 45 #define PSR_f 0xff000000 46 #define PSR_s 0x00ff0000 47 #define PSR_x 0x0000ff00 48 #define PSR_c 0x000000ff 49 50 #ifndef __ASSEMBLY__ 51 52 struct pt_regs { 53 long uregs[44]; // Increase array size for ARM/x86/MIPS compatibility 54 }; 55 56 #define ARM_cpsr uregs[16] 57 #define ARM_pc uregs[15] 58 #define ARM_lr uregs[14] 59 #define ARM_sp uregs[13] 60 #define ARM_ip uregs[12] 61 #define ARM_fp uregs[11] 62 #define ARM_r10 uregs[10] 63 #define ARM_r9 uregs[9] 64 #define ARM_r8 uregs[8] 65 #define ARM_r7 uregs[7] 66 #define ARM_r6 uregs[6] 67 #define ARM_r5 uregs[5] 68 #define ARM_r4 uregs[4] 69 #define ARM_r3 uregs[3] 70 #define ARM_r2 uregs[2] 71 #define ARM_r1 uregs[1] 72 #define ARM_r0 uregs[0] 73 #define ARM_ORIG_r0 uregs[17] 74 75 #define x86_r15 uregs[0] 76 #define x86_r14 uregs[1] 77 #define x86_r13 uregs[2] 78 #define x86_r12 uregs[3] 79 #define x86_rbp uregs[4] 80 #define x86_rbx uregs[5] 81 #define x86_r11 uregs[6] 82 #define x86_r10 uregs[7] 83 #define x86_r9 uregs[8] 84 #define x86_r8 uregs[9] 85 #define x86_rax uregs[10] 86 #define x86_rcx uregs[11] 87 #define x86_rdx uregs[12] 88 #define x86_rsi uregs[13] 89 #define x86_rdi uregs[14] 90 #define x86_orig_rax uregs[15] 91 #define x86_rip uregs[16] 92 #define x86_cs uregs[17] 93 #define x86_eflags uregs[18] 94 #define x86_rsp uregs[19] 95 #define x86_ss uregs[20] 96 97 #define pc_pointer(v) ((v) & ~PCMASK) 98 99 #define instruction_pointer(regs) (pc_pointer((regs)->ARM_pc)) 100 101 #define profile_pc(regs) instruction_pointer(regs) 102 103 #endif 104 105 #endif 106