Home | History | Annotate | Download | only in asm
      1 /*
      2  * Based on arch/arm/include/asm/ptrace.h
      3  *
      4  * Copyright (C) 1996-2003 Russell King
      5  * Copyright (C) 2012 ARM Ltd.
      6  *
      7  * This program is free software; you can redistribute it and/or modify
      8  * it under the terms of the GNU General Public License version 2 as
      9  * published by the Free Software Foundation.
     10  *
     11  * This program is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14  * GNU General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU General Public License
     17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     18  */
     19 #ifndef _UAPI__ASM_PTRACE_H
     20 #define _UAPI__ASM_PTRACE_H
     21 
     22 #include <linux/types.h>
     23 
     24 #include <asm/hwcap.h>
     25 
     26 
     27 /*
     28  * PSR bits
     29  */
     30 #define PSR_MODE_EL0t	0x00000000
     31 #define PSR_MODE_EL1t	0x00000004
     32 #define PSR_MODE_EL1h	0x00000005
     33 #define PSR_MODE_EL2t	0x00000008
     34 #define PSR_MODE_EL2h	0x00000009
     35 #define PSR_MODE_EL3t	0x0000000c
     36 #define PSR_MODE_EL3h	0x0000000d
     37 #define PSR_MODE_MASK	0x0000000f
     38 
     39 /* AArch32 CPSR bits */
     40 #define PSR_MODE32_BIT		0x00000010
     41 
     42 /* AArch64 SPSR bits */
     43 #define PSR_F_BIT	0x00000040
     44 #define PSR_I_BIT	0x00000080
     45 #define PSR_A_BIT	0x00000100
     46 #define PSR_D_BIT	0x00000200
     47 #define PSR_PAN_BIT	0x00400000
     48 #define PSR_Q_BIT	0x08000000
     49 #define PSR_V_BIT	0x10000000
     50 #define PSR_C_BIT	0x20000000
     51 #define PSR_Z_BIT	0x40000000
     52 #define PSR_N_BIT	0x80000000
     53 
     54 /*
     55  * Groups of PSR bits
     56  */
     57 #define PSR_f		0xff000000	/* Flags		*/
     58 #define PSR_s		0x00ff0000	/* Status		*/
     59 #define PSR_x		0x0000ff00	/* Extension		*/
     60 #define PSR_c		0x000000ff	/* Control		*/
     61 
     62 
     63 #ifndef __ASSEMBLY__
     64 
     65 /*
     66  * User structures for general purpose, floating point and debug registers.
     67  */
     68 struct user_pt_regs {
     69 	__u64		regs[31];
     70 	__u64		sp;
     71 	__u64		pc;
     72 	__u64		pstate;
     73 };
     74 
     75 struct user_fpsimd_state {
     76 	__uint128_t	vregs[32];
     77 	__u32		fpsr;
     78 	__u32		fpcr;
     79 };
     80 
     81 struct user_hwdebug_state {
     82 	__u32		dbg_info;
     83 	__u32		pad;
     84 	struct {
     85 		__u64	addr;
     86 		__u32	ctrl;
     87 		__u32	pad;
     88 	}		dbg_regs[16];
     89 };
     90 
     91 #endif /* __ASSEMBLY__ */
     92 
     93 #endif /* _UAPI__ASM_PTRACE_H */
     94