diff options
Diffstat (limited to 'arch/arm/include/uapi')
| -rw-r--r-- | arch/arm/include/uapi/asm/Kbuild | 1 | ||||
| -rw-r--r-- | arch/arm/include/uapi/asm/hwcap.h | 10 | ||||
| -rw-r--r-- | arch/arm/include/uapi/asm/kvm.h | 41 | ||||
| -rw-r--r-- | arch/arm/include/uapi/asm/perf_regs.h | 23 | ||||
| -rw-r--r-- | arch/arm/include/uapi/asm/unistd.h | 3 | 
5 files changed, 73 insertions, 5 deletions
diff --git a/arch/arm/include/uapi/asm/Kbuild b/arch/arm/include/uapi/asm/Kbuild index 18d76fd5a2a..70a1c9da30c 100644 --- a/arch/arm/include/uapi/asm/Kbuild +++ b/arch/arm/include/uapi/asm/Kbuild @@ -7,6 +7,7 @@ header-y += hwcap.h  header-y += ioctls.h  header-y += kvm_para.h  header-y += mman.h +header-y += perf_regs.h  header-y += posix_types.h  header-y += ptrace.h  header-y += setup.h diff --git a/arch/arm/include/uapi/asm/hwcap.h b/arch/arm/include/uapi/asm/hwcap.h index 6d34d080372..20d12f230a2 100644 --- a/arch/arm/include/uapi/asm/hwcap.h +++ b/arch/arm/include/uapi/asm/hwcap.h @@ -26,5 +26,15 @@  #define HWCAP_VFPD32	(1 << 19)	/* set if VFP has 32 regs (not 16) */  #define HWCAP_IDIV	(HWCAP_IDIVA | HWCAP_IDIVT)  #define HWCAP_LPAE	(1 << 20) +#define HWCAP_EVTSTRM	(1 << 21) + +/* + * HWCAP2 flags - for elf_hwcap2 (in kernel) and AT_HWCAP2 + */ +#define HWCAP2_AES	(1 << 0) +#define HWCAP2_PMULL	(1 << 1) +#define HWCAP2_SHA1	(1 << 2) +#define HWCAP2_SHA2	(1 << 3) +#define HWCAP2_CRC32	(1 << 4)  #endif /* _UAPI__ASMARM_HWCAP_H */ diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h index c1ee007523d..e6ebdd3471e 100644 --- a/arch/arm/include/uapi/asm/kvm.h +++ b/arch/arm/include/uapi/asm/kvm.h @@ -20,6 +20,7 @@  #define __ARM_KVM_H__  #include <linux/types.h> +#include <linux/psci.h>  #include <asm/ptrace.h>  #define __KVM_HAVE_GUEST_DEBUG @@ -63,7 +64,8 @@ struct kvm_regs {  /* Supported Processor Types */  #define KVM_ARM_TARGET_CORTEX_A15	0 -#define KVM_ARM_NUM_TARGETS		1 +#define KVM_ARM_TARGET_CORTEX_A7	1 +#define KVM_ARM_NUM_TARGETS		2  /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */  #define KVM_ARM_DEVICE_TYPE_SHIFT	0 @@ -82,6 +84,7 @@ struct kvm_regs {  #define KVM_VGIC_V2_CPU_SIZE		0x2000  #define KVM_ARM_VCPU_POWER_OFF		0 /* CPU is started in OFF state */ +#define KVM_ARM_VCPU_PSCI_0_2		1 /* CPU uses PSCI v0.2 */  struct kvm_vcpu_init {  	__u32 target; @@ -118,6 +121,26 @@ struct kvm_arch_memory_slot {  #define KVM_REG_ARM_32_CRN_MASK		0x0000000000007800  #define KVM_REG_ARM_32_CRN_SHIFT	11 +#define ARM_CP15_REG_SHIFT_MASK(x,n) \ +	(((x) << KVM_REG_ARM_ ## n ## _SHIFT) & KVM_REG_ARM_ ## n ## _MASK) + +#define __ARM_CP15_REG(op1,crn,crm,op2) \ +	(KVM_REG_ARM | (15 << KVM_REG_ARM_COPROC_SHIFT) | \ +	ARM_CP15_REG_SHIFT_MASK(op1, OPC1) | \ +	ARM_CP15_REG_SHIFT_MASK(crn, 32_CRN) | \ +	ARM_CP15_REG_SHIFT_MASK(crm, CRM) | \ +	ARM_CP15_REG_SHIFT_MASK(op2, 32_OPC2)) + +#define ARM_CP15_REG32(...) (__ARM_CP15_REG(__VA_ARGS__) | KVM_REG_SIZE_U32) + +#define __ARM_CP15_REG64(op1,crm) \ +	(__ARM_CP15_REG(op1, 0, crm, 0) | KVM_REG_SIZE_U64) +#define ARM_CP15_REG64(...) __ARM_CP15_REG64(__VA_ARGS__) + +#define KVM_REG_ARM_TIMER_CTL		ARM_CP15_REG32(0, 14, 3, 1) +#define KVM_REG_ARM_TIMER_CNT		ARM_CP15_REG64(1, 14)  +#define KVM_REG_ARM_TIMER_CVAL		ARM_CP15_REG64(3, 14)  +  /* 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) / 4) @@ -142,6 +165,14 @@ struct kvm_arch_memory_slot {  #define KVM_REG_ARM_VFP_FPINST		0x1009  #define KVM_REG_ARM_VFP_FPINST2		0x100A +/* 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 @@ -172,9 +203,9 @@ struct kvm_arch_memory_slot {  #define KVM_PSCI_FN_CPU_ON		KVM_PSCI_FN(2)  #define KVM_PSCI_FN_MIGRATE		KVM_PSCI_FN(3) -#define KVM_PSCI_RET_SUCCESS		0 -#define KVM_PSCI_RET_NI			((unsigned long)-1) -#define KVM_PSCI_RET_INVAL		((unsigned long)-2) -#define KVM_PSCI_RET_DENIED		((unsigned long)-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 /* __ARM_KVM_H__ */ diff --git a/arch/arm/include/uapi/asm/perf_regs.h b/arch/arm/include/uapi/asm/perf_regs.h new file mode 100644 index 00000000000..ce59448458b --- /dev/null +++ b/arch/arm/include/uapi/asm/perf_regs.h @@ -0,0 +1,23 @@ +#ifndef _ASM_ARM_PERF_REGS_H +#define _ASM_ARM_PERF_REGS_H + +enum perf_event_arm_regs { +	PERF_REG_ARM_R0, +	PERF_REG_ARM_R1, +	PERF_REG_ARM_R2, +	PERF_REG_ARM_R3, +	PERF_REG_ARM_R4, +	PERF_REG_ARM_R5, +	PERF_REG_ARM_R6, +	PERF_REG_ARM_R7, +	PERF_REG_ARM_R8, +	PERF_REG_ARM_R9, +	PERF_REG_ARM_R10, +	PERF_REG_ARM_FP, +	PERF_REG_ARM_IP, +	PERF_REG_ARM_SP, +	PERF_REG_ARM_LR, +	PERF_REG_ARM_PC, +	PERF_REG_ARM_MAX, +}; +#endif /* _ASM_ARM_PERF_REGS_H */ diff --git a/arch/arm/include/uapi/asm/unistd.h b/arch/arm/include/uapi/asm/unistd.h index af33b44990e..ba94446c72d 100644 --- a/arch/arm/include/uapi/asm/unistd.h +++ b/arch/arm/include/uapi/asm/unistd.h @@ -406,6 +406,9 @@  #define __NR_process_vm_writev		(__NR_SYSCALL_BASE+377)  #define __NR_kcmp			(__NR_SYSCALL_BASE+378)  #define __NR_finit_module		(__NR_SYSCALL_BASE+379) +#define __NR_sched_setattr		(__NR_SYSCALL_BASE+380) +#define __NR_sched_getattr		(__NR_SYSCALL_BASE+381) +#define __NR_renameat2			(__NR_SYSCALL_BASE+382)  /*   * This may need to be greater than __NR_last_syscall+1 in order to  | 
