x86: shuffle use of __attribute__((packed))

This is almost all manual shuffling of __attribute__((packed)) statements to
__packed at the head of the structure.

The only different change is in tboot.h, removing some now-redundant ifdefs.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Andrew Cooper authored and Jan Beulich committed 2014-03-14 09:44:40 +01:00
1 parent b683d68c38
commit 4e5d6d0596
19 files changed
+116 -120

No files matched your search

+2 -2
View File
@@ -146,7 +146,7 @@ static __init int perform_gunzip(char *output, char *image, unsigned long image_
return rc;
}
struct setup_header {
struct __packed setup_header {
uint8_t _pad0[0x1f1]; /* skip uninteresting stuff */
uint8_t setup_sects;
uint16_t root_flags;
@@ -183,7 +183,7 @@ struct setup_header {
uint64_t hardware_subarch_data;
uint32_t payload_offset;
uint32_t payload_length;
} __attribute__((packed));
};
static __init int bzimage_check(struct setup_header *hdr, unsigned long len)
{
+2 -2
View File
@@ -48,11 +48,11 @@
* CPER specification (in UEFI specification 2.3 appendix N) requires
* byte-packed.
*/
struct cper_mce_record {
struct __packed cper_mce_record {
struct cper_record_header hdr;
struct cper_section_descriptor sec_hdr;
struct mce mce;
} __attribute__((packed));
};
int apei_write_mce(struct mce *m)
{
+4 -4
View File
@@ -18,16 +18,16 @@
#define memcpy_fromio memcpy
#define alloc_bootmem(l) xmalloc_bytes(l)
struct dmi_eps {
struct __packed dmi_eps {
char anchor[5]; /* "_DMI_" */
u8 checksum;
u16 size;
u32 address;
u16 num_structures;
u8 revision;
} __attribute__((packed));
};
struct smbios_eps {
struct __packed smbios_eps {
char anchor[4]; /* "_SM_" */
u8 checksum;
u8 length;
@@ -36,7 +36,7 @@ struct smbios_eps {
u8 revision;
u8 _rsrvd_[5];
struct dmi_eps dmi;
} __attribute__((packed));
};
struct dmi_header
{
+4 -4
View File
@@ -27,15 +27,15 @@
#include <asm/microcode.h>
#include <asm/hvm/svm/svm.h>
struct equiv_cpu_entry {
struct __packed equiv_cpu_entry {
uint32_t installed_cpu;
uint32_t fixed_errata_mask;
uint32_t fixed_errata_compare;
uint16_t equiv_cpu;
uint16_t reserved;
} __attribute__((packed));
};
struct microcode_header_amd {
struct __packed microcode_header_amd {
uint32_t data_code;
uint32_t patch_id;
uint8_t mc_patch_data_id[2];
@@ -50,7 +50,7 @@ struct microcode_header_amd {
uint8_t bios_api_rev;
uint8_t reserved1[3];
uint32_t match_reg[8];
} __attribute__((packed));
};
#define UCODE_MAGIC 0x00414d44
#define UCODE_EQUIV_CPU_TABLE_TYPE 0x00000000
+8 -8
View File
@@ -2700,13 +2700,13 @@ static inline void trace_shadow_fixup(guest_l1e_t gl1e,
{
if ( tb_init_done )
{
struct {
struct __packed {
/* for PAE, guest_l1e may be 64 while guest_va may be 32;
so put it first for alignment sake. */
guest_l1e_t gl1e;
guest_va_t va;
u32 flags;
} __attribute__((packed)) d;
} d;
u32 event;
event = TRC_SHADOW_FIXUP | ((GUEST_PAGING_LEVELS-2)<<8);
@@ -2724,13 +2724,13 @@ static inline void trace_not_shadow_fault(guest_l1e_t gl1e,
{
if ( tb_init_done )
{
struct {
struct __packed {
/* for PAE, guest_l1e may be 64 while guest_va may be 32;
so put it first for alignment sake. */
guest_l1e_t gl1e;
guest_va_t va;
u32 flags;
} __attribute__((packed)) d;
} d;
u32 event;
event = TRC_SHADOW_NOT_SHADOW | ((GUEST_PAGING_LEVELS-2)<<8);
@@ -2749,7 +2749,7 @@ static inline void trace_shadow_emulate_other(u32 event,
{
if ( tb_init_done )
{
struct {
struct __packed {
/* for PAE, guest_l1e may be 64 while guest_va may be 32;
so put it first for alignment sake. */
#if GUEST_PAGING_LEVELS == 2
@@ -2758,7 +2758,7 @@ static inline void trace_shadow_emulate_other(u32 event,
u64 gfn;
#endif
guest_va_t va;
} __attribute__((packed)) d;
} d;
event |= ((GUEST_PAGING_LEVELS-2)<<8);
@@ -2779,13 +2779,13 @@ static inline void trace_shadow_emulate(guest_l1e_t gl1e, unsigned long va)
{
if ( tb_init_done )
{
struct {
struct __packed {
/* for PAE, guest_l1e may be 64 while guest_va may be 32;
so put it first for alignment sake. */
guest_l1e_t gl1e, write_val;
guest_va_t va;
unsigned flags:29, emulation_count:3;
} __attribute__((packed)) d;
} d;
u32 event;
event = TRC_SHADOW_EMULATE | ((GUEST_PAGING_LEVELS-2)<<8);
+4 -4
View File
@@ -15,17 +15,17 @@
#include <xen/xenoprof.h>
#include <xen/guest_access.h>
struct frame_head {
struct __packed frame_head {
struct frame_head * ebp;
unsigned long ret;
} __attribute__((packed));
};
typedef struct frame_head frame_head_t;
DEFINE_XEN_GUEST_HANDLE(frame_head_t);
struct frame_head_32bit {
struct __packed frame_head_32bit {
uint32_t ebp;
uint32_t ret;
} __attribute__((packed));
};
typedef struct frame_head_32bit frame_head32_t;
DEFINE_COMPAT_HANDLE(frame_head32_t);
+14 -14
View File
@@ -38,12 +38,12 @@ void __trace_pv_trap(int trapnr, unsigned long eip,
{
if ( is_pv_32on64_vcpu(current) )
{
struct {
struct __packed {
unsigned eip:32,
trapnr:15,
use_error_code:1,
error_code:16;
} __attribute__((packed)) d;
} d;
d.eip = eip;
d.trapnr = trapnr;
@@ -54,12 +54,12 @@ void __trace_pv_trap(int trapnr, unsigned long eip,
}
else
{
struct {
struct __packed {
unsigned long eip;
unsigned trapnr:15,
use_error_code:1,
error_code:16;
} __attribute__((packed)) d;
} d;
unsigned event;
d.eip = eip;
@@ -79,9 +79,9 @@ void __trace_pv_page_fault(unsigned long addr, unsigned error_code)
if ( is_pv_32on64_vcpu(current) )
{
struct {
struct __packed {
u32 eip, addr, error_code;
} __attribute__((packed)) d;
} d;
d.eip = eip;
d.addr = addr;
@@ -91,10 +91,10 @@ void __trace_pv_page_fault(unsigned long addr, unsigned error_code)
}
else
{
struct {
struct __packed {
unsigned long eip, addr;
u32 error_code;
} __attribute__((packed)) d;
} d;
unsigned event;
d.eip = eip;
@@ -125,18 +125,18 @@ void __trace_trap_two_addr(unsigned event, unsigned long va1,
{
if ( is_pv_32on64_vcpu(current) )
{
struct {
struct __packed {
u32 va1, va2;
} __attribute__((packed)) d;
} d;
d.va1=va1;
d.va2=va2;
__trace_var(event, 1, sizeof(d), &d);
}
else
{
struct {
struct __packed {
unsigned long va1, va2;
} __attribute__((packed)) d;
} d;
d.va1=va1;
d.va2=va2;
event |= TRC_64_FLAG;
@@ -158,10 +158,10 @@ void __trace_ptwr_emulation(unsigned long addr, l1_pgentry_t npte)
if ( is_pv_32on64_vcpu(current) )
{
struct {
struct __packed {
l1_pgentry_t pte;
u32 addr, eip;
} __attribute__((packed)) d;
} d;
d.addr = addr;
d.eip = eip;
d.pte = npte;
+2 -2
View File
@@ -142,7 +142,7 @@
#define lapic ((volatile struct local_apic *)APIC_BASE)
#ifndef __ASSEMBLY__
struct local_apic {
struct __packed local_apic {
/*000*/ struct { u32 __reserved[4]; } __reserved_01;
@@ -388,7 +388,7 @@ struct local_apic {
/*3F0*/ struct { u32 __reserved[4]; } __reserved_20;
} __attribute__ ((packed));
};
#endif /* !__ASSEMBLY__ */
#undef u32
+2 -2
View File
@@ -181,10 +181,10 @@ do { \
(((u32)(addr) & 0x00FF0000U) >> 16); \
} while (0)
struct desc_ptr {
struct __packed desc_ptr {
unsigned short limit;
unsigned long base;
} __attribute__((__packed__)) ;
};
extern struct desc_struct boot_cpu_gdt_table[];
DECLARE_PER_CPU(struct desc_struct *, gdt_table);
+2 -2
View File
@@ -10,11 +10,11 @@
#define E820_NVS 4
#define E820_UNUSABLE 5
struct e820entry {
struct __packed e820entry {
uint64_t addr;
uint64_t size;
uint32_t type;
} __attribute__((packed));
};
#define E820MAX 128
+38 -38
View File
@@ -25,7 +25,7 @@
#ifndef __ASSEMBLY__
struct edd_info {
struct __packed edd_info {
/* Int13, Fn48: Check Extensions Present. */
u8 device; /* %dl: device */
u8 version; /* %ah: major version */
@@ -35,7 +35,7 @@ struct edd_info {
u8 legacy_max_head; /* %dh: maximum head number */
u8 legacy_sectors_per_track; /* %cl[5:0]: maximum sector number */
/* Int13, Fn41: Get Device Parameters (as filled into %ds:%esi). */
struct edd_device_params {
struct __packed edd_device_params {
u16 length;
u16 info_flags;
u32 num_default_cylinders;
@@ -51,97 +51,97 @@ struct edd_info {
u8 host_bus_type[4];
u8 interface_type[8];
union {
struct {
struct __packed {
u16 base_address;
u16 reserved1;
u32 reserved2;
} __attribute__ ((packed)) isa;
struct {
} isa;
struct __packed {
u8 bus;
u8 slot;
u8 function;
u8 channel;
u32 reserved;
} __attribute__ ((packed)) pci;
} pci;
/* pcix is same as pci */
struct {
struct __packed {
u64 reserved;
} __attribute__ ((packed)) ibnd;
struct {
} ibnd;
struct __packed {
u64 reserved;
} __attribute__ ((packed)) xprs;
struct {
} xprs;
struct __packed {
u64 reserved;
} __attribute__ ((packed)) htpt;
struct {
} htpt;
struct __packed {
u64 reserved;
} __attribute__ ((packed)) unknown;
} unknown;
} interface_path;
union {
struct {
struct __packed {
u8 device;
u8 reserved1;
u16 reserved2;
u32 reserved3;
u64 reserved4;
} __attribute__ ((packed)) ata;
struct {
} ata;
struct __packed {
u8 device;
u8 lun;
u8 reserved1;
u8 reserved2;
u32 reserved3;
u64 reserved4;
} __attribute__ ((packed)) atapi;
struct {
} atapi;
struct __packed {
u16 id;
u64 lun;
u16 reserved1;
u32 reserved2;
} __attribute__ ((packed)) scsi;
struct {
} scsi;
struct __packed {
u64 serial_number;
u64 reserved;
} __attribute__ ((packed)) usb;
struct {
} usb;
struct __packed {
u64 eui;
u64 reserved;
} __attribute__ ((packed)) i1394;
struct {
} i1394;
struct __packed {
u64 wwid;
u64 lun;
} __attribute__ ((packed)) fibre;
struct {
} fibre;
struct __packed {
u64 identity_tag;
u64 reserved;
} __attribute__ ((packed)) i2o;
struct {
} i2o;
struct __packed {
u32 array_number;
u32 reserved1;
u64 reserved2;
} __attribute__ ((packed)) raid;
struct {
} raid;
struct __packed {
u8 device;
u8 reserved1;
u16 reserved2;
u32 reserved3;
u64 reserved4;
} __attribute__ ((packed)) sata;
struct {
} sata;
struct __packed {
u64 reserved1;
u64 reserved2;
} __attribute__ ((packed)) unknown;
} unknown;
} device_path;
u8 reserved4;
u8 checksum;
} __attribute__ ((packed)) edd_device_params;
} __attribute__ ((packed));
} edd_device_params;
};
struct mbr_signature {
struct __packed mbr_signature {
u8 device;
u8 pad[3];
u32 signature;
} __attribute__ ((packed));
};
/* These all reside in the boot trampoline. Access via bootsym(). */
extern struct mbr_signature boot_mbr_signature[];
+12 -12
View File
@@ -309,7 +309,7 @@ enum VMEXIT_EXITCODE
/* Definition of segment state is borrowed by the generic HVM code. */
typedef struct segment_register svm_segment_register_t;
typedef union
typedef union __packed
{
u64 bytes;
struct
@@ -321,9 +321,9 @@ typedef union
u64 v: 1;
u64 errorcode:32;
} fields;
} __attribute__ ((packed)) eventinj_t;
} eventinj_t;
typedef union
typedef union __packed
{
u64 bytes;
struct
@@ -339,9 +339,9 @@ typedef union
u64 vector: 8;
u64 rsvd3: 24;
} fields;
} __attribute__ ((packed)) vintr_t;
} vintr_t;
typedef union
typedef union __packed
{
u64 bytes;
struct
@@ -356,18 +356,18 @@ typedef union
u64 rsv1: 9;
u64 port: 16;
} fields;
} __attribute__ ((packed)) ioio_info_t;
} ioio_info_t;
typedef union
typedef union __packed
{
u64 bytes;
struct
{
u64 enable:1;
} fields;
} __attribute__ ((packed)) lbrctrl_t;
} lbrctrl_t;
typedef union
typedef union __packed
{
uint32_t bytes;
struct
@@ -397,12 +397,12 @@ typedef union
uint32_t lbr: 1;
uint32_t resv: 21;
} fields;
} __attribute__ ((packed)) vmcbcleanbits_t;
} vmcbcleanbits_t;
#define IOPM_SIZE (12 * 1024)
#define MSRPM_SIZE (8 * 1024)
struct vmcb_struct {
struct __packed vmcb_struct {
u32 _cr_intercepts; /* offset 0x00 - cleanbit 0 */
u32 _dr_intercepts; /* offset 0x04 - cleanbit 0 */
u32 _exception_intercepts; /* offset 0x08 - cleanbit 0 */
@@ -487,7 +487,7 @@ struct vmcb_struct {
u64 _lastintfromip; /* cleanbit 10 */
u64 _lastinttoip; /* cleanbit 10 */
u64 res16[301];
} __attribute__ ((packed));
};
struct svm_domain {
};
+2 -2
View File
@@ -421,11 +421,11 @@ static inline void __invept(unsigned long type, u64 eptp, u64 gpa)
static inline void __invvpid(unsigned long type, u16 vpid, u64 gva)
{
struct {
struct __packed {
u64 vpid:16;
u64 rsvd:48;
u64 gva;
} __attribute__ ((packed)) operand = {vpid, 0, gva};
} operand = {vpid, 0, gva};
/* Fix up #UD exceptions which occur when TLBs are flushed before VMXON. */
asm volatile ( "1: "
+2 -2
View File
@@ -28,11 +28,11 @@ struct ix87_state {
uint32_t fdp;
uint16_t fds, _res6;
} env;
struct ix87_reg {
struct __packed ix87_reg {
uint64_t mantissa;
uint16_t exponent:15;
uint16_t sign:1;
} __attribute__((__packed__)) r[8];
} r[8];
};
void vcpu_restore_fpu_eager(struct vcpu *v);
+10 -10
View File
@@ -36,41 +36,41 @@
*/
union IO_APIC_reg_00 {
u32 raw;
struct {
struct __packed {
u32 __reserved_2 : 14,
LTS : 1,
delivery_type : 1,
__reserved_1 : 8,
ID : 8;
} __attribute__ ((packed)) bits;
} bits;
};
union IO_APIC_reg_01 {
u32 raw;
struct {
struct __packed {
u32 version : 8,
__reserved_2 : 7,
PRQ : 1,
entries : 8,
__reserved_1 : 8;
} __attribute__ ((packed)) bits;
} bits;
};
union IO_APIC_reg_02 {
u32 raw;
struct {
struct __packed {
u32 __reserved_2 : 24,
arbitration : 4,
__reserved_1 : 4;
} __attribute__ ((packed)) bits;
} bits;
};
union IO_APIC_reg_03 {
u32 raw;
struct {
struct __packed {
u32 boot_DT : 1,
__reserved_1 : 31;
} __attribute__ ((packed)) bits;
} bits;
};
/*
@@ -90,7 +90,7 @@ enum ioapic_irq_destination_types {
dest_ExtINT = 7
};
struct IO_APIC_route_entry {
struct __packed IO_APIC_route_entry {
__u32 vector : 8,
delivery_mode : 3, /* 000: FIXED
* 001: lowest prio
@@ -119,7 +119,7 @@ struct IO_APIC_route_entry {
__u32 dest32;
} dest;
} __attribute__ ((packed));
};
/*
* MP-BIOS irq configuration table structures:
+4 -4
View File
@@ -168,7 +168,7 @@ int msi_free_irq(struct msi_desc *entry);
* MSI Defined Data Structures
*/
struct msg_data {
struct __packed msg_data {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u32 vector : 8;
__u32 delivery_mode : 3; /* 000b: FIXED | 001b: lowest prior */
@@ -186,9 +186,9 @@ struct msg_data {
#else
#error "Bitfield endianness not defined! Check your byteorder.h"
#endif
} __attribute__ ((packed));
};
struct msg_address {
struct __packed msg_address {
union {
struct {
#if defined(__LITTLE_ENDIAN_BITFIELD)
@@ -212,7 +212,7 @@ struct msg_address {
__u32 value;
}lo_address;
__u32 hi_address;
} __attribute__ ((packed));
};
#define MAX_MSIX_TABLE_ENTRIES (PCI_MSIX_FLAGS_QSIZE + 1)
#define MAX_MSIX_TABLE_PAGES PFN_UP(MAX_MSIX_TABLE_ENTRIES * \
+2 -2
View File
@@ -412,7 +412,7 @@ static always_inline void __mwait(unsigned long eax, unsigned long ecx)
#define IOBMP_BYTES 8192
#define IOBMP_INVALID_OFFSET 0x8000
struct tss_struct {
struct __packed __cacheline_aligned tss_struct {
unsigned short back_link,__blh;
union { u64 rsp0, esp0; };
union { u64 rsp1, esp1; };
@@ -426,7 +426,7 @@ struct tss_struct {
u16 bitmap;
/* Pads the TSS to be cacheline-aligned (total size is 0x80). */
u8 __cacheline_filler[24];
} __cacheline_aligned __attribute__((packed));
};
#define IST_NONE 0UL
#define IST_DF 1UL
-4
View File
@@ -39,10 +39,6 @@
#include <xen/acpi.h>
#ifndef __packed
#define __packed __attribute__ ((packed))
#endif
typedef struct __packed {
uint32_t data1;
uint16_t data2;
+2 -2
View File
@@ -42,7 +42,7 @@
extern u64 xfeature_mask;
/* extended state save area */
struct xsave_struct
struct __packed __attribute__((aligned (64))) xsave_struct
{
union { /* FPU/MMX, SSE */
char x[512];
@@ -73,7 +73,7 @@ struct xsave_struct
struct { char x[XSTATE_YMM_SIZE]; } ymm; /* YMM */
char data[]; /* Future new states */
} __attribute__ ((packed, aligned (64)));
};
/* extended state operations */
bool_t __must_check set_xcr0(u64 xfeatures);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.