Lines Matching +full:riscv +full:- +full:sbi

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2024-2025 Ruslan Bukin <br@bsdpad.com>
37 #include <machine/sbi.h>
39 #include "riscv.h"
55 func_id = hypctx->guest_regs.hyp_a[6]; in vmm_sbi_handle_rfnc()
56 hart_mask = hypctx->guest_regs.hyp_a[0]; in vmm_sbi_handle_rfnc()
57 hart_mask_base = hypctx->guest_regs.hyp_a[1]; in vmm_sbi_handle_rfnc()
61 fence.start = hypctx->guest_regs.hyp_a[2]; in vmm_sbi_handle_rfnc()
62 fence.size = hypctx->guest_regs.hyp_a[3]; in vmm_sbi_handle_rfnc()
63 fence.asid = hypctx->guest_regs.hyp_a[4]; in vmm_sbi_handle_rfnc()
81 hyp = hypctx->hyp; in vmm_sbi_handle_rfnc()
82 active_cpus = vm_active_cpus(hyp->vm); in vmm_sbi_handle_rfnc()
83 maxcpus = vm_get_maxcpus(hyp->vm); in vmm_sbi_handle_rfnc()
85 vcpu = vm_vcpu(hyp->vm, i); in vmm_sbi_handle_rfnc()
88 if (hart_mask_base != -1UL) { in vmm_sbi_handle_rfnc()
91 if (!(hart_mask & (1UL << (i - hart_mask_base)))) in vmm_sbi_handle_rfnc()
106 vmm_fence_add(hyp->vm, &cpus, &fence); in vmm_sbi_handle_rfnc()
117 func_id = hypctx->guest_regs.hyp_a[6]; in vmm_sbi_handle_time()
118 next_val = hypctx->guest_regs.hyp_a[0]; in vmm_sbi_handle_time()
143 func_id = hypctx->guest_regs.hyp_a[6]; in vmm_sbi_handle_ipi()
144 hart_mask = hypctx->guest_regs.hyp_a[0]; in vmm_sbi_handle_ipi()
145 hart_mask_base = hypctx->guest_regs.hyp_a[1]; in vmm_sbi_handle_ipi()
149 hyp = hypctx->hyp; in vmm_sbi_handle_ipi()
151 active_cpus = vm_active_cpus(hyp->vm); in vmm_sbi_handle_ipi()
157 hart_id = (bit - 1); in vmm_sbi_handle_ipi()
159 if (hart_mask_base != -1) in vmm_sbi_handle_ipi()
187 sbi_extension_id = hypctx->guest_regs.hyp_a[7]; in vmm_sbi_ecall()
190 hypctx->guest_regs.hyp_a[0], in vmm_sbi_ecall()
191 hypctx->guest_regs.hyp_a[1], in vmm_sbi_ecall()
192 hypctx->guest_regs.hyp_a[2], in vmm_sbi_ecall()
193 hypctx->guest_regs.hyp_a[3], in vmm_sbi_ecall()
194 hypctx->guest_regs.hyp_a[4], in vmm_sbi_ecall()
195 hypctx->guest_regs.hyp_a[5], in vmm_sbi_ecall()
196 hypctx->guest_regs.hyp_a[6], in vmm_sbi_ecall()
197 hypctx->guest_regs.hyp_a[7]); in vmm_sbi_ecall()
214 hypctx->guest_regs.hyp_a[0] = error; in vmm_sbi_ecall()