Lines Matching refs:vcpu
32 static u64 get_except_vector(struct kvm_vcpu *vcpu, enum exception_type type) in get_except_vector() argument
36 switch (*vcpu_cpsr(vcpu) & (PSR_MODE_MASK | PSR_MODE32_BIT)) { in get_except_vector()
50 return vcpu_read_sys_reg(vcpu, VBAR_EL1) + exc_offset + type; in get_except_vector()
53 static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr) in inject_abt64() argument
55 unsigned long cpsr = *vcpu_cpsr(vcpu); in inject_abt64()
56 bool is_aarch32 = vcpu_mode_is_32bit(vcpu); in inject_abt64()
59 vcpu_write_elr_el1(vcpu, *vcpu_pc(vcpu)); in inject_abt64()
60 *vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync); in inject_abt64()
62 *vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64; in inject_abt64()
63 vcpu_write_spsr(vcpu, cpsr); in inject_abt64()
65 vcpu_write_sys_reg(vcpu, addr, FAR_EL1); in inject_abt64()
71 if (kvm_vcpu_trap_il_is32bit(vcpu)) in inject_abt64()
86 vcpu_write_sys_reg(vcpu, esr | ESR_ELx_FSC_EXTABT, ESR_EL1); in inject_abt64()
89 static void inject_undef64(struct kvm_vcpu *vcpu) in inject_undef64() argument
91 unsigned long cpsr = *vcpu_cpsr(vcpu); in inject_undef64()
94 vcpu_write_elr_el1(vcpu, *vcpu_pc(vcpu)); in inject_undef64()
95 *vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync); in inject_undef64()
97 *vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64; in inject_undef64()
98 vcpu_write_spsr(vcpu, cpsr); in inject_undef64()
104 if (kvm_vcpu_trap_il_is32bit(vcpu)) in inject_undef64()
107 vcpu_write_sys_reg(vcpu, esr, ESR_EL1); in inject_undef64()
118 void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr) in kvm_inject_dabt() argument
120 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_dabt()
121 kvm_inject_dabt32(vcpu, addr); in kvm_inject_dabt()
123 inject_abt64(vcpu, false, addr); in kvm_inject_dabt()
134 void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr) in kvm_inject_pabt() argument
136 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_pabt()
137 kvm_inject_pabt32(vcpu, addr); in kvm_inject_pabt()
139 inject_abt64(vcpu, true, addr); in kvm_inject_pabt()
148 void kvm_inject_undefined(struct kvm_vcpu *vcpu) in kvm_inject_undefined() argument
150 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_undefined()
151 kvm_inject_undef32(vcpu); in kvm_inject_undefined()
153 inject_undef64(vcpu); in kvm_inject_undefined()
156 void kvm_set_sei_esr(struct kvm_vcpu *vcpu, u64 esr) in kvm_set_sei_esr() argument
158 vcpu_set_vsesr(vcpu, esr & ESR_ELx_ISS_MASK); in kvm_set_sei_esr()
159 *vcpu_hcr(vcpu) |= HCR_VSE; in kvm_set_sei_esr()
174 void kvm_inject_vabt(struct kvm_vcpu *vcpu) in kvm_inject_vabt() argument
176 kvm_set_sei_esr(vcpu, ESR_ELx_ISV); in kvm_inject_vabt()