Lines Matching defs: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,
167 static int truly_virtual_insn(struct kvm_vcpu *vcpu, struct kvm_run *run,
197 static int wfi_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn)
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)
242 run->riscv_csr.ret_value);
250 static int csr_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn)
294 run->riscv_csr.csr_num = csr_num;
295 run->riscv_csr.new_value = new_val;
296 run->riscv_csr.write_mask = wr_mask;
297 run->riscv_csr.ret_value = 0;
314 run->riscv_csr.ret_value = val;
316 kvm_riscv_vcpu_csr_return(vcpu, run);
326 run->exit_reason = KVM_EXIT_RISCV_CSR;
370 static int system_opcode_insn(struct kvm_vcpu *vcpu, struct kvm_run *run,
379 rc = ifn->func(vcpu, run, insn);
386 return truly_illegal_insn(vcpu, run, insn);
388 return truly_virtual_insn(vcpu, run, 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,
430 return truly_illegal_insn(vcpu, run, insn);
435 return system_opcode_insn(vcpu, run, insn);
437 return truly_illegal_insn(vcpu, run, 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,
543 run->mmio.is_write = false;
544 run->mmio.phys_addr = fault_addr;
545 run->mmio.len = len;
550 memcpy(run->mmio.data, data_buf, len);
552 kvm_riscv_vcpu_mmio_return(vcpu, run);
558 run->exit_reason = KVM_EXIT_MMIO;
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,
660 *((u8 *)run->mmio.data) = data8;
663 *((u16 *)run->mmio.data) = data16;
666 *((u32 *)run->mmio.data) = data32;
669 *((u64 *)run->mmio.data) = data64;
676 run->mmio.is_write = true;
677 run->mmio.phys_addr = fault_addr;
678 run->mmio.len = len;
682 fault_addr, len, run->mmio.data)) {
685 kvm_riscv_vcpu_mmio_return(vcpu, run);
691 run->exit_reason = KVM_EXIT_MMIO;
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)
718 if (run->mmio.is_write)
726 data8 = *((u8 *)run->mmio.data);
731 data16 = *((u16 *)run->mmio.data);
736 data32 = *((u32 *)run->mmio.data);
741 data64 = *((u64 *)run->mmio.data);