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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user