Lines Matching refs:run
127 struct kvm_run *run, in truly_illegal_insn() argument
142 struct kvm_run *run, in system_opcode_insn() argument
157 return truly_illegal_insn(vcpu, run, insn); in system_opcode_insn()
160 static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, in virtual_inst_fault() argument
180 return truly_illegal_insn(vcpu, run, insn); in virtual_inst_fault()
185 return system_opcode_insn(vcpu, run, insn); in virtual_inst_fault()
187 return truly_illegal_insn(vcpu, run, insn); in virtual_inst_fault()
191 static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, in emulate_load() argument
280 run->mmio.is_write = false; in emulate_load()
281 run->mmio.phys_addr = fault_addr; in emulate_load()
282 run->mmio.len = len; in emulate_load()
287 memcpy(run->mmio.data, data_buf, len); in emulate_load()
289 kvm_riscv_vcpu_mmio_return(vcpu, run); in emulate_load()
295 run->exit_reason = KVM_EXIT_MMIO; in emulate_load()
300 static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, in emulate_store() argument
384 *((u8 *)run->mmio.data) = data8; in emulate_store()
387 *((u16 *)run->mmio.data) = data16; in emulate_store()
390 *((u32 *)run->mmio.data) = data32; in emulate_store()
393 *((u64 *)run->mmio.data) = data64; in emulate_store()
400 run->mmio.is_write = true; in emulate_store()
401 run->mmio.phys_addr = fault_addr; in emulate_store()
402 run->mmio.len = len; in emulate_store()
406 fault_addr, len, run->mmio.data)) { in emulate_store()
409 kvm_riscv_vcpu_mmio_return(vcpu, run); in emulate_store()
415 run->exit_reason = KVM_EXIT_MMIO; in emulate_store()
420 static int stage2_page_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, in stage2_page_fault() argument
438 return emulate_load(vcpu, run, fault_addr, in stage2_page_fault()
441 return emulate_store(vcpu, run, fault_addr, in stage2_page_fault()
601 int kvm_riscv_vcpu_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_riscv_vcpu_mmio_return() argument
616 if (run->mmio.is_write) in kvm_riscv_vcpu_mmio_return()
624 data8 = *((u8 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
629 data16 = *((u16 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
634 data32 = *((u32 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
639 data64 = *((u64 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
658 int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct kvm_run *run, in kvm_riscv_vcpu_exit() argument
669 run->exit_reason = KVM_EXIT_UNKNOWN; in kvm_riscv_vcpu_exit()
673 ret = virtual_inst_fault(vcpu, run, trap); in kvm_riscv_vcpu_exit()
679 ret = stage2_page_fault(vcpu, run, trap); in kvm_riscv_vcpu_exit()
683 ret = kvm_riscv_vcpu_sbi_ecall(vcpu, run); in kvm_riscv_vcpu_exit()