/* * Copyright (C) 2011 Andes Technology Corporation * Copyright (C) 2010 Shawn Lin (nobuhiro@andestech.com) * Copyright (C) 2011 Macpaul Lin (macpaul@andestech.com) * * 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_NDS_PTRACE_H #define __ASM_NDS_PTRACE_H #define USR_MODE 0x00 #define SU_MODE 0x01 #define HV_MODE 0x10 #define MODE_MASK (0x03<<3) #define GIE_BIT 0x01 #ifndef __ASSEMBLY__ /* this struct defines the way the registers are stored on the stack during a system call. */ #define NDS32_REG long struct pt_regs { NDS32_REG ir0; NDS32_REG ipsw; NDS32_REG ipc; NDS32_REG sp; NDS32_REG orig_r0; NDS32_REG pipsw; NDS32_REG pipc; NDS32_REG pp0; NDS32_REG pp1; NDS32_REG d0hi; NDS32_REG d0lo; NDS32_REG d1hi; NDS32_REG d1lo; NDS32_REG r[26]; /* r0 - r25 */ NDS32_REG p0; /* r26 - used by OS */ NDS32_REG p1; /* r27 - used by OS */ NDS32_REG fp; /* r28 */ NDS32_REG gp; /* r29 */ NDS32_REG lp; /* r30 */ NDS32_REG fucop_ctl; NDS32_REG osp; }; #define processor_mode(regs) \ (((regs)->ipsw & MODE_MASK) >> 3) #define interrupts_enabled(regs) \ ((regs)->ipsw & GIE_BIT) /* * Offsets used by 'ptrace' system call interface. * These can't be changed without breaking binary compatibility * with MkLinux, etc. */ #define PT_R0 0 #define PT_R1 1 #define PT_R2 2 #define PT_R3 3 #define PT_R4 4 #define PT_R5 5 #define PT_R6 6 #define PT_R7 7 #define PT_R8 8 #define PT_R9 9 #define PT_R10 10 #define PT_R11 11 #define PT_R12 12 #define PT_R13 13 #define PT_R14 14 #define PT_R15 15 #define PT_R16 16 #define PT_R17 17 #define PT_R18 18 #define PT_R19 19 #define PT_R20 20 #define PT_R21 21 #define PT_R22 22 #define PT_R23 23 #define PT_R24 24 #define PT_R25 25 #endif /* __ASSEMBLY__ */ #endif /* __ASM_NDS_PTRACE_H */