|
@@ -23,8 +23,10 @@
|
|
#define __ARM64_KVM_EMULATE_H__
|
|
#define __ARM64_KVM_EMULATE_H__
|
|
|
|
|
|
#include <linux/kvm_host.h>
|
|
#include <linux/kvm_host.h>
|
|
-#include <asm/kvm_asm.h>
|
|
|
|
|
|
+
|
|
|
|
+#include <asm/esr.h>
|
|
#include <asm/kvm_arm.h>
|
|
#include <asm/kvm_arm.h>
|
|
|
|
+#include <asm/kvm_asm.h>
|
|
#include <asm/kvm_mmio.h>
|
|
#include <asm/kvm_mmio.h>
|
|
#include <asm/ptrace.h>
|
|
#include <asm/ptrace.h>
|
|
|
|
|
|
@@ -128,63 +130,63 @@ static inline phys_addr_t kvm_vcpu_get_fault_ipa(const struct kvm_vcpu *vcpu)
|
|
|
|
|
|
static inline bool kvm_vcpu_dabt_isvalid(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_dabt_isvalid(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_ISV);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_ISV);
|
|
}
|
|
}
|
|
|
|
|
|
static inline bool kvm_vcpu_dabt_iswrite(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_dabt_iswrite(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_WNR);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WNR);
|
|
}
|
|
}
|
|
|
|
|
|
static inline bool kvm_vcpu_dabt_issext(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_dabt_issext(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_SSE);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_SSE);
|
|
}
|
|
}
|
|
|
|
|
|
static inline int kvm_vcpu_dabt_get_rd(const struct kvm_vcpu *vcpu)
|
|
static inline int kvm_vcpu_dabt_get_rd(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return (kvm_vcpu_get_hsr(vcpu) & ESR_EL2_SRT_MASK) >> ESR_EL2_SRT_SHIFT;
|
|
|
|
|
|
+ return (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_SRT_MASK) >> ESR_ELx_SRT_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
static inline bool kvm_vcpu_dabt_isextabt(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_dabt_isextabt(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_EA);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_EA);
|
|
}
|
|
}
|
|
|
|
|
|
static inline bool kvm_vcpu_dabt_iss1tw(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_dabt_iss1tw(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_S1PTW);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_S1PTW);
|
|
}
|
|
}
|
|
|
|
|
|
static inline int kvm_vcpu_dabt_get_as(const struct kvm_vcpu *vcpu)
|
|
static inline int kvm_vcpu_dabt_get_as(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return 1 << ((kvm_vcpu_get_hsr(vcpu) & ESR_EL2_SAS) >> ESR_EL2_SAS_SHIFT);
|
|
|
|
|
|
+ return 1 << ((kvm_vcpu_get_hsr(vcpu) & ESR_ELx_SAS) >> ESR_ELx_SAS_SHIFT);
|
|
}
|
|
}
|
|
|
|
|
|
/* This one is not specific to Data Abort */
|
|
/* This one is not specific to Data Abort */
|
|
static inline bool kvm_vcpu_trap_il_is32bit(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_trap_il_is32bit(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return !!(kvm_vcpu_get_hsr(vcpu) & ESR_EL2_IL);
|
|
|
|
|
|
+ return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_IL);
|
|
}
|
|
}
|
|
|
|
|
|
static inline u8 kvm_vcpu_trap_get_class(const struct kvm_vcpu *vcpu)
|
|
static inline u8 kvm_vcpu_trap_get_class(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return kvm_vcpu_get_hsr(vcpu) >> ESR_EL2_EC_SHIFT;
|
|
|
|
|
|
+ return kvm_vcpu_get_hsr(vcpu) >> ESR_ELx_EC_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
static inline bool kvm_vcpu_trap_is_iabt(const struct kvm_vcpu *vcpu)
|
|
static inline bool kvm_vcpu_trap_is_iabt(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return kvm_vcpu_trap_get_class(vcpu) == ESR_EL2_EC_IABT;
|
|
|
|
|
|
+ return kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_IABT_LOW;
|
|
}
|
|
}
|
|
|
|
|
|
static inline u8 kvm_vcpu_trap_get_fault(const struct kvm_vcpu *vcpu)
|
|
static inline u8 kvm_vcpu_trap_get_fault(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return kvm_vcpu_get_hsr(vcpu) & ESR_EL2_FSC;
|
|
|
|
|
|
+ return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC;
|
|
}
|
|
}
|
|
|
|
|
|
static inline u8 kvm_vcpu_trap_get_fault_type(const struct kvm_vcpu *vcpu)
|
|
static inline u8 kvm_vcpu_trap_get_fault_type(const struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
- return kvm_vcpu_get_hsr(vcpu) & ESR_EL2_FSC_TYPE;
|
|
|
|
|
|
+ return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC_TYPE;
|
|
}
|
|
}
|
|
|
|
|
|
static inline unsigned long kvm_vcpu_get_mpidr(struct kvm_vcpu *vcpu)
|
|
static inline unsigned long kvm_vcpu_get_mpidr(struct kvm_vcpu *vcpu)
|