diff options
Diffstat (limited to 'arch/arm64/include/uapi/asm')
| -rw-r--r-- | arch/arm64/include/uapi/asm/Kbuild | 21 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/auxvec.h | 22 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/bitsperlong.h | 23 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/byteorder.h | 25 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/fcntl.h | 29 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/hwcap.h | 31 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/kvm.h | 199 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/param.h | 23 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/perf_regs.h | 40 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/posix_types.h | 10 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/ptrace.h | 92 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/setup.h | 26 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/sigcontext.h | 64 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/siginfo.h | 23 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/signal.h | 24 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/stat.h | 16 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/statfs.h | 23 | ||||
| -rw-r--r-- | arch/arm64/include/uapi/asm/unistd.h | 16 | 
18 files changed, 707 insertions, 0 deletions
diff --git a/arch/arm64/include/uapi/asm/Kbuild b/arch/arm64/include/uapi/asm/Kbuild new file mode 100644 index 00000000000..942376d37d2 --- /dev/null +++ b/arch/arm64/include/uapi/asm/Kbuild @@ -0,0 +1,21 @@ +# UAPI Header export list +include include/uapi/asm-generic/Kbuild.asm + +generic-y += kvm_para.h + +header-y += auxvec.h +header-y += bitsperlong.h +header-y += byteorder.h +header-y += fcntl.h +header-y += hwcap.h +header-y += kvm_para.h +header-y += perf_regs.h +header-y += param.h +header-y += ptrace.h +header-y += setup.h +header-y += sigcontext.h +header-y += siginfo.h +header-y += signal.h +header-y += stat.h +header-y += statfs.h +header-y += unistd.h diff --git a/arch/arm64/include/uapi/asm/auxvec.h b/arch/arm64/include/uapi/asm/auxvec.h new file mode 100644 index 00000000000..22d6d888585 --- /dev/null +++ b/arch/arm64/include/uapi/asm/auxvec.h @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_AUXVEC_H +#define __ASM_AUXVEC_H + +/* vDSO location */ +#define AT_SYSINFO_EHDR	33 + +#endif diff --git a/arch/arm64/include/uapi/asm/bitsperlong.h b/arch/arm64/include/uapi/asm/bitsperlong.h new file mode 100644 index 00000000000..fce9c2924fa --- /dev/null +++ b/arch/arm64/include/uapi/asm/bitsperlong.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_BITSPERLONG_H +#define __ASM_BITSPERLONG_H + +#define __BITS_PER_LONG 64 + +#include <asm-generic/bitsperlong.h> + +#endif	/* __ASM_BITSPERLONG_H */ diff --git a/arch/arm64/include/uapi/asm/byteorder.h b/arch/arm64/include/uapi/asm/byteorder.h new file mode 100644 index 00000000000..dc19e9537f0 --- /dev/null +++ b/arch/arm64/include/uapi/asm/byteorder.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_BYTEORDER_H +#define __ASM_BYTEORDER_H + +#ifdef __AARCH64EB__ +#include <linux/byteorder/big_endian.h> +#else +#include <linux/byteorder/little_endian.h> +#endif + +#endif	/* __ASM_BYTEORDER_H */ diff --git a/arch/arm64/include/uapi/asm/fcntl.h b/arch/arm64/include/uapi/asm/fcntl.h new file mode 100644 index 00000000000..cd2e630c235 --- /dev/null +++ b/arch/arm64/include/uapi/asm/fcntl.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_FCNTL_H +#define __ASM_FCNTL_H + +/* + * Using our own definitions for AArch32 (compat) support. + */ +#define O_DIRECTORY	 040000	/* must be a directory */ +#define O_NOFOLLOW	0100000	/* don't follow links */ +#define O_DIRECT	0200000	/* direct disk access hint - currently ignored */ +#define O_LARGEFILE	0400000 + +#include <asm-generic/fcntl.h> + +#endif diff --git a/arch/arm64/include/uapi/asm/hwcap.h b/arch/arm64/include/uapi/asm/hwcap.h new file mode 100644 index 00000000000..73cf0f54d57 --- /dev/null +++ b/arch/arm64/include/uapi/asm/hwcap.h @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef _UAPI__ASM_HWCAP_H +#define _UAPI__ASM_HWCAP_H + +/* + * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP + */ +#define HWCAP_FP		(1 << 0) +#define HWCAP_ASIMD		(1 << 1) +#define HWCAP_EVTSTRM		(1 << 2) +#define HWCAP_AES		(1 << 3) +#define HWCAP_PMULL		(1 << 4) +#define HWCAP_SHA1		(1 << 5) +#define HWCAP_SHA2		(1 << 6) +#define HWCAP_CRC32		(1 << 7) + +#endif /* _UAPI__ASM_HWCAP_H */ diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h new file mode 100644 index 00000000000..e633ff8cdec --- /dev/null +++ b/arch/arm64/include/uapi/asm/kvm.h @@ -0,0 +1,199 @@ +/* + * Copyright (C) 2012,2013 - ARM Ltd + * Author: Marc Zyngier <marc.zyngier@arm.com> + * + * Derived from arch/arm/include/uapi/asm/kvm.h: + * Copyright (C) 2012 - Virtual Open Systems and Columbia University + * Author: Christoffer Dall <c.dall@virtualopensystems.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __ARM_KVM_H__ +#define __ARM_KVM_H__ + +#define KVM_SPSR_EL1	0 +#define KVM_SPSR_SVC	KVM_SPSR_EL1 +#define KVM_SPSR_ABT	1 +#define KVM_SPSR_UND	2 +#define KVM_SPSR_IRQ	3 +#define KVM_SPSR_FIQ	4 +#define KVM_NR_SPSR	5 + +#ifndef __ASSEMBLY__ +#include <linux/psci.h> +#include <asm/types.h> +#include <asm/ptrace.h> + +#define __KVM_HAVE_GUEST_DEBUG +#define __KVM_HAVE_IRQ_LINE + +#define KVM_REG_SIZE(id)						\ +	(1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT)) + +struct kvm_regs { +	struct user_pt_regs regs;	/* sp = sp_el0 */ + +	__u64	sp_el1; +	__u64	elr_el1; + +	__u64	spsr[KVM_NR_SPSR]; + +	struct user_fpsimd_state fp_regs; +}; + +/* Supported Processor Types */ +#define KVM_ARM_TARGET_AEM_V8		0 +#define KVM_ARM_TARGET_FOUNDATION_V8	1 +#define KVM_ARM_TARGET_CORTEX_A57	2 +#define KVM_ARM_TARGET_XGENE_POTENZA	3 +#define KVM_ARM_TARGET_CORTEX_A53	4 + +#define KVM_ARM_NUM_TARGETS		5 + +/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ +#define KVM_ARM_DEVICE_TYPE_SHIFT	0 +#define KVM_ARM_DEVICE_TYPE_MASK	(0xffff << KVM_ARM_DEVICE_TYPE_SHIFT) +#define KVM_ARM_DEVICE_ID_SHIFT		16 +#define KVM_ARM_DEVICE_ID_MASK		(0xffff << KVM_ARM_DEVICE_ID_SHIFT) + +/* Supported device IDs */ +#define KVM_ARM_DEVICE_VGIC_V2		0 + +/* Supported VGIC address types  */ +#define KVM_VGIC_V2_ADDR_TYPE_DIST	0 +#define KVM_VGIC_V2_ADDR_TYPE_CPU	1 + +#define KVM_VGIC_V2_DIST_SIZE		0x1000 +#define KVM_VGIC_V2_CPU_SIZE		0x2000 + +#define KVM_ARM_VCPU_POWER_OFF		0 /* CPU is started in OFF state */ +#define KVM_ARM_VCPU_EL1_32BIT		1 /* CPU running a 32bit VM */ +#define KVM_ARM_VCPU_PSCI_0_2		2 /* CPU uses PSCI v0.2 */ + +struct kvm_vcpu_init { +	__u32 target; +	__u32 features[7]; +}; + +struct kvm_sregs { +}; + +struct kvm_fpu { +}; + +struct kvm_guest_debug_arch { +}; + +struct kvm_debug_exit_arch { +}; + +struct kvm_sync_regs { +}; + +struct kvm_arch_memory_slot { +}; + +/* If you need to interpret the index values, here is the key: */ +#define KVM_REG_ARM_COPROC_MASK		0x000000000FFF0000 +#define KVM_REG_ARM_COPROC_SHIFT	16 + +/* Normal registers are mapped as coprocessor 16. */ +#define KVM_REG_ARM_CORE		(0x0010 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_CORE_REG(name)	(offsetof(struct kvm_regs, name) / sizeof(__u32)) + +/* Some registers need more space to represent values. */ +#define KVM_REG_ARM_DEMUX		(0x0011 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_DEMUX_ID_MASK	0x000000000000FF00 +#define KVM_REG_ARM_DEMUX_ID_SHIFT	8 +#define KVM_REG_ARM_DEMUX_ID_CCSIDR	(0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT) +#define KVM_REG_ARM_DEMUX_VAL_MASK	0x00000000000000FF +#define KVM_REG_ARM_DEMUX_VAL_SHIFT	0 + +/* AArch64 system registers */ +#define KVM_REG_ARM64_SYSREG		(0x0013 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM64_SYSREG_OP0_MASK	0x000000000000c000 +#define KVM_REG_ARM64_SYSREG_OP0_SHIFT	14 +#define KVM_REG_ARM64_SYSREG_OP1_MASK	0x0000000000003800 +#define KVM_REG_ARM64_SYSREG_OP1_SHIFT	11 +#define KVM_REG_ARM64_SYSREG_CRN_MASK	0x0000000000000780 +#define KVM_REG_ARM64_SYSREG_CRN_SHIFT	7 +#define KVM_REG_ARM64_SYSREG_CRM_MASK	0x0000000000000078 +#define KVM_REG_ARM64_SYSREG_CRM_SHIFT	3 +#define KVM_REG_ARM64_SYSREG_OP2_MASK	0x0000000000000007 +#define KVM_REG_ARM64_SYSREG_OP2_SHIFT	0 + +#define ARM64_SYS_REG_SHIFT_MASK(x,n) \ +	(((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & \ +	KVM_REG_ARM64_SYSREG_ ## n ## _MASK) + +#define __ARM64_SYS_REG(op0,op1,crn,crm,op2) \ +	(KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG | \ +	ARM64_SYS_REG_SHIFT_MASK(op0, OP0) | \ +	ARM64_SYS_REG_SHIFT_MASK(op1, OP1) | \ +	ARM64_SYS_REG_SHIFT_MASK(crn, CRN) | \ +	ARM64_SYS_REG_SHIFT_MASK(crm, CRM) | \ +	ARM64_SYS_REG_SHIFT_MASK(op2, OP2)) + +#define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64) + +#define KVM_REG_ARM_TIMER_CTL		ARM64_SYS_REG(3, 3, 14, 3, 1) +#define KVM_REG_ARM_TIMER_CNT		ARM64_SYS_REG(3, 3, 14, 3, 2) +#define KVM_REG_ARM_TIMER_CVAL		ARM64_SYS_REG(3, 3, 14, 0, 2) + +/* Device Control API: ARM VGIC */ +#define KVM_DEV_ARM_VGIC_GRP_ADDR	0 +#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1 +#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS	2 +#define   KVM_DEV_ARM_VGIC_CPUID_SHIFT	32 +#define   KVM_DEV_ARM_VGIC_CPUID_MASK	(0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT) +#define   KVM_DEV_ARM_VGIC_OFFSET_SHIFT	0 +#define   KVM_DEV_ARM_VGIC_OFFSET_MASK	(0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT) + +/* KVM_IRQ_LINE irq field index values */ +#define KVM_ARM_IRQ_TYPE_SHIFT		24 +#define KVM_ARM_IRQ_TYPE_MASK		0xff +#define KVM_ARM_IRQ_VCPU_SHIFT		16 +#define KVM_ARM_IRQ_VCPU_MASK		0xff +#define KVM_ARM_IRQ_NUM_SHIFT		0 +#define KVM_ARM_IRQ_NUM_MASK		0xffff + +/* irq_type field */ +#define KVM_ARM_IRQ_TYPE_CPU		0 +#define KVM_ARM_IRQ_TYPE_SPI		1 +#define KVM_ARM_IRQ_TYPE_PPI		2 + +/* out-of-kernel GIC cpu interrupt injection irq_number field */ +#define KVM_ARM_IRQ_CPU_IRQ		0 +#define KVM_ARM_IRQ_CPU_FIQ		1 + +/* Highest supported SPI, from VGIC_NR_IRQS */ +#define KVM_ARM_IRQ_GIC_MAX		127 + +/* PSCI interface */ +#define KVM_PSCI_FN_BASE		0x95c1ba5e +#define KVM_PSCI_FN(n)			(KVM_PSCI_FN_BASE + (n)) + +#define KVM_PSCI_FN_CPU_SUSPEND		KVM_PSCI_FN(0) +#define KVM_PSCI_FN_CPU_OFF		KVM_PSCI_FN(1) +#define KVM_PSCI_FN_CPU_ON		KVM_PSCI_FN(2) +#define KVM_PSCI_FN_MIGRATE		KVM_PSCI_FN(3) + +#define KVM_PSCI_RET_SUCCESS		PSCI_RET_SUCCESS +#define KVM_PSCI_RET_NI			PSCI_RET_NOT_SUPPORTED +#define KVM_PSCI_RET_INVAL		PSCI_RET_INVALID_PARAMS +#define KVM_PSCI_RET_DENIED		PSCI_RET_DENIED + +#endif + +#endif /* __ARM_KVM_H__ */ diff --git a/arch/arm64/include/uapi/asm/param.h b/arch/arm64/include/uapi/asm/param.h new file mode 100644 index 00000000000..8e3a281d448 --- /dev/null +++ b/arch/arm64/include/uapi/asm/param.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_PARAM_H +#define __ASM_PARAM_H + +#define EXEC_PAGESIZE	65536 + +#include <asm-generic/param.h> + +#endif diff --git a/arch/arm64/include/uapi/asm/perf_regs.h b/arch/arm64/include/uapi/asm/perf_regs.h new file mode 100644 index 00000000000..172b8317ee4 --- /dev/null +++ b/arch/arm64/include/uapi/asm/perf_regs.h @@ -0,0 +1,40 @@ +#ifndef _ASM_ARM64_PERF_REGS_H +#define _ASM_ARM64_PERF_REGS_H + +enum perf_event_arm_regs { +	PERF_REG_ARM64_X0, +	PERF_REG_ARM64_X1, +	PERF_REG_ARM64_X2, +	PERF_REG_ARM64_X3, +	PERF_REG_ARM64_X4, +	PERF_REG_ARM64_X5, +	PERF_REG_ARM64_X6, +	PERF_REG_ARM64_X7, +	PERF_REG_ARM64_X8, +	PERF_REG_ARM64_X9, +	PERF_REG_ARM64_X10, +	PERF_REG_ARM64_X11, +	PERF_REG_ARM64_X12, +	PERF_REG_ARM64_X13, +	PERF_REG_ARM64_X14, +	PERF_REG_ARM64_X15, +	PERF_REG_ARM64_X16, +	PERF_REG_ARM64_X17, +	PERF_REG_ARM64_X18, +	PERF_REG_ARM64_X19, +	PERF_REG_ARM64_X20, +	PERF_REG_ARM64_X21, +	PERF_REG_ARM64_X22, +	PERF_REG_ARM64_X23, +	PERF_REG_ARM64_X24, +	PERF_REG_ARM64_X25, +	PERF_REG_ARM64_X26, +	PERF_REG_ARM64_X27, +	PERF_REG_ARM64_X28, +	PERF_REG_ARM64_X29, +	PERF_REG_ARM64_LR, +	PERF_REG_ARM64_SP, +	PERF_REG_ARM64_PC, +	PERF_REG_ARM64_MAX, +}; +#endif /* _ASM_ARM64_PERF_REGS_H */ diff --git a/arch/arm64/include/uapi/asm/posix_types.h b/arch/arm64/include/uapi/asm/posix_types.h new file mode 100644 index 00000000000..7985ff60ca3 --- /dev/null +++ b/arch/arm64/include/uapi/asm/posix_types.h @@ -0,0 +1,10 @@ +#ifndef __ASM_POSIX_TYPES_H +#define __ASM_POSIX_TYPES_H + +typedef unsigned short __kernel_old_uid_t; +typedef unsigned short __kernel_old_gid_t; +#define __kernel_old_uid_t __kernel_old_uid_t + +#include <asm-generic/posix_types.h> + +#endif /*  __ASM_POSIX_TYPES_H */ diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h new file mode 100644 index 00000000000..6913643bbe5 --- /dev/null +++ b/arch/arm64/include/uapi/asm/ptrace.h @@ -0,0 +1,92 @@ +/* + * Based on arch/arm/include/asm/ptrace.h + * + * Copyright (C) 1996-2003 Russell King + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef _UAPI__ASM_PTRACE_H +#define _UAPI__ASM_PTRACE_H + +#include <linux/types.h> + +#include <asm/hwcap.h> + + +/* + * PSR bits + */ +#define PSR_MODE_EL0t	0x00000000 +#define PSR_MODE_EL1t	0x00000004 +#define PSR_MODE_EL1h	0x00000005 +#define PSR_MODE_EL2t	0x00000008 +#define PSR_MODE_EL2h	0x00000009 +#define PSR_MODE_EL3t	0x0000000c +#define PSR_MODE_EL3h	0x0000000d +#define PSR_MODE_MASK	0x0000000f + +/* AArch32 CPSR bits */ +#define PSR_MODE32_BIT		0x00000010 + +/* AArch64 SPSR bits */ +#define PSR_F_BIT	0x00000040 +#define PSR_I_BIT	0x00000080 +#define PSR_A_BIT	0x00000100 +#define PSR_D_BIT	0x00000200 +#define PSR_Q_BIT	0x08000000 +#define PSR_V_BIT	0x10000000 +#define PSR_C_BIT	0x20000000 +#define PSR_Z_BIT	0x40000000 +#define PSR_N_BIT	0x80000000 + +/* + * Groups of PSR bits + */ +#define PSR_f		0xff000000	/* Flags		*/ +#define PSR_s		0x00ff0000	/* Status		*/ +#define PSR_x		0x0000ff00	/* Extension		*/ +#define PSR_c		0x000000ff	/* Control		*/ + + +#ifndef __ASSEMBLY__ + +/* + * User structures for general purpose, floating point and debug registers. + */ +struct user_pt_regs { +	__u64		regs[31]; +	__u64		sp; +	__u64		pc; +	__u64		pstate; +}; + +struct user_fpsimd_state { +	__uint128_t	vregs[32]; +	__u32		fpsr; +	__u32		fpcr; +}; + +struct user_hwdebug_state { +	__u32		dbg_info; +	__u32		pad; +	struct { +		__u64	addr; +		__u32	ctrl; +		__u32	pad; +	}		dbg_regs[16]; +}; + +#endif /* __ASSEMBLY__ */ + +#endif /* _UAPI__ASM_PTRACE_H */ diff --git a/arch/arm64/include/uapi/asm/setup.h b/arch/arm64/include/uapi/asm/setup.h new file mode 100644 index 00000000000..9cf2e46fbbd --- /dev/null +++ b/arch/arm64/include/uapi/asm/setup.h @@ -0,0 +1,26 @@ +/* + * Based on arch/arm/include/asm/setup.h + * + * Copyright (C) 1997-1999 Russell King + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_SETUP_H +#define __ASM_SETUP_H + +#include <linux/types.h> + +#define COMMAND_LINE_SIZE	2048 + +#endif diff --git a/arch/arm64/include/uapi/asm/sigcontext.h b/arch/arm64/include/uapi/asm/sigcontext.h new file mode 100644 index 00000000000..ee469be1ae1 --- /dev/null +++ b/arch/arm64/include/uapi/asm/sigcontext.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef _UAPI__ASM_SIGCONTEXT_H +#define _UAPI__ASM_SIGCONTEXT_H + +#include <linux/types.h> + +/* + * Signal context structure - contains all info to do with the state + * before the signal handler was invoked. + */ +struct sigcontext { +	__u64 fault_address; +	/* AArch64 registers */ +	__u64 regs[31]; +	__u64 sp; +	__u64 pc; +	__u64 pstate; +	/* 4K reserved for FP/SIMD state and future expansion */ +	__u8 __reserved[4096] __attribute__((__aligned__(16))); +}; + +/* + * Header to be used at the beginning of structures extending the user + * context. Such structures must be placed after the rt_sigframe on the stack + * and be 16-byte aligned. The last structure must be a dummy one with the + * magic and size set to 0. + */ +struct _aarch64_ctx { +	__u32 magic; +	__u32 size; +}; + +#define FPSIMD_MAGIC	0x46508001 + +struct fpsimd_context { +	struct _aarch64_ctx head; +	__u32 fpsr; +	__u32 fpcr; +	__uint128_t vregs[32]; +}; + +/* ESR_EL1 context */ +#define ESR_MAGIC	0x45535201 + +struct esr_context { +	struct _aarch64_ctx head; +	__u64 esr; +}; + +#endif /* _UAPI__ASM_SIGCONTEXT_H */ diff --git a/arch/arm64/include/uapi/asm/siginfo.h b/arch/arm64/include/uapi/asm/siginfo.h new file mode 100644 index 00000000000..5a74a0853db --- /dev/null +++ b/arch/arm64/include/uapi/asm/siginfo.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_SIGINFO_H +#define __ASM_SIGINFO_H + +#define __ARCH_SI_PREAMBLE_SIZE	(4 * sizeof(int)) + +#include <asm-generic/siginfo.h> + +#endif diff --git a/arch/arm64/include/uapi/asm/signal.h b/arch/arm64/include/uapi/asm/signal.h new file mode 100644 index 00000000000..8d1e7236431 --- /dev/null +++ b/arch/arm64/include/uapi/asm/signal.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_SIGNAL_H +#define __ASM_SIGNAL_H + +/* Required for AArch32 compatibility. */ +#define SA_RESTORER	0x04000000 + +#include <asm-generic/signal.h> + +#endif diff --git a/arch/arm64/include/uapi/asm/stat.h b/arch/arm64/include/uapi/asm/stat.h new file mode 100644 index 00000000000..eeb702e5074 --- /dev/null +++ b/arch/arm64/include/uapi/asm/stat.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#include <asm-generic/stat.h> diff --git a/arch/arm64/include/uapi/asm/statfs.h b/arch/arm64/include/uapi/asm/statfs.h new file mode 100644 index 00000000000..6f621905097 --- /dev/null +++ b/arch/arm64/include/uapi/asm/statfs.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef __ASM_STATFS_H +#define __ASM_STATFS_H + +#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4))) + +#include <asm-generic/statfs.h> + +#endif diff --git a/arch/arm64/include/uapi/asm/unistd.h b/arch/arm64/include/uapi/asm/unistd.h new file mode 100644 index 00000000000..1caadc24e3f --- /dev/null +++ b/arch/arm64/include/uapi/asm/unistd.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#include <asm-generic/unistd.h>  | 
