esp: avoid structure holes spotted by pahole
commit9a975d63563c2d09279b0e9a7fb7c2abcbd512b9
authorBlue Swirl <blauwirbel@gmail.com>
Sun, 7 Aug 2011 19:33:30 +0000 (7 19:33 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sun, 21 Aug 2011 19:52:36 +0000 (21 19:52 +0000)
tree5ab0b81405e4f60d224ad34ea83a0ecd2009b8fb
parent61999750d3df96ee3f2b111420c7d0a117e57df7
esp: avoid structure holes spotted by pahole

Report from pahole on amd64 host:
struct ESPState {
SysBusDevice               busdev;               /*     0  5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t                   it_shift;             /*  5648     4 */

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

qemu_irq                   irq;                  /*  5656     8 */
uint8_t                    rregs[16];            /*  5664    16 */
uint8_t                    wregs[16];            /*  5680    16 */
/* --- cacheline 89 boundary (5696 bytes) --- */
int32_t                    ti_size;              /*  5696     4 */
uint32_t                   ti_rptr;              /*  5700     4 */
uint32_t                   ti_wptr;              /*  5704     4 */
uint8_t                    ti_buf[16];           /*  5708    16 */
uint32_t                   status;               /*  5724     4 */
uint32_t                   dma;                  /*  5728     4 */

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

SCSIBus                    bus;                  /*  5736  2120 */
/* --- cacheline 122 boundary (7808 bytes) was 48 bytes ago --- */
SCSIDevice *               current_dev;          /*  7856     8 */
SCSIRequest *              current_req;          /*  7864     8 */
/* --- cacheline 123 boundary (7872 bytes) --- */
uint8_t                    cmdbuf[16];           /*  7872    16 */
uint32_t                   cmdlen;               /*  7888     4 */
uint32_t                   do_cmd;               /*  7892     4 */
uint32_t                   dma_left;             /*  7896     4 */
uint32_t                   dma_counter;          /*  7900     4 */
uint8_t *                  async_buf;            /*  7904     8 */
uint32_t                   async_len;            /*  7912     4 */

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

ESPDMAMemoryReadWriteFunc  dma_memory_read;      /*  7920     8 */
ESPDMAMemoryReadWriteFunc  dma_memory_write;     /*  7928     8 */
/* --- cacheline 124 boundary (7936 bytes) --- */
void *                     dma_opaque;           /*  7936     8 */
int                        dma_enabled;          /*  7944     4 */

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

void                       (*dma_cb)(ESPState *); /*  7952     8 */

/* size: 7960, cachelines: 125 */
/* sum members: 7944, holes: 4, sum holes: 16 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */

Fix by rearranging the structure to avoid padding.

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