All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Huacai Chen <chenhuacai@kernel.org>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	linux-kernel@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH 1/2] MIPS: Loongson64: Clean up use of cc-ifversion
Date: Mon, 24 Jan 2022 18:25:39 -0700	[thread overview]
Message-ID: <Ye9Rk4y9Ck7Bg5pv@dev-arch.archlinux-ax161> (raw)
In-Reply-To: <c88b0d87-b238-4889-b033-226bed85bb01@www.fastmail.com>

On Tue, Jan 25, 2022 at 12:03:32AM +0000, Jiaxun Yang wrote:
> 
> 
> 在2022年1月24日一月 下午8:31,Nick Desaulniers写道:
> > On Thu, Jan 20, 2022 at 1:40 PM Nathan Chancellor <nathan@kernel.org> wrote:
> >>
> >> This Makefile checks that GCC is 4.9 or newer, which is redundant after
> >> commit 76ae847497bc ("Documentation: raise minimum supported version of
> >> GCC to 5.1"), so cc-option can be removed.
> >>
> >> Clang does not support -march=loongson3a so it needs to continue to use
> >> -march=mips64r2, along with binutils less than 2.25, so check that both
> >> GCC and binutils 2.25 or newer are being used before using
> >> -march=loongson3a. These flags do not need to be checked with cc-option
> >> anymore because all GCC versions support -march=loongson3a and
> >> -march=mips64r2 and all clang versions support -march=mips64r2.
> >>
> >> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> >
> > Thanks for the patch. I wonder why `_MIPS_ISA` only seems to be set at
> > all for `-march=loongson3a` AFAICT, though that question is orthogonal
> > to this patch. Perhaps the Loongson or MIPS maintainers know more?
> > Otherwise seems like most uses of _MIPS_ISA can either be deleted or
> > simplified now.
> 
> This is because earlier GCC mistakenly set loongson3a to MIPS64 not MIPS64R2.
> 
> But given that it's earlier than the minimal requirement GCC of kernel today, I think it should be safe to just move the whole logic.
> 
> Thanks.

So something like this (completely untested)?

diff --git a/arch/mips/loongson64/Platform b/arch/mips/loongson64/Platform
index 3e660d6d3c2b..36ab2fe00835 100644
--- a/arch/mips/loongson64/Platform
+++ b/arch/mips/loongson64/Platform
@@ -5,24 +5,9 @@
 
 cflags-$(CONFIG_CPU_LOONGSON64)	+= -Wa,--trap
 
-#
-# binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a
-# as MIPS64 R2; older versions as just R1.  This leaves the possibility open
-# that GCC might generate R2 code for -march=loongson3a which then is rejected
-# by GAS.  The cc-option can't probe for this behaviour so -march=loongson3a
-# can't easily be used safely within the kbuild framework.
-#
-ifeq ($(call cc-ifversion, -ge, 0409, y), y)
-  ifeq ($(call ld-ifversion, -ge, 22500, y), y)
-    cflags-$(CONFIG_CPU_LOONGSON64)  += \
-      $(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
-  else
-    cflags-$(CONFIG_CPU_LOONGSON64)  += \
-      $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
-  endif
-else
-    cflags-$(CONFIG_CPU_LOONGSON64)  += \
-      $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
+ifdef CONFIG_CPU_LOONGSON64
+cflags-$(CONFIG_CC_IS_CLANG) += -march=mips64r2
+cflags-$(CONFIG_CC_IS_GCC) += -march=loongson3a
 endif
 
 # Some -march= flags enable MMI instructions, and GCC complains about that

> >
> > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> >
> >> ---
> >>  arch/mips/loongson64/Platform | 13 +++----------
> >>  1 file changed, 3 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/arch/mips/loongson64/Platform b/arch/mips/loongson64/Platform
> >> index 3e660d6d3c2b..981d3abc150e 100644
> >> --- a/arch/mips/loongson64/Platform
> >> +++ b/arch/mips/loongson64/Platform
> >> @@ -12,17 +12,10 @@ cflags-$(CONFIG_CPU_LOONGSON64)     += -Wa,--trap
> >>  # by GAS.  The cc-option can't probe for this behaviour so -march=loongson3a
> >>  # can't easily be used safely within the kbuild framework.
> >>  #
> >> -ifeq ($(call cc-ifversion, -ge, 0409, y), y)
> >> -  ifeq ($(call ld-ifversion, -ge, 22500, y), y)
> >> -    cflags-$(CONFIG_CPU_LOONGSON64)  += \
> >> -      $(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
> >> -  else
> >> -    cflags-$(CONFIG_CPU_LOONGSON64)  += \
> >> -      $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
> >> -  endif
> >> +ifeq ($(CONFIG_CC_IS_GCC)$(call ld-ifversion, -ge, 22500, y), yy)
> >> +  cflags-$(CONFIG_CPU_LOONGSON64) += -march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64
> >>  else
> >> -    cflags-$(CONFIG_CPU_LOONGSON64)  += \
> >> -      $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
> >> +  cflags-$(CONFIG_CPU_LOONGSON64) += -march=mips64r2
> >>  endif
> >>
> >>  # Some -march= flags enable MMI instructions, and GCC complains about that
> >>
> >> base-commit: 2c271fe77d52a0555161926c232cd5bc07178b39
> >> --
> >> 2.34.1
> >>
> >
> >
> > -- 
> > Thanks,
> > ~Nick Desaulniers
> 
> -- 
> - Jiaxun

  reply	other threads:[~2022-01-25  1:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-20 21:40 [PATCH 1/2] MIPS: Loongson64: Clean up use of cc-ifversion Nathan Chancellor
2022-01-20 21:40 ` [PATCH 2/2] MIPS: Loongson64: Wrap -mno-branch-likely with cc-option Nathan Chancellor
2022-01-24 20:40   ` Nick Desaulniers
2022-01-24 22:37     ` Nathan Chancellor
2022-01-24 22:49       ` Nick Desaulniers
2022-01-24 23:09         ` Nathan Chancellor
2022-01-24 20:31 ` [PATCH 1/2] MIPS: Loongson64: Clean up use of cc-ifversion Nick Desaulniers
2022-01-25  0:03   ` Jiaxun Yang
2022-01-25  1:25     ` Nathan Chancellor [this message]
2022-01-25 21:19       ` Jiaxun Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ye9Rk4y9Ck7Bg5pv@dev-arch.archlinux-ax161 \
    --to=nathan@kernel.org \
    --cc=chenhuacai@kernel.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=ndesaulniers@google.com \
    --cc=tsbogend@alpha.franken.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.