From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lnhjg-00043p-V8 for qemu-devel@nongnu.org; Sat, 28 Mar 2009 19:14:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lnhjf-00042d-WA for qemu-devel@nongnu.org; Sat, 28 Mar 2009 19:14:44 -0400 Received: from [199.232.76.173] (port=36327 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lnhjf-00042O-PV for qemu-devel@nongnu.org; Sat, 28 Mar 2009 19:14:43 -0400 Received: from savannah.gnu.org ([199.232.41.3]:53520 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Lnhjf-0007ch-FX for qemu-devel@nongnu.org; Sat, 28 Mar 2009 19:14:43 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Lnhje-0005po-Nj for qemu-devel@nongnu.org; Sat, 28 Mar 2009 23:14:42 +0000 Received: from aurel32 by cvs.savannah.gnu.org with local (Exim 4.69) (envelope-from ) id 1Lnhje-0005pg-BU for qemu-devel@nongnu.org; Sat, 28 Mar 2009 23:14:42 +0000 MIME-Version: 1.0 Errors-To: aurel32 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Aurelien Jarno Message-Id: Date: Sat, 28 Mar 2009 23:14:42 +0000 Subject: [Qemu-devel] [6917] hw/eeprom93xx.c: substitute structure dump with discrete dump in eeprom_save/load Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 6917 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6917 Author: aurel32 Date: 2009-03-28 23:14:41 +0000 (Sat, 28 Mar 2009) Log Message: ----------- hw/eeprom93xx.c: substitute structure dump with discrete dump in eeprom_save/load The EEPROM 93xx device used to dump a C structure to the migration stream. This structure includes mixed 8 and 16bit variables and is thus subject to compiler dependent padding. Replace this with discrete dumps of each member (and add a padding byte to ensure compatibility, a version update is included in the following patch). Signed-off-by: Andre Przywara Signed-off-by: Aurelien Jarno Modified Paths: -------------- trunk/hw/eeprom93xx.c Modified: trunk/hw/eeprom93xx.c =================================================================== --- trunk/hw/eeprom93xx.c 2009-03-28 23:14:32 UTC (rev 6916) +++ trunk/hw/eeprom93xx.c 2009-03-28 23:14:41 UTC (rev 6917) @@ -95,7 +95,19 @@ /* Save EEPROM data. */ unsigned address; eeprom_t *eeprom = (eeprom_t *)opaque; - qemu_put_buffer(f, (uint8_t *)eeprom, sizeof(*eeprom) - 2); + + qemu_put_byte(f, eeprom->tick); + qemu_put_byte(f, eeprom->address); + qemu_put_byte(f, eeprom->command); + qemu_put_byte(f, eeprom->writeable); + + qemu_put_byte(f, eeprom->eecs); + qemu_put_byte(f, eeprom->eesk); + qemu_put_byte(f, eeprom->eedo); + + qemu_put_byte(f, eeprom->addrbits); + qemu_put_byte(f, eeprom->size); + qemu_put_byte(f, 0); /* padding for compatiblity */ qemu_put_be16(f, eeprom->data); for (address = 0; address < eeprom->size; address++) { qemu_put_be16(f, eeprom->contents[address]); @@ -111,7 +123,20 @@ if (version_id == eeprom_version) { unsigned address; uint8_t size = eeprom->size; - qemu_get_buffer(f, (uint8_t *)eeprom, sizeof(*eeprom) - 2); + + eeprom->tick = qemu_get_byte(f); + eeprom->address = qemu_get_byte(f); + eeprom->command = qemu_get_byte(f); + eeprom->writeable = qemu_get_byte(f); + + eeprom->eecs = qemu_get_byte(f); + eeprom->eesk = qemu_get_byte(f); + eeprom->eedo = qemu_get_byte(f); + + eeprom->addrbits = qemu_get_byte(f); + eeprom->size = qemu_get_byte(f); + qemu_get_byte(f); /* skip padding byte */ + if (eeprom->size == size) { eeprom->data = qemu_get_be16(f); for (address = 0; address < eeprom->size; address++) {