[ipxe-devel] IPXE compilation error with arm64

Meenakshi Aggarwal meenakshi.aggarwal at nxp.com
Tue Apr 18 10:10:46 UTC 2017


Hi,


I tried the command suggested by Michael and 
I am able to build 8086100e.efi successfully.
I am trying same on my setup.

Also,
 I tried to build ipxe.efi (all drivers) and I receive following error:
  [AR] bin-arm64-efi/blib.a
aarch64-linux-gnu-ar: creating bin-arm64-efi/blib.a
  [HOSTCC] util/elf2efi64
  [VERSION] bin-arm64-efi/version.ipxe.efi.o
  [LD] bin-arm64-efi/ipxe.efi.tmp
bin-arm64-efi/blib.a(3c509.o): In function `t509_select_tag':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:101: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_wait_for_id_sequence':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:85: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_send_id_sequence':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:151: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_deactivate_and_reset_tag':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:109: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_set_tag':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:97: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o):/home/meenakshi/ipxe/src/drivers/net/3c509.c:113: more undefined references to `outb' follow
bin-arm64-efi/blib.a(3c509.o): In function `t509_id_read_eeprom':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:177: undefined reference to `inw'
bin-arm64-efi/blib.a(3c509.o): In function `t509_activate':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:105: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_find_id_port':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:127: undefined reference to `outb'
/home/meenakshi/ipxe/src/drivers/net/3c509.c:128: undefined reference to `inb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_reset_tag':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:93: undefined reference to `outb'
bin-arm64-efi/blib.a(3c509.o): In function `t509_set_tag':
/home/meenakshi/ipxe/src/drivers/net/3c509.c:97: undefined reference to `outb'
bin-arm64-efi/blib.a(3c515.o): In function `t515_reset':
/home/meenakshi/ipxe/src/drivers/net/3c515.c:299: undefined reference to `outw'
bin-arm64-efi/blib.a(3c515.o): In function `t515_probe':
/home/meenakshi/ipxe/src/drivers/net/3c515.c:623: undefined reference to `inw'
/home/meenakshi/ipxe/src/drivers/net/3c515.c:632: undefined reference to `outw'
/home/meenakshi/ipxe/src/drivers/net/3c515.c:636: undefined reference to `inw'
/home/meenakshi/ipxe/src/drivers/net/3c515.c:639: undefined reference to `inw'
bin-arm64-efi/blib.a(3c595.o): In function `eeprom_rdy':
/home/meenakshi/ipxe/src/drivers/net/3c595.c:330: undefined reference to `inw'
bin-arm64-efi/blib.a(3c595.o): In function `t595_transmit':
/home/meenakshi/ipxe/src/drivers/net/3c595.c:198: undefined reference to `outw'
/home/meenakshi/ipxe/src/drivers/net/3c595.c:199: undefined reference to `outw'


Thanks,
Meenakshi

-----Original Message-----
From: Andreas Fink [mailto:afink at list.fink.org] 
Sent: Tuesday, April 18, 2017 3:31 PM
To: Meenakshi Aggarwal <meenakshi.aggarwal at nxp.com>
Subject: Re: [ipxe-devel] IPXE compilation error with arm64

As Michael Brown wrote, you would have to compile the ARM version  using

make bin-arm64-efi/8086100e.efi

if you run  make bin-x86_64-efi/ipxe.efi you of course build a x86_64 efi version which only runs on Intel 64 bit architecture CPU's

It was just new to me that ARM64 cpu's even use UEFI at all as all the ARM CPU's I have seen use other booting mechanisms such as uBoot.
So this must be rather new.

> Am 18.04.2017 um 11:56 schrieb Meenakshi Aggarwal <meenakshi.aggarwal at nxp.com>:
> 
> We flashed the uefi bootloader and want to try ipxe from its shell.
> 
> Following last section of http://ipxe.org/download
> 
> UEFI
> iPXE supports both UEFI and BIOS platforms. You can build a UEFI ROM using the .efirom image format. For example:
>  make bin-x86_64-efi/808610de.efirom
> where 808610de is constructed from the network card's PCI vendor and device IDs.
> You can also build a .efi executable which you can chainload from an existing UEFI ROM (or run directly from the UEFI shell):
>  make bin-x86_64-efi/ipxe.efi
> 
> 
> So we want to run it directly form UEFI shell.
> 
> 
> -----Original Message-----
> From: Andreas Fink [mailto:afink at list.fink.org]
> Sent: Tuesday, April 18, 2017 3:22 PM
> To: Meenakshi Aggarwal <meenakshi.aggarwal at nxp.com>
> Subject: Re: [ipxe-devel] IPXE compilation error with arm64
> 
> so your hardware has a EFI bios built in which would load iPXE?
> 
>> Am 18.04.2017 um 11:51 schrieb Meenakshi Aggarwal <meenakshi.aggarwal at nxp.com>:
>> 
>> Hi,
>> 
>> Thanks for your reply.
>> 
>> We have an armv8 based Soc and want to build an efi application of ipxe which I can execute from UEFI shell.
>> 
>> Can I use 8086100e.efi with my Soc?
>> Or is it specific to some particular vendor?
>> 
>> Thanks
>> 
>> -----Original Message-----
>> From: Andreas Fink [mailto:afink at list.fink.org]
>> Sent: Tuesday, April 18, 2017 2:38 PM
>> To: Michael Brown <mcb30 at ipxe.org>
>> Cc: Meenakshi Aggarwal <meenakshi.aggarwal at nxp.com>; 
>> ipxe-devel at lists.ipxe.org
>> Subject: Re: [ipxe-devel] IPXE compilation error with arm64
>> 
>> what hardware does have EFI under ARM?
>> 
>> 
>>> Am 18.04.2017 um 11:06 schrieb Michael Brown <mcb30 at ipxe.org>:
>>> 
>>> On 18/04/17 09:56, Meenakshi Aggarwal wrote:
>>>> 1. Linaro 'aarch64-linux-gnu-gcc' toolchain. version Linaro 
>>>> gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu
>>>> 2. CROSS_COMPILE=aarch64-linux-gnu- 3. ARCH=arm64
>>>> 
>>>> cd ipxe/src
>>>> make
>>>> 
>>>> Error Log
>>>> ---------
>>>> # make
>>>> [BUILD] bin/__divdi3.o
>>>> aarch64-linux-gnu-gcc: error: unrecognized command line option '-mpreferred-stack-boundary=2'
>>>> aarch64-linux-gnu-gcc: error: unrecognized command line option '-mregparm=3'
>>>> aarch64-linux-gnu-gcc: error: unrecognized command line option '-mrtd'
>>>> aarch64-linux-gnu-gcc: error: unrecognized command line option '-m32'
>>>> make: *** [bin/__divdi3.o] Error 1
>>> 
>>> The default "make" will attempt to build the standard i386 BIOS targets, which won't work with the arm64 version of gcc.  You need to choose a suitable arm64 UEFI target, e.g.
>>> 
>>> make bin-arm64-efi/8086100e.efi
>>> 
>>> Note that the "all-drivers" build (bin-arm64-efi/ipxe.efi) is non-functional at present, since we have no arm64 implementation of the port I/O primitives (inb()/outb() etc.).
>>> 
>>> Michael
>>> _______________________________________________
>>> ipxe-devel mailing list
>>> ipxe-devel at lists.ipxe.org
>>> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
>> 
> 




More information about the ipxe-devel mailing list