All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Lin <dslin1010@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] Fwd: [PATCH] riscv: add Kconfig entries for the F and D ISA extensions support
Date: Fri, 24 May 2019 16:38:06 +0800	[thread overview]
Message-ID: <CAFQt08n0SJNvyLps2ujD0WqFmV-4gkJQnhk5iG9bFTrzbFmo1Q@mail.gmail.com> (raw)
In-Reply-To: <CAFQt08mkOs2ejNwPmkWiWqSJkCbzLA5-8PycmkG+4m_2OrKwbg@mail.gmail.com>

Hi Bin

Bin Meng <bmeng.cn@gmail.com> 於 2019年5月22日 週三 下午5:25寫道:
>
> Hi Eric,
>
> On Wed, May 22, 2019 at 4:23 PM <tesheng@andestech.com> wrote:
> >
> > Hi Bin,
> >
> > > -----Original Message-----
> > > From: Bin Meng [mailto:bmeng.cn at gmail.com]
> > > Sent: Tuesday, May 21, 2019 3:56 PM
> > > To: Eric Te-Sheng Lin(林德晟)
> > > Cc: U-Boot Mailing List; Lukas Auer; Anup Patel; Rick Jian-Zhi Chen(陳建志);
> > > Greentime Ying-Han Hu(胡英漢); dslin1010 at gmail.com
> > > Subject: Re: [PATCH] riscv: add Kconfig entries for the F and D ISA extensions
> > > support
> > >
> > > Hi Eric,
> > >
> > > On Tue, May 21, 2019 at 3:18 PM Eric Lin <tesheng@andestech.com> wrote:
> > > >
> > > > This patch add Kconfig entries for the F (Single-Precision)
> > >
> > > adds
> > >
> >
> > OK I'll correct it as adds
> >
> > > > and D (Double-Precision) floating point instruction-set extensions.
> > > >
> > >
> > > Could you please provide reason that why U-Boot has to be compiled using F/D
> > > extension?
> > >
> >
> > Cause on AE350 platform, we have two different kinds of toolchain v5d (support I/M/A/C/F/D ISA) and
> > v5 (support I/M/A/C ISA). If we use the v5d toolchain to build U-Boot it will build fail, so we would like to add F/D extension on U-Boot.
>
> I don't understand. What difference do these two toochains have? Isn't
> the v5d toolchain's default -march string be pre-configured to imafd?
> But even if the toolchain is pre-configured to generate fd
> instruction, I think it can be override by the compiler flags. Can you
> please share the details of the toolchain you used? I suspect you have
> to fix your toolchain, not U-Boot.
>

It's seems the ABI issue. Because our toolchain don't support
multilib, the v5d toolchain libraries ABI is ilp64d.
If I use the v5d toolchain to build U-Boot with -mabi=lp64, it will
get link error as below:
...
riscv64-linux-ld.bfd:
/nds64le-linux-glibc-v5d/bin/../lib/gcc/riscv64-linux/7.3.0/libgcc.a(save-restore.o):
can't link double-float modules with soft-float modules
riscv64-linux-ld.bfd: failed to merge target specific data of file
/nds64le-linux-glibc-v5d/bin/../lib/gcc/riscv64-linux/7.3.0/libgcc.a(save-restore.o)
examples/standalone/Makefile:62: recipe for target
'examples/standalone/hello_world' failed
...

so we would like to override the compiler flag mabi to lp64d.

> >
> > > > Signed-off-by: Eric Lin <tesheng@andestech.com>
> > > > ---
> > > >  arch/riscv/Kconfig  |  8 ++++++++
> > > >  arch/riscv/Makefile | 12 ++++++++----
> > > >  2 files changed, 16 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index
> > > > 362f3cdc65..a8031fa230 100644
> > > > --- a/arch/riscv/Kconfig
> > > > +++ b/arch/riscv/Kconfig
> > > > @@ -91,6 +91,14 @@ config RISCV_ISA_C
> > > >           when building U-Boot, which results in compressed instructions
> > > in the
> > > >           U-Boot binary.
> > > >
> > > > +config RISCV_ISA_F
> > > > +       bool "Emit Floating-point instructions"
> > > > +       default n
> > >
> > > this can be dropped as default is n
> >
> > OK, I'll drop it
> >
> > > > +       help
> > > > +         Adds "F" to the ISA subsets that the toolchain is allowed to emit
> > > > +         when building U-Boot, which results in Single and
> > > > + Double-precision instructions
> > >
> > > This does not match what the config name says. The config name is for F and it
> > > cannot indicate both F and D here.
> > >
> >
> > OK, I'll correct it as follows to cover F and D:
> > config RISCV_ISA_FD
> >     bool "Emit Floating-point instructions"
> >     help
> >       Adds "F" and "D" to the ISA subsets that the toolchain is allowed to emit
> >       when building U-Boot, which results in Single and Double-precision instructions
> >       in the U-Boot binary.
> >
> >
> > > > +         in the U-Boot binary.
> > > > +
> > > >  config RISCV_ISA_A
> > > >         def_bool y
> > > >
> > > > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index
> > > > 0b80eb8d86..87ec0ea4b5 100644
> > > > --- a/arch/riscv/Makefile
> > > > +++ b/arch/riscv/Makefile
> > > > @@ -5,15 +5,19 @@
> > > >
> > > >  ifeq ($(CONFIG_ARCH_RV64I),y)
> > > >         ARCH_BASE = rv64im
> > > > -       ABI = lp64
> > > > +       ABI := lp64
> > > >  endif
> > > >  ifeq ($(CONFIG_ARCH_RV32I),y)
> > > >         ARCH_BASE = rv32im
> > > > -       ABI = ilp32
> > > > +       ABI := ilp32
> > > >  endif
> > > >  ifeq ($(CONFIG_RISCV_ISA_A),y)
> > > >         ARCH_A = a
> > > >  endif
> > > > +ifeq ($(CONFIG_RISCV_ISA_F),y)
> > > > +       ARCH_F = fd
> >
> > ifeq ($(CONFIG_RISCV_ISA_FD),y)
> >                   ARCH_FD = fd
> >
> > > > +       ABI := $(ABI)d
> > > > +endif
> > > >  ifeq ($(CONFIG_RISCV_ISA_C),y)
> > > >         ARCH_C = c
> > > >  endif
> > > > @@ -24,8 +28,8 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
> > > >         CMODEL = medany
> > > >  endif
> > > >
> > > > -ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \
> > > > -            -mcmodel=$(CMODEL)
> > > > +ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_C)
> >
> > ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_FD)$(ARCH_C)
> >
> > > -mabi=$(ABI) \
> > > > +                                -mcmodel=$(CMODEL)
> > > >
> > > >  PLATFORM_CPPFLAGS      += $(ARCH_FLAGS)
> > > >  CFLAGS_EFI             += $(ARCH_FLAGS)
>
>
> Regards,
> Bin

Thanks for your review
Eric

  parent reply	other threads:[~2019-05-24  8:38 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-21  7:18 [U-Boot] [PATCH] riscv: add Kconfig entries for the F and D ISA extensions support Eric Lin
2019-05-21  7:55 ` Bin Meng
2019-05-22  8:22   ` tesheng at andestech.com
2019-05-22  9:25     ` Bin Meng
2019-05-24  8:04       ` Eric Lin
2019-05-24  8:21         ` [U-Boot] Fwd: " Eric Lin
2019-05-24  8:38         ` Eric Lin [this message]
2019-05-24  9:40         ` [U-Boot] " Bin Meng
2019-05-28  7:54           ` Greentime Hu
2019-05-28  9:58             ` Bin Meng
2019-05-28 10:50               ` Greentime Hu
2019-05-29  3:21                 ` Bin Meng

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=CAFQt08n0SJNvyLps2ujD0WqFmV-4gkJQnhk5iG9bFTrzbFmo1Q@mail.gmail.com \
    --to=dslin1010@gmail.com \
    --cc=u-boot@lists.denx.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.