Lines Matching full:irq

120 	struct aplic_irq *irq;  in aplic_handle_sourcecfg()  local
126 irq = &aplic->irqs[i]; in aplic_handle_sourcecfg()
128 irq->sourcecfg = *val; in aplic_handle_sourcecfg()
130 *val = irq->sourcecfg; in aplic_handle_sourcecfg()
139 struct aplic_irq *irq; in aplic_set_enabled() local
151 irq = &aplic->irqs[i]; in aplic_set_enabled()
154 if ((irq->sourcecfg & SOURCECFG_SM_M) != SOURCECFG_SM_INACTIVE) { in aplic_set_enabled()
156 irq->state |= APLIC_IRQ_STATE_ENABLED; in aplic_set_enabled()
158 irq->state &= ~APLIC_IRQ_STATE_ENABLED; in aplic_set_enabled()
191 struct aplic_irq *irq; in aplic_handle_target() local
194 irq = &aplic->irqs[i]; in aplic_handle_target()
196 irq->target = *val; in aplic_handle_target()
197 irq->target_hart = (irq->target >> TARGET_HART_S); in aplic_handle_target()
199 *val = irq->target; in aplic_handle_target()
209 struct aplic_irq *irq; in aplic_handle_idc_claimi() local
221 irq = &aplic->irqs[i]; in aplic_handle_idc_claimi()
222 if (irq->target_hart != cpu_id) in aplic_handle_idc_claimi()
224 if (irq->state & APLIC_IRQ_STATE_PENDING) { in aplic_handle_idc_claimi()
226 irq->state &= ~APLIC_IRQ_STATE_PENDING; in aplic_handle_idc_claimi()
450 struct aplic_irq *irq; in aplic_check_pending() local
465 irq = &aplic->irqs[i]; in aplic_check_pending()
466 if (irq->target_hart != hypctx->cpu_id) in aplic_check_pending()
468 if ((irq->state & APLIC_IRQ_STATE_ENABLED) && in aplic_check_pending()
469 (irq->state & APLIC_IRQ_STATE_PENDING)) { in aplic_check_pending()
483 struct aplic_irq *irq; in aplic_inject_irq() local
499 irq = &aplic->irqs[irqid]; in aplic_inject_irq()
500 if (irq->sourcecfg & SOURCECFG_D) { in aplic_inject_irq()
506 switch (irq->sourcecfg & SOURCECFG_SM_M) { in aplic_inject_irq()
509 irq->state |= APLIC_IRQ_STATE_PENDING; in aplic_inject_irq()
513 irq->state |= APLIC_IRQ_STATE_PENDING; in aplic_inject_irq()
516 if (!level && (irq->state & APLIC_IRQ_STATE_INPUT)) in aplic_inject_irq()
517 irq->state |= APLIC_IRQ_STATE_PENDING; in aplic_inject_irq()
520 if (level && !(irq->state & APLIC_IRQ_STATE_INPUT)) in aplic_inject_irq()
521 irq->state |= APLIC_IRQ_STATE_PENDING; in aplic_inject_irq()
532 irq->state |= APLIC_IRQ_STATE_INPUT; in aplic_inject_irq()
534 irq->state &= ~APLIC_IRQ_STATE_INPUT; in aplic_inject_irq()
537 if ((irq->state & mask) == mask) in aplic_inject_irq()
543 vcpu_notify_event(vm_vcpu(hyp->vm, irq->target_hart)); in aplic_inject_irq()