From f823a3059d47c4009681b4d424d0329d670baee9 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 17 Jul 2012 17:52:31 +0100 Subject: linux-headers: Add ARM KVM headers (not for upstream) This commit adds the ARM KVM headers. This is not to go to QEMU upstream -- the correct path there is that the KVM code will be committed to a mainline upstream kernel, and then upstream QEMU can do a bulk header update from the upstream kernel, which will allow us to drop this temporary commit. This includes a dummy kvm_sync_regs {} since QEMU has picked up a newer version of the general KVM headers which are a bit ahead of the ARM KVM headers for the moment, so it isn't a pure copy of any ARM KVM kernel header set. This wrinkle will go away at some point when ARM KVM rebases on kvm.next and we do a cleaner import, but for now we need this just to avoid a compilation failure. This commit is based on the headers as of commit 827ee5b in git://github.com/virtualopensystems/linux-kvm-arm kvm-a15-v7 --- linux-headers/asm-arm/kvm.h | 87 ++++++++++++++++++++++++++++++++++++++++ linux-headers/asm-arm/kvm_para.h | 9 +++++ 2 files changed, 96 insertions(+) create mode 100644 linux-headers/asm-arm/kvm.h create mode 100644 linux-headers/asm-arm/kvm_para.h (limited to 'linux-headers/asm-arm') diff --git a/linux-headers/asm-arm/kvm.h b/linux-headers/asm-arm/kvm.h new file mode 100644 index 0000000000..38ff1d6c31 --- /dev/null +++ b/linux-headers/asm-arm/kvm.h @@ -0,0 +1,87 @@ +/* + * 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, write to the Free Software + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef __ARM_KVM_H__ +#define __ARM_KVM_H__ + +#include + +#define __KVM_HAVE_GUEST_DEBUG +#define __KVM_HAVE_IRQ_LINE + +/* + * KVM_IRQ_LINE macros to set/read IRQ/FIQ for specific VCPU index. + */ +enum KVM_ARM_IRQ_LINE_TYPE { + KVM_ARM_IRQ_LINE = 0, + KVM_ARM_FIQ_LINE = 1, +}; + +/* + * Modes used for short-hand mode determinition in the world-switch code and + * in emulation code. + * + * Note: These indices do NOT correspond to the value of the CPSR mode bits! + */ +enum vcpu_mode { + MODE_FIQ = 0, + MODE_IRQ, + MODE_SVC, + MODE_ABT, + MODE_UND, + MODE_USR, + MODE_SYS +}; + +struct kvm_regs { + __u32 regs0_7[8]; /* Unbanked regs. (r0 - r7) */ + __u32 fiq_regs8_12[5]; /* Banked fiq regs. (r8 - r12) */ + __u32 usr_regs8_12[5]; /* Banked usr registers (r8 - r12) */ + __u32 reg13[6]; /* Banked r13, indexed by MODE_ */ + __u32 reg14[6]; /* Banked r13, indexed by MODE_ */ + __u32 reg15; + __u32 cpsr; + __u32 spsr[5]; /* Banked SPSR, indexed by MODE_ */ + struct { + __u32 c0_midr; + __u32 c1_sys; + __u32 c2_base0; + __u32 c2_base1; + __u32 c2_control; + __u32 c3_dacr; + } cp15; + +}; + +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 { +}; + +#endif /* __ARM_KVM_H__ */ diff --git a/linux-headers/asm-arm/kvm_para.h b/linux-headers/asm-arm/kvm_para.h new file mode 100644 index 0000000000..ac0e5e1239 --- /dev/null +++ b/linux-headers/asm-arm/kvm_para.h @@ -0,0 +1,9 @@ +#ifndef _ASM_ARM_KVM_PARA_H +#define _ASM_ARM_KVM_PARA_H + +static __inline__ unsigned int kvm_arch_para_features(void) +{ + return 0; +} + +#endif /* _ASM_ARM_KVM_PARA_H */ -- cgit v1.2.3