Enable ARCH_USE_BUILTIN_BSWAP by default
RFC 1/1 Enable ARCH_USE_BUILTIN_BSWAP by default
Not sure we should actually *do* this, and if we did it'd be done differently. But... Fengguang, please could you add this (fromgit://git.infradead.org/users/dwmw2/byteswap.git ) and we can see what breaks? Thanks.
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not sure about other platforms. Let's find out :)
Subject: [PATCH] TEST COMMIT: Enable CONFIG_ARCH_USE_BUILTIN_BSWAP for all
architectures
Let's see what breaks...
--- arch/Kconfig | 1 + 1 file changed, 1 insertion(+)
arch/Kconfig +1 -0
@@ -144,6 +144,7 @@ config HAVE_EFFICIENT_UNALIGNED_ACCESS config ARCH_USE_BUILTIN_BSWAP bool + default y help Modern versions of GCC (since 4.4) have builtin functions for handling byte-swapping. Using these, instead of the old
Signature · 5 lines
2.4.3 -- David Woodhouse Open Source Technology Centre [email protected] Intel Corporation
From: David Woodhouse <[email protected]>
Date: Wed, 28 Oct 2015 23:53:52 +0900
Quoted 3 lines
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not sure about other platforms. Let's find out :)
It should properly build on Sparc, but I still need to do my due diligence to see if gcc will actually emit the little-endian loads and stores or not...
Quoted 11 lines · David Miller
From: David Woodhouse <[email protected]>
Date: Wed, 28 Oct 2015 23:53:52 +0900Quoted 2 lines
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not
sure
Quoted 1 line
about other platforms. Let's find out :)
It should properly build on Sparc, but I still need to do my due diligence to see if gcc will actually emit the little-endian loads and stores or not...
The results of the 0-day test (thanks Fengguang) seem to indicate that we need an implementation of __bswapdi2 and __bswapsi2 on SPARC, as well as blackfin, frv, m32r, m68k, microblaze, mips, mn10300, parisc and sh.
I wonder if we could provide a generic weak version in the lib/ directory which just uses the existing __arch_swab32 et al? Does GCC use a standard function call ABI for __bswap[sd]i2 or can it be 'special'?
Signature · 1 line
dwmw2
Quoted 9 lines · David Woodhouse
Quoted 8 lines · David Miller
From: David Woodhouse <[email protected]>
Date: Wed, 28 Oct 2015 23:53:52 +0900Quoted 2 lines
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not
sure
Quoted 1 line
about other platforms. Let's find out :)
Quoted 8 lines
Quoted 3 lines
It should properly build on Sparc, but I still need to do my due diligence to see if gcc will actually emit the little-endian loads and stores or not...
The results of the 0-day test (thanks Fengguang) seem to indicate that we need an implementation of
__bswapdi2and__bswapsi2on SPARC, as well as blackfin, frv, m32r, m68k, microblaze, mips, mn10300, parisc and sh.
Please note that for m68k only m68k-m5475evb_defconfig failed, so it seems to be compiler/config specific.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: David Woodhouse <[email protected]>
Date: Thu, 29 Oct 2015 12:06:34 +0900
Quoted 4 lines
I wonder if we could provide a generic weak version in the
lib/directory which just uses the existing__arch_swab32et al? Does GCC use a standard function call ABI for __bswap[sd]i2 or can it be 'special'?
That's undesirable compared to inlining the asm.
From: David Miller <[email protected]>
Date: Wed, 28 Oct 2015 18:44:15 -0700 (PDT)
Quoted 10 lines
From: David Woodhouse <[email protected]>
Date: Wed, 28 Oct 2015 23:53:52 +0900Quoted 3 lines
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not sure about other platforms. Let's find out :)
It should properly build on Sparc, but I still need to do my due diligence to see if gcc will actually emit the little-endian loads and stores or not...
It does not, instead it emits libgcc calls.
So I don't I can use this on sparc.
Quoted 17 lines · David Miller
From: David Miller <[email protected]>
Date: Wed, 28 Oct 2015 18:44:15 -0700 (PDT)Quoted 10 lines
From: David Woodhouse <[email protected]>
Date: Wed, 28 Oct 2015 23:53:52 +0900Quoted 3 lines
I know MIPS will need some additional libgcc functionality brought into the kernel, and Ralf has already been looking at that; not sure about other platforms. Let's find out :)
It should properly build on Sparc, but I still need to do my due diligence to see if gcc will actually emit the little-endian loads and stores or not...It does not, instead it emits libgcc calls.
So I don't I can use this on sparc.
....
Quoted 6 lines
Quoted 4 lines
I wonder if we could provide a generic weak version in the
lib/directory which just uses the existing__arch_swab32et al? Does GCC use a standard function call ABI for __bswap[sd]i2 or can it be 'special'?That's undesirable compared to inlining the asm.
So... GCC knows *exactly* what this builtin function does.
It is better to inline it than to call an out-of-line function.
Yet GCC emits an out-of-line call instead of just inlining it.
Is that not something we should be filing a GCC PR for?
Basically, we are working around a GCC misbehaviour by using opaque inline asm instead of the GCC builtins that *currently* happen to result in suboptimal code.
We've mostly learned our lesson *not* to do that kind of thing :)
Signature · 1 line
dwmw2
Hi David,
Quoted 4 lines · David Woodhouse
Not sure we should actually *do* this, and if we did it'd be done differently. But... Fengguang, please could you add this (from
git://git.infradead.org/users/dwmw2/byteswap.git) and we can see what breaks? Thanks.
Sure. Here are the errors found up to now:
.
├── blackfin-BF526-EZBRD_defconfig
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapdi2
│ └── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
├── blackfin-BF533-EZKIT_defconfig
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapdi2
│ └── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
├── blackfin-BF561-EZKIT-SMP_defconfig
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapdi2
│ └── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
├── blackfin-TCM-BF537_defconfig
│ ├── crypto-eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── drivers-mtd-chips-cfi_probe.c:(.text):undefined-reference-to-__bswapsi2
│ ├── fs-binfmt_flat.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── kernel-bpf-core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── kernel-bpf-core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── lib-vsprintf.c:(.text):undefined-reference-to-__bswapsi2
│ ├── net-core-filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── net-core-filter.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── frv-defconfig
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── m32r-m32104ut_defconfig
│ ├── ERROR:__bswapdi2-drivers-md-dm-crypt.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-md-dm-snapshot.ko-undefined
│ ├── ERROR:__bswapdi2-fs-udf-udf.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-des_generic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-md4.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-md5.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-serpent_generic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-twofish_generic.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-crypt.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-snapshot.ko-undefined
│ └── ERROR:__bswapsi2-fs-udf-udf.ko-undefined
├── m32r-mappi3.smp_defconfig
│ └── ERROR:__bswapsi2-fs-fat-fat.ko-undefined
├── m32r-opsput_defconfig
│ ├── ERROR:__bswapdi2-fs-udf-udf.ko-undefined
│ ├── ERROR:__bswapsi2-fs-fat-fat.ko-undefined
│ └── ERROR:__bswapsi2-fs-udf-udf.ko-undefined
├── m68k-m5475evb_defconfig
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── pci.c:(.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── microblaze-allnoconfig
│ ├── arch-microblaze-kernel-intc.o:(.text):undefined-reference-to-__bswapsi2
│ ├── arch-microblaze-kernel-timer.o:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── microblaze-mmu_defconfig
│ ├── fs-cifs-cifssmb.c:undefined-reference-to-__bswapdi2
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapdi2
│ └── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
├── microblaze-nommu_defconfig
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapdi2
│ └── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
├── mips-bcm63xx_defconfig
│ ├── aes_generic.c:(.text):undefined-reference-to-__bswapsi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── generic-chip.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── mips-fuloong2e_defconfig
│ ├── commit.c:(.text):undefined-reference-to-__bswapdi2
│ ├── commit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapdi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapsi2
│ ├── revoke.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── mips-rbtx49xx_defconfig
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── mips-rm200_defconfig
│ ├── commit.c:(.text):undefined-reference-to-__bswapdi2
│ ├── commit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapdi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapsi2
│ ├── revoke.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── mips-txx9
│ ├── 8250_early.c:(.init.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── des_generic.c:(.text):undefined-reference-to-__bswapsi2
│ ├── dm-log.c:(.text):undefined-reference-to-__bswapdi2
│ ├── dm-log.c:(.text):undefined-reference-to-__bswapsi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapdi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── ibss.c:(.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── libata-scsi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── linear.c:(.text):undefined-reference-to-__bswapsi2
│ ├── md.c:(.text):undefined-reference-to-__bswapdi2
│ ├── md.c:(.text):undefined-reference-to-__bswapsi2
│ ├── migrate.c:(.text):undefined-reference-to-__bswapsi2
│ ├── mlme.c:(.text):undefined-reference-to-__bswapdi2
│ ├── mlme.c:(.text):undefined-reference-to-__bswapsi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapdi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapsi2
│ ├── quota_v2.c:(.text):undefined-reference-to-__bswapdi2
│ ├── quota_v2.c:(.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ ├── vht.c:(.text):undefined-reference-to-__bswapsi2
│ ├── xattr.c:(.text):undefined-reference-to-__bswapdi2
│ └── xattr.c:(.text):undefined-reference-to-__bswapsi2
├── mn10300-asb2364_defconfig
│ ├── crypto-compress.c:undefined-reference-to-__bswapdi2
│ ├── drivers-video-fbdev-core-fb_notify.c:undefined-reference-to-__bswapsi2
│ ├── fs-readdir.c:undefined-reference-to-__bswapdi2
│ ├── fs-readdir.c:undefined-reference-to-__bswapsi2
│ ├── lib-halfmd4.c:undefined-reference-to-__bswapsi2
│ ├── net-core-netevent.c:undefined-reference-to-__bswapdi2
│ ├── net-core-netevent.c:undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── parisc-c3000_defconfig
│ ├── ERROR:__bswapdi2-drivers-block-umem.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-md-dm-crypt.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-md-dm-log.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-md-dm-snapshot.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-message-fusion-mptbase.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-net-ethernet-intel-e1000-e1000.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-des_generic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-md5.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-block-cryptoloop.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-block-umem.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-crypt.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-log.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-snapshot.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-message-fusion-mptbase.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-message-fusion-mptctl.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-message-fusion-mptscsih.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-message-fusion-mptspi.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-alteon-acenic.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-broadcom-tg3.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-dec-tulip-de2104x.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-intel-e1000-e1000.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-intel-e100.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-scsi-scsi_debug.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-usb-storage-usb-storage.ko-undefined
│ ├── ERROR:__bswapsi2-fs-fat-fat.ko-undefined
│ └── ERROR:__bswapsi2-fs-xfs-xfs.ko-undefined
├── parisc-defconfig
│ ├── ERROR:__bswapdi2-crypto-tgr192.ko-undefined
│ ├── ERROR:__bswapdi2-fs-cifs-cifs.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-md4.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-michael_mic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-serpent_generic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-tea.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-tgr192.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-twofish_generic.ko-undefined
│ └── ERROR:__bswapsi2-fs-cifs-cifs.ko-undefined
├── parisc-generic-64bit_defconfig
│ ├── ERROR:__bswapdi2-drivers-md-dm-raid.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-md-md-mod.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-net-ethernet-qlogic-qlcnic-qlcnic.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-net-ethernet-qlogic-qlge-qlge.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-scsi-qla4xxx-qla4xxx.ko-undefined
│ ├── ERROR:__bswapdi2-drivers-usb-host-xhci-hcd.ko-undefined
│ ├── ERROR:__bswapdi2-fs-btrfs-btrfs.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-des_generic.ko-undefined
│ ├── ERROR:__bswapsi2-crypto-md4.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-ide-ide-gd_mod.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-dm-raid.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-md-md-mod.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-mfd-sm501.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-hp-hp100.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-qlogic-qla3xxx.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-qlogic-qlcnic-qlcnic.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-net-ethernet-qlogic-qlge-qlge.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-scsi-53c700.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-scsi-qla4xxx-qla4xxx.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-ssb-ssb.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-tty-nozomi.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-tty-serial-jsm-jsm.ko-undefined
│ ├── ERROR:__bswapsi2-drivers-usb-host-xhci-hcd.ko-undefined
│ ├── ERROR:__bswapsi2-fs-btrfs-btrfs.ko-undefined
│ └── ERROR:__bswapsi2-fs-fat-fat.ko-undefined
├── sh-allnoconfig
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── sh-dreamcast_defconfig
│ ├── cdrom.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── gdrom.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── sh-ecovec24-romimage_defconfig
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── decompress_unlzo.c:(.init.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── sd.c:(.text):undefined-reference-to-__bswapdi2
│ ├── sd.c:(.text):undefined-reference-to-__bswapsi2
│ ├── sha256_generic.c:(.text):undefined-reference-to-__bswapdi2
│ ├── sha256_generic.c:(.text):undefined-reference-to-__bswapsi2
│ ├── sh_eth.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── sh-rsk7264_defconfig
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── sh-rsk7269_defconfig
│ ├── balloc.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapdi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── indirect.c:(.text):undefined-reference-to-__bswapsi2
│ ├── migrate.c:(.text):undefined-reference-to-__bswapsi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapdi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ ├── xattr.c:(.text):undefined-reference-to-__bswapdi2
│ └── xattr.c:(.text):undefined-reference-to-__bswapsi2
├── sh-se7206_defconfig
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapdi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── sh-se7751_defconfig
│ ├── cfi_probe.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ └── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
├── sh-sh7785lcr_32bit_defconfig
│ ├── arch-sh-include-asm-bitops-llsc.h:undefined-reference-to-__bswapsi2
│ ├── arch-sh-include-asm-unaligned-sh4a.h:undefined-reference-to-__bswapdi2
│ ├── arch-sh-include-uapi-asm-swab.h:undefined-reference-to-__bswapsi2
│ ├── arch-sh-kernel-iomap.c:undefined-reference-to-__bswapsi2
│ ├── drivers-mtd-chips-cfi_probe.c:undefined-reference-to-__bswapsi2
│ ├── drivers-scsi-scsi_scan.c:undefined-reference-to-__bswapsi2
│ ├── drivers-scsi-sd.c:undefined-reference-to-__bswapdi2
│ ├── drivers-scsi-sd.c:undefined-reference-to-__bswapsi2
│ ├── fs-ext4-ext4.h:undefined-reference-to-__bswapsi2
│ ├── fs-jbd2-journal.c:undefined-reference-to-__bswapsi2
│ ├── fs-jbd2-recovery.c:undefined-reference-to-__bswapsi2
│ ├── fs-jbd2-revoke.c:undefined-reference-to-__bswapdi2
│ ├── fs-jbd2-revoke.c:undefined-reference-to-__bswapsi2
│ ├── fs-lockd-clnt4xdr.c:undefined-reference-to-__bswapdi2
│ ├── fs-lockd-xdr4.c:undefined-reference-to-__bswapdi2
│ ├── fs-lockd-xdr4.c:undefined-reference-to-__bswapsi2
│ ├── fs-nfs-callback_xdr.c:undefined-reference-to-__bswapsi2
│ ├── fs-nfs-delegation.c:undefined-reference-to-__bswapsi2
│ ├── fs-nfs-nfs3xdr.c:undefined-reference-to-__bswapdi2
│ ├── fs-nfs-nfs3xdr.c:undefined-reference-to-__bswapsi2
│ ├── fs-nfs-nfs4xdr.c:undefined-reference-to-__bswapdi2
│ ├── fs-nfs-nfs4xdr.c:undefined-reference-to-__bswapsi2
│ ├── include-asm-generic-preempt.h:undefined-reference-to-__bswapsi2
│ ├── include-crypto-scatterwalk.h:undefined-reference-to-__bswapdi2
│ ├── include-linux-buffer_head.h:undefined-reference-to-__bswapsi2
│ ├── include-linux-jbd2.h:undefined-reference-to-__bswapdi2
│ ├── include-linux-jbd2.h:undefined-reference-to-__bswapsi2
│ ├── include-scsi-scsi_device.h:undefined-reference-to-__bswapdi2
│ ├── include-scsi-scsi_device.h:undefined-reference-to-__bswapsi2
│ ├── include-scsi-scsi.h:undefined-reference-to-__bswapsi2
│ ├── include-uapi-linux-swab.h:undefined-reference-to-__bswapsi2
│ ├── init-do_mounts_rd.c:undefined-reference-to-__bswapsi2
│ ├── kernel-bpf-core.c:undefined-reference-to-__bswapdi2
│ ├── kernel-bpf-core.c:undefined-reference-to-__bswapsi2
│ ├── lib-crc32.c:undefined-reference-to-__bswapsi2
│ ├── lib-sha1.c:undefined-reference-to-__bswapsi2
│ ├── lib-vsprintf.c:undefined-reference-to-__bswapsi2
│ ├── net-core-filter.c:undefined-reference-to-__bswapdi2
│ ├── net-core-filter.c:undefined-reference-to-__bswapsi2
│ ├── net-core-tso.c:undefined-reference-to-__bswapsi2
│ ├── net-ipv4-ipconfig.c:undefined-reference-to-__bswapsi2
│ ├── net-ipv4-ip_forward.c:undefined-reference-to-__bswapsi2
│ ├── net-ipv4-ip_options.c:undefined-reference-to-__bswapsi2
│ ├── net-sunrpc-auth_gss-gss_rpc_xdr.c:undefined-reference-to-__bswapdi2
│ └── net-sunrpc-auth_gss-gss_rpc_xdr.c:undefined-reference-to-__bswapsi2
├── sh-titan_defconfig
│ ├── commit.c:(.text):undefined-reference-to-__bswapdi2
│ ├── commit.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── eseqiv.c:(.text):undefined-reference-to-__bswapdi2
│ ├── esp4.c:(.text):undefined-reference-to-__bswapdi2
│ ├── esp4.c:(.text):undefined-reference-to-__bswapsi2
│ ├── esp6.c:(.text):undefined-reference-to-__bswapdi2
│ ├── esp6.c:(.text):undefined-reference-to-__bswapsi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapdi2
│ ├── filter.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.init.text):undefined-reference-to-__bswapsi2
│ ├── ipcomp6.c:(.text):undefined-reference-to-__bswapsi2
│ ├── ipcomp.c:(.text):undefined-reference-to-__bswapsi2
│ ├── journal.c:(.text):undefined-reference-to-__bswapsi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapdi2
│ ├── recovery.c:(.text):undefined-reference-to-__bswapsi2
│ ├── revoke.c:(.text):undefined-reference-to-__bswapsi2
│ ├── sha1_generic.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ ├── vsprintf.c:(.text):undefined-reference-to-__bswapsi2
│ ├── xfrm4_policy.c:(.text):undefined-reference-to-__bswapsi2
│ └── xfrm4_state.c:(.text):undefined-reference-to-__bswapsi2
├── sparc64-allnoconfig
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapdi2
│ └── (.text):undefined-reference-to-__bswapsi2
├── sparc64-defconfig
│ ├── balloc.c:(.text):undefined-reference-to-__bswapsi2
│ ├── core.c:(.text):undefined-reference-to-__bswapdi2
│ ├── core.c:(.text):undefined-reference-to-__bswapsi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapdi2
│ ├── efi.c:(.text):undefined-reference-to-__bswapsi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapdi2
│ ├── extents.c:(.text):undefined-reference-to-__bswapsi2
│ ├── find_bit.c:(.text):undefined-reference-to-__bswapdi2
│ ├── ide-disk.c:(.text):undefined-reference-to-__bswapsi2
│ ├── migrate.c:(.text):undefined-reference-to-__bswapsi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapdi2
│ ├── mmp.c:(.text):undefined-reference-to-__bswapsi2
│ ├── proc.c:(.text):undefined-reference-to-__bswapsi2
│ ├── resize.c:(.text):undefined-reference-to-__bswapsi2
│ ├── super.c:(.text):undefined-reference-to-__bswapdi2
│ ├── super.c:(.text):undefined-reference-to-__bswapsi2
│ ├── (.text):undefined-reference-to-__bswapsi2
│ ├── xattr.c:(.text):undefined-reference-to-__bswapdi2
│ └── xattr.c:(.text):undefined-reference-to-__bswapsi2
└── sparc-defconfig
├── core.c:(.text):undefined-reference-to-__bswapdi2
├── core.c:(.text):undefined-reference-to-__bswapsi2
├── efi.c:(.text):undefined-reference-to-__bswapdi2
├── efi.c:(.text):undefined-reference-to-__bswapsi2
├── find_bit.c:(.text):undefined-reference-to-__bswapsi2
├── (.init.text):undefined-reference-to-__bswapdi2
├── (.init.text):undefined-reference-to-__bswapsi2
├── pcic.c:(.text):undefined-reference-to-__bswapsi2
├── super.c:(.text):undefined-reference-to-__bswapdi2
├── super.c:(.text):undefined-reference-to-__bswapsi2
└── (.text):undefined-reference-to-__bswapsi2Thanks,
Fengguang