[dev][virtio] remove some extraneous __PACKED attributes
From working with -Wpacked its clear that some of the virtio structures are overly packed and result in bad codegen on particular architectures such as riscv. Roll back from using packed but statically assert that the sizes are correct for some future arch where things naturally pack differently.
This commit is contained in:
@@ -35,13 +35,15 @@ struct virtio_blk_config {
|
||||
uint8_t sectors;
|
||||
} geometry;
|
||||
uint32_t blk_size;
|
||||
} __PACKED;
|
||||
};
|
||||
STATIC_ASSERT(sizeof(struct virtio_blk_config) == 24);
|
||||
|
||||
struct virtio_blk_req {
|
||||
uint32_t type;
|
||||
uint32_t ioprio;
|
||||
uint64_t sector;
|
||||
} __PACKED;
|
||||
};
|
||||
STATIC_ASSERT(sizeof(struct virtio_blk_req) == 16);
|
||||
|
||||
#define VIRTIO_BLK_F_BARRIER (1<<0)
|
||||
#define VIRTIO_BLK_F_SIZE_MAX (1<<1)
|
||||
|
||||
@@ -27,7 +27,8 @@ struct virtio_net_config {
|
||||
uint8_t mac[6];
|
||||
uint16_t status;
|
||||
uint16_t max_virtqueue_pairs;
|
||||
} __PACKED;
|
||||
};
|
||||
STATIC_ASSERT(sizeof(struct virtio_net_config) == 10);
|
||||
|
||||
struct virtio_net_hdr {
|
||||
uint8_t flags;
|
||||
@@ -37,7 +38,8 @@ struct virtio_net_hdr {
|
||||
uint16_t csum_start;
|
||||
uint16_t csum_offset;
|
||||
uint16_t num_buffers; // unused in tx
|
||||
} __PACKED;
|
||||
};
|
||||
STATIC_ASSERT(sizeof(struct virtio_net_hdr) == 12);
|
||||
|
||||
#define VIRTIO_NET_F_CSUM (1<<0)
|
||||
#define VIRTIO_NET_F_GUEST_CSUM (1<<1)
|
||||
|
||||
Reference in New Issue
Block a user