Commit 5bb16016 authored by Jan Kiszka's avatar Jan Kiszka Committed by Paolo Bonzini

KVM: VMX: Factor out is_exception_n helper

There is quite some common code in all these is_<exception>() helpers.
Factor it out before adding even more of them.
Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 6b6de68c
...@@ -961,25 +961,26 @@ static const u32 vmx_msr_index[] = { ...@@ -961,25 +961,26 @@ static const u32 vmx_msr_index[] = {
MSR_EFER, MSR_TSC_AUX, MSR_STAR, MSR_EFER, MSR_TSC_AUX, MSR_STAR,
}; };
static inline bool is_page_fault(u32 intr_info) static inline bool is_exception_n(u32 intr_info, u8 vector)
{ {
return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK | return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK |
INTR_INFO_VALID_MASK)) == INTR_INFO_VALID_MASK)) ==
(INTR_TYPE_HARD_EXCEPTION | PF_VECTOR | INTR_INFO_VALID_MASK); (INTR_TYPE_HARD_EXCEPTION | vector | INTR_INFO_VALID_MASK);
}
static inline bool is_page_fault(u32 intr_info)
{
return is_exception_n(intr_info, PF_VECTOR);
} }
static inline bool is_no_device(u32 intr_info) static inline bool is_no_device(u32 intr_info)
{ {
return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK | return is_exception_n(intr_info, NM_VECTOR);
INTR_INFO_VALID_MASK)) ==
(INTR_TYPE_HARD_EXCEPTION | NM_VECTOR | INTR_INFO_VALID_MASK);
} }
static inline bool is_invalid_opcode(u32 intr_info) static inline bool is_invalid_opcode(u32 intr_info)
{ {
return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK | return is_exception_n(intr_info, UD_VECTOR);
INTR_INFO_VALID_MASK)) ==
(INTR_TYPE_HARD_EXCEPTION | UD_VECTOR | INTR_INFO_VALID_MASK);
} }
static inline bool is_external_interrupt(u32 intr_info) static inline bool is_external_interrupt(u32 intr_info)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment