xref: /kvmtool/mips/include/kvm/kvm-cpu-arch.h (revision 7281a8db199b95e47ff80c73765709372cd08f1e)
1*7281a8dbSDavid Daney #ifndef KVM__KVM_CPU_ARCH_H
2*7281a8dbSDavid Daney #define KVM__KVM_CPU_ARCH_H
3*7281a8dbSDavid Daney 
4*7281a8dbSDavid Daney #include <linux/kvm.h>	/* for struct kvm_regs */
5*7281a8dbSDavid Daney #include "kvm/kvm.h"	/* for kvm__emulate_{mm}io() */
6*7281a8dbSDavid Daney #include <pthread.h>
7*7281a8dbSDavid Daney 
8*7281a8dbSDavid Daney struct kvm;
9*7281a8dbSDavid Daney 
10*7281a8dbSDavid Daney struct kvm_cpu {
11*7281a8dbSDavid Daney 	pthread_t	thread;		/* VCPU thread */
12*7281a8dbSDavid Daney 
13*7281a8dbSDavid Daney 	unsigned long	cpu_id;
14*7281a8dbSDavid Daney 
15*7281a8dbSDavid Daney 	struct kvm	*kvm;		/* parent KVM */
16*7281a8dbSDavid Daney 	int		vcpu_fd;	/* For VCPU ioctls() */
17*7281a8dbSDavid Daney 	struct kvm_run	*kvm_run;
18*7281a8dbSDavid Daney 
19*7281a8dbSDavid Daney 	struct kvm_regs	regs;
20*7281a8dbSDavid Daney 
21*7281a8dbSDavid Daney 	u8		is_running;
22*7281a8dbSDavid Daney 	u8		paused;
23*7281a8dbSDavid Daney 	u8		needs_nmi;
24*7281a8dbSDavid Daney 
25*7281a8dbSDavid Daney 	struct kvm_coalesced_mmio_ring *ring;
26*7281a8dbSDavid Daney };
27*7281a8dbSDavid Daney 
28*7281a8dbSDavid Daney /*
29*7281a8dbSDavid Daney  * As these are such simple wrappers, let's have them in the header so they'll
30*7281a8dbSDavid Daney  * be cheaper to call:
31*7281a8dbSDavid Daney  */
32*7281a8dbSDavid Daney static inline bool kvm_cpu__emulate_io(struct kvm *kvm, u16 port, void *data, int direction, int size, u32 count)
33*7281a8dbSDavid Daney {
34*7281a8dbSDavid Daney 	return kvm__emulate_io(kvm, port, data, direction, size, count);
35*7281a8dbSDavid Daney }
36*7281a8dbSDavid Daney 
37*7281a8dbSDavid Daney static inline bool kvm_cpu__emulate_mmio(struct kvm_cpu *vcpu, u64 phys_addr, u8 *data, u32 len, u8 is_write)
38*7281a8dbSDavid Daney {
39*7281a8dbSDavid Daney 	return kvm__emulate_mmio(vcpu, phys_addr, data, len, is_write);
40*7281a8dbSDavid Daney }
41*7281a8dbSDavid Daney 
42*7281a8dbSDavid Daney #endif /* KVM__KVM_CPU_ARCH_H */
43