return rc;
}
-struct setup_header {
+struct __packed setup_header {
uint8_t _pad0[0x1f1]; /* skip uninteresting stuff */
uint8_t setup_sects;
uint16_t root_flags;
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)
{
* 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)
{
#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;
u8 revision;
u8 _rsrvd_[5];
struct dmi_eps dmi;
-} __attribute__((packed));
+};
struct dmi_header
{
#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];
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
{
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);
{
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);
{
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
u64 gfn;
#endif
guest_va_t va;
- } __attribute__((packed)) d;
+ } d;
event |= ((GUEST_PAGING_LEVELS-2)<<8);
{
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);
#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);
{
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;
}
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;
if ( is_pv_32on64_vcpu(current) )
{
- struct {
+ struct __packed {
u32 eip, addr, error_code;
- } __attribute__((packed)) d;
+ } d;
d.eip = eip;
d.addr = addr;
}
else
{
- struct {
+ struct __packed {
unsigned long eip, addr;
u32 error_code;
- } __attribute__((packed)) d;
+ } d;
unsigned event;
d.eip = eip;
{
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;
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;
#define lapic ((volatile struct local_apic *)APIC_BASE)
#ifndef __ASSEMBLY__
-struct local_apic {
+struct __packed local_apic {
/*000*/ struct { u32 __reserved[4]; } __reserved_01;
/*3F0*/ struct { u32 __reserved[4]; } __reserved_20;
-} __attribute__ ((packed));
+};
#endif /* !__ASSEMBLY__ */
#undef u32
(((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);
#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
#ifndef __ASSEMBLY__
-struct edd_info {
+struct __packed edd_info {
/* Int13, Fn48: Check Extensions Present. */
u8 device; /* %dl: device */
u8 version; /* %ah: major version */
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;
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[];
/* 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
u64 v: 1;
u64 errorcode:32;
} fields;
-} __attribute__ ((packed)) eventinj_t;
+} eventinj_t;
-typedef union
+typedef union __packed
{
u64 bytes;
struct
u64 vector: 8;
u64 rsvd3: 24;
} fields;
-} __attribute__ ((packed)) vintr_t;
+} vintr_t;
-typedef union
+typedef union __packed
{
u64 bytes;
struct
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
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 */
u64 _lastintfromip; /* cleanbit 10 */
u64 _lastinttoip; /* cleanbit 10 */
u64 res16[301];
-} __attribute__ ((packed));
+};
struct svm_domain {
};
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: "
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);
*/
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;
};
/*
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
__u32 dest32;
} dest;
-} __attribute__ ((packed));
+};
/*
* MP-BIOS irq configuration table structures:
* 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 */
#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)
__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 * \
#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; };
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
#include <xen/acpi.h>
-#ifndef __packed
-#define __packed __attribute__ ((packed))
-#endif
-
typedef struct __packed {
uint32_t data1;
uint16_t data2;
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];
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);