Lines Matching refs:pirq
64 static struct pirq {
99 struct pirq *pirq;
102 pirq = &pirqs[pin - 1];
103 pthread_mutex_lock(&pirq->lock);
104 if (pirq->reg != (val & (PIRQ_DIS | PIRQ_IRQ))) {
105 if (pirq->active_count != 0 && pirq_valid_irq(pirq->reg))
106 vm_isa_deassert_irq(ctx, pirq->reg & PIRQ_IRQ, -1);
107 pirq->reg = val & (PIRQ_DIS | PIRQ_IRQ);
108 if (pirq->active_count != 0 && pirq_valid_irq(pirq->reg))
109 vm_isa_assert_irq(ctx, pirq->reg & PIRQ_IRQ, -1);
111 pthread_mutex_unlock(&pirq->lock);
156 struct pirq *pirq;
160 pirq = &pirqs[pi->pi_lintr.pirq_pin - 1];
161 pthread_mutex_lock(&pirq->lock);
162 pirq->active_count++;
163 if (pirq->active_count == 1 && pirq_valid_irq(pirq->reg)) {
164 vm_isa_assert_irq(pi->pi_vmctx, pirq->reg & PIRQ_IRQ,
166 pthread_mutex_unlock(&pirq->lock);
169 pthread_mutex_unlock(&pirq->lock);
177 struct pirq *pirq;
181 pirq = &pirqs[pi->pi_lintr.pirq_pin - 1];
182 pthread_mutex_lock(&pirq->lock);
183 pirq->active_count--;
184 if (pirq->active_count == 0 && pirq_valid_irq(pirq->reg)) {
185 vm_isa_deassert_irq(pi->pi_vmctx, pirq->reg & PIRQ_IRQ,
187 pthread_mutex_unlock(&pirq->lock);
190 pthread_mutex_unlock(&pirq->lock);