Lines Matching refs:vcpu
17 static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr) in inject_abt64() argument
19 unsigned long cpsr = *vcpu_cpsr(vcpu); in inject_abt64()
20 bool is_aarch32 = vcpu_mode_is_32bit(vcpu); in inject_abt64()
23 kvm_pend_exception(vcpu, EXCEPT_AA64_EL1_SYNC); in inject_abt64()
25 vcpu_write_sys_reg(vcpu, addr, FAR_EL1); in inject_abt64()
31 if (kvm_vcpu_trap_il_is32bit(vcpu)) in inject_abt64()
46 vcpu_write_sys_reg(vcpu, esr | ESR_ELx_FSC_EXTABT, ESR_EL1); in inject_abt64()
49 static void inject_undef64(struct kvm_vcpu *vcpu) in inject_undef64() argument
53 kvm_pend_exception(vcpu, EXCEPT_AA64_EL1_SYNC); in inject_undef64()
59 if (kvm_vcpu_trap_il_is32bit(vcpu)) in inject_undef64()
62 vcpu_write_sys_reg(vcpu, esr, ESR_EL1); in inject_undef64()
70 static void inject_undef32(struct kvm_vcpu *vcpu) in inject_undef32() argument
72 kvm_pend_exception(vcpu, EXCEPT_AA32_UND); in inject_undef32()
79 static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt, u32 addr) in inject_abt32() argument
85 if (vcpu_read_sys_reg(vcpu, TCR_EL1) & TTBCR_EAE) { in inject_abt32()
92 far = vcpu_read_sys_reg(vcpu, FAR_EL1); in inject_abt32()
95 kvm_pend_exception(vcpu, EXCEPT_AA32_IABT); in inject_abt32()
98 vcpu_write_sys_reg(vcpu, fsr, IFSR32_EL2); in inject_abt32()
100 kvm_pend_exception(vcpu, EXCEPT_AA32_DABT); in inject_abt32()
103 vcpu_write_sys_reg(vcpu, fsr, ESR_EL1); in inject_abt32()
106 vcpu_write_sys_reg(vcpu, far, FAR_EL1); in inject_abt32()
117 void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr) in kvm_inject_dabt() argument
119 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_dabt()
120 inject_abt32(vcpu, false, addr); in kvm_inject_dabt()
122 inject_abt64(vcpu, false, addr); in kvm_inject_dabt()
133 void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr) in kvm_inject_pabt() argument
135 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_pabt()
136 inject_abt32(vcpu, true, addr); in kvm_inject_pabt()
138 inject_abt64(vcpu, true, addr); in kvm_inject_pabt()
141 void kvm_inject_size_fault(struct kvm_vcpu *vcpu) in kvm_inject_size_fault() argument
145 addr = kvm_vcpu_get_fault_ipa(vcpu); in kvm_inject_size_fault()
146 addr |= kvm_vcpu_get_hfar(vcpu) & GENMASK(11, 0); in kvm_inject_size_fault()
148 if (kvm_vcpu_trap_is_iabt(vcpu)) in kvm_inject_size_fault()
149 kvm_inject_pabt(vcpu, addr); in kvm_inject_size_fault()
151 kvm_inject_dabt(vcpu, addr); in kvm_inject_size_fault()
160 if (vcpu_el1_is_32bit(vcpu) && in kvm_inject_size_fault()
161 !(vcpu_read_sys_reg(vcpu, TCR_EL1) & TTBCR_EAE)) in kvm_inject_size_fault()
164 esr = vcpu_read_sys_reg(vcpu, ESR_EL1); in kvm_inject_size_fault()
166 vcpu_write_sys_reg(vcpu, esr, ESR_EL1); in kvm_inject_size_fault()
176 void kvm_inject_undefined(struct kvm_vcpu *vcpu) in kvm_inject_undefined() argument
178 if (vcpu_el1_is_32bit(vcpu)) in kvm_inject_undefined()
179 inject_undef32(vcpu); in kvm_inject_undefined()
181 inject_undef64(vcpu); in kvm_inject_undefined()
184 void kvm_set_sei_esr(struct kvm_vcpu *vcpu, u64 esr) in kvm_set_sei_esr() argument
186 vcpu_set_vsesr(vcpu, esr & ESR_ELx_ISS_MASK); in kvm_set_sei_esr()
187 *vcpu_hcr(vcpu) |= HCR_VSE; in kvm_set_sei_esr()
202 void kvm_inject_vabt(struct kvm_vcpu *vcpu) in kvm_inject_vabt() argument
204 kvm_set_sei_esr(vcpu, ESR_ELx_ISV); in kvm_inject_vabt()