Rev 3675 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3675 | Rev 4377 | ||
|---|---|---|---|
| Line 70... | Line 70... | ||
| 70 | uint64_t status; |
70 | uint64_t status; |
| 71 | uint64_t intrcv; |
71 | uint64_t intrcv; |
| 72 | uint64_t data0; |
72 | uint64_t data0; |
| 73 | status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0); |
73 | status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0); |
| 74 | if (status & (!INTR_DISPATCH_STATUS_BUSY)) |
74 | if (status & (!INTR_DISPATCH_STATUS_BUSY)) |
| 75 | panic("Interrupt Dispatch Status busy bit not set\n"); |
75 | panic("Interrupt Dispatch Status busy bit not set."); |
| 76 | 76 | ||
| 77 | intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0); |
77 | intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0); |
| 78 | #if defined (US) |
78 | #if defined (US) |
| 79 | data0 = asi_u64_read(ASI_INTR_R, ASI_UDB_INTR_R_DATA_0); |
79 | data0 = asi_u64_read(ASI_INTR_R, ASI_UDB_INTR_R_DATA_0); |
| 80 | #elif defined (US3) |
80 | #elif defined (US3) |
| Line 84... | Line 84... | ||
| 84 | irq_t *irq = irq_dispatch_and_lock(data0); |
84 | irq_t *irq = irq_dispatch_and_lock(data0); |
| 85 | if (irq) { |
85 | if (irq) { |
| 86 | /* |
86 | /* |
| 87 | * The IRQ handler was found. |
87 | * The IRQ handler was found. |
| 88 | */ |
88 | */ |
| 89 | irq->handler(irq, irq->arg); |
89 | irq->handler(irq); |
| 90 | /* |
90 | /* |
| 91 | * See if there is a clear-interrupt-routine and call it. |
91 | * See if there is a clear-interrupt-routine and call it. |
| 92 | */ |
92 | */ |
| 93 | if (irq->cir) { |
93 | if (irq->cir) { |
| 94 | irq->cir(irq->cir_arg, irq->inr); |
94 | irq->cir(irq->cir_arg, irq->inr); |