Rev 2262 | Rev 2264 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2262 | Rev 2263 | ||
---|---|---|---|
Line 146... | Line 146... | ||
146 | /** Interrupt Exception handler. |
146 | /** Interrupt Exception handler. |
147 | * Determines the sources of interrupt, and calls their handlers. |
147 | * Determines the sources of interrupt, and calls their handlers. |
148 | */ |
148 | */ |
149 | static void irq_exception(int exc_no, istate_t* istate) |
149 | static void irq_exception(int exc_no, istate_t* istate) |
150 | { |
150 | { |
- | 151 | #if MACHINE == MACHINE_GXEMUL_TESTARM |
|
151 | uint32_t sources = gxemul_irqc_get_sources(); |
152 | uint32_t sources = gxemul_irqc_get_sources(); |
152 | int i = 0; |
153 | int i = 0; |
153 | for (; i < GXEMUL_IRQC_MAX_IRQ; i++) { |
154 | for (; i < GXEMUL_IRQC_MAX_IRQ; i++) { |
154 | if (sources & (1 << i)) { |
155 | if (sources & (1 << i)) { |
155 | irq_t *irq = irq_dispatch_and_lock(i); |
156 | irq_t *irq = irq_dispatch_and_lock(i); |
Line 161... | Line 162... | ||
161 | /* Spurious interrupt.*/ |
162 | /* Spurious interrupt.*/ |
162 | aux_printf("cpu%d: spurious interrupt (inum=%d)\n", CPU->id, i); |
163 | aux_printf("cpu%d: spurious interrupt (inum=%d)\n", CPU->id, i); |
163 | } |
164 | } |
164 | } |
165 | } |
165 | } |
166 | } |
- | 167 | #endif |
|
166 | /* TODO remove after testing the above code |
168 | /* TODO remove after testing the above code |
167 | noirq = 0; |
169 | noirq = 0; |
168 | if (i == CONSOLE_IRQ) { |
170 | if (i == CONSOLE_IRQ) { |
169 | char readchar = *(char*)0x10000000; |
171 | char readchar = *(char*)0x10000000; |
170 | if (readchar == 0) { |
172 | if (readchar == 0) { |