diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2011-08-07 19:43:38 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2011-08-21 20:01:57 +0000 |
commit | 242cca4fdfadafca39fa918e78fea6ef89d6decc (patch) | |
tree | d83567b4e8c5e370fcc29511a2a00c30476294d1 | |
parent | fe87aa83c6d0c78bc29230ace4598363cdf4c835 (diff) | |
download | qemu-242cca4fdfadafca39fa918e78fea6ef89d6decc.tar.gz qemu-242cca4fdfadafca39fa918e78fea6ef89d6decc.tar.bz2 qemu-242cca4fdfadafca39fa918e78fea6ef89d6decc.zip |
fdc: avoid structure holes spotted by pahole
Edited report from pahole on amd64 host:
struct FDCtrl {
uint8_t version; /* 0 1 */
/* XXX 7 bytes hole, try to pack */
qemu_irq irq; /* 8 8 */
int dma_chann; /* 16 4 */
/* XXX 4 bytes hole, try to pack */
...
uint8_t status2; /* 42 1 */
/* XXX 5 bytes hole, try to pack */
uint8_t * fifo; /* 48 8 */
...
uint8_t pwrd; /* 76 1 */
/* XXX 3 bytes hole, try to pack */
int sun4m; /* 80 4 */
uint8_t num_floppies; /* 84 1 */
/* XXX 3 bytes hole, try to pack */
FDrive drives[2]; /* 88 64 */
/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
int reset_sensei; /* 152 4 */
/* size: 160, cachelines: 3 */
/* sum members: 134, holes: 5, sum holes: 22 */
/* padding: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r-- | hw/fdc.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -374,13 +374,13 @@ enum { #define FD_FORMAT_CMD(state) ((state) & FD_STATE_FORMAT) struct FDCtrl { - /* Controller's identification */ - uint8_t version; - /* HW */ qemu_irq irq; - int dma_chann; /* Controller state */ QEMUTimer *result_timer; + int dma_chann; + /* Controller's identification */ + uint8_t version; + /* HW */ uint8_t sra; uint8_t srb; uint8_t dor; @@ -401,21 +401,21 @@ struct FDCtrl { uint8_t data_dir; uint8_t eot; /* last wanted sector */ /* States kept only to be returned back */ - /* Timers state */ - uint8_t timer0; - uint8_t timer1; /* precompensation */ uint8_t precomp_trk; uint8_t config; uint8_t lock; /* Power down config (also with status regB access mode */ uint8_t pwrd; - /* Sun4m quirks? */ - int sun4m; /* Floppy drives */ uint8_t num_floppies; + /* Sun4m quirks? */ + int sun4m; FDrive drives[MAX_FD]; int reset_sensei; + /* Timers state */ + uint8_t timer0; + uint8_t timer1; }; typedef struct FDCtrlSysBus { |