]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.git/commitdiff
m48t59: avoid structure holes spotted by pahole
authorBlue Swirl <blauwirbel@gmail.com>
Sun, 7 Aug 2011 20:02:02 +0000 (20:02 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sun, 21 Aug 2011 20:02:01 +0000 (20:02 +0000)
Report from pahole on amd64 host:
struct M48t59State {
uint32_t                   type;                 /*     0     4 */

/* XXX 4 bytes hole, try to pack */

qemu_irq                   IRQ;                  /*     8     8 */
uint32_t                   io_base;              /*    16     4 */
uint32_t                   size;                 /*    20     4 */
time_t                     time_offset;          /*    24     8 */
time_t                     stop_time;            /*    32     8 */
struct tm                  alarm;                /*    40    56 */
/* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */
struct QEMUTimer *         alrm_timer;           /*    96     8 */
struct QEMUTimer *         wd_timer;             /*   104     8 */
uint8_t                    lock;                 /*   112     1 */

/* XXX 1 byte hole, try to pack */

uint16_t                   addr;                 /*   114     2 */

/* XXX 4 bytes hole, try to pack */

uint8_t *                  buffer;               /*   120     8 */
/* --- cacheline 2 boundary (128 bytes) --- */

/* size: 128, cachelines: 2 */
/* sum members: 119, holes: 3, sum holes: 9 */
}; /* definitions: 1 */

Fix by rearranging the structure to avoid padding.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
hw/m48t59.c

index 401b9693e17f24ce92cba39652c27af50e1ef9bf..0cc361eedc2ef9dbcdb1e9bdade23c60fc90b53e 100644 (file)
@@ -50,8 +50,6 @@
  */
 
 struct M48t59State {
-    /* Model parameters */
-    uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
     /* Hardware parameters */
     qemu_irq IRQ;
     uint32_t io_base;
@@ -64,9 +62,12 @@ struct M48t59State {
     struct QEMUTimer *alrm_timer;
     struct QEMUTimer *wd_timer;
     /* NVRAM storage */
-    uint8_t  lock;
-    uint16_t addr;
     uint8_t *buffer;
+    /* Model parameters */
+    uint32_t type; /* 2 = m48t02, 8 = m48t08, 59 = m48t59 */
+    /* NVRAM storage */
+    uint16_t addr;
+    uint8_t  lock;
 };
 
 typedef struct M48t59ISAState {