/* * Copyright Codito Technologies (www.codito.com) * * include/asm-arc/ptrace.h * * Copyright (C) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * */ #ifndef __ASM_ARC_PTRACE_H #define __ASM_ARC_PTRACE_H #include #include #include /* Offsets of various elements(registers) of struct pt_regs on the stack. * The offsets starts with 4 because sp points to next free element on stack */ #define PT_bta 4 #define PT_lp_start 8 #define PT_lp_end 12 #define PT_lp_count 16 #define PT_status32 20 #define PT_ret 24 #define PT_blink 28 #define PT_fp 32 #define PT_r26 36 #define PT_r12 40 #define PT_r11 44 #define PT_r10 48 #define PT_r9 52 #define PT_r8 56 #define PT_r7 60 #define PT_r6 64 #define PT_r5 68 #define PT_r4 72 #define PT_r3 76 #define PT_r2 80 #define PT_r1 84 #define PT_r0 88 #define PT_orig_r0 92 #define PT_orig_r8 96 #define PT_sp 100 #ifndef __ASSEMBLY__ /* this struct defines the way the registers are stored on the stack during a system call. */ struct pt_regs { /* After a SAVE_ALL_SYS or a SAVE ALL_INT, SP points to next free * entry on stack. So this place holder */ long stack_place_holder; long bta; /* bta_l1, bta_l2, erbta */ long lp_start; long lp_end; long lp_count; long status32; /* status32_l1, status32_l2, erstatus */ long ret; /* ilink1, ilink2 or eret*/ long blink; long fp; long r26; /* gp */ long r12; long r11; long r10; long r9; long r8; long r7; long r6; long r5; long r4; long r3; long r2; long r1; long r0; long orig_r0; long orig_r8; /*used to distinguish between an exception, a system call, int1 or int2 */ long sp; /* user sp or kernel sp, depending on where we came from */ }; /* Callee saved registers - need to be saved only when you are scheduled out */ struct callee_regs { /* After a SAVE_ALL_SYS or a SAVE ALL_INT, SP points to next free * entry on stack. So this place holder */ long stack_place_holder; long r25; long r24; long r23; long r22; long r21; long r20; long r19; long r18; long r17; long r16; long r15; long r14; long r13; }; #endif /* !__ASSEMBLY__ */ #ifdef __KERNEL__ #define PTRACE_GETREGS 12 #define PTRACE_SETREGS 13 #define PTRACE_GETFPREGS 14 #define PTRACE_SETFPREGS 15 #define PTRACE_SETOPTIONS 21 #define PTRACE_O_TRACESYSGOOD 0x00000001 #ifndef __ASSEMBLY__ extern void show_regs(struct pt_regs *); /* return 1 if user mode or 0 if kernel mode */ #define user_mode(regs) ((regs->status32 & STATUS_U_MASK) == STATUS_U_MASK) #endif /* __ASSEMBLY__ */ #endif /* __KERNEL__ */ #endif /* __ASM_PTRACE_H */