On 22 Jun 2017, at 16:30, Ed Maste <ema...@freebsd.org> wrote: > > Author: emaste > Date: Thu Jun 22 14:30:09 2017 > New Revision: 320234 > URL: https://svnweb.freebsd.org/changeset/base/320234 > > Log: > Make structure padding explicit in EFI_MEMORY_DESCRIPTOR > > The EFI memory descriptor 64-bit aligns PhysicalStart on both 32- and > 64-bit platforms. Make the padding explicit for i386 EFI. > > Submitted by: Siva Mahadevan <smahade...@freebsdfoundation.org> > MFC after: 3 weeks > Sponsored by: The FreeBSD Foundation > Differential Revision: https://reviews.freebsd.org/D11301 > > Modified: > head/sys/boot/efi/include/efidef.h > > Modified: head/sys/boot/efi/include/efidef.h > ============================================================================== > --- head/sys/boot/efi/include/efidef.h Thu Jun 22 13:31:44 2017 > (r320233) > +++ head/sys/boot/efi/include/efidef.h Thu Jun 22 14:30:09 2017 > (r320234) > @@ -178,6 +178,7 @@ typedef enum { > #define EFI_MEMORY_DESCRIPTOR_VERSION 1 > typedef struct { > UINT32 Type; // Field size is 32 bits > followed by 32 bit pad > + UINT32 Pad; > EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits > EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits > UINT64 NumberOfPages; // Field size is 64 bits
If you explicitly insert padding, it is better to mark the struct as __packed, I think. Or at least also specify the alignment explicitly. -Dimitry
signature.asc
Description: Message signed with OpenPGP