1 /* 2 * Copyright (C) 2011 Andes Technology Corporation 3 * Copyright (C) 2010 Shawn Lin (nobuhiro@andestech.com) 4 * Copyright (C) 2011 Macpaul Lin (macpaul@andestech.com) 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 #ifndef __ASM_NDS_PTRACE_H 11 #define __ASM_NDS_PTRACE_H 12 13 #define USR_MODE 0x00 14 #define SU_MODE 0x01 15 #define HV_MODE 0x10 16 #define MODE_MASK (0x03<<3) 17 #define GIE_BIT 0x01 18 19 #ifndef __ASSEMBLY__ 20 21 /* this struct defines the way the registers are stored on the 22 stack during a system call. */ 23 24 #define NDS32_REG long 25 26 struct pt_regs { 27 NDS32_REG ir0; 28 NDS32_REG ipsw; 29 NDS32_REG ipc; 30 NDS32_REG sp; 31 NDS32_REG orig_r0; 32 NDS32_REG pipsw; 33 NDS32_REG pipc; 34 NDS32_REG pp0; 35 NDS32_REG pp1; 36 NDS32_REG d0hi; 37 NDS32_REG d0lo; 38 NDS32_REG d1hi; 39 NDS32_REG d1lo; 40 NDS32_REG r[26]; /* r0 - r25 */ 41 NDS32_REG p0; /* r26 - used by OS */ 42 NDS32_REG p1; /* r27 - used by OS */ 43 NDS32_REG fp; /* r28 */ 44 NDS32_REG gp; /* r29 */ 45 NDS32_REG lp; /* r30 */ 46 NDS32_REG fucop_ctl; 47 NDS32_REG osp; 48 }; 49 50 #define processor_mode(regs) \ 51 (((regs)->ipsw & MODE_MASK) >> 3) 52 53 #define interrupts_enabled(regs) \ 54 ((regs)->ipsw & GIE_BIT) 55 56 /* 57 * Offsets used by 'ptrace' system call interface. 58 * These can't be changed without breaking binary compatibility 59 * with MkLinux, etc. 60 */ 61 #define PT_R0 0 62 #define PT_R1 1 63 #define PT_R2 2 64 #define PT_R3 3 65 #define PT_R4 4 66 #define PT_R5 5 67 #define PT_R6 6 68 #define PT_R7 7 69 #define PT_R8 8 70 #define PT_R9 9 71 #define PT_R10 10 72 #define PT_R11 11 73 #define PT_R12 12 74 #define PT_R13 13 75 #define PT_R14 14 76 #define PT_R15 15 77 #define PT_R16 16 78 #define PT_R17 17 79 #define PT_R18 18 80 #define PT_R19 19 81 #define PT_R20 20 82 #define PT_R21 21 83 #define PT_R22 22 84 #define PT_R23 23 85 #define PT_R24 24 86 #define PT_R25 25 87 88 #endif /* __ASSEMBLY__ */ 89 90 #endif /* __ASM_NDS_PTRACE_H */ 91