diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2012-07-17 17:52:31 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2012-08-06 16:03:03 +0100 |
commit | ccef6e38913213b294e0947351eef145a0608d24 (patch) | |
tree | f048d4d04c5d7f1dfe1977da462a36fca9f3170d | |
parent | 695bf36616fc599e82b246dcd8f55e5b86a45aa0 (diff) |
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
-rw-r--r-- | linux-headers/asm-arm/kvm.h | 87 | ||||
-rw-r--r-- | linux-headers/asm-arm/kvm_para.h | 9 |
2 files changed, 96 insertions, 0 deletions
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 <asm/types.h> + +#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 */ |