Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
On Wed, 24 May 2017 02:01:39 PDT (-0700), matt.redfe...@imgtec.com wrote: > Hi Palmer, > This patch doesn't quite match the subject, since it only removes the > mips specific implementation of __ucmpdi2. The following patch removes > all of the intrinsics that you added to lib/ from arch/mips/lib. I've > built & boot tested this on a MIPS pistachio platform. > Note that this patch will require rebasing on linux-next, since it will > conflict with other changes in arch/mips/Kconfig > > Thanks, > Matt > > [PATCH] MIPS: Use generic libgcc intrinsics > > These routines in arch/mips/lib/ are functionally identical to those > recently added to lib/ so remove them and select the generic ones. > > Signed-off-by: Matt Redfearn> --- > arch/mips/Kconfig | 5 + > arch/mips/lib/Makefile | 2 +- > arch/mips/lib/ashldi3.c | 29 - > arch/mips/lib/ashrdi3.c | 31 --- > arch/mips/lib/cmpdi2.c | 27 --- > arch/mips/lib/libgcc.h | 25 - > arch/mips/lib/lshrdi3.c | 29 - > arch/mips/lib/ucmpdi2.c | 21 - > 8 files changed, 6 insertions(+), 163 deletions(-) > delete mode 100644 arch/mips/lib/ashldi3.c > delete mode 100644 arch/mips/lib/ashrdi3.c > delete mode 100644 arch/mips/lib/cmpdi2.c > delete mode 100644 arch/mips/lib/libgcc.h > delete mode 100644 arch/mips/lib/lshrdi3.c > delete mode 100644 arch/mips/lib/ucmpdi2.c Sorry about that, I'll take your version and submit a v2.
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
On Wed, 24 May 2017 02:01:39 PDT (-0700), matt.redfe...@imgtec.com wrote: > Hi Palmer, > This patch doesn't quite match the subject, since it only removes the > mips specific implementation of __ucmpdi2. The following patch removes > all of the intrinsics that you added to lib/ from arch/mips/lib. I've > built & boot tested this on a MIPS pistachio platform. > Note that this patch will require rebasing on linux-next, since it will > conflict with other changes in arch/mips/Kconfig > > Thanks, > Matt > > [PATCH] MIPS: Use generic libgcc intrinsics > > These routines in arch/mips/lib/ are functionally identical to those > recently added to lib/ so remove them and select the generic ones. > > Signed-off-by: Matt Redfearn > --- > arch/mips/Kconfig | 5 + > arch/mips/lib/Makefile | 2 +- > arch/mips/lib/ashldi3.c | 29 - > arch/mips/lib/ashrdi3.c | 31 --- > arch/mips/lib/cmpdi2.c | 27 --- > arch/mips/lib/libgcc.h | 25 - > arch/mips/lib/lshrdi3.c | 29 - > arch/mips/lib/ucmpdi2.c | 21 - > 8 files changed, 6 insertions(+), 163 deletions(-) > delete mode 100644 arch/mips/lib/ashldi3.c > delete mode 100644 arch/mips/lib/ashrdi3.c > delete mode 100644 arch/mips/lib/cmpdi2.c > delete mode 100644 arch/mips/lib/libgcc.h > delete mode 100644 arch/mips/lib/lshrdi3.c > delete mode 100644 arch/mips/lib/ucmpdi2.c Sorry about that, I'll take your version and submit a v2.
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, [auto build test ERROR on linus/master] [also build test ERROR on v4.12-rc2] [cannot apply to next-20170524] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Palmer-Dabbelt/lib-Add-shared-copies-of-some-GCC-library-routines/20170524-170717 config: mips-defconfig (attached as .config) compiler: mips-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=mips All errors (new ones prefixed by >>): >> ERROR: "__ucmpdi2" [fs/xfs/xfs.ko] undefined! --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, [auto build test ERROR on linus/master] [also build test ERROR on v4.12-rc2] [cannot apply to next-20170524] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Palmer-Dabbelt/lib-Add-shared-copies-of-some-GCC-library-routines/20170524-170717 config: mips-defconfig (attached as .config) compiler: mips-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=mips All errors (new ones prefixed by >>): >> ERROR: "__ucmpdi2" [fs/xfs/xfs.ko] undefined! --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, [auto build test ERROR on linus/master] [also build test ERROR on v4.12-rc2] [cannot apply to next-20170524] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Palmer-Dabbelt/lib-Add-shared-copies-of-some-GCC-library-routines/20170524-170717 config: mips-jz4740 (attached as .config) compiler: mips-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=mips All errors (new ones prefixed by >>): kernel/built-in.o: In function `perf_swevent_init': >> core.c:(.text+0x75da8): undefined reference to `__ucmpdi2' drivers/built-in.o: In function `drm_getcap': >> drm_ioctl.c:(.text+0x5d864): undefined reference to `__ucmpdi2' --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, [auto build test ERROR on linus/master] [also build test ERROR on v4.12-rc2] [cannot apply to next-20170524] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Palmer-Dabbelt/lib-Add-shared-copies-of-some-GCC-library-routines/20170524-170717 config: mips-jz4740 (attached as .config) compiler: mips-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=mips All errors (new ones prefixed by >>): kernel/built-in.o: In function `perf_swevent_init': >> core.c:(.text+0x75da8): undefined reference to `__ucmpdi2' drivers/built-in.o: In function `drm_getcap': >> drm_ioctl.c:(.text+0x5d864): undefined reference to `__ucmpdi2' --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, On 23/05/17 23:05, Palmer Dabbelt wrote: These files are functionally identical to the shared copies that I recently added. Signed-off-by: Palmer Dabbelt--- arch/mips/Kconfig | 1 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 2 +- arch/mips/lib/ashrdi3.c | 2 +- arch/mips/lib/cmpdi2.c | 2 +- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c | 2 +- arch/mips/lib/ucmpdi2.c | 21 - 8 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 arch/mips/lib/libgcc.h delete mode 100644 arch/mips/lib/ucmpdi2.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2828ecde133d..b106e6165db0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -70,6 +70,7 @@ config MIPS select HAVE_EXIT_THREAD select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_COPY_THREAD_TLS + select LIB_UCMPDI3 menu "Machine selection" diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 0344e575f522..e38dbafea074 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -15,4 +15,4 @@ obj-$(CONFIG_CPU_R3000) += r3k_dump_tlb.o obj-$(CONFIG_CPU_TX39XX) += r3k_dump_tlb.o # libgcc-style stuff needed in the kernel -obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o ucmpdi2.o +obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c index c3e22053d13e..b3d706155fce 100644 --- a/arch/mips/lib/ashldi3.c +++ b/arch/mips/lib/ashldi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashldi3(long long u, word_type b) { diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c index 17456024873d..bca87aca6f5c 100644 --- a/arch/mips/lib/ashrdi3.c +++ b/arch/mips/lib/ashrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c index 9d849d8743c9..774b109921b5 100644 --- a/arch/mips/lib/cmpdi2.c +++ b/arch/mips/lib/cmpdi2.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include word_type notrace __cmpdi2(long long a, long long b) { diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h deleted file mode 100644 index 05909d58e2fe.. --- a/arch/mips/lib/libgcc.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASM_LIBGCC_H -#define __ASM_LIBGCC_H - -#include - -typedef int word_type __attribute__ ((mode (__word__))); - -#ifdef __BIG_ENDIAN -struct DWstruct { - int high, low; -}; -#elif defined(__LITTLE_ENDIAN) -struct DWstruct { - int low, high; -}; -#else -#error I feel sick. -#endif - -typedef union { - struct DWstruct s; - long long ll; -} DWunion; - -#endif /* __ASM_LIBGCC_H */ diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c index 221167c1be55..ceb1a5c14bc8 100644 --- a/arch/mips/lib/lshrdi3.c +++ b/arch/mips/lib/lshrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __lshrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c deleted file mode 100644 index 08067fa538f2.. --- a/arch/mips/lib/ucmpdi2.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "libgcc.h" - -word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) -{ - const DWunion au = {.ll = a}; - const DWunion bu = {.ll = b}; - - if ((unsigned int) au.s.high < (unsigned int) bu.s.high) - return 0; - else if ((unsigned int) au.s.high > (unsigned int) bu.s.high) - return 2; - if ((unsigned int) au.s.low < (unsigned int) bu.s.low) - return 0; - else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) - return 2; - return 1; -} - -EXPORT_SYMBOL(__ucmpdi2); This patch doesn't quite match the subject, since it only removes the mips specific implementation of __ucmpdi2. The following patch removes all of the intrinsics that you added to lib/ from arch/mips/lib. I've built & boot tested this on a MIPS pistachio platform. Note that this patch will require rebasing on linux-next, since it will conflict with other changes in arch/mips/Kconfig Thanks, Matt [PATCH] MIPS: Use generic libgcc intrinsics These routines in arch/mips/lib/ are functionally identical to those recently added to lib/ so remove them and select the generic ones. Signed-off-by: Matt Redfearn --- arch/mips/Kconfig | 5 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 29 - arch/mips/lib/ashrdi3.c | 31 --- arch/mips/lib/cmpdi2.c | 27 --- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c
Re: [PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
Hi Palmer, On 23/05/17 23:05, Palmer Dabbelt wrote: These files are functionally identical to the shared copies that I recently added. Signed-off-by: Palmer Dabbelt --- arch/mips/Kconfig | 1 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 2 +- arch/mips/lib/ashrdi3.c | 2 +- arch/mips/lib/cmpdi2.c | 2 +- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c | 2 +- arch/mips/lib/ucmpdi2.c | 21 - 8 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 arch/mips/lib/libgcc.h delete mode 100644 arch/mips/lib/ucmpdi2.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2828ecde133d..b106e6165db0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -70,6 +70,7 @@ config MIPS select HAVE_EXIT_THREAD select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_COPY_THREAD_TLS + select LIB_UCMPDI3 menu "Machine selection" diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 0344e575f522..e38dbafea074 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -15,4 +15,4 @@ obj-$(CONFIG_CPU_R3000) += r3k_dump_tlb.o obj-$(CONFIG_CPU_TX39XX) += r3k_dump_tlb.o # libgcc-style stuff needed in the kernel -obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o ucmpdi2.o +obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c index c3e22053d13e..b3d706155fce 100644 --- a/arch/mips/lib/ashldi3.c +++ b/arch/mips/lib/ashldi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashldi3(long long u, word_type b) { diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c index 17456024873d..bca87aca6f5c 100644 --- a/arch/mips/lib/ashrdi3.c +++ b/arch/mips/lib/ashrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c index 9d849d8743c9..774b109921b5 100644 --- a/arch/mips/lib/cmpdi2.c +++ b/arch/mips/lib/cmpdi2.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include word_type notrace __cmpdi2(long long a, long long b) { diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h deleted file mode 100644 index 05909d58e2fe.. --- a/arch/mips/lib/libgcc.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASM_LIBGCC_H -#define __ASM_LIBGCC_H - -#include - -typedef int word_type __attribute__ ((mode (__word__))); - -#ifdef __BIG_ENDIAN -struct DWstruct { - int high, low; -}; -#elif defined(__LITTLE_ENDIAN) -struct DWstruct { - int low, high; -}; -#else -#error I feel sick. -#endif - -typedef union { - struct DWstruct s; - long long ll; -} DWunion; - -#endif /* __ASM_LIBGCC_H */ diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c index 221167c1be55..ceb1a5c14bc8 100644 --- a/arch/mips/lib/lshrdi3.c +++ b/arch/mips/lib/lshrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __lshrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c deleted file mode 100644 index 08067fa538f2.. --- a/arch/mips/lib/ucmpdi2.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "libgcc.h" - -word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) -{ - const DWunion au = {.ll = a}; - const DWunion bu = {.ll = b}; - - if ((unsigned int) au.s.high < (unsigned int) bu.s.high) - return 0; - else if ((unsigned int) au.s.high > (unsigned int) bu.s.high) - return 2; - if ((unsigned int) au.s.low < (unsigned int) bu.s.low) - return 0; - else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) - return 2; - return 1; -} - -EXPORT_SYMBOL(__ucmpdi2); This patch doesn't quite match the subject, since it only removes the mips specific implementation of __ucmpdi2. The following patch removes all of the intrinsics that you added to lib/ from arch/mips/lib. I've built & boot tested this on a MIPS pistachio platform. Note that this patch will require rebasing on linux-next, since it will conflict with other changes in arch/mips/Kconfig Thanks, Matt [PATCH] MIPS: Use generic libgcc intrinsics These routines in arch/mips/lib/ are functionally identical to those recently added to lib/ so remove them and select the generic ones. Signed-off-by: Matt Redfearn --- arch/mips/Kconfig | 5 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 29 - arch/mips/lib/ashrdi3.c | 31 --- arch/mips/lib/cmpdi2.c | 27 --- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c | 29 -
[PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
These files are functionally identical to the shared copies that I recently added. Signed-off-by: Palmer Dabbelt--- arch/mips/Kconfig | 1 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 2 +- arch/mips/lib/ashrdi3.c | 2 +- arch/mips/lib/cmpdi2.c | 2 +- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c | 2 +- arch/mips/lib/ucmpdi2.c | 21 - 8 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 arch/mips/lib/libgcc.h delete mode 100644 arch/mips/lib/ucmpdi2.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2828ecde133d..b106e6165db0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -70,6 +70,7 @@ config MIPS select HAVE_EXIT_THREAD select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_COPY_THREAD_TLS + select LIB_UCMPDI3 menu "Machine selection" diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 0344e575f522..e38dbafea074 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -15,4 +15,4 @@ obj-$(CONFIG_CPU_R3000) += r3k_dump_tlb.o obj-$(CONFIG_CPU_TX39XX) += r3k_dump_tlb.o # libgcc-style stuff needed in the kernel -obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o ucmpdi2.o +obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c index c3e22053d13e..b3d706155fce 100644 --- a/arch/mips/lib/ashldi3.c +++ b/arch/mips/lib/ashldi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashldi3(long long u, word_type b) { diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c index 17456024873d..bca87aca6f5c 100644 --- a/arch/mips/lib/ashrdi3.c +++ b/arch/mips/lib/ashrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c index 9d849d8743c9..774b109921b5 100644 --- a/arch/mips/lib/cmpdi2.c +++ b/arch/mips/lib/cmpdi2.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include word_type notrace __cmpdi2(long long a, long long b) { diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h deleted file mode 100644 index 05909d58e2fe.. --- a/arch/mips/lib/libgcc.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASM_LIBGCC_H -#define __ASM_LIBGCC_H - -#include - -typedef int word_type __attribute__ ((mode (__word__))); - -#ifdef __BIG_ENDIAN -struct DWstruct { - int high, low; -}; -#elif defined(__LITTLE_ENDIAN) -struct DWstruct { - int low, high; -}; -#else -#error I feel sick. -#endif - -typedef union { - struct DWstruct s; - long long ll; -} DWunion; - -#endif /* __ASM_LIBGCC_H */ diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c index 221167c1be55..ceb1a5c14bc8 100644 --- a/arch/mips/lib/lshrdi3.c +++ b/arch/mips/lib/lshrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __lshrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c deleted file mode 100644 index 08067fa538f2.. --- a/arch/mips/lib/ucmpdi2.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "libgcc.h" - -word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) -{ - const DWunion au = {.ll = a}; - const DWunion bu = {.ll = b}; - - if ((unsigned int) au.s.high < (unsigned int) bu.s.high) - return 0; - else if ((unsigned int) au.s.high > (unsigned int) bu.s.high) - return 2; - if ((unsigned int) au.s.low < (unsigned int) bu.s.low) - return 0; - else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) - return 2; - return 1; -} - -EXPORT_SYMBOL(__ucmpdi2); -- 2.13.0
[PATCH 4/7] mips: Use lib/{ashldi3,ashrdi3,cmpdi2,lshrdi3,ucmpdi2}.c
These files are functionally identical to the shared copies that I recently added. Signed-off-by: Palmer Dabbelt --- arch/mips/Kconfig | 1 + arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 2 +- arch/mips/lib/ashrdi3.c | 2 +- arch/mips/lib/cmpdi2.c | 2 +- arch/mips/lib/libgcc.h | 25 - arch/mips/lib/lshrdi3.c | 2 +- arch/mips/lib/ucmpdi2.c | 21 - 8 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 arch/mips/lib/libgcc.h delete mode 100644 arch/mips/lib/ucmpdi2.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2828ecde133d..b106e6165db0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -70,6 +70,7 @@ config MIPS select HAVE_EXIT_THREAD select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_COPY_THREAD_TLS + select LIB_UCMPDI3 menu "Machine selection" diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 0344e575f522..e38dbafea074 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -15,4 +15,4 @@ obj-$(CONFIG_CPU_R3000) += r3k_dump_tlb.o obj-$(CONFIG_CPU_TX39XX) += r3k_dump_tlb.o # libgcc-style stuff needed in the kernel -obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o ucmpdi2.o +obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c index c3e22053d13e..b3d706155fce 100644 --- a/arch/mips/lib/ashldi3.c +++ b/arch/mips/lib/ashldi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashldi3(long long u, word_type b) { diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c index 17456024873d..bca87aca6f5c 100644 --- a/arch/mips/lib/ashrdi3.c +++ b/arch/mips/lib/ashrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __ashrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c index 9d849d8743c9..774b109921b5 100644 --- a/arch/mips/lib/cmpdi2.c +++ b/arch/mips/lib/cmpdi2.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include word_type notrace __cmpdi2(long long a, long long b) { diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h deleted file mode 100644 index 05909d58e2fe.. --- a/arch/mips/lib/libgcc.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASM_LIBGCC_H -#define __ASM_LIBGCC_H - -#include - -typedef int word_type __attribute__ ((mode (__word__))); - -#ifdef __BIG_ENDIAN -struct DWstruct { - int high, low; -}; -#elif defined(__LITTLE_ENDIAN) -struct DWstruct { - int low, high; -}; -#else -#error I feel sick. -#endif - -typedef union { - struct DWstruct s; - long long ll; -} DWunion; - -#endif /* __ASM_LIBGCC_H */ diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c index 221167c1be55..ceb1a5c14bc8 100644 --- a/arch/mips/lib/lshrdi3.c +++ b/arch/mips/lib/lshrdi3.c @@ -1,6 +1,6 @@ #include -#include "libgcc.h" +#include long long notrace __lshrdi3(long long u, word_type b) { diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c deleted file mode 100644 index 08067fa538f2.. --- a/arch/mips/lib/ucmpdi2.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "libgcc.h" - -word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) -{ - const DWunion au = {.ll = a}; - const DWunion bu = {.ll = b}; - - if ((unsigned int) au.s.high < (unsigned int) bu.s.high) - return 0; - else if ((unsigned int) au.s.high > (unsigned int) bu.s.high) - return 2; - if ((unsigned int) au.s.low < (unsigned int) bu.s.low) - return 0; - else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) - return 2; - return 1; -} - -EXPORT_SYMBOL(__ucmpdi2); -- 2.13.0