Hi,

On Wed, Mar 28, 2018 at 10:19:50PM +0200, Heinrich Schuchardt wrote:
> Without the flag a "data abort" occured when compiling with gcc 6.3 for
> armhf and running on an Allwinner A20 SOC in function efi_devpath_end().

I think this may be a bug in the UEFI implementation (which I guess is
U-Boot?). In the 2.7 UEFI spec, section 2.3.5 states that for AArch32:

  Unaligned access should be enabled if supported; Alignment faults are
  enabled otherwise.

All ARMv6 and ARMv7 CPUs (including the COrtex-A7s in the A20 SoC)
support unaligned accesses to normal memory, as would be the case for
memory accessed by efi_devpath_end().

Unless GCC is generating misaligned LDM/STM instructions, I believe this
is a FW bug that would be worth reporting, regardless of whether this
patch is taken on the IPXE side.

Thanks,
Mark.

> 
> The flag is usable both with GCC and LLVM.
> 
> With some console commands enabled bin-arm32-efi/snp.efi grows from 148448
> to 154464 bytes.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
> ---
>  src/arch/arm32/Makefile | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/arch/arm32/Makefile b/src/arch/arm32/Makefile
> index 3a7c0923..fc72af11 100644
> --- a/src/arch/arm32/Makefile
> +++ b/src/arch/arm32/Makefile
> @@ -5,6 +5,7 @@ SRCDIRS               += arch/arm32/libgcc
>  
>  # ARM32-specific flags
>  #
> +CFLAGS               += -mno-unaligned-access
>  CFLAGS               += -mthumb -mcpu=cortex-a15 -mabi=aapcs -mfloat-abi=soft
>  CFLAGS               += -mword-relocations
>  ASFLAGS              += -mthumb -mcpu=cortex-a15
> -- 
> 2.11.0
> 
> _______________________________________________
> ipxe-devel mailing list
> ipxe-devel@lists.ipxe.org
> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to