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


Reply via email to