Revision 84e4fccb hw/arm_gic.c
b/hw/arm_gic.c | ||
---|---|---|
36 | 36 |
#define DPRINTF(fmt, ...) do {} while(0) |
37 | 37 |
#endif |
38 | 38 |
|
39 |
#ifdef NVIC |
|
40 | 39 |
/* The NVIC has 16 internal vectors. However these are not exposed |
41 | 40 |
through the normal GIC interface. */ |
42 |
#define GIC_BASE_IRQ 32 |
|
43 |
#else |
|
44 |
#define GIC_BASE_IRQ 0 |
|
45 |
#endif |
|
41 |
#define GIC_BASE_IRQ ((s->revision == REV_NVIC) ? 32 : 0) |
|
46 | 42 |
|
47 | 43 |
static const uint8_t gic_id[] = { |
48 | 44 |
0x90, 0x13, 0x04, 0x00, 0x0d, 0xf0, 0x05, 0xb1 |
... | ... | |
839 | 835 |
} |
840 | 836 |
|
841 | 837 |
i = s->num_irq - GIC_INTERNAL; |
842 |
#ifndef NVIC |
|
843 | 838 |
/* For the GIC, also expose incoming GPIO lines for PPIs for each CPU. |
844 | 839 |
* GPIO array layout is thus: |
845 | 840 |
* [0..N-1] SPIs |
... | ... | |
847 | 842 |
* [N+32..N+63] PPIs for CPU 1 |
848 | 843 |
* ... |
849 | 844 |
*/ |
850 |
i += (GIC_INTERNAL * s->num_cpu); |
|
851 |
#endif |
|
845 |
if (s->revision != REV_NVIC) { |
|
846 |
i += (GIC_INTERNAL * s->num_cpu); |
|
847 |
} |
|
852 | 848 |
qdev_init_gpio_in(&s->busdev.qdev, gic_set_irq, i); |
853 | 849 |
for (i = 0; i < NUM_CPU(s); i++) { |
854 | 850 |
sysbus_init_irq(&s->busdev, &s->parent_irq[i]); |
Also available in: Unified diff