xref: /kvmtool/x86/include/kvm/kvm-cpu-arch.h (revision af7b08685968ff8f6ffdf5cac1ef067688bce8c6)
1*af7b0868SMatt Evans #ifndef KVM__KVM_CPU_ARCH_H
2*af7b0868SMatt Evans #define KVM__KVM_CPU_ARCH_H
3*af7b0868SMatt Evans 
4*af7b0868SMatt Evans /* Architecture-specific kvm_cpu definitions. */
5*af7b0868SMatt Evans 
6*af7b0868SMatt Evans #include <linux/kvm.h>	/* for struct kvm_regs */
7*af7b0868SMatt Evans 
8*af7b0868SMatt Evans #include <pthread.h>
9*af7b0868SMatt Evans 
10*af7b0868SMatt Evans struct kvm;
11*af7b0868SMatt Evans 
12*af7b0868SMatt Evans struct kvm_cpu {
13*af7b0868SMatt Evans 	pthread_t		thread;		/* VCPU thread */
14*af7b0868SMatt Evans 
15*af7b0868SMatt Evans 	unsigned long		cpu_id;
16*af7b0868SMatt Evans 
17*af7b0868SMatt Evans 	struct kvm		*kvm;		/* parent KVM */
18*af7b0868SMatt Evans 	int			vcpu_fd;	/* For VCPU ioctls() */
19*af7b0868SMatt Evans 	struct kvm_run		*kvm_run;
20*af7b0868SMatt Evans 
21*af7b0868SMatt Evans 	struct kvm_regs		regs;
22*af7b0868SMatt Evans 	struct kvm_sregs	sregs;
23*af7b0868SMatt Evans 	struct kvm_fpu		fpu;
24*af7b0868SMatt Evans 
25*af7b0868SMatt Evans 	struct kvm_msrs		*msrs;		/* dynamically allocated */
26*af7b0868SMatt Evans 
27*af7b0868SMatt Evans 	u8			is_running;
28*af7b0868SMatt Evans 	u8			paused;
29*af7b0868SMatt Evans 
30*af7b0868SMatt Evans 	struct kvm_coalesced_mmio_ring	*ring;
31*af7b0868SMatt Evans };
32*af7b0868SMatt Evans 
33*af7b0868SMatt Evans #endif /* KVM__KVM_CPU_ARCH_H */
34