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>
This commit is contained in:
parent
fe87aa83c6
commit
242cca4fdf
18
hw/fdc.c
18
hw/fdc.c
@ -374,13 +374,13 @@ enum {
|
||||
#define FD_FORMAT_CMD(state) ((state) & FD_STATE_FORMAT)
|
||||
|
||||
struct FDCtrl {
|
||||
qemu_irq irq;
|
||||
/* Controller state */
|
||||
QEMUTimer *result_timer;
|
||||
int dma_chann;
|
||||
/* Controller's identification */
|
||||
uint8_t version;
|
||||
/* HW */
|
||||
qemu_irq irq;
|
||||
int dma_chann;
|
||||
/* Controller state */
|
||||
QEMUTimer *result_timer;
|
||||
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 {
|
||||
|
Loading…
Reference in New Issue
Block a user