Rev 3493 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3493 | Rev 3665 | ||
---|---|---|---|
Line 85... | Line 85... | ||
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, irq->arg); |
- | 90 | /* |
|
- | 91 | * See if there is a clear-interrupt-routine and call it. |
|
- | 92 | */ |
|
- | 93 | if (irq->cir) { |
|
- | 94 | irq->cir(irq->cir_arg, irq->inr); |
|
- | 95 | } |
|
90 | spinlock_unlock(&irq->lock); |
96 | spinlock_unlock(&irq->lock); |
91 | } else if (data0 > config.base) { |
97 | } else if (data0 > config.base) { |
92 | /* |
98 | /* |
93 | * This is a cross-call. |
99 | * This is a cross-call. |
94 | * data0 contains address of the kernel function. |
100 | * data0 contains address of the kernel function. |
Line 104... | Line 110... | ||
104 | /* |
110 | /* |
105 | * Spurious interrupt. |
111 | * Spurious interrupt. |
106 | */ |
112 | */ |
107 | #ifdef CONFIG_DEBUG |
113 | #ifdef CONFIG_DEBUG |
108 | printf("cpu%u: spurious interrupt (intrcv=%#" PRIx64 |
114 | printf("cpu%u: spurious interrupt (intrcv=%#" PRIx64 |
109 | ", data0=%#" PRIx64 ")\n", CPU->id, intrcv, data0); |
115 | ", data0=%#" PRIx64 ")\n", CPU->id, intrcv, data0); |
110 | #endif |
116 | #endif |
111 | } |
117 | } |
112 | 118 | ||
113 | membar(); |
119 | membar(); |
114 | asi_u64_write(ASI_INTR_RECEIVE, 0, 0); |
120 | asi_u64_write(ASI_INTR_RECEIVE, 0, 0); |