* [PATCH v2 0/2] MIPS: use generic GCC library routines from lib/ @ 2018-01-30 22:42 Antony Pavlov 2018-01-30 22:42 ` [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c Antony Pavlov 2018-01-30 22:42 ` [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov 0 siblings, 2 replies; 8+ messages in thread From: Antony Pavlov @ 2018-01-30 22:42 UTC (permalink / raw) To: linux-mips; +Cc: James Hogan, Ralf Baechle, linux-kernel Changes since v1 patch series (https://www.linux-mips.org/archives/linux-mips/2018-01/msg00394.html): * sort the CONFIG_* options in arch/mips/Kconfig alphabetically; * add notrace to lib/ucmpdi2.c. Antony Pavlov (1): MIPS: use generic GCC library routines from lib/ Palmer Dabbelt (1): Add notrace to lib/ucmpdi2.c arch/mips/Kconfig | 5 +++++ arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 30 ------------------------------ arch/mips/lib/ashrdi3.c | 32 -------------------------------- arch/mips/lib/cmpdi2.c | 28 ---------------------------- arch/mips/lib/lshrdi3.c | 30 ------------------------------ arch/mips/lib/ucmpdi2.c | 22 ---------------------- lib/ucmpdi2.c | 2 +- 8 files changed, 7 insertions(+), 144 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/lshrdi3.c delete mode 100644 arch/mips/lib/ucmpdi2.c -- 2.11.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c 2018-01-30 22:42 [PATCH v2 0/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov @ 2018-01-30 22:42 ` Antony Pavlov 2018-01-31 11:54 ` Matt Redfearn 2018-02-08 17:27 ` Palmer Dabbelt 2018-01-30 22:42 ` [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov 1 sibling, 2 replies; 8+ messages in thread From: Antony Pavlov @ 2018-01-30 22:42 UTC (permalink / raw) To: linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt, Matt Redfearn From: Palmer Dabbelt <palmer@sifive.com> As part of the MIPS conversion to use the generic GCC library routines, Matt Redfearn discovered that I'd missed a notrace on __ucmpdi2(). This patch rectifies the problem. CC: Matt Redfearn <matt.redfearn@mips.com> CC: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Palmer Dabbelt <palmer@sifive.com> --- lib/ucmpdi2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ucmpdi2.c b/lib/ucmpdi2.c index 25ca2d4c1e19..597998169a96 100644 --- a/lib/ucmpdi2.c +++ b/lib/ucmpdi2.c @@ -17,7 +17,7 @@ #include <linux/module.h> #include <linux/libgcc.h> -word_type __ucmpdi2(unsigned long long a, unsigned long long b) +word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) { const DWunion au = {.ll = a}; const DWunion bu = {.ll = b}; -- 2.11.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c @ 2018-01-31 11:54 ` Matt Redfearn 0 siblings, 0 replies; 8+ messages in thread From: Matt Redfearn @ 2018-01-31 11:54 UTC (permalink / raw) To: Antony Pavlov, linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt Hi On 30/01/18 22:42, Antony Pavlov wrote: > From: Palmer Dabbelt <palmer@sifive.com> > > As part of the MIPS conversion to use the generic GCC library routines, > Matt Redfearn discovered that I'd missed a notrace on __ucmpdi2(). This > patch rectifies the problem. > > CC: Matt Redfearn <matt.redfearn@mips.com> > CC: Antony Pavlov <antonynpavlov@gmail.com> > Signed-off-by: Palmer Dabbelt <palmer@sifive.com> Looks good to me :-) Reviewed-by: Matt Redfearn <amtt.redfearn@mips.com> > --- > lib/ucmpdi2.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/ucmpdi2.c b/lib/ucmpdi2.c > index 25ca2d4c1e19..597998169a96 100644 > --- a/lib/ucmpdi2.c > +++ b/lib/ucmpdi2.c > @@ -17,7 +17,7 @@ > #include <linux/module.h> > #include <linux/libgcc.h> > > -word_type __ucmpdi2(unsigned long long a, unsigned long long b) > +word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) > { > const DWunion au = {.ll = a}; > const DWunion bu = {.ll = b}; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c @ 2018-01-31 11:54 ` Matt Redfearn 0 siblings, 0 replies; 8+ messages in thread From: Matt Redfearn @ 2018-01-31 11:54 UTC (permalink / raw) To: Antony Pavlov, linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt Hi On 30/01/18 22:42, Antony Pavlov wrote: > From: Palmer Dabbelt <palmer@sifive.com> > > As part of the MIPS conversion to use the generic GCC library routines, > Matt Redfearn discovered that I'd missed a notrace on __ucmpdi2(). This > patch rectifies the problem. > > CC: Matt Redfearn <matt.redfearn@mips.com> > CC: Antony Pavlov <antonynpavlov@gmail.com> > Signed-off-by: Palmer Dabbelt <palmer@sifive.com> Looks good to me :-) Reviewed-by: Matt Redfearn <amtt.redfearn@mips.com> > --- > lib/ucmpdi2.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/ucmpdi2.c b/lib/ucmpdi2.c > index 25ca2d4c1e19..597998169a96 100644 > --- a/lib/ucmpdi2.c > +++ b/lib/ucmpdi2.c > @@ -17,7 +17,7 @@ > #include <linux/module.h> > #include <linux/libgcc.h> > > -word_type __ucmpdi2(unsigned long long a, unsigned long long b) > +word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) > { > const DWunion au = {.ll = a}; > const DWunion bu = {.ll = b}; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c 2018-01-30 22:42 ` [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c Antony Pavlov 2018-01-31 11:54 ` Matt Redfearn @ 2018-02-08 17:27 ` Palmer Dabbelt 1 sibling, 0 replies; 8+ messages in thread From: Palmer Dabbelt @ 2018-02-08 17:27 UTC (permalink / raw) To: antonynpavlov; +Cc: linux-mips, jhogan, ralf, linux-kernel, matt.redfearn On Tue, 30 Jan 2018 14:42:01 PST (-0800), antonynpavlov@gmail.com wrote: > From: Palmer Dabbelt <palmer@sifive.com> > > As part of the MIPS conversion to use the generic GCC library routines, > Matt Redfearn discovered that I'd missed a notrace on __ucmpdi2(). This > patch rectifies the problem. > > CC: Matt Redfearn <matt.redfearn@mips.com> > CC: Antony Pavlov <antonynpavlov@gmail.com> > Signed-off-by: Palmer Dabbelt <palmer@sifive.com> > --- > lib/ucmpdi2.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/ucmpdi2.c b/lib/ucmpdi2.c > index 25ca2d4c1e19..597998169a96 100644 > --- a/lib/ucmpdi2.c > +++ b/lib/ucmpdi2.c > @@ -17,7 +17,7 @@ > #include <linux/module.h> > #include <linux/libgcc.h> > > -word_type __ucmpdi2(unsigned long long a, unsigned long long b) > +word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) > { > const DWunion au = {.ll = a}; > const DWunion bu = {.ll = b}; Thanks for submitting this, I've gotten quite a bit behind due to FOSDEM. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ 2018-01-30 22:42 [PATCH v2 0/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov 2018-01-30 22:42 ` [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c Antony Pavlov @ 2018-01-30 22:42 ` Antony Pavlov 2018-01-31 11:55 ` Matt Redfearn 1 sibling, 1 reply; 8+ messages in thread From: Antony Pavlov @ 2018-01-30 22:42 UTC (permalink / raw) To: linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt, Matt Redfearn The commit b35cd9884fa5 ("lib: Add shared copies of some GCC library routines") makes it possible to share generic GCC library routines by several architectures. This commit removes several generic GCC library routines from arch/mips/lib/ in favour of similar routines from lib/. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Cc: Palmer Dabbelt <palmer@sifive.com> Cc: Matt Redfearn <matt.redfearn@mips.com> Cc: James Hogan <jhogan@kernel.org> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org --- arch/mips/Kconfig | 5 +++++ arch/mips/lib/Makefile | 2 +- arch/mips/lib/ashldi3.c | 30 ------------------------------ arch/mips/lib/ashrdi3.c | 32 -------------------------------- arch/mips/lib/cmpdi2.c | 28 ---------------------------- arch/mips/lib/lshrdi3.c | 30 ------------------------------ arch/mips/lib/ucmpdi2.c | 22 ---------------------- 7 files changed, 6 insertions(+), 143 deletions(-) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 350a990fc719..6f786d576dd2 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -73,6 +73,11 @@ config MIPS select RTC_LIB if !MACH_LOONGSON64 select SYSCTL_EXCEPTION_TRACE select VIRT_TO_BUS + select GENERIC_ASHLDI3 + select GENERIC_ASHRDI3 + select GENERIC_CMPDI2 + select GENERIC_LSHRDI3 + select GENERIC_UCMPDI2 menu "Machine selection" diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 78c2affeabf8..195ab4cb0840 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -16,4 +16,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 += bswapsi.o bswapdi.o diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c deleted file mode 100644 index 24cd6903e797..000000000000 --- a/arch/mips/lib/ashldi3.c +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/export.h> - -#include "libgcc.h" - -long long notrace __ashldi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - w.s.low = 0; - w.s.high = (unsigned int) uu.s.low << -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.low >> bm; - - w.s.low = (unsigned int) uu.s.low << b; - w.s.high = ((unsigned int) uu.s.high << b) | carries; - } - - return w.ll; -} - -EXPORT_SYMBOL(__ashldi3); diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c deleted file mode 100644 index 23f5295af51e..000000000000 --- a/arch/mips/lib/ashrdi3.c +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/export.h> - -#include "libgcc.h" - -long long notrace __ashrdi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - /* w.s.high = 1..1 or 0..0 */ - w.s.high = - uu.s.high >> 31; - w.s.low = uu.s.high >> -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.high << bm; - - w.s.high = uu.s.high >> b; - w.s.low = ((unsigned int) uu.s.low >> b) | carries; - } - - return w.ll; -} - -EXPORT_SYMBOL(__ashrdi3); diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c deleted file mode 100644 index 93cfc785927d..000000000000 --- a/arch/mips/lib/cmpdi2.c +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/export.h> - -#include "libgcc.h" - -word_type notrace __cmpdi2(long long a, long long b) -{ - const DWunion au = { - .ll = a - }; - const DWunion bu = { - .ll = b - }; - - if (au.s.high < bu.s.high) - return 0; - else if (au.s.high > 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(__cmpdi2); diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c deleted file mode 100644 index 914b971aca3b..000000000000 --- a/arch/mips/lib/lshrdi3.c +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/export.h> - -#include "libgcc.h" - -long long notrace __lshrdi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - w.s.high = 0; - w.s.low = (unsigned int) uu.s.high >> -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.high << bm; - - w.s.high = (unsigned int) uu.s.high >> b; - w.s.low = ((unsigned int) uu.s.low >> b) | carries; - } - - return w.ll; -} - -EXPORT_SYMBOL(__lshrdi3); diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c deleted file mode 100644 index c31c78ca4175..000000000000 --- a/arch/mips/lib/ucmpdi2.c +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/export.h> - -#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.11.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ @ 2018-01-31 11:55 ` Matt Redfearn 0 siblings, 0 replies; 8+ messages in thread From: Matt Redfearn @ 2018-01-31 11:55 UTC (permalink / raw) To: Antony Pavlov, linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt Hi, On 30/01/18 22:42, Antony Pavlov wrote: > The commit b35cd9884fa5 ("lib: Add shared copies of > some GCC library routines") makes it possible > to share generic GCC library routines by several > architectures. > > This commit removes several generic GCC library > routines from arch/mips/lib/ in favour of similar > routines from lib/. > > Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> > Cc: Palmer Dabbelt <palmer@sifive.com> > Cc: Matt Redfearn <matt.redfearn@mips.com> > Cc: James Hogan <jhogan@kernel.org> > Cc: Ralf Baechle <ralf@linux-mips.org> > Cc: linux-mips@linux-mips.org > Cc: linux-kernel@vger.kernel.org > --- > arch/mips/Kconfig | 5 +++++ > arch/mips/lib/Makefile | 2 +- > arch/mips/lib/ashldi3.c | 30 ------------------------------ > arch/mips/lib/ashrdi3.c | 32 -------------------------------- > arch/mips/lib/cmpdi2.c | 28 ---------------------------- > arch/mips/lib/lshrdi3.c | 30 ------------------------------ > arch/mips/lib/ucmpdi2.c | 22 ---------------------- > 7 files changed, 6 insertions(+), 143 deletions(-) > > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 350a990fc719..6f786d576dd2 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -73,6 +73,11 @@ config MIPS > select RTC_LIB if !MACH_LOONGSON64 > select SYSCTL_EXCEPTION_TRACE > select VIRT_TO_BUS > + select GENERIC_ASHLDI3 > + select GENERIC_ASHRDI3 > + select GENERIC_CMPDI2 > + select GENERIC_LSHRDI3 > + select GENERIC_UCMPDI2 Please keep the alphabetical order. With that fixed, Reviewed-by: Matt Redfearn <amtt.redfearn@mips.com> Thanks, Matt > > menu "Machine selection" > > diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile > index 78c2affeabf8..195ab4cb0840 100644 > --- a/arch/mips/lib/Makefile > +++ b/arch/mips/lib/Makefile > @@ -16,4 +16,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 += bswapsi.o bswapdi.o > diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c > deleted file mode 100644 > index 24cd6903e797..000000000000 > --- a/arch/mips/lib/ashldi3.c > +++ /dev/null > @@ -1,30 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __ashldi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - w.s.low = 0; > - w.s.high = (unsigned int) uu.s.low << -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.low >> bm; > - > - w.s.low = (unsigned int) uu.s.low << b; > - w.s.high = ((unsigned int) uu.s.high << b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__ashldi3); > diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c > deleted file mode 100644 > index 23f5295af51e..000000000000 > --- a/arch/mips/lib/ashrdi3.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __ashrdi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - /* w.s.high = 1..1 or 0..0 */ > - w.s.high = > - uu.s.high >> 31; > - w.s.low = uu.s.high >> -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.high << bm; > - > - w.s.high = uu.s.high >> b; > - w.s.low = ((unsigned int) uu.s.low >> b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__ashrdi3); > diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c > deleted file mode 100644 > index 93cfc785927d..000000000000 > --- a/arch/mips/lib/cmpdi2.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -word_type notrace __cmpdi2(long long a, long long b) > -{ > - const DWunion au = { > - .ll = a > - }; > - const DWunion bu = { > - .ll = b > - }; > - > - if (au.s.high < bu.s.high) > - return 0; > - else if (au.s.high > 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(__cmpdi2); > diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c > deleted file mode 100644 > index 914b971aca3b..000000000000 > --- a/arch/mips/lib/lshrdi3.c > +++ /dev/null > @@ -1,30 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __lshrdi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - w.s.high = 0; > - w.s.low = (unsigned int) uu.s.high >> -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.high << bm; > - > - w.s.high = (unsigned int) uu.s.high >> b; > - w.s.low = ((unsigned int) uu.s.low >> b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__lshrdi3); > diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c > deleted file mode 100644 > index c31c78ca4175..000000000000 > --- a/arch/mips/lib/ucmpdi2.c > +++ /dev/null > @@ -1,22 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#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); > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ @ 2018-01-31 11:55 ` Matt Redfearn 0 siblings, 0 replies; 8+ messages in thread From: Matt Redfearn @ 2018-01-31 11:55 UTC (permalink / raw) To: Antony Pavlov, linux-mips Cc: James Hogan, Ralf Baechle, linux-kernel, Palmer Dabbelt Hi, On 30/01/18 22:42, Antony Pavlov wrote: > The commit b35cd9884fa5 ("lib: Add shared copies of > some GCC library routines") makes it possible > to share generic GCC library routines by several > architectures. > > This commit removes several generic GCC library > routines from arch/mips/lib/ in favour of similar > routines from lib/. > > Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> > Cc: Palmer Dabbelt <palmer@sifive.com> > Cc: Matt Redfearn <matt.redfearn@mips.com> > Cc: James Hogan <jhogan@kernel.org> > Cc: Ralf Baechle <ralf@linux-mips.org> > Cc: linux-mips@linux-mips.org > Cc: linux-kernel@vger.kernel.org > --- > arch/mips/Kconfig | 5 +++++ > arch/mips/lib/Makefile | 2 +- > arch/mips/lib/ashldi3.c | 30 ------------------------------ > arch/mips/lib/ashrdi3.c | 32 -------------------------------- > arch/mips/lib/cmpdi2.c | 28 ---------------------------- > arch/mips/lib/lshrdi3.c | 30 ------------------------------ > arch/mips/lib/ucmpdi2.c | 22 ---------------------- > 7 files changed, 6 insertions(+), 143 deletions(-) > > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 350a990fc719..6f786d576dd2 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -73,6 +73,11 @@ config MIPS > select RTC_LIB if !MACH_LOONGSON64 > select SYSCTL_EXCEPTION_TRACE > select VIRT_TO_BUS > + select GENERIC_ASHLDI3 > + select GENERIC_ASHRDI3 > + select GENERIC_CMPDI2 > + select GENERIC_LSHRDI3 > + select GENERIC_UCMPDI2 Please keep the alphabetical order. With that fixed, Reviewed-by: Matt Redfearn <amtt.redfearn@mips.com> Thanks, Matt > > menu "Machine selection" > > diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile > index 78c2affeabf8..195ab4cb0840 100644 > --- a/arch/mips/lib/Makefile > +++ b/arch/mips/lib/Makefile > @@ -16,4 +16,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 += bswapsi.o bswapdi.o > diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c > deleted file mode 100644 > index 24cd6903e797..000000000000 > --- a/arch/mips/lib/ashldi3.c > +++ /dev/null > @@ -1,30 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __ashldi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - w.s.low = 0; > - w.s.high = (unsigned int) uu.s.low << -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.low >> bm; > - > - w.s.low = (unsigned int) uu.s.low << b; > - w.s.high = ((unsigned int) uu.s.high << b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__ashldi3); > diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c > deleted file mode 100644 > index 23f5295af51e..000000000000 > --- a/arch/mips/lib/ashrdi3.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __ashrdi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - /* w.s.high = 1..1 or 0..0 */ > - w.s.high = > - uu.s.high >> 31; > - w.s.low = uu.s.high >> -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.high << bm; > - > - w.s.high = uu.s.high >> b; > - w.s.low = ((unsigned int) uu.s.low >> b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__ashrdi3); > diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c > deleted file mode 100644 > index 93cfc785927d..000000000000 > --- a/arch/mips/lib/cmpdi2.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -word_type notrace __cmpdi2(long long a, long long b) > -{ > - const DWunion au = { > - .ll = a > - }; > - const DWunion bu = { > - .ll = b > - }; > - > - if (au.s.high < bu.s.high) > - return 0; > - else if (au.s.high > 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(__cmpdi2); > diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c > deleted file mode 100644 > index 914b971aca3b..000000000000 > --- a/arch/mips/lib/lshrdi3.c > +++ /dev/null > @@ -1,30 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#include "libgcc.h" > - > -long long notrace __lshrdi3(long long u, word_type b) > -{ > - DWunion uu, w; > - word_type bm; > - > - if (b == 0) > - return u; > - > - uu.ll = u; > - bm = 32 - b; > - > - if (bm <= 0) { > - w.s.high = 0; > - w.s.low = (unsigned int) uu.s.high >> -bm; > - } else { > - const unsigned int carries = (unsigned int) uu.s.high << bm; > - > - w.s.high = (unsigned int) uu.s.high >> b; > - w.s.low = ((unsigned int) uu.s.low >> b) | carries; > - } > - > - return w.ll; > -} > - > -EXPORT_SYMBOL(__lshrdi3); > diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c > deleted file mode 100644 > index c31c78ca4175..000000000000 > --- a/arch/mips/lib/ucmpdi2.c > +++ /dev/null > @@ -1,22 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/export.h> > - > -#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); > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-02-08 17:27 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-01-30 22:42 [PATCH v2 0/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov 2018-01-30 22:42 ` [PATCH v2 1/2] Add notrace to lib/ucmpdi2.c Antony Pavlov 2018-01-31 11:54 ` Matt Redfearn 2018-01-31 11:54 ` Matt Redfearn 2018-02-08 17:27 ` Palmer Dabbelt 2018-01-30 22:42 ` [PATCH v2 2/2] MIPS: use generic GCC library routines from lib/ Antony Pavlov 2018-01-31 11:55 ` Matt Redfearn 2018-01-31 11:55 ` Matt Redfearn
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.