On 23 April 2016 at 09:55, Mark Kettenis <mark.kette...@xs4all.nl> wrote:
>> Date: Sat, 23 Apr 2016 08:25:22 -0400
>> From: Kenneth Westerback <kwesterb...@gmail.com>
>>
>> > And here is a possible fix.  Got the inspiration from the SYSLINUX
>> > bootloader.  This forces alignment of the EFI-specific 64-bit types.
>> > It leaves the normal int64_t/uint64_t alone, but we shouldn't use
>> > those directly to define EFI data structures.
>> >
>> > John, can you confirm that this fixes the issue for you?
>> >
>> > Jonathan, Ken, provided that it does, ok?
>> >
>> >
>> > Index: efi/include/i386/efibind.h
>> > ===================================================================
>> > RCS file: /home/cvs/src/sys/arch/amd64/stand/efi/include/i386/efibind.h,v
>> > retrieving revision 1.2
>> > diff -u -p -r1.2 efibind.h
>> > --- efi/include/i386/efibind.h  11 Dec 2015 20:17:10 -0000      1.2
>> > +++ efi/include/i386/efibind.h  23 Apr 2016 11:38:26 -0000
>> > @@ -88,8 +88,8 @@ Revision History
>> >  #ifndef ACPI_THREAD_ID         /* ACPI's definitions are fine, use those 
>> > */
>> >  #define ACPI_USE_SYSTEM_INTTYPES 1     /* Tell ACPI we've defined types */
>> >
>> > -typedef uint64_t   UINT64;
>> > -typedef int64_t    INT64;
>> > +typedef uint64_t   UINT64 __attribute__((__aligned__(8)));
>> > +typedef int64_t    INT64 __attribute__((__aligned__(8)));
>> >
>> >  #ifndef _BASETSD_H_
>> >      typedef uint32_t   UINT32;
>> >
>>
>> Your analysis is much more useful than mine was. :-). I was wondering
>> how many other places might get bit by the mis-alignment, but this
>> approach would seem to get them all in one fell swoop.
>>
>> If this works it is ok with me. It would be good to get yasuoka@ ok too.
>
> I can confirm it works here.  Just did an install on the eMMC of the
> lenovo stick 300.  Got the same messages that John reported.  But
> boots fine now after installing the BOOTIA32.EFI with my fix.

Excellent. ok krw@

.... Ken

Reply via email to