Hi, (James please can you use plain-text email for the mailing list?)
On Wed, 14 Aug 2019 at 01:35, Bin Meng <[email protected]> wrote: > > Hi James, > > On Wed, Aug 14, 2019 at 1:08 PM James Wang <[email protected]> > wrote: >> >> Hi Simon, >> >> >> >> This is James and am working on u-boot to bring back MinGW tool chain for >> cross compiling host tools for Windows on Linux. After complete the code, I >> plan to generate a patch for community review. > > > Do you mean cross compiling U-Boot's mkimage tool for Windows on Linux using > gcc-mingw-w64? Do you want to support building U-Boot on Windows as well? > >> >> >> >> During work, I face an compiling error in file >> <arch/x86/include/asm/byteorder.h> with macro CONFIG_IS_ENABLED. After some >> background study, seems this macro should not be available when compiling >> host tools. >> >> >> >> After check history, it’s from 909780506773a9b09ae88cb267dbfa6a8d0caa7b on >> 2017-01-16 22:04:04, Below is the log message >> >> >> >> x86: Fix up byteorder.h for x86_64 >> >> >> >> Remove the very old x86 code and add support for 64-bit. >> >> >> >> Signed-off-by: Simon Glass <[email protected]> >> >> Reviewed-by: Bin Meng [email protected] >> >> >> >> Below are the relevant changes. >> >> >> >> +#define _constant_swab16(x) ((__u16)( >> \ >> >> + (((__u16)(x) & (__u16)0x00ffU) << 8) | \ >> >> + (((__u16)(x) & (__u16)0xff00U) >> 8))) >> >> + >> >> static __inline__ __u16 ___arch__swab16(__u16 x) >> >> { >> >> +#if CONFIG_IS_ENABLED(X86_64) >> >> + return _constant_swab16(x); >> >> +#else >> >> __asm__("xchgb %b0,%h0" /* swap bytes >> */ \ >> >> : "=q" (x) \ >> >> : "0" (x)); \ >> >> return x; >> >> +#endif >> >> } >> >> >> >> I am not familiar with x86 instructions and not understand the purpose of >> this change, is it because instruction “xchgb” not available on 64-bit >> architecture or something else? > > > I can't remember the details of why Simon changed this. xchgb is available in > 64-bit. We probably need revert this change, Simon? For chromebook_link64 I get: output: '/usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h: Assembler messages: /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h:22: Error: register type mismatch for `xchg' make[2]: *** [/usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/scripts/Makefile.build:278: net/tftp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/net/net.c: In function 'net_process_received_packet': /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/net/net.c:1324:1: error: extended registers have no high halves } ^ /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h: Assembler messages: /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h:22: Error: register type mismatch for `xchg' /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h:22: Error: register type mismatch for `xchg' /usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/arch/x86/include/asm/byteorder.h:22: Error: register type mismatch for `xchg' make[2]: *** [/usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/scripts/Makefile.build:278: net/net.o] Error 1 make[1]: *** [/usr/local/google/home/sjg/cosarm/src/third_party/u-boot/files/Makefile:1588: net] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:148: sub-make] Error 2 Perhaps there is another way to fix this? Regards, Simon _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

