| Avi Kivity | 26eef70 | 2008-07-03 14:59:22 +0300 | [diff] [blame] | 1 | #ifndef ARCH_X86_KVM_X86_H | 
|  | 2 | #define ARCH_X86_KVM_X86_H | 
|  | 3 |  | 
|  | 4 | #include <linux/kvm_host.h> | 
|  | 5 |  | 
|  | 6 | static inline void kvm_clear_exception_queue(struct kvm_vcpu *vcpu) | 
|  | 7 | { | 
|  | 8 | vcpu->arch.exception.pending = false; | 
|  | 9 | } | 
|  | 10 |  | 
| Gleb Natapov | 66fd3f7 | 2009-05-11 13:35:50 +0300 | [diff] [blame] | 11 | static inline void kvm_queue_interrupt(struct kvm_vcpu *vcpu, u8 vector, | 
|  | 12 | bool soft) | 
| Avi Kivity | 937a7ea | 2008-07-03 15:17:01 +0300 | [diff] [blame] | 13 | { | 
|  | 14 | vcpu->arch.interrupt.pending = true; | 
| Gleb Natapov | 66fd3f7 | 2009-05-11 13:35:50 +0300 | [diff] [blame] | 15 | vcpu->arch.interrupt.soft = soft; | 
| Avi Kivity | 937a7ea | 2008-07-03 15:17:01 +0300 | [diff] [blame] | 16 | vcpu->arch.interrupt.nr = vector; | 
|  | 17 | } | 
|  | 18 |  | 
|  | 19 | static inline void kvm_clear_interrupt_queue(struct kvm_vcpu *vcpu) | 
|  | 20 | { | 
|  | 21 | vcpu->arch.interrupt.pending = false; | 
|  | 22 | } | 
|  | 23 |  | 
| Gleb Natapov | 3298b75 | 2009-05-11 13:35:46 +0300 | [diff] [blame] | 24 | static inline bool kvm_event_needs_reinjection(struct kvm_vcpu *vcpu) | 
|  | 25 | { | 
|  | 26 | return vcpu->arch.exception.pending || vcpu->arch.interrupt.pending || | 
|  | 27 | vcpu->arch.nmi_injected; | 
|  | 28 | } | 
| Gleb Natapov | 66fd3f7 | 2009-05-11 13:35:50 +0300 | [diff] [blame] | 29 |  | 
|  | 30 | static inline bool kvm_exception_is_soft(unsigned int nr) | 
|  | 31 | { | 
|  | 32 | return (nr == BP_VECTOR) || (nr == OF_VECTOR); | 
|  | 33 | } | 
| Avi Kivity | 26eef70 | 2008-07-03 14:59:22 +0300 | [diff] [blame] | 34 | #endif |