summaryrefslogtreecommitdiff
path: root/kernel/x86/external-module-compat.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/x86/external-module-compat.h')
-rw-r--r--kernel/x86/external-module-compat.h406
1 files changed, 0 insertions, 406 deletions
diff --git a/kernel/x86/external-module-compat.h b/kernel/x86/external-module-compat.h
deleted file mode 100644
index a03087db..00000000
--- a/kernel/x86/external-module-compat.h
+++ /dev/null
@@ -1,406 +0,0 @@
-
-/*
- * Compatibility header for building as an external module.
- */
-
-#include <linux/compiler.h>
-#include <linux/version.h>
-
-#include "../external-module-compat-comm.h"
-
-#include <asm/msr.h>
-
-/* for the MSR_VM_* constants that were moved to svm.h */
-#include <asm/svm.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-
-#ifndef _EFER_SCE
-#define _EFER_SCE 0 /* SYSCALL/SYSRET */
-#endif
-
-#ifndef EFER_SCE
-#define EFER_SCE (1<<_EFER_SCE)
-#endif
-
-#endif
-
-#ifndef MSR_VM_CR
-#define MSR_VM_CR 0xc0010114
-#endif
-
-#ifndef MSR_VM_HSAVE_PA
-#define MSR_VM_HSAVE_PA 0xc0010117
-#endif
-
-#ifndef _EFER_SVME
-#define _EFER_SVME 12
-#define EFER_SVME (1<<_EFER_SVME)
-#endif
-
-#include <asm/cpufeature.h>
-
-#ifndef X86_FEATURE_SVM
-#define X86_FEATURE_SVM (6*32+ 2) /* Secure virtual machine */
-#endif
-
-#include <linux/smp.h>
-
-#ifndef X86_CR0_PE
-#define X86_CR0_PE 0x00000001
-#endif
-
-#ifndef X86_CR0_MP
-#define X86_CR0_MP 0x00000002
-#endif
-
-#ifndef X86_CR0_EM
-#define X86_CR0_EM 0x00000004
-#endif
-
-#ifndef X86_CR0_TS
-#define X86_CR0_TS 0x00000008
-#endif
-
-#ifndef X86_CR0_ET
-#define X86_CR0_ET 0x00000010
-#endif
-
-#ifndef X86_CR0_NE
-#define X86_CR0_NE 0x00000020
-#endif
-
-#ifndef X86_CR0_WP
-#define X86_CR0_WP 0x00010000
-#endif
-
-#ifndef X86_CR0_AM
-#define X86_CR0_AM 0x00040000
-#endif
-
-#ifndef X86_CR0_NW
-#define X86_CR0_NW 0x20000000
-#endif
-
-#ifndef X86_CR0_CD
-#define X86_CR0_CD 0x40000000
-#endif
-
-#ifndef X86_CR0_PG
-#define X86_CR0_PG 0x80000000
-#endif
-
-#ifndef X86_CR3_PWT
-#define X86_CR3_PWT 0x00000008
-#endif
-
-#ifndef X86_CR3_PCD
-#define X86_CR3_PCD 0x00000010
-#endif
-
-#ifndef X86_CR4_VMXE
-#define X86_CR4_VMXE 0x00002000
-#endif
-
-#undef X86_CR8_TPR
-#define X86_CR8_TPR 0x0f
-
-/*
- * 2.6.22 does not define set_64bit() under nonpae
- */
-#ifdef CONFIG_X86_32
-
-#include <asm/cmpxchg.h>
-
-static inline void __kvm_set_64bit(u64 *ptr, u64 val)
-{
- unsigned int low = val;
- unsigned int high = val >> 32;
-
- __asm__ __volatile__ (
- "\n1:\t"
- "movl (%0), %%eax\n\t"
- "movl 4(%0), %%edx\n\t"
- "lock cmpxchg8b (%0)\n\t"
- "jnz 1b"
- : /* no outputs */
- : "D"(ptr),
- "b"(low),
- "c"(high)
- : "ax","dx","memory");
-}
-
-#undef set_64bit
-#define set_64bit __kvm_set_64bit
-
-static inline unsigned long long __kvm_cmpxchg64(volatile void *ptr,
- unsigned long long old,
- unsigned long long new)
-{
- unsigned long long prev;
- __asm__ __volatile__("lock cmpxchg8b %3"
- : "=A"(prev)
- : "b"((unsigned long)new),
- "c"((unsigned long)(new >> 32)),
- "m"(*__xg(ptr)),
- "0"(old)
- : "memory");
- return prev;
-}
-
-#define kvm_cmpxchg64(ptr,o,n)\
- ((__typeof__(*(ptr)))__kvm_cmpxchg64((ptr),(unsigned long long)(o),\
- (unsigned long long)(n)))
-
-#undef cmpxchg64
-#define cmpxchg64(ptr, o, n) kvm_cmpxchg64(ptr, o, n)
-
-#endif
-
-#ifndef CONFIG_PREEMPT_NOTIFIERS
-/*
- * Include sched|preempt.h before defining CONFIG_PREEMPT_NOTIFIERS to avoid
- * a miscompile.
- */
-#include <linux/sched.h>
-#include <linux/preempt.h>
-#define CONFIG_PREEMPT_NOTIFIERS
-#define CONFIG_PREEMPT_NOTIFIERS_COMPAT
-
-struct preempt_notifier;
-
-struct preempt_ops {
- void (*sched_in)(struct preempt_notifier *notifier, int cpu);
- void (*sched_out)(struct preempt_notifier *notifier,
- struct task_struct *next);
-};
-
-struct preempt_notifier {
- struct list_head link;
- struct task_struct *tsk;
- struct preempt_ops *ops;
-};
-
-void preempt_notifier_register(struct preempt_notifier *notifier);
-void preempt_notifier_unregister(struct preempt_notifier *notifier);
-
-static inline void preempt_notifier_init(struct preempt_notifier *notifier,
- struct preempt_ops *ops)
-{
- notifier->ops = ops;
-}
-
-void start_special_insn(void);
-void end_special_insn(void);
-void in_special_section(void);
-void special_reload_dr7(void);
-
-void preempt_notifier_sys_init(void);
-void preempt_notifier_sys_exit(void);
-
-#else
-
-static inline void start_special_insn(void) {}
-static inline void end_special_insn(void) {}
-static inline void in_special_section(void) {}
-static inline void special_reload_dr7(void) {}
-
-static inline void preempt_notifier_sys_init(void) {}
-static inline void preempt_notifier_sys_exit(void) {}
-
-#endif
-
-/* CONFIG_HAS_IOMEM is apparently fairly new too (2.6.21 for x86_64). */
-#ifndef CONFIG_HAS_IOMEM
-#define CONFIG_HAS_IOMEM 1
-#endif
-
-/* X86_FEATURE_NX is missing in some x86_64 kernels */
-
-#include <asm/cpufeature.h>
-
-#ifndef X86_FEATURE_NX
-#define X86_FEATURE_NX (1*32+20)
-#endif
-
-#undef true
-#define true 1
-#undef false
-#define false 0
-
-/* EFER_LMA and EFER_LME are missing in pre 2.6.24 i386 kernels */
-#ifndef EFER_LME
-#define _EFER_LME 8 /* Long mode enable */
-#define _EFER_LMA 10 /* Long mode active (read-only) */
-#define EFER_LME (1<<_EFER_LME)
-#define EFER_LMA (1<<_EFER_LMA)
-#endif
-
-struct kvm_desc_struct {
- union {
- struct { unsigned int a, b; };
- struct {
- u16 limit0;
- u16 base0;
- unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
- unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
- };
-
- };
-} __attribute__((packed));
-
-struct kvm_ldttss_desc64 {
- u16 limit0;
- u16 base0;
- unsigned base1 : 8, type : 5, dpl : 2, p : 1;
- unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;
- u32 base3;
- u32 zero1;
-} __attribute__((packed));
-
-struct kvm_desc_ptr {
- unsigned short size;
- unsigned long address;
-} __attribute__((packed));
-
-#include <asm/msr.h>
-#ifndef MSR_FS_BASE
-#define MSR_FS_BASE 0xc0000100
-#endif
-#ifndef MSR_GS_BASE
-#define MSR_GS_BASE 0xc0000101
-#endif
-
-/* undefine lapic */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
-
-#undef lapic
-
-#endif
-
-#include <asm/hw_irq.h>
-#ifndef NMI_VECTOR
-#define NMI_VECTOR 2
-#endif
-
-#ifndef MSR_MTRRcap
-#define MSR_MTRRcap 0x0fe
-#define MSR_MTRRfix64K_00000 0x250
-#define MSR_MTRRfix16K_80000 0x258
-#define MSR_MTRRfix16K_A0000 0x259
-#define MSR_MTRRfix4K_C0000 0x268
-#define MSR_MTRRfix4K_C8000 0x269
-#define MSR_MTRRfix4K_D0000 0x26a
-#define MSR_MTRRfix4K_D8000 0x26b
-#define MSR_MTRRfix4K_E0000 0x26c
-#define MSR_MTRRfix4K_E8000 0x26d
-#define MSR_MTRRfix4K_F0000 0x26e
-#define MSR_MTRRfix4K_F8000 0x26f
-#define MSR_MTRRdefType 0x2ff
-#endif
-
-#ifndef MSR_IA32_CR_PAT
-#define MSR_IA32_CR_PAT 0x00000277
-#endif
-
-/* Define DEBUGCTLMSR bits */
-#ifndef DEBUGCTLMSR_LBR
-
-#define _DEBUGCTLMSR_LBR 0 /* last branch recording */
-#define _DEBUGCTLMSR_BTF 1 /* single-step on branches */
-
-#define DEBUGCTLMSR_LBR (1UL << _DEBUGCTLMSR_LBR)
-#define DEBUGCTLMSR_BTF (1UL << _DEBUGCTLMSR_BTF)
-
-#endif
-
-#include <asm/asm.h>
-
-#ifndef __ASM_SIZE
-# define ____ASM_FORM(x) " " #x " "
-# ifdef CONFIG_X86_64
-# define __ASM_SIZE(inst) ____ASM_FORM(inst##q)
-# else
-# define __ASM_SIZE(inst) ____ASM_FORM(inst##l)
-# endif
-#endif
-
-#ifndef _ASM_PTR
-# ifdef CONFIG_X86_64
-# define _ASM_PTR ".quad"
-# else
-# define _ASM_PTR ".long"
-# endif
-#endif
-
-/* Intel VT MSRs */
-#ifndef MSR_IA32_VMX_BASIC
-#define MSR_IA32_VMX_BASIC 0x00000480
-#define MSR_IA32_VMX_PINBASED_CTLS 0x00000481
-#define MSR_IA32_VMX_PROCBASED_CTLS 0x00000482
-#define MSR_IA32_VMX_EXIT_CTLS 0x00000483
-#define MSR_IA32_VMX_ENTRY_CTLS 0x00000484
-#define MSR_IA32_VMX_MISC 0x00000485
-#define MSR_IA32_VMX_CR0_FIXED0 0x00000486
-#define MSR_IA32_VMX_CR0_FIXED1 0x00000487
-#define MSR_IA32_VMX_CR4_FIXED0 0x00000488
-#define MSR_IA32_VMX_CR4_FIXED1 0x00000489
-#define MSR_IA32_VMX_VMCS_ENUM 0x0000048a
-#define MSR_IA32_VMX_PROCBASED_CTLS2 0x0000048b
-#define MSR_IA32_VMX_EPT_VPID_CAP 0x0000048c
-#endif
-
-#ifndef MSR_IA32_FEATURE_CONTROL
-#define MSR_IA32_FEATURE_CONTROL 0x0000003a
-
-#define FEATURE_CONTROL_LOCKED (1<<0)
-#define FEATURE_CONTROL_VMXON_ENABLED (1<<2)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) && defined(__x86_64__)
-
-#undef set_debugreg
-#define set_debugreg(value, register) \
- __asm__("movq %0,%%db" #register \
- : /* no output */ \
- :"r" ((unsigned long)value))
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
-
-struct mtrr_var_range {
- u32 base_lo;
- u32 base_hi;
- u32 mask_lo;
- u32 mask_hi;
-};
-
-/* In the Intel processor's MTRR interface, the MTRR type is always held in
- an 8 bit field: */
-typedef u8 mtrr_type;
-
-#define MTRR_NUM_FIXED_RANGES 88
-#define MTRR_MAX_VAR_RANGES 256
-
-struct mtrr_state_type {
- struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
- mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
- unsigned char enabled;
- unsigned char have_fixed;
- mtrr_type def_type;
-};
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
-#if !defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5,4)
-
-typedef u64 phys_addr_t;
-
-#endif
-#endif
-
-#ifndef CONFIG_HAVE_KVM_IRQCHIP
-#define CONFIG_HAVE_KVM_IRQCHIP 1
-#endif