diff options
Diffstat (limited to 'tools/arch/arm/include')
| -rw-r--r-- | tools/arch/arm/include/uapi/asm/kvm.h | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/tools/arch/arm/include/uapi/asm/kvm.h b/tools/arch/arm/include/uapi/asm/kvm.h index 6edd177bb1c7..caae4843cb70 100644 --- a/tools/arch/arm/include/uapi/asm/kvm.h +++ b/tools/arch/arm/include/uapi/asm/kvm.h @@ -135,6 +135,15 @@ struct kvm_arch_memory_slot {  #define KVM_REG_ARM_CRM_SHIFT		7  #define KVM_REG_ARM_32_CRN_MASK		0x0000000000007800  #define KVM_REG_ARM_32_CRN_SHIFT	11 +/* + * For KVM currently all guest registers are nonsecure, but we reserve a bit + * in the encoding to distinguish secure from nonsecure for AArch32 system + * registers that are banked by security. This is 1 for the secure banked + * register, and 0 for the nonsecure banked register or if the register is + * not banked by security. + */ +#define KVM_REG_ARM_SECURE_MASK	0x0000000010000000 +#define KVM_REG_ARM_SECURE_SHIFT	28  #define ARM_CP15_REG_SHIFT_MASK(x,n) \  	(((x) << KVM_REG_ARM_ ## n ## _SHIFT) & KVM_REG_ARM_ ## n ## _MASK) @@ -186,6 +195,12 @@ struct kvm_arch_memory_slot {  #define KVM_REG_ARM_VFP_FPINST		0x1009  #define KVM_REG_ARM_VFP_FPINST2		0x100A +/* KVM-as-firmware specific pseudo-registers */ +#define KVM_REG_ARM_FW			(0x0014 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_FW_REG(r)		(KVM_REG_ARM | KVM_REG_SIZE_U64 | \ +					 KVM_REG_ARM_FW | ((r) & 0xffff)) +#define KVM_REG_ARM_PSCI_VERSION	KVM_REG_ARM_FW_REG(0) +  /* Device Control API: ARM VGIC */  #define KVM_DEV_ARM_VGIC_GRP_ADDR	0  #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1 |