1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/*
* linux/include/asm-mips/ptrace.h
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1994, 1995 by Waldorf GMBH
* written by Ralf Baechle
*
* Machine dependent structs and defines to help the user use
* the ptrace system call.
*/
#ifndef __ASM_MIPS_PTRACE_H
#define __ASM_MIPS_PTRACE_H
/*
* This struct defines the way the registers are stored on the stack during a
* system call/exception. As usual the registers k0/k1 aren't being saved.
*/
struct pt_regs {
/*
* Pad bytes for argument save space on the stack
* 20/40 Bytes for 32/64 bit code
*/
unsigned long pad0[5];
/*
* saved main processor registers
*/
long reg1, reg2, reg3, reg4, reg5, reg6, reg7;
long reg8, reg9, reg10, reg11, reg12, reg13, reg14, reg15;
long reg16, reg17, reg18, reg19, reg20, reg21, reg22, reg23;
long reg24, reg25, reg28, reg29, reg30, reg31;
/*
* Saved special registers
*/
long lo;
long hi;
/*
* saved cp0 registers
*/
unsigned long cp0_status;
unsigned long cp0_epc;
unsigned long cp0_cause;
/*
* Some goodies...
*/
unsigned long interrupt;
long orig_reg2;
long pad1;
};
#ifdef __KERNEL__
/*
* Does the process account for user or for system time?
*/
#if defined (__R4000__)
#define user_mode(regs) ((regs)->cp0_status & 0x10)
#else /* !defined (__R4000__) */
#define user_mode(regs) (!((regs)->cp0_status & 0x8))
#endif /* !defined (__R4000__) */
#define instruction_pointer(regs) ((regs)->cp0_epc)
extern void show_regs(struct pt_regs *);
#endif
#endif /* __ASM_MIPS_PTRACE_H */
|