*** e1000.c.orig Wed May 20 13:46:59 2009 --- e1000.c Mon Jun 8 14:22:01 2009 *************** *** 155,160 **** --- 155,161 ---- if (val) val |= E1000_ICR_INT_ASSERTED; s->mac_reg[ICR] = val; + s->mac_reg[ICS] = val; qemu_set_irq(s->dev.irq[0], (s->mac_reg[IMS] & s->mac_reg[ICR]) != 0); } *************** *** 275,284 **** { unsigned int index, r = s->mac_reg[EERD] & ~E1000_EEPROM_RW_REG_START; if ((index = r >> E1000_EEPROM_RW_ADDR_SHIFT) > EEPROM_CHECKSUM_REG) ! return 0; ! return (s->eeprom_data[index] << E1000_EEPROM_RW_REG_DATA) | ! E1000_EEPROM_RW_REG_DONE | r; } static void --- 276,289 ---- { unsigned int index, r = s->mac_reg[EERD] & ~E1000_EEPROM_RW_REG_START; + if ((s->mac_reg[EERD] & E1000_EEPROM_RW_REG_START) == 0) + return (s->mac_reg[EERD]); + if ((index = r >> E1000_EEPROM_RW_ADDR_SHIFT) > EEPROM_CHECKSUM_REG) ! return (E1000_EEPROM_RW_REG_DONE | r); ! ! return ((s->eeprom_data[index] << E1000_EEPROM_RW_REG_DATA) | ! E1000_EEPROM_RW_REG_DONE | r); } static void *************** *** 767,773 **** getreg(WUFC), getreg(TDT), getreg(CTRL), getreg(LEDCTL), getreg(MANC), getreg(MDIC), getreg(SWSM), getreg(STATUS), getreg(TORL), getreg(TOTL), getreg(IMS), getreg(TCTL), ! getreg(RDH), getreg(RDT), getreg(VET), [TOTH] = mac_read_clr8, [TORH] = mac_read_clr8, [GPRC] = mac_read_clr4, [GPTC] = mac_read_clr4, [TPR] = mac_read_clr4, [TPT] = mac_read_clr4, --- 772,778 ---- getreg(WUFC), getreg(TDT), getreg(CTRL), getreg(LEDCTL), getreg(MANC), getreg(MDIC), getreg(SWSM), getreg(STATUS), getreg(TORL), getreg(TOTL), getreg(IMS), getreg(TCTL), ! getreg(RDH), getreg(RDT), getreg(VET), getreg(ICS), [TOTH] = mac_read_clr8, [TORH] = mac_read_clr8, [GPRC] = mac_read_clr4, [GPTC] = mac_read_clr4, [TPR] = mac_read_clr4, [TPT] = mac_read_clr4,