/seL4-refos-master/libs/libsel4platsupport/src/arch/arm/ |
H A D | device.c | 16 int sel4platsupport_arch_copy_irq_cap(arch_simple_t *arch_simple, ps_irq_t *irq, cspacepath_t *dest) argument 18 switch (irq->type) { 20 return arch_simple_get_IRQ_trigger(arch_simple, irq->trigger.number, irq->trigger.trigger, *dest); 22 return arch_simple_get_IRQ_trigger_cpu(arch_simple, irq->cpu.number, irq->cpu.trigger, irq->cpu.cpu_idx, *dest); 24 ZF_LOGE("unknown irq type");
|
/seL4-refos-master/projects/seL4_libs/libsel4platsupport/src/arch/arm/ |
H A D | device.c | 16 int sel4platsupport_arch_copy_irq_cap(arch_simple_t *arch_simple, ps_irq_t *irq, cspacepath_t *dest) argument 18 switch (irq->type) { 20 return arch_simple_get_IRQ_trigger(arch_simple, irq->trigger.number, irq->trigger.trigger, *dest); 22 return arch_simple_get_IRQ_trigger_cpu(arch_simple, irq->cpu.number, irq->cpu.trigger, irq->cpu.cpu_idx, *dest); 24 ZF_LOGE("unknown irq type");
|
/seL4-refos-master/libs/libsel4platsupport/src/plat/pc99/ |
H A D | device.c | 17 #include <platsupport/irq.h> 19 int sel4platsupport_arch_copy_irq_cap(arch_simple_t *arch_simple, ps_irq_t *irq, cspacepath_t *dest) argument 21 switch (irq->type) { 23 return arch_simple_get_msi(arch_simple, *dest, irq->msi.pci_bus, irq->msi.pci_dev, 24 irq->msi.pci_func, irq->msi.handle, irq->msi.vector); 26 return arch_simple_get_ioapic(arch_simple, *dest, irq->ioapic.ioapic, irq [all...] |
/seL4-refos-master/projects/seL4_libs/libsel4platsupport/src/plat/pc99/ |
H A D | device.c | 17 #include <platsupport/irq.h> 19 int sel4platsupport_arch_copy_irq_cap(arch_simple_t *arch_simple, ps_irq_t *irq, cspacepath_t *dest) argument 21 switch (irq->type) { 23 return arch_simple_get_msi(arch_simple, *dest, irq->msi.pci_bus, irq->msi.pci_dev, 24 irq->msi.pci_func, irq->msi.handle, irq->msi.vector); 26 return arch_simple_get_ioapic(arch_simple, *dest, irq->ioapic.ioapic, irq [all...] |
/seL4-refos-master/kernel/include/arch/riscv/arch/machine/ |
H A D | plic.h | 30 * void plic_complete_claim(irq_t irq): Complete a claim process for an 32 * void plic_mask_irq(bool_t disable, irq_t irq): Disables or enables an 34 * void plic_irq_set_trigger(irq_t irq, bool_t edge_triggered): Configure 45 static inline void plic_complete_claim(irq_t irq) argument 49 static inline void plic_mask_irq(bool_t disable, irq_t irq) argument 54 static inline void plic_irq_set_trigger(irq_t irq, bool_t edge_triggered);
|
/seL4-refos-master/kernel/include/machine/ |
H A D | interrupt.h | 15 * irq handler capabilities refer to an irq_t which is then used by the 16 * kernel to track irq state. An irq_t is also used to interface with an 19 * directly map to harware irq numbers and are also used as indexes into the 20 * kernel's irq cnode that it uses for tracking state. 22 * for a single hardware irq number, such as when there are core local interrupts, 23 * irq_t cannot be assumed to be only a hardware irq number. 27 * CORE_IRQ_TO_IRQT: converts from a core id and hw irq number to an irq_t 28 * IRQT_TO_IDX: converts an irq_t to an index in the irq cnode. It is also used 30 * IDX_TO_IRQT: converts an index in the irq cnode to an irq_t 32 * IRQT_TO_IRQL extracts a hw irq ou 40 word_t irq; member in struct:__anon16 [all...] |
/seL4-refos-master/kernel/include/object/ |
H A D | interrupt.h | 18 exception_t invokeIRQControl(irq_t irq, cte_t *handlerSlot, cte_t *controlSlot); 19 exception_t decodeIRQHandlerInvocation(word_t invLabel, irq_t irq, 21 void invokeIRQHandler_AckIRQ(irq_t irq); 22 void invokeIRQHandler_SetIRQHandler(irq_t irq, cap_t cap, cte_t *slot); 23 void invokeIRQHandler_ClearIRQHandler(irq_t irq); 24 void deletingIRQHandler(irq_t irq); 25 void deletedIRQHandler(irq_t irq); 26 void handleInterrupt(irq_t irq); 27 bool_t isIRQActive(irq_t irq); 28 void setIRQState(irq_state_t irqState, irq_t irq); [all...] |
/seL4-refos-master/kernel/src/object/ |
H A D | interrupt.c | 29 irq_t irq; local 40 irq = CORE_IRQ_TO_IRQT(0, irq_w); 51 if (isIRQActive(irq)) { 53 userError("Rejecting request for IRQ %u. Already active.", (int)IRQT_TO_IRQ(irq)); 60 getExtraCPtr(buffer, 0), (int)IRQT_TO_IRQ(irq)); 68 getExtraCPtr(buffer, 0), (int)IRQT_TO_IRQ(irq)); 73 return invokeIRQControl(irq, destSlot, srcSlot); 79 exception_t invokeIRQControl(irq_t irq, cte_t *handlerSlot, cte_t *controlSlot) argument 81 setIRQState(IRQSignal, irq); 82 cteInsert(cap_irq_handler_cap_new(IRQT_TO_IDX(irq)), controlSlo 87 decodeIRQHandlerInvocation(word_t invLabel, irq_t irq, extra_caps_t excaps) argument 136 invokeIRQHandler_AckIRQ(irq_t irq) argument 151 invokeIRQHandler_SetIRQHandler(irq_t irq, cap_t cap, cte_t *slot) argument 161 invokeIRQHandler_ClearIRQHandler(irq_t irq) argument 170 deletingIRQHandler(irq_t irq) argument 179 deletedIRQHandler(irq_t irq) argument 184 handleInterrupt(irq_t irq) argument 257 isIRQActive(irq_t irq) argument 262 setIRQState(irq_state_t irqState, irq_t irq) argument [all...] |
/seL4-refos-master/kernel/include/arch/arm/arch/machine/ |
H A D | gic_common.h | 30 #define HW_IRQ_IS_SGI(irq) ((irq) < PPI_START) 31 #define HW_IRQ_IS_PPI(irq) ((irq) < NUM_PPI) 34 /* In this case irq_t is a struct with an hw irq field and target core field. 39 * core: 0, irq: 12 -> index 12. 40 * core: 2, irq: 16 -> (2 * 32) + 12 41 * core: 1, irq: 33, (4 total cores) -> (4 * 32) + (33-32). 43 #define IRQ_IS_PPI(_irq) (HW_IRQ_IS_PPI(_irq.irq)) 44 #define CORE_IRQ_TO_IRQT(tgt, _irq) ((irq_t){.irq [all...] |
/seL4-refos-master/kernel/include/arch/riscv/arch/smp/ |
H A D | ipi.h | 18 void ipi_send_target(irq_t irq, word_t cpuTargetList); 20 void ipi_clear_irq(irq_t irq);
|
/seL4-refos-master/kernel/include/plat/pc99/plat/machine/ |
H A D | interrupt.h | 22 static inline void handleReservedIRQ(irq_t irq) argument 25 if (irq == irq_iommu) { 32 printf("Received unhandled reserved IRQ: %d\n", (int)irq); 92 static inline void ackInterrupt(irq_t irq) argument 94 if (config_set(CONFIG_IRQ_PIC) && irq <= irq_isa_max) { 106 static void inline updateIRQState(irq_t irq, x86_irq_state_t state) argument 108 assert(irq <= maxIRQ); 109 x86KSIRQState[irq] = state; 112 static inline void maskInterrupt(bool_t disable, irq_t irq) argument 114 if (irq > [all...] |
/seL4-refos-master/kernel/include/arch/arm/arch/object/ |
H A D | interrupt.h | 20 static inline void handleReservedIRQ(irq_t irq) argument 24 if (IRQT_TO_IRQ(irq) == KERNEL_PMU_IRQ) { 31 if (IRQT_TO_IRQ(irq) == INTERRUPT_VGIC_MAINTENANCE) { 36 if (irqVPPIEventIndex(irq) != VPPIEventIRQ_invalid) { 37 VPPIEvent(irq); 43 if (IRQT_TO_IRQ(irq) == INTERRUPT_SMMU) { 50 printf("Received unhandled reserved IRQ: 0x%lx\n", IRQT_TO_IRQ(irq));
|
/seL4-refos-master/kernel/src/arch/riscv/object/ |
H A D | interrupt.c | 13 exception_t Arch_checkIRQ(word_t irq) argument 15 if (irq > maxIRQ || irq == irqInvalid) { 19 userError("Rejecting request for IRQ %u. IRQ is out of range [1..maxIRQ].", (int)irq); 25 static exception_t Arch_invokeIRQControl(irq_t irq, cte_t *handlerSlot, cte_t *controlSlot, bool_t trigger) argument 28 setIRQTrigger(irq, trigger); 30 return invokeIRQControl(irq, handlerSlot, controlSlot); 50 irq_t irq = (irq_t) irq_w; local 62 if (isIRQActive(irq)) { 64 userError("Rejecting request for IRQ %u. Already active.", (int)irq); [all...] |
/seL4-refos-master/kernel/include/drivers/irq/ |
H A D | am335x.h | 72 irq_t irq = (irq_t)(intcps_sir_irq & 0x7f); local 75 assert((irq / 32) < (sizeof intc->intcps_n / sizeof intc->intcps_n[0])); 76 if (intc->intcps_n[irq / 32].intcps_pending_irq & (1 << (irq & 31))) { 77 return irq; 89 /* Enable or disable irq according to the 'disable' flag. */ 90 static inline void maskInterrupt(bool_t disable, irq_t irq) argument 92 if (likely(irq < maxIRQ)) { 94 intc->intcps_n[irq / 32].intcps_mir_set = 1 << (irq 101 ackInterrupt(irq_t irq) argument [all...] |
H A D | omap3.h | 60 irq_t irq = (irq_t)(intcps_sir_irq & 0x7f); local 64 assert(irq <= maxIRQ); 65 if (intc->intcps_n[irq / 32].intcps_pending_irq & (1 << (irq & 31))) { 66 return irq; 80 /* Enable or disable irq according to the 'disable' flag. */ 81 static inline void maskInterrupt(bool_t disable, irq_t irq) argument 83 if (likely(irq < maxIRQ)) { 85 intc->intcps_n[irq / 32].intcps_mir_set = 1 << (irq 92 ackInterrupt(irq_t irq) argument [all...] |
/seL4-refos-master/kernel/src/plat/bcm2837/machine/ |
H A D | intc.c | 30 uint32_t irq; local 41 irq = (wordBits - 1 - clzl(pending)); 42 if (irq != INTERRUPT_CORE_GPU) { 43 return irq; 70 static inline void maskInterrupt(bool_t disable, irq_t irq) argument 72 switch (irq) { 78 core_regs->coreTimersIrqCtrl[0] &= ~BIT(irq); 80 core_regs->coreTimersIrqCtrl[0] |= BIT(irq); 88 core_regs->coreMailboxesIrqCtrl[0] &= ~BIT(irq); 90 core_regs->coreMailboxesIrqCtrl[0] |= BIT(irq); [all...] |
/seL4-refos-master/libs/librefos/src/refos-util/ |
H A D | device_irq.c | 55 int dev_handle_irq(dev_irq_state_t *irqState, uint32_t irq, argument 60 if (irq >= DEVICE_MAX_IRQ) { 67 if (!irqState->handler[irq].handler) { 69 irqState->handler[irq].handler = irqState->cfg.getIRQHandlerEndpoint( 70 irqState->cfg.getIRQHandlerEndpointCookie, irq 72 if (!irqState->handler[irq].handler) { 73 ROS_WARNING("dev_handle_irq : could not get IRQ handler for irq %u.\n", irq); 80 cvector_add(&irqState->channel[irqState->nextIRQChannel], (cvector_item_t) irq); 88 ROS_WARNING("dev_handle_irq : could not mint badged aep for irq 133 uint32_t irq = (uint32_t) cvector_get(&irqState->channel[i], j); local [all...] |
/seL4-refos-master/projects/refos/impl/libs/librefos/src/refos-util/ |
H A D | device_irq.c | 55 int dev_handle_irq(dev_irq_state_t *irqState, uint32_t irq, argument 60 if (irq >= DEVICE_MAX_IRQ) { 67 if (!irqState->handler[irq].handler) { 69 irqState->handler[irq].handler = irqState->cfg.getIRQHandlerEndpoint( 70 irqState->cfg.getIRQHandlerEndpointCookie, irq 72 if (!irqState->handler[irq].handler) { 73 ROS_WARNING("dev_handle_irq : could not get IRQ handler for irq %u.\n", irq); 80 cvector_add(&irqState->channel[irqState->nextIRQChannel], (cvector_item_t) irq); 88 ROS_WARNING("dev_handle_irq : could not mint badged aep for irq 133 uint32_t irq = (uint32_t) cvector_get(&irqState->channel[i], j); local [all...] |
/seL4-refos-master/kernel/include/arch/riscv/arch/object/ |
H A D | interrupt.h | 13 static inline void handleReservedIRQ(irq_t irq) argument 16 printf("Received unhandled reserved IRQ: %d\n", (int)irq);
|
/seL4-refos-master/kernel/include/plat/spike/plat/instance/rocket-chip/ |
H A D | hardware.h | 17 static inline void plic_complete_claim(irq_t irq) argument 21 static inline void plic_mask_irq(bool_t disable, irq_t irq) argument
|
/seL4-refos-master/kernel/src/plat/pc99/machine/ |
H A D | pic.c | 39 void pic_mask_irq(bool_t mask, irq_t irq) argument 44 assert(irq >= irq_isa_min); 45 assert(irq <= irq_isa_max); 47 if (irq < 8) { 48 bit_mask = BIT(irq); 51 bit_mask = BIT(irq - 8); 90 irq_t irq = getActiveIRQ(); local 91 if (irq >= irq_isa_min + 8) { 92 /* ack slave PIC, unless we got a spurious irq 15 96 if (irq ! [all...] |
/seL4-refos-master/kernel/src/arch/arm/object/ |
H A D | interrupt.c | 13 static exception_t Arch_invokeIRQControl(irq_t irq, cte_t *handlerSlot, cte_t *controlSlot, bool_t trigger) argument 16 setIRQTrigger(irq, trigger); 18 return invokeIRQControl(irq, handlerSlot, controlSlot); 38 irq_t irq = (irq_t) CORE_IRQ_TO_IRQT(0, irq_w); local 51 if (IRQ_IS_PPI(irq)) { 56 if (isIRQActive(irq)) { 58 userError("Rejecting request for IRQ %u. Already active.", (int)IRQT_TO_IRQ(irq)); 65 getExtraCPtr(buffer, 0), (int)IRQT_TO_IRQ(irq)); 74 getExtraCPtr(buffer, 0), (int)IRQT_TO_IRQ(irq)); 79 return Arch_invokeIRQControl(irq, destSlo 89 irq_t irq = CORE_IRQ_TO_IRQT(target, irq_w); local [all...] |
/seL4-refos-master/kernel/src/arch/riscv/machine/ |
H A D | hardware.c | 86 * Gets the new active irq from the PLIC or STIP. 96 * @return The new active irq. 121 * Gets the active irq. Returns the same irq if called again before ackInterrupt. 130 * @return The active irq. 135 uint32_t irq; local 141 irq = active_irq[CURRENT_CPU_INDEX()]; 143 irq = irqInvalid; 146 return irq; 151 * Sets the irq trigge 160 setIRQTrigger(irq_t irq, bool_t edge_triggered) argument 191 maskInterrupt(bool_t disable, irq_t irq) argument 219 ackInterrupt(irq_t irq) argument [all...] |
/seL4-refos-master/libs/libsel4platsupport/src/ |
H A D | device.c | 15 #include <sel4platsupport/irq.h> 21 seL4_Error sel4platsupport_copy_irq_cap(vka_t *vka, simple_t *simple, ps_irq_t *irq, cspacepath_t *dest) argument 25 /* allocate a cslot for the irq cap */ 28 ZF_LOGE("Failed to allocate cslot for irq"); 33 assert(irq->type != PS_NONE); 34 if (irq->type == PS_INTERRUPT) { 35 error = simple_get_IRQ_handler(simple, irq->irq.number, *dest); 37 error = sel4platsupport_arch_copy_irq_cap(&simple->arch_simple, irq, dest); 41 ZF_LOGE("Failed to get cap for irq"); [all...] |
/seL4-refos-master/projects/seL4_libs/libsel4platsupport/src/ |
H A D | device.c | 15 #include <sel4platsupport/irq.h> 21 seL4_Error sel4platsupport_copy_irq_cap(vka_t *vka, simple_t *simple, ps_irq_t *irq, cspacepath_t *dest) argument 25 /* allocate a cslot for the irq cap */ 28 ZF_LOGE("Failed to allocate cslot for irq"); 33 assert(irq->type != PS_NONE); 34 if (irq->type == PS_INTERRUPT) { 35 error = simple_get_IRQ_handler(simple, irq->irq.number, *dest); 37 error = sel4platsupport_arch_copy_irq_cap(&simple->arch_simple, irq, dest); 41 ZF_LOGE("Failed to get cap for irq"); [all...] |