Lines Matching full:run
148 int (*func)(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn);
151 static int truly_illegal_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, in truly_illegal_insn() argument
167 static int truly_virtual_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, in truly_virtual_insn() argument
197 static int wfi_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn) in wfi_insn() argument
226 * @run: The VCPU run struct containing the CSR data
230 int kvm_riscv_vcpu_csr_return(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_riscv_vcpu_csr_return() argument
242 run->riscv_csr.ret_value); in kvm_riscv_vcpu_csr_return()
250 static int csr_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn) in csr_insn() argument
294 run->riscv_csr.csr_num = csr_num; in csr_insn()
295 run->riscv_csr.new_value = new_val; in csr_insn()
296 run->riscv_csr.write_mask = wr_mask; in csr_insn()
297 run->riscv_csr.ret_value = 0; in csr_insn()
314 run->riscv_csr.ret_value = val; in csr_insn()
316 kvm_riscv_vcpu_csr_return(vcpu, run); in csr_insn()
326 run->exit_reason = KVM_EXIT_RISCV_CSR; in csr_insn()
370 static int system_opcode_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, in system_opcode_insn() argument
379 rc = ifn->func(vcpu, run, insn); in system_opcode_insn()
386 return truly_illegal_insn(vcpu, run, insn); in system_opcode_insn()
388 return truly_virtual_insn(vcpu, run, insn); in system_opcode_insn()
403 * @run: The VCPU run struct containing the mmio data
406 * Returns > 0 to continue run-loop
407 * Returns 0 to exit run-loop and handle in user-space.
408 * Returns < 0 to report failure and exit run-loop
410 int kvm_riscv_vcpu_virtual_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, in kvm_riscv_vcpu_virtual_insn() argument
430 return truly_illegal_insn(vcpu, run, insn); in kvm_riscv_vcpu_virtual_insn()
435 return system_opcode_insn(vcpu, run, insn); in kvm_riscv_vcpu_virtual_insn()
437 return truly_illegal_insn(vcpu, run, insn); in kvm_riscv_vcpu_virtual_insn()
445 * @run: The VCPU run struct containing the mmio data
449 * Returns > 0 to continue run-loop
450 * Returns 0 to exit run-loop and handle in user-space.
451 * Returns < 0 to report failure and exit run-loop
453 int kvm_riscv_vcpu_mmio_load(struct kvm_vcpu *vcpu, struct kvm_run *run, in kvm_riscv_vcpu_mmio_load() argument
543 run->mmio.is_write = false; in kvm_riscv_vcpu_mmio_load()
544 run->mmio.phys_addr = fault_addr; in kvm_riscv_vcpu_mmio_load()
545 run->mmio.len = len; in kvm_riscv_vcpu_mmio_load()
550 memcpy(run->mmio.data, data_buf, len); in kvm_riscv_vcpu_mmio_load()
552 kvm_riscv_vcpu_mmio_return(vcpu, run); in kvm_riscv_vcpu_mmio_load()
558 run->exit_reason = KVM_EXIT_MMIO; in kvm_riscv_vcpu_mmio_load()
567 * @run: The VCPU run struct containing the mmio data
571 * Returns > 0 to continue run-loop
572 * Returns 0 to exit run-loop and handle in user-space.
573 * Returns < 0 to report failure and exit run-loop
575 int kvm_riscv_vcpu_mmio_store(struct kvm_vcpu *vcpu, struct kvm_run *run, in kvm_riscv_vcpu_mmio_store() argument
660 *((u8 *)run->mmio.data) = data8; in kvm_riscv_vcpu_mmio_store()
663 *((u16 *)run->mmio.data) = data16; in kvm_riscv_vcpu_mmio_store()
666 *((u32 *)run->mmio.data) = data32; in kvm_riscv_vcpu_mmio_store()
669 *((u64 *)run->mmio.data) = data64; in kvm_riscv_vcpu_mmio_store()
676 run->mmio.is_write = true; in kvm_riscv_vcpu_mmio_store()
677 run->mmio.phys_addr = fault_addr; in kvm_riscv_vcpu_mmio_store()
678 run->mmio.len = len; in kvm_riscv_vcpu_mmio_store()
682 fault_addr, len, run->mmio.data)) { in kvm_riscv_vcpu_mmio_store()
685 kvm_riscv_vcpu_mmio_return(vcpu, run); in kvm_riscv_vcpu_mmio_store()
691 run->exit_reason = KVM_EXIT_MMIO; in kvm_riscv_vcpu_mmio_store()
701 * @run: The VCPU run struct containing the mmio data
703 int kvm_riscv_vcpu_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_riscv_vcpu_mmio_return() argument
718 if (run->mmio.is_write) in kvm_riscv_vcpu_mmio_return()
726 data8 = *((u8 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
731 data16 = *((u16 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
736 data32 = *((u32 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()
741 data64 = *((u64 *)run->mmio.data); in kvm_riscv_vcpu_mmio_return()