|
@@ -156,17 +156,6 @@ static void gic_set_irq_11mpcore(GICState *s, int irq, int level,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void gic_set_irq_nvic(GICState *s, int irq, int level,
|
|
|
|
- int cm, int target)
|
|
|
|
-{
|
|
|
|
- if (level) {
|
|
|
|
- GIC_SET_LEVEL(irq, cm);
|
|
|
|
- GIC_SET_PENDING(irq, target);
|
|
|
|
- } else {
|
|
|
|
- GIC_CLEAR_LEVEL(irq, cm);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void gic_set_irq_generic(GICState *s, int irq, int level,
|
|
static void gic_set_irq_generic(GICState *s, int irq, int level,
|
|
int cm, int target)
|
|
int cm, int target)
|
|
{
|
|
{
|
|
@@ -214,8 +203,6 @@ static void gic_set_irq(void *opaque, int irq, int level)
|
|
|
|
|
|
if (s->revision == REV_11MPCORE) {
|
|
if (s->revision == REV_11MPCORE) {
|
|
gic_set_irq_11mpcore(s, irq, level, cm, target);
|
|
gic_set_irq_11mpcore(s, irq, level, cm, target);
|
|
- } else if (s->revision == REV_NVIC) {
|
|
|
|
- gic_set_irq_nvic(s, irq, level, cm, target);
|
|
|
|
} else {
|
|
} else {
|
|
gic_set_irq_generic(s, irq, level, cm, target);
|
|
gic_set_irq_generic(s, irq, level, cm, target);
|
|
}
|
|
}
|
|
@@ -367,7 +354,7 @@ uint32_t gic_acknowledge_irq(GICState *s, int cpu, MemTxAttrs attrs)
|
|
return 1023;
|
|
return 1023;
|
|
}
|
|
}
|
|
|
|
|
|
- if (s->revision == REV_11MPCORE || s->revision == REV_NVIC) {
|
|
|
|
|
|
+ if (s->revision == REV_11MPCORE) {
|
|
/* Clear pending flags for both level and edge triggered interrupts.
|
|
/* Clear pending flags for both level and edge triggered interrupts.
|
|
* Level triggered IRQs will be reasserted once they become inactive.
|
|
* Level triggered IRQs will be reasserted once they become inactive.
|
|
*/
|
|
*/
|
|
@@ -589,11 +576,6 @@ void gic_complete_irq(GICState *s, int cpu, int irq, MemTxAttrs attrs)
|
|
DPRINTF("Set %d pending mask %x\n", irq, cm);
|
|
DPRINTF("Set %d pending mask %x\n", irq, cm);
|
|
GIC_SET_PENDING(irq, cm);
|
|
GIC_SET_PENDING(irq, cm);
|
|
}
|
|
}
|
|
- } else if (s->revision == REV_NVIC) {
|
|
|
|
- if (GIC_TEST_LEVEL(irq, cm)) {
|
|
|
|
- DPRINTF("Set nvic %d pending mask %x\n", irq, cm);
|
|
|
|
- GIC_SET_PENDING(irq, cm);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
group = gic_has_groups(s) && GIC_TEST_GROUP(irq, cm);
|
|
group = gic_has_groups(s) && GIC_TEST_GROUP(irq, cm);
|
|
@@ -768,7 +750,7 @@ static uint32_t gic_dist_readb(void *opaque, hwaddr offset, MemTxAttrs attrs)
|
|
} else if (offset < 0xf10) {
|
|
} else if (offset < 0xf10) {
|
|
goto bad_reg;
|
|
goto bad_reg;
|
|
} else if (offset < 0xf30) {
|
|
} else if (offset < 0xf30) {
|
|
- if (s->revision == REV_11MPCORE || s->revision == REV_NVIC) {
|
|
|
|
|
|
+ if (s->revision == REV_11MPCORE) {
|
|
goto bad_reg;
|
|
goto bad_reg;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -802,9 +784,6 @@ static uint32_t gic_dist_readb(void *opaque, hwaddr offset, MemTxAttrs attrs)
|
|
case 2:
|
|
case 2:
|
|
res = gic_id_gicv2[(offset - 0xfd0) >> 2];
|
|
res = gic_id_gicv2[(offset - 0xfd0) >> 2];
|
|
break;
|
|
break;
|
|
- case REV_NVIC:
|
|
|
|
- /* Shouldn't be able to get here */
|
|
|
|
- abort();
|
|
|
|
default:
|
|
default:
|
|
res = 0;
|
|
res = 0;
|
|
}
|
|
}
|
|
@@ -1028,7 +1007,7 @@ static void gic_dist_writeb(void *opaque, hwaddr offset,
|
|
continue; /* Ignore Non-secure access of Group0 IRQ */
|
|
continue; /* Ignore Non-secure access of Group0 IRQ */
|
|
}
|
|
}
|
|
|
|
|
|
- if (s->revision == REV_11MPCORE || s->revision == REV_NVIC) {
|
|
|
|
|
|
+ if (s->revision == REV_11MPCORE) {
|
|
if (value & (1 << (i * 2))) {
|
|
if (value & (1 << (i * 2))) {
|
|
GIC_SET_MODEL(irq + i);
|
|
GIC_SET_MODEL(irq + i);
|
|
} else {
|
|
} else {
|
|
@@ -1046,7 +1025,7 @@ static void gic_dist_writeb(void *opaque, hwaddr offset,
|
|
goto bad_reg;
|
|
goto bad_reg;
|
|
} else if (offset < 0xf20) {
|
|
} else if (offset < 0xf20) {
|
|
/* GICD_CPENDSGIRn */
|
|
/* GICD_CPENDSGIRn */
|
|
- if (s->revision == REV_11MPCORE || s->revision == REV_NVIC) {
|
|
|
|
|
|
+ if (s->revision == REV_11MPCORE) {
|
|
goto bad_reg;
|
|
goto bad_reg;
|
|
}
|
|
}
|
|
irq = (offset - 0xf10);
|
|
irq = (offset - 0xf10);
|
|
@@ -1060,7 +1039,7 @@ static void gic_dist_writeb(void *opaque, hwaddr offset,
|
|
}
|
|
}
|
|
} else if (offset < 0xf30) {
|
|
} else if (offset < 0xf30) {
|
|
/* GICD_SPENDSGIRn */
|
|
/* GICD_SPENDSGIRn */
|
|
- if (s->revision == REV_11MPCORE || s->revision == REV_NVIC) {
|
|
|
|
|
|
+ if (s->revision == REV_11MPCORE) {
|
|
goto bad_reg;
|
|
goto bad_reg;
|
|
}
|
|
}
|
|
irq = (offset - 0xf20);
|
|
irq = (offset - 0xf20);
|