MPIC_INFO
mpic_map(mpic, mpic->paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
mpic_map(mpic, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
while( mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
MPIC_INFO(CPU_BASE) + cpu * MPIC_INFO(CPU_STRIDE),
greg_feature = mpic_read(mpic->gregs, MPIC_INFO(GREG_FEATURE_0));
MPIC_INFO(IRQ_BASE),
MPIC_INFO(IRQ_STRIDE) * isu_size);
MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf);
offset + MPIC_INFO(TIMER_DESTINATION),
offset + MPIC_INFO(TIMER_VECTOR_PRI),
mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), 1 << cpu);
mpic_write(mpic->gregs, MPIC_INFO(GREG_SPURIOUS), mpic->spurious_vec);
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0);
reg = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI))
mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI),
mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) | msk);
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0);
return mpic_cpu_read(MPIC_INFO(CPU_CURRENT_TASK_PRI));
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio);
mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) & ~msk);
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf);
src = mpic_cpu_read(reg) & MPIC_INFO(VECPRI_VECTOR_MASK);
return _mpic_get_one_irq(mpic, MPIC_INFO(CPU_INTACK));
return _mpic_get_one_irq(mpic, MPIC_INFO(CPU_MCACK));
mpic_cpu_write(MPIC_INFO(CPU_IPI_DISPATCH_0) +
msg * MPIC_INFO(CPU_IPI_DISPATCH_STRIDE), physmask);
pir = mpic_read(mpic->gregs, MPIC_INFO(GREG_PROCESSOR_INIT));
mpic_write(mpic->gregs, MPIC_INFO(GREG_PROCESSOR_INIT), pir);
mpic_read(mpic->gregs, MPIC_INFO(GREG_PROCESSOR_INIT));
mpic_write(mpic->gregs, MPIC_INFO(GREG_PROCESSOR_INIT), pir);
mpic_read(mpic->gregs, MPIC_INFO(GREG_PROCESSOR_INIT));
mpic_irq_read(i, MPIC_INFO(IRQ_VECTOR_PRI));
mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION));
mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI),
mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
unsigned int offset = MPIC_INFO(GREG_IPI_VECTOR_PRI_0) +
(ipi * MPIC_INFO(GREG_IPI_STRIDE));
unsigned int offset = MPIC_INFO(GREG_IPI_VECTOR_PRI_0) +
(ipi * MPIC_INFO(GREG_IPI_STRIDE));
(tm & 3) * MPIC_INFO(TIMER_STRIDE);
MPIC_INFO(TIMER_VECTOR_PRI);
MPIC_INFO(TIMER_VECTOR_PRI);
reg + (idx * MPIC_INFO(IRQ_STRIDE)));
reg + (idx * MPIC_INFO(IRQ_STRIDE)), value);
mpic_write(mpic->gregs, MPIC_INFO(GREG_IPI_VECTOR_PRI_0), MPIC_VECPRI_MASK);
r = mpic_read(mpic->gregs, MPIC_INFO(GREG_IPI_VECTOR_PRI_0));
mpic_cpu_write(MPIC_INFO(CPU_EOI), 0);
mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI),
mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI)) &
} while(mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI)) & MPIC_VECPRI_MASK);
mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI),
mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI)) |
} while(!(mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI)) & MPIC_VECPRI_MASK));
mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);
mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION),
return MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE);
return MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE);
return MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE);
return MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE);
vold = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
vold_ps = vold & (MPIC_INFO(VECPRI_POLARITY_MASK) |
MPIC_INFO(VECPRI_SENSE_MASK));
if (vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE)))
else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_EDGE) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE)))
else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_POSITIVE)))
else if (vold_ps == (MPIC_INFO(VECPRI_SENSE_LEVEL) |
MPIC_INFO(VECPRI_POLARITY_NEGATIVE)))
vnew = vold & ~(MPIC_INFO(VECPRI_POLARITY_MASK) |
MPIC_INFO(VECPRI_SENSE_MASK));
mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI), vnew);
vecpri = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
vecpri = vecpri & ~MPIC_INFO(VECPRI_VECTOR_MASK);
mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);