summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2011-08-07 20:02:02 +0000
committerBlue Swirl <blauwirbel@gmail.com>2011-08-21 20:02:01 +0000
commit42c812b98bbdb1d9e12b111f779a4cc6d987727d (patch)
tree5acedc51629ec8aa3ece207b9204ab75327b5a1f
parentd7b9553489f896bbcdb47403edb92f0bfb02eeaa (diff)
downloadhqemu-42c812b98bbdb1d9e12b111f779a4cc6d987727d.zip
hqemu-42c812b98bbdb1d9e12b111f779a4cc6d987727d.tar.gz
m48t59: avoid structure holes spotted by pahole
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>
-rw-r--r--hw/m48t59.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/hw/m48t59.c b/hw/m48t59.c
index 401b969..0cc361e 100644
--- a/hw/m48t59.c
+++ b/hw/m48t59.c
@@ -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 {
OpenPOWER on IntegriCloud