uboot/arch/mips/include/asm/ptrace.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle
   7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
   8 */
   9#ifndef _ASM_PTRACE_H
  10#define _ASM_PTRACE_H
  11
  12/* 0 - 31 are integer registers, 32 - 63 are fp registers.  */
  13#define FPR_BASE        32
  14#define PC              64
  15#define CAUSE           65
  16#define BADVADDR        66
  17#define MMHI            67
  18#define MMLO            68
  19#define FPC_CSR         69
  20#define FPC_EIR         70
  21#define DSP_BASE        71              /* 3 more hi / lo register pairs */
  22#define DSP_CONTROL     77
  23#define ACX             78
  24
  25/*
  26 * This struct defines the way the registers are stored on the stack during a
  27 * system call/exception. As usual the registers k0/k1 aren't being saved.
  28 */
  29struct pt_regs {
  30#ifdef CONFIG_32BIT
  31        /* Pad bytes for argument save space on the stack. */
  32        unsigned long pad0[6];
  33#endif
  34
  35        /* Saved main processor registers. */
  36        unsigned long regs[32];
  37
  38        /* Saved special registers. */
  39        unsigned long cp0_status;
  40        unsigned long hi;
  41        unsigned long lo;
  42#ifdef CONFIG_CPU_HAS_SMARTMIPS
  43        unsigned long acx;
  44#endif
  45        unsigned long cp0_badvaddr;
  46        unsigned long cp0_cause;
  47        unsigned long cp0_epc;
  48#ifdef CONFIG_MIPS_MT_SMTC
  49        unsigned long cp0_tcstatus;
  50#endif /* CONFIG_MIPS_MT_SMTC */
  51} __attribute__ ((aligned (8)));
  52
  53/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  54#define PTRACE_GETREGS          12
  55#define PTRACE_SETREGS          13
  56#define PTRACE_GETFPREGS                14
  57#define PTRACE_SETFPREGS                15
  58/* #define PTRACE_GETFPXREGS            18 */
  59/* #define PTRACE_SETFPXREGS            19 */
  60
  61#define PTRACE_OLDSETOPTIONS    21
  62
  63#define PTRACE_GET_THREAD_AREA  25
  64#define PTRACE_SET_THREAD_AREA  26
  65
  66/* Calls to trace a 64bit program from a 32bit program.  */
  67#define PTRACE_PEEKTEXT_3264    0xc0
  68#define PTRACE_PEEKDATA_3264    0xc1
  69#define PTRACE_POKETEXT_3264    0xc2
  70#define PTRACE_POKEDATA_3264    0xc3
  71#define PTRACE_GET_THREAD_AREA_3264     0xc4
  72
  73#ifdef __KERNEL__
  74
  75#include <asm/isadep.h>
  76
  77/*
  78 * Does the process account for user or for system time?
  79 */
  80#define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)
  81
  82#define instruction_pointer(regs) ((regs)->cp0_epc)
  83#define profile_pc(regs) instruction_pointer(regs)
  84
  85#endif
  86
  87#endif /* _ASM_PTRACE_H */
  88