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 _UAPI_ASM_PTRACE_H 10#define _UAPI_ASM_PTRACE_H 11 12#include <linux/types.h> 13 14/* 0 - 31 are integer registers, 32 - 63 are fp registers. */ 15#define FPR_BASE 32 16#define PC 64 17#define CAUSE 65 18#define BADVADDR 66 19#define MMHI 67 20#define MMLO 68 21#define FPC_CSR 69 22#define FPC_EIR 70 23#define DSP_BASE 71 /* 3 more hi / lo register pairs */ 24#define DSP_CONTROL 77 25#define ACX 78 26 27/* 28 * This struct defines the registers as used by PTRACE_{GET,SET}REGS. The 29 * format is the same for both 32- and 64-bit processes. Registers for 32-bit 30 * processes are sign extended. 31 */ 32#ifdef __KERNEL__ 33struct user_pt_regs { 34#else 35struct pt_regs { 36#endif 37 /* Saved main processor registers. */ 38 __u64 regs[32]; 39 40 /* Saved special registers. */ 41 __u64 lo; 42 __u64 hi; 43 __u64 cp0_epc; 44 __u64 cp0_badvaddr; 45 __u64 cp0_status; 46 __u64 cp0_cause; 47} __attribute__ ((aligned (8))); 48 49/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 50#define PTRACE_GETREGS 12 51#define PTRACE_SETREGS 13 52#define PTRACE_GETFPREGS 14 53#define PTRACE_SETFPREGS 15 54/* #define PTRACE_GETFPXREGS 18 */ 55/* #define PTRACE_SETFPXREGS 19 */ 56 57#define PTRACE_OLDSETOPTIONS 21 58 59#define PTRACE_GET_THREAD_AREA 25 60#define PTRACE_SET_THREAD_AREA 26 61 62/* Calls to trace a 64bit program from a 32bit program. */ 63#define PTRACE_PEEKTEXT_3264 0xc0 64#define PTRACE_PEEKDATA_3264 0xc1 65#define PTRACE_POKETEXT_3264 0xc2 66#define PTRACE_POKEDATA_3264 0xc3 67#define PTRACE_GET_THREAD_AREA_3264 0xc4 68 69/* Read and write watchpoint registers. */ 70enum pt_watch_style { 71 pt_watch_style_mips32, 72 pt_watch_style_mips64 73}; 74struct mips32_watch_regs { 75 unsigned int watchlo[8]; 76 /* Lower 16 bits of watchhi. */ 77 unsigned short watchhi[8]; 78 /* Valid mask and I R W bits. 79 * bit 0 -- 1 if W bit is usable. 80 * bit 1 -- 1 if R bit is usable. 81 * bit 2 -- 1 if I bit is usable. 82 * bits 3 - 11 -- Valid watchhi mask bits. 83 */ 84 unsigned short watch_masks[8]; 85 /* The number of valid watch register pairs. */ 86 unsigned int num_valid; 87} __attribute__((aligned(8))); 88 89struct mips64_watch_regs { 90 unsigned long long watchlo[8]; 91 unsigned short watchhi[8]; 92 unsigned short watch_masks[8]; 93 unsigned int num_valid; 94} __attribute__((aligned(8))); 95 96struct pt_watch_regs { 97 enum pt_watch_style style; 98 union { 99 struct mips32_watch_regs mips32; 100 struct mips64_watch_regs mips64; 101 }; 102}; 103 104#define PTRACE_GET_WATCH_REGS 0xd0 105#define PTRACE_SET_WATCH_REGS 0xd1 106 107 108#endif /* _UAPI_ASM_PTRACE_H */ 109