Rev 3655 | Rev 3790 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3655 | Rev 3672 | ||
|---|---|---|---|
| Line 65... | Line 65... | ||
| 65 | * @param n Ignored. |
65 | * @param n Ignored. |
| 66 | * @param istate Ignored. |
66 | * @param istate Ignored. |
| 67 | */ |
67 | */ |
| 68 | void interrupt(int n, istate_t *istate) |
68 | void interrupt(int n, istate_t *istate) |
| 69 | { |
69 | { |
| - | 70 | uint64_t status; |
|
| 70 | uint64_t intrcv; |
71 | uint64_t intrcv; |
| 71 | uint64_t data0; |
72 | uint64_t data0; |
| - | 73 | status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0); |
|
| - | 74 | if (status & (!INTR_DISPATCH_STATUS_BUSY)) |
|
| - | 75 | panic("Interrupt Dispatch Status busy bit not set\n"); |
|
| 72 | 76 | ||
| 73 | intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0); |
77 | intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0); |
| - | 78 | #if defined (US) |
|
| 74 | data0 = asi_u64_read(ASI_UDB_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) |
|
| - | 81 | data0 = asi_u64_read(ASI_INTR_R, VA_INTR_R_DATA_0); |
|
| - | 82 | #endif |
|
| 75 | 83 | ||
| 76 | irq_t *irq = irq_dispatch_and_lock(data0); |
84 | irq_t *irq = irq_dispatch_and_lock(data0); |
| 77 | if (irq) { |
85 | if (irq) { |
| 78 | /* |
86 | /* |
| 79 | * The IRQ handler was found. |
87 | * The IRQ handler was found. |