1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux 1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 2 /* 3 * Ptrace definitions for the Hexagon architec !! 3 * This file is subject to the terms and conditions of the GNU General Public >> 4 * License. See the file "COPYING" in the main directory of this archive >> 5 * for more details. 4 * 6 * 5 * Copyright (c) 2010-2011, The Linux Foundati !! 7 * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle 6 * !! 8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 7 * This program is free software; you can redi << 8 * it under the terms of the GNU General Publi << 9 * only version 2 as published by the Free Sof << 10 * << 11 * This program is distributed in the hope tha << 12 * but WITHOUT ANY WARRANTY; without even the << 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR << 14 * GNU General Public License for more details << 15 * << 16 * You should have received a copy of the GNU << 17 * along with this program; if not, write to t << 18 * Foundation, Inc., 51 Franklin Street, Fifth << 19 * 02110-1301, USA. << 20 */ 9 */ >> 10 #ifndef _UAPI_ASM_PTRACE_H >> 11 #define _UAPI_ASM_PTRACE_H >> 12 >> 13 #include <linux/types.h> 21 14 22 #ifndef _ASM_PTRACE_H !! 15 /* 0 - 31 are integer registers, 32 - 63 are fp registers. */ 23 #define _ASM_PTRACE_H !! 16 #define FPR_BASE 32 >> 17 #define PC 64 >> 18 #define CAUSE 65 >> 19 #define BADVADDR 66 >> 20 #define MMHI 67 >> 21 #define MMLO 68 >> 22 #define FPC_CSR 69 >> 23 #define FPC_EIR 70 >> 24 #define DSP_BASE 71 /* 3 more hi / lo register pairs */ >> 25 #define DSP_CONTROL 77 >> 26 #define ACX 78 24 27 25 #include <asm/registers.h> !! 28 /* >> 29 * This struct defines the registers as used by PTRACE_{GET,SET}REGS. The >> 30 * format is the same for both 32- and 64-bit processes. Registers for 32-bit >> 31 * processes are sign extended. >> 32 */ >> 33 #ifdef __KERNEL__ >> 34 struct user_pt_regs { >> 35 #else >> 36 struct pt_regs { >> 37 #endif >> 38 /* Saved main processor registers. */ >> 39 __u64 regs[32]; 26 40 27 #define instruction_pointer(regs) pt_elr(regs) !! 41 /* Saved special registers. */ 28 #define user_stack_pointer(regs) ((regs)->r29) !! 42 __u64 lo; >> 43 __u64 hi; >> 44 __u64 cp0_epc; >> 45 __u64 cp0_badvaddr; >> 46 __u64 cp0_status; >> 47 __u64 cp0_cause; >> 48 } __attribute__ ((aligned (8))); 29 49 30 #define profile_pc(regs) instruction_pointer(r !! 50 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ >> 51 #define PTRACE_GETREGS 12 >> 52 #define PTRACE_SETREGS 13 >> 53 #define PTRACE_GETFPREGS 14 >> 54 #define PTRACE_SETFPREGS 15 >> 55 /* #define PTRACE_GETFPXREGS 18 */ >> 56 /* #define PTRACE_SETFPXREGS 19 */ 31 57 32 #endif !! 58 #define PTRACE_OLDSETOPTIONS 21 >> 59 >> 60 #define PTRACE_GET_THREAD_AREA 25 >> 61 #define PTRACE_SET_THREAD_AREA 26 >> 62 >> 63 /* Calls to trace a 64bit program from a 32bit program. */ >> 64 #define PTRACE_PEEKTEXT_3264 0xc0 >> 65 #define PTRACE_PEEKDATA_3264 0xc1 >> 66 #define PTRACE_POKETEXT_3264 0xc2 >> 67 #define PTRACE_POKEDATA_3264 0xc3 >> 68 #define PTRACE_GET_THREAD_AREA_3264 0xc4 >> 69 >> 70 /* Read and write watchpoint registers. */ >> 71 enum pt_watch_style { >> 72 pt_watch_style_mips32, >> 73 pt_watch_style_mips64 >> 74 }; >> 75 struct mips32_watch_regs { >> 76 unsigned int watchlo[8]; >> 77 /* Lower 16 bits of watchhi. */ >> 78 unsigned short watchhi[8]; >> 79 /* Valid mask and I R W bits. >> 80 * bit 0 -- 1 if W bit is usable. >> 81 * bit 1 -- 1 if R bit is usable. >> 82 * bit 2 -- 1 if I bit is usable. >> 83 * bits 3 - 11 -- Valid watchhi mask bits. >> 84 */ >> 85 unsigned short watch_masks[8]; >> 86 /* The number of valid watch register pairs. */ >> 87 unsigned int num_valid; >> 88 } __attribute__((aligned(8))); >> 89 >> 90 struct mips64_watch_regs { >> 91 unsigned long long watchlo[8]; >> 92 unsigned short watchhi[8]; >> 93 unsigned short watch_masks[8]; >> 94 unsigned int num_valid; >> 95 } __attribute__((aligned(8))); >> 96 >> 97 struct pt_watch_regs { >> 98 enum pt_watch_style style; >> 99 union { >> 100 struct mips32_watch_regs mips32; >> 101 struct mips64_watch_regs mips64; >> 102 }; >> 103 }; >> 104 >> 105 #define PTRACE_GET_WATCH_REGS 0xd0 >> 106 #define PTRACE_SET_WATCH_REGS 0xd1 >> 107 >> 108 >> 109 #endif /* _UAPI_ASM_PTRACE_H */ 33 110
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.