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