138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/****************************************************************************
238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************
338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   This header was automatically generated from a Linux kernel header
538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   of the same name, to make information necessary for userspace to
638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   call into the kernel available to libc.  It contains only constants,
738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   structures, and macros generated from the original header, and thus,
838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   contains no copyrightable information.
938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   To edit the content of this header, modify the corresponding
1138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   source file (e.g. under external/kernel-headers/original/) then
1238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   run bionic/libc/kernel/tools/update_all.py
1338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   Any manual change here will be lost the next time this script will
1538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   be run. You've been warned!
1638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************
1838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************/
1938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#ifndef __ARM_KVM_H__
2038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define __ARM_KVM_H__
2138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_EL1 0
2238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_SVC KVM_SPSR_EL1
2338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
2438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_ABT 1
2538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_UND 2
2638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_IRQ 3
2738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_SPSR_FIQ 4
2838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
2938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_NR_SPSR 5
3038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#ifndef __ASSEMBLY__
3138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#include <asm/types.h>
3238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#include <asm/ptrace.h>
3338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
3438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define __KVM_HAVE_GUEST_DEBUG
3538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define __KVM_HAVE_IRQ_LINE
3638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_SIZE(id)   (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
3738062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_regs {
3838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
3938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris struct user_pt_regs regs;
4038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris __u64 sp_el1;
4138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris __u64 elr_el1;
4238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris __u64 spsr[KVM_NR_SPSR];
4338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
4438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris struct user_fpsimd_state fp_regs;
4538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
4638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_TARGET_AEM_V8 0
4738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_TARGET_FOUNDATION_V8 1
4838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
4938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_TARGET_CORTEX_A57 2
5038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_TARGET_XGENE_POTENZA 3
5138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_NUM_TARGETS 4
5238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_DEVICE_TYPE_SHIFT 0
5338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
5438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
5538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_DEVICE_ID_SHIFT 16
5638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
5738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_DEVICE_VGIC_V2 0
5838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
5938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_VGIC_V2_ADDR_TYPE_DIST 0
6038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_VGIC_V2_ADDR_TYPE_CPU 1
6138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_VGIC_V2_DIST_SIZE 0x1000
6238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_VGIC_V2_CPU_SIZE 0x2000
6338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
6438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_VCPU_POWER_OFF 0
6538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_VCPU_EL1_32BIT 1
6638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_vcpu_init {
6738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris __u32 target;
6838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
6938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris __u32 features[7];
7038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
7138062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_sregs {
7238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
7338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
7438062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_fpu {
7538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
7638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_guest_debug_arch {
7738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
7838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
7938062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_debug_exit_arch {
8038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
8138062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_sync_regs {
8238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
8338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
8438062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct kvm_arch_memory_slot {
8538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
8638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000
8738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_COPROC_SHIFT 16
8838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
8938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT)
9038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / sizeof(__u32))
9138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT)
9238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00
9338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
9438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX_ID_SHIFT 8
9538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT)
9638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF
9738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_DEMUX_VAL_SHIFT 0
9838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
9938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG (0x0013 << KVM_REG_ARM_COPROC_SHIFT)
10038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP0_MASK 0x000000000000c000
10138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP0_SHIFT 14
10238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP1_MASK 0x0000000000003800
10338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
10438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP1_SHIFT 11
10538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_CRN_MASK 0x0000000000000780
10638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_CRN_SHIFT 7
10738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_CRM_MASK 0x0000000000000078
10838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
10938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_CRM_SHIFT 3
11038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007
11138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM64_SYSREG_OP2_SHIFT 0
11238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define ARM64_SYS_REG_SHIFT_MASK(x,n)   (((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) &   KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
11338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
11438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#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))
11538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64)
11638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_TIMER_CTL ARM64_SYS_REG(3, 3, 14, 3, 1)
11738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2)
11838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
11938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_REG_ARM_TIMER_CVAL ARM64_SYS_REG(3, 3, 14, 0, 2)
12038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
12138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
12238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
12338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
12438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
12538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
12638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
12738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
12838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
12938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_TYPE_SHIFT 24
13038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_TYPE_MASK 0xff
13138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_VCPU_SHIFT 16
13238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_VCPU_MASK 0xff
13338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
13438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_NUM_SHIFT 0
13538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_NUM_MASK 0xffff
13638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_TYPE_CPU 0
13738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_TYPE_SPI 1
13838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
13938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_TYPE_PPI 2
14038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_CPU_IRQ 0
14138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_CPU_FIQ 1
14238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_ARM_IRQ_GIC_MAX 127
14338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
14438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN_BASE 0x95c1ba5e
14538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
14638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0)
14738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1)
14838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
14938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2)
15038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3)
15138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_RET_SUCCESS 0
15238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_RET_NI ((unsigned long)-1)
15338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
15438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_RET_INVAL ((unsigned long)-2)
15538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define KVM_PSCI_RET_DENIED ((unsigned long)-3)
15638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#endif
15738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#endif
15838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159