On 27/05/2016 15:38, Richard W.M. Jones wrote: > One way to solve this (which works for me) is as below. There are > some other approaches, eg. using -fno-leading-underscore, or using a > conditional macro to mangle the name. However I have no idea if there > is some preferred way. > > Rich. > > diff --git a/pc-bios/optionrom/linuxboot_dma.c > b/pc-bios/optionrom/linuxboot_dma.c > index 86ef1ce..8509b28 100644 > --- a/pc-bios/optionrom/linuxboot_dma.c > +++ b/pc-bios/optionrom/linuxboot_dma.c > @@ -213,6 +213,9 @@ static uint32_t get_e801_addr(void) > return ret; > } > > +/* Force the asm name without leading underscore, even on Win32. */ > +extern void load_kernel(void) asm("load_kernel"); > + > void load_kernel(void) > { > void *setup_addr;
Yes, that's what I wanted to do. I also need diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile index 2b11cd3..14e7f71 100644 --- a/pc-bios/optionrom/Makefile +++ b/pc-bios/optionrom/Makefile @@ -31,6 +31,7 @@ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin ifdef CONFIG_WIN32 LD_EMULATION = i386pe +CFLAGS += -Wa,-32 else LD_EMULATION = elf_i386 endif to work around what is likely a GCC bug. Paolo