14262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* 24262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * Based on arch/arm/include/asm/ptrace.h 34262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * 44262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * Copyright (C) 1996-2003 Russell King 54262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * Copyright (C) 2012 ARM Ltd. 64262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * 74262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * This program is free software; you can redistribute it and/or modify 84262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * it under the terms of the GNU General Public License version 2 as 94262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * published by the Free Software Foundation. 104262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * 114262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * This program is distributed in the hope that it will be useful, 124262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * but WITHOUT ANY WARRANTY; without even the implied warranty of 134262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 144262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * GNU General Public License for more details. 154262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * 164262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * You should have received a copy of the GNU General Public License 174262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * along with this program. If not, see <http://www.gnu.org/licenses/>. 184262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells */ 194262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#ifndef _UAPI__ASM_PTRACE_H 204262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define _UAPI__ASM_PTRACE_H 214262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 224262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#include <linux/types.h> 234262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 244262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#include <asm/hwcap.h> 254262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 264262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 274262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* 284262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * PSR bits 294262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells */ 304262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL0t 0x00000000 314262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL1t 0x00000004 324262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL1h 0x00000005 334262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL2t 0x00000008 344262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL2h 0x00000009 354262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL3t 0x0000000c 364262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_EL3h 0x0000000d 374262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE_MASK 0x0000000f 384262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 394262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* AArch32 CPSR bits */ 404262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_MODE32_BIT 0x00000010 414262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 424262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* AArch64 SPSR bits */ 434262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_F_BIT 0x00000040 444262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_I_BIT 0x00000080 454262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_A_BIT 0x00000100 464262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_D_BIT 0x00000200 474262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_Q_BIT 0x08000000 484262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_V_BIT 0x10000000 494262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_C_BIT 0x20000000 504262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_Z_BIT 0x40000000 514262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_N_BIT 0x80000000 524262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 534262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* 544262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * Groups of PSR bits 554262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells */ 564262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_f 0xff000000 /* Flags */ 574262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_s 0x00ff0000 /* Status */ 584262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_x 0x0000ff00 /* Extension */ 594262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#define PSR_c 0x000000ff /* Control */ 604262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 614262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 624262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#ifndef __ASSEMBLY__ 634262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 644262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells/* 654262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells * User structures for general purpose, floating point and debug registers. 664262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells */ 674262a727621ceadfb38cb90a69804b6ee6be746eDavid Howellsstruct user_pt_regs { 684262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u64 regs[31]; 694262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u64 sp; 704262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u64 pc; 714262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u64 pstate; 724262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells}; 734262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 744262a727621ceadfb38cb90a69804b6ee6be746eDavid Howellsstruct user_fpsimd_state { 754262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __uint128_t vregs[32]; 764262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u32 fpsr; 774262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u32 fpcr; 784262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells}; 794262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 804262a727621ceadfb38cb90a69804b6ee6be746eDavid Howellsstruct user_hwdebug_state { 814262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u32 dbg_info; 827797d17c591ae62c6f43c6de4fdb8beeb50eb692Will Deacon __u32 pad; 834262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells struct { 844262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u64 addr; 854262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells __u32 ctrl; 867797d17c591ae62c6f43c6de4fdb8beeb50eb692Will Deacon __u32 pad; 874262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells } dbg_regs[16]; 884262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells}; 894262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 904262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#endif /* __ASSEMBLY__ */ 914262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells 924262a727621ceadfb38cb90a69804b6ee6be746eDavid Howells#endif /* _UAPI__ASM_PTRACE_H */ 93