home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / include / asm-mips / ptrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-18  |  1.6 KB  |  75 lines

  1. /*
  2.  * linux/include/asm-mips/ptrace.h
  3.  *
  4.  * machine dependent structs and defines to help the user use
  5.  * the ptrace system call.
  6.  */
  7. #ifndef __ASM_MIPS_PTRACE_H
  8. #define __ASM_MIPS_PTRACE_H
  9.  
  10. /*
  11.  * use ptrace (3 or 6, pid, PT_EXCL, data); to read or write
  12.  * the processes registers.
  13.  *
  14.  * This defines/structures correspond to the register layout on stack -
  15.  * if the order here is changed, it needs to be updated in
  16.  * arch/mips/fork.c:copy_process, asm/mips/signal.c:do_signal,
  17.  * asm-mips/ptrace.c, include/asm-mips/ptrace.h.
  18.  */
  19.  
  20. #include <asm/stackframe.h>
  21.  
  22. /*
  23.  * This struct defines the way the registers are stored on the 
  24.  * stack during a system call/exception. As usual the registers
  25.  * k0/k1 aren't being saved.
  26.  */
  27. struct pt_regs {
  28.     /*
  29.      * Pad bytes for argument save space on the stack
  30.      */
  31.     unsigned long pad0[FR_REG1/sizeof(unsigned long)];
  32.  
  33.     /*
  34.      * saved main processor registers
  35.      */
  36.     long            reg1,  reg2,  reg3,  reg4,  reg5,  reg6,  reg7;
  37.     long     reg8,  reg9, reg10, reg11, reg12, reg13, reg14, reg15;
  38.     long    reg16, reg17, reg18, reg19, reg20, reg21, reg22, reg23;
  39.     long    reg24, reg25,               reg28, reg29, reg30, reg31;
  40.  
  41.     /*
  42.      * Saved special registers
  43.      */
  44.     long    lo;
  45.     long    hi;
  46.  
  47.     /*
  48.      * saved cp0 registers
  49.      */
  50.     unsigned long cp0_status;
  51.     unsigned long cp0_epc;
  52.     unsigned long cp0_cause;
  53.  
  54.     /*
  55.      * Some goodies...
  56.      */
  57.     unsigned long interrupt;
  58.     long orig_reg2;
  59. };
  60.  
  61. /*
  62.  * Does the process account for user or for system time?
  63.  */
  64. #if defined (__R4000__)
  65.  
  66. #define user_mode(regs) (!((regs)->cp0_status & 0x18))
  67.  
  68. #else /* !defined (__R4000__) */
  69.  
  70. #error "#define user_mode(regs) for R3000!"
  71.  
  72. #endif /* !defined (__R4000__) */
  73.  
  74. #endif /* __ASM_MIPS_PTRACE_H */
  75.