]> git.proxmox.com Git - qemu.git/commitdiff
e1000: document ICS read behaviour
authorMichael S. Tsirkin <mst@redhat.com>
Wed, 9 Jan 2013 21:50:00 +0000 (23:50 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 29 Jan 2013 23:31:08 +0000 (01:31 +0200)
Add code comment to clarify the reason we set ICS with ICR:
the reason was previously undocumented and git
log confused rather than clarified the comments.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/e1000.c

index ef06ca18941a014c001df213ecb95cf70ff1b482..ee85c53d38b0683adebc67890785f0d0521e1795 100644 (file)
@@ -237,7 +237,17 @@ set_interrupt_cause(E1000State *s, int index, uint32_t val)
         val |= E1000_ICR_INT_ASSERTED;
     }
     s->mac_reg[ICR] = val;
+
+    /*
+     * Make sure ICR and ICS registers have the same value.
+     * The spec says that the ICS register is write-only.  However in practice,
+     * on real hardware ICS is readable, and for reads it has the same value as
+     * ICR (except that ICS does not have the clear on read behaviour of ICR).
+     *
+     * The VxWorks PRO/1000 driver uses this behaviour.
+     */
     s->mac_reg[ICS] = val;
+
     qemu_set_irq(s->dev.irq[0], (s->mac_reg[IMS] & s->mac_reg[ICR]) != 0);
 }