diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2011-08-07 19:06:26 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2011-08-21 19:52:31 +0000 |
commit | 07dd0035d83727ed2b1922a85cd5aea5b010025b (patch) | |
tree | d83989a7a5bd68273a69309befa08cd51f059de0 /hw | |
parent | 97bbb109b1349051390f6b2ad77b1bfb44e3d760 (diff) | |
download | qemu-07dd0035d83727ed2b1922a85cd5aea5b010025b.tar.gz qemu-07dd0035d83727ed2b1922a85cd5aea5b010025b.tar.bz2 qemu-07dd0035d83727ed2b1922a85cd5aea5b010025b.zip |
slavio_intctl: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct SLAVIO_INTCTLState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t intregm_pending; /* 5648 4 */
uint32_t intregm_disabled; /* 5652 4 */
uint32_t target_cpu; /* 5656 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq cpu_irqs[16][16]; /* 5664 2048 */
/* --- cacheline 120 boundary (7680 bytes) was 32 bytes ago --- */
SLAVIO_CPUINTCTLState slaves[16]; /* 7712 384 */
/* --- cacheline 126 boundary (8064 bytes) was 32 bytes ago --- */
/* size: 8096, cachelines: 127 */
/* sum members: 8092, holes: 1, sum holes: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
struct SLAVIO_CPUINTCTLState {
uint32_t intreg_pending; /* 0 4 */
/* XXX 4 bytes hole, try to pack */
struct SLAVIO_INTCTLState * master; /* 8 8 */
uint32_t cpu; /* 16 4 */
uint32_t irl_out; /* 20 4 */
/* size: 24, cachelines: 1 */
/* sum members: 20, holes: 1, sum holes: 4 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/slavio_intctl.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c index a83e5b8272..329c251845 100644 --- a/hw/slavio_intctl.c +++ b/hw/slavio_intctl.c @@ -46,22 +46,22 @@ struct SLAVIO_INTCTLState; typedef struct SLAVIO_CPUINTCTLState { - uint32_t intreg_pending; struct SLAVIO_INTCTLState *master; + uint32_t intreg_pending; uint32_t cpu; uint32_t irl_out; } SLAVIO_CPUINTCTLState; typedef struct SLAVIO_INTCTLState { SysBusDevice busdev; - uint32_t intregm_pending; - uint32_t intregm_disabled; - uint32_t target_cpu; #ifdef DEBUG_IRQ_COUNT uint64_t irq_count[32]; #endif qemu_irq cpu_irqs[MAX_CPUS][MAX_PILS]; SLAVIO_CPUINTCTLState slaves[MAX_CPUS]; + uint32_t intregm_pending; + uint32_t intregm_disabled; + uint32_t target_cpu; } SLAVIO_INTCTLState; #define INTCTL_MAXADDR 0xf |