1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Based on arch/arm/include/asm/ptrace.h 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (C) 1996-2003 Russell King 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (C) 2012 ARM Ltd. 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This program is free software; you can redistribute it and/or modify 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * it under the terms of the GNU General Public License version 2 as 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * published by the Free Software Foundation. 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This program is distributed in the hope that it will be useful, 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * but WITHOUT ANY WARRANTY; without even the implied warranty of 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * GNU General Public License for more details. 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * You should have received a copy of the GNU General Public License 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * along with this program. If not, see <http://www.gnu.org/licenses/>. 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI__ASM_PTRACE_H 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI__ASM_PTRACE_H 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <asm/hwcap.h> 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * PSR bits 29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL0t 0x00000000 31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL1t 0x00000004 32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL1h 0x00000005 33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL2t 0x00000008 34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL2h 0x00000009 35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL3t 0x0000000c 36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_EL3h 0x0000000d 37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE_MASK 0x0000000f 38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* AArch32 CPSR bits */ 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_MODE32_BIT 0x00000010 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* AArch64 SPSR bits */ 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_F_BIT 0x00000040 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_I_BIT 0x00000080 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_A_BIT 0x00000100 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_D_BIT 0x00000200 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_Q_BIT 0x08000000 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_V_BIT 0x10000000 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_C_BIT 0x20000000 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_Z_BIT 0x40000000 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_N_BIT 0x80000000 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Groups of PSR bits 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_f 0xff000000 /* Flags */ 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_s 0x00ff0000 /* Status */ 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_x 0x0000ff00 /* Extension */ 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PSR_c 0x000000ff /* Control */ 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef __ASSEMBLY__ 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * User structures for general purpose, floating point and debug registers. 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct user_pt_regs { 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 regs[31]; 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 sp; 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pc; 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pstate; 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct user_fpsimd_state { 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __uint128_t vregs[32]; 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fpsr; 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 fpcr; 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct user_hwdebug_state { 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 dbg_info; 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pad; 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct { 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 addr; 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 ctrl; 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 pad; 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng } dbg_regs[16]; 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* __ASSEMBLY__ */ 91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI__ASM_PTRACE_H */ 93