Symbol: aplic
lib/libvmmapi/riscv/vmmapi_machdep.c
62
struct vm_aplic_descr aplic;
lib/libvmmapi/riscv/vmmapi_machdep.c
64
bzero(&aplic, sizeof(aplic));
lib/libvmmapi/riscv/vmmapi_machdep.c
65
aplic.mem_start = mem_start;
lib/libvmmapi/riscv/vmmapi_machdep.c
66
aplic.mem_size = mem_size;
lib/libvmmapi/riscv/vmmapi_machdep.c
68
return (ioctl(ctx->fd, VM_ATTACH_APLIC, &aplic));
sys/riscv/riscv/aplic.c
184
fdt_get_hartid(device_t dev, phandle_t aplic)
sys/riscv/riscv/aplic.c
189
if (OF_searchencprop(aplic, "#interrupt-cells", &hartid,
sys/riscv/riscv/aplic.c
192
"Could not find #interrupt-cells for phandle %u\n", aplic);
sys/riscv/riscv/aplic.c
200
if (OF_searchencprop(OF_parent(aplic), "reg", (pcell_t *)&hartid,
sys/riscv/riscv/aplic.c
555
DEFINE_CLASS_0(aplic, aplic_driver, aplic_methods, sizeof(struct aplic_softc));
sys/riscv/riscv/aplic.c
557
EARLY_DRIVER_MODULE(aplic, simplebus, aplic_driver, 0, 0,
sys/riscv/vmm/riscv.h
113
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
120
aplic_handle_sourcecfg(struct aplic *aplic, int i, bool write, uint64_t *val)
sys/riscv/vmm/vmm_aplic.c
124
if (i <= 0 || i > aplic->nirqs)
sys/riscv/vmm/vmm_aplic.c
127
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
128
irq = &aplic->irqs[i];
sys/riscv/vmm/vmm_aplic.c
133
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
139
aplic_set_enabled(struct aplic *aplic, bool write, uint64_t *val, bool enabled)
sys/riscv/vmm/vmm_aplic.c
150
if (i <= 0 || i > aplic->nirqs)
sys/riscv/vmm/vmm_aplic.c
153
irq = &aplic->irqs[i];
sys/riscv/vmm/vmm_aplic.c
155
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
162
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
168
aplic_set_enabled_word(struct aplic *aplic, bool write, uint32_t word,
sys/riscv/vmm/vmm_aplic.c
186
(void)aplic_set_enabled(aplic, write, &v, enabled);
sys/riscv/vmm/vmm_aplic.c
191
aplic_handle_target(struct aplic *aplic, int i, bool write, uint64_t *val)
sys/riscv/vmm/vmm_aplic.c
195
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
196
irq = &aplic->irqs[i];
sys/riscv/vmm/vmm_aplic.c
202
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
208
aplic_handle_idc_claimi(struct hyp *hyp, struct aplic *aplic, int cpu_id,
sys/riscv/vmm/vmm_aplic.c
221
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
222
for (i = 0; i < aplic->nirqs; i++) {
sys/riscv/vmm/vmm_aplic.c
223
irq = &aplic->irqs[i];
sys/riscv/vmm/vmm_aplic.c
233
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
242
aplic_handle_idc(struct hyp *hyp, struct aplic *aplic, int cpu, int reg,
sys/riscv/vmm/vmm_aplic.c
255
error = aplic_handle_idc_claimi(hyp, aplic, cpu, write, val);
sys/riscv/vmm/vmm_aplic.c
265
aplic_mmio_access(struct hyp *hyp, struct aplic *aplic, uint64_t reg,
sys/riscv/vmm/vmm_aplic.c
276
(reg <= APLIC_SOURCECFG(aplic->nirqs))) {
sys/riscv/vmm/vmm_aplic.c
278
error = aplic_handle_sourcecfg(aplic, i, write, val);
sys/riscv/vmm/vmm_aplic.c
282
if ((reg >= APLIC_TARGET(1)) && (reg <= APLIC_TARGET(aplic->nirqs))) {
sys/riscv/vmm/vmm_aplic.c
284
error = aplic_handle_target(aplic, i, write, val);
sys/riscv/vmm/vmm_aplic.c
291
error = aplic_handle_idc(hyp, aplic, cpu, r, write, val);
sys/riscv/vmm/vmm_aplic.c
295
if ((reg >= APLIC_CLRIE) && (reg < (APLIC_CLRIE + aplic->nirqs * 4))) {
sys/riscv/vmm/vmm_aplic.c
297
aplic_set_enabled_word(aplic, write, i, val, false);
sys/riscv/vmm/vmm_aplic.c
303
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
305
aplic->domaincfg = *val & DOMAINCFG_IE;
sys/riscv/vmm/vmm_aplic.c
307
*val = aplic->domaincfg;
sys/riscv/vmm/vmm_aplic.c
308
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
312
error = aplic_set_enabled(aplic, write, val, true);
sys/riscv/vmm/vmm_aplic.c
315
error = aplic_set_enabled(aplic, write, val, false);
sys/riscv/vmm/vmm_aplic.c
332
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
339
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
343
if (fault_ipa < aplic->mem_start || fault_ipa + size > aplic->mem_end)
sys/riscv/vmm/vmm_aplic.c
346
reg = fault_ipa - aplic->mem_start;
sys/riscv/vmm/vmm_aplic.c
348
error = aplic_mmio_access(hyp, aplic, reg, false, &val);
sys/riscv/vmm/vmm_aplic.c
361
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
368
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
373
if (fault_ipa < aplic->mem_start || fault_ipa + size > aplic->mem_end)
sys/riscv/vmm/vmm_aplic.c
376
reg = fault_ipa - aplic->mem_start;
sys/riscv/vmm/vmm_aplic.c
380
error = aplic_mmio_access(hyp, aplic, reg, true, &val);
sys/riscv/vmm/vmm_aplic.c
388
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
390
hyp->aplic = malloc(sizeof(*hyp->aplic), M_APLIC,
sys/riscv/vmm/vmm_aplic.c
392
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
394
mtx_init(&aplic->mtx, "APLIC lock", NULL, MTX_SPIN);
sys/riscv/vmm/vmm_aplic.c
400
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
402
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
404
mtx_destroy(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
406
free(hyp->aplic, M_APLIC);
sys/riscv/vmm/vmm_aplic.c
412
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
422
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
423
aplic->nirqs = APLIC_NIRQS;
sys/riscv/vmm/vmm_aplic.c
424
aplic->mem_start = descr->mem_start;
sys/riscv/vmm/vmm_aplic.c
425
aplic->mem_end = descr->mem_start + descr->mem_size;
sys/riscv/vmm/vmm_aplic.c
426
aplic->irqs = malloc(sizeof(struct aplic_irq) * aplic->nirqs, M_APLIC,
sys/riscv/vmm/vmm_aplic.c
437
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
439
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
445
free(aplic->irqs, M_APLIC);
sys/riscv/vmm/vmm_aplic.c
453
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
458
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
460
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
461
if ((aplic->domaincfg & DOMAINCFG_IE) == 0) {
sys/riscv/vmm/vmm_aplic.c
462
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
466
for (i = 0; i < aplic->nirqs; i++) {
sys/riscv/vmm/vmm_aplic.c
467
irq = &aplic->irqs[i];
sys/riscv/vmm/vmm_aplic.c
472
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
477
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
486
struct aplic *aplic;
sys/riscv/vmm/vmm_aplic.c
491
aplic = hyp->aplic;
sys/riscv/vmm/vmm_aplic.c
495
mtx_lock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
496
if ((aplic->domaincfg & DOMAINCFG_IE) == 0) {
sys/riscv/vmm/vmm_aplic.c
497
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
501
irq = &aplic->irqs[irqid];
sys/riscv/vmm/vmm_aplic.c
503
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_aplic.c
542
mtx_unlock_spin(&aplic->mtx);
sys/riscv/vmm/vmm_dev_machdep.c
106
struct vm_aplic_descr *aplic;
sys/riscv/vmm/vmm_dev_machdep.c
108
aplic = (struct vm_aplic_descr *)data;
sys/riscv/vmm/vmm_dev_machdep.c
109
error = vm_attach_aplic(vm, aplic);