Writes to SGIs for GICD_ICFGR register must be ignored. Signed-off-by: Adam Lackorzynski <a...@os.inf.tu-dresden.de> --- hw/intc/arm_gic.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index d2b1aaf..cd6e6ea 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -566,10 +566,13 @@ static void gic_dist_writeb(void *opaque, hwaddr offset, } else { GIC_CLEAR_MODEL(irq + i); } - if (value & (2 << (i * 2))) { - GIC_SET_EDGE_TRIGGER(irq + i); - } else { - GIC_CLEAR_EDGE_TRIGGER(irq + i); + /* SGIs are WI */ + if (irq >= 16) { + if (value & (2 << (i * 2))) { + GIC_SET_EDGE_TRIGGER(irq + i); + } else { + GIC_CLEAR_EDGE_TRIGGER(irq + i); + } } } } else if (offset < 0xf10) { -- 2.0.1