From: Greentime Hu <green.hu@gmail.com>
To: Vincent Chen <vincentc@andestech.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Vincent Chen <deanbo422@gmail.com>
Subject: Re: [PATCH v3 0/5] nds32 FPU port
Date: Tue, 6 Nov 2018 17:52:56 +0800 [thread overview]
Message-ID: <CAEbi=3f0OggbR2_ajWPT3Sx=ck2CTj448WUkssr63hHsywCsqQ@mail.gmail.com> (raw)
In-Reply-To: <cover.1541055990.git.vincentc@andestech.com>
Hi Vincent,
Vincent Chen <vincentc@andestech.com> 於 2018年11月1日 週四 下午3:17寫道:
>
> This patch set contains basic components for supporting the nds32 FPU,
> such as exception handlers and context switch for FPU registers. By
> default, the lazy FPU scheme is supported and the user can configure it
> via CONFIG_LZAY_FPU. In addition, a floating point emulator is required
> to handle all arithmetic of denormalized number because it is not supported
> by the nds32 FPU.
>
> As mentioned above, the nds32 FPU does not support denormalized number
> This means the denormalized operands and results are not permitted. If an
> instruction contains denormalized operands, the nds32 FPU will raise an
> denormalized input exception to inform kernel to deal with this
> instruction. If the result of the instruction is a denormalized number,
> normally nds32 FPU will treat it as an underflow case and round the result
> to an appropriate value based on current rounding mode. Obviously, there is
> a precision gap for tininess number. To reduce this precision gap, kernel
> will enable the underflow trap by default to direct all underflow cases to
> the floating pointer emulator. By the floating pointer emulator, the
> correct denormalized number can be derived in kernel and return to the user
> program. The feature can be configured by
> CONFIG_SUPPORT_DENORMAL_ARITHMETIC, and if the precision requirement is not
> critical for tininess number, user may disables this feature to keep
> performance.
>
> The implementation of floating point emulator is based on soft-fp
> which is located in include/math-emu folder. However, soft-fp is too
> outdated to pass the current compiler check. The needed modifications
> for soft-fp are included in this patch set
>
> Changes in v3:
> - Kernel with FPU support enabled still can run on a CPU without FPU
> - Rename CONFIG_UNLAZY_FPU to CONFIG_LAYZ_FPU
> - Rename _switch() to _switch_fpu()
> - Store FPU context when kernel suspends
> - Modify the comments in code and patch
>
> Changes in v2:
> - Remove the initilzation for floating pointer register before entering to
> signal handler.
>
> Vincent Chen (5):
> nds32: nds32 FPU port
> nds32: Support FP emulation
> nds32: support denormalized result through FP emulator
> math-emu/op-2.h: Use statement expressions to prevent negative
> constant shift
> math-emu/soft-fp.h: (_FP_ROUND_ZERO) cast 0 to void to fix warning
>
> arch/nds32/Kconfig | 1 +
> arch/nds32/Kconfig.cpu | 34 +++
> arch/nds32/Makefile | 11 +
> arch/nds32/include/asm/bitfield.h | 15 ++
> arch/nds32/include/asm/elf.h | 11 +
> arch/nds32/include/asm/fpu.h | 126 +++++++++++
> arch/nds32/include/asm/fpuemu.h | 32 +++
> arch/nds32/include/asm/nds32_fpu_inst.h | 109 +++++++++
> arch/nds32/include/asm/processor.h | 7 +
> arch/nds32/include/asm/sfp-machine.h | 158 +++++++++++++
> arch/nds32/include/asm/syscalls.h | 1 +
> arch/nds32/include/uapi/asm/auxvec.h | 7 +
> arch/nds32/include/uapi/asm/sigcontext.h | 14 ++
> arch/nds32/include/uapi/asm/udftrap.h | 13 +
> arch/nds32/include/uapi/asm/unistd.h | 2 +
> arch/nds32/kernel/Makefile | 10 +
> arch/nds32/kernel/ex-entry.S | 24 ++-
> arch/nds32/kernel/ex-exit.S | 13 +-
> arch/nds32/kernel/ex-scall.S | 8 +-
> arch/nds32/kernel/fpu.c | 269 ++++++++++++++++++++++
> arch/nds32/kernel/process.c | 64 +++++-
> arch/nds32/kernel/setup.c | 12 +-
> arch/nds32/kernel/signal.c | 62 +++++-
> arch/nds32/kernel/sleep.S | 2 +
> arch/nds32/kernel/sys_nds32.c | 32 +++
> arch/nds32/kernel/traps.c | 16 ++
> arch/nds32/math-emu/Makefile | 7 +
> arch/nds32/math-emu/faddd.c | 24 ++
> arch/nds32/math-emu/fadds.c | 24 ++
> arch/nds32/math-emu/fcmpd.c | 24 ++
> arch/nds32/math-emu/fcmps.c | 24 ++
> arch/nds32/math-emu/fd2s.c | 22 ++
> arch/nds32/math-emu/fdivd.c | 27 +++
> arch/nds32/math-emu/fdivs.c | 26 +++
> arch/nds32/math-emu/fmuld.c | 23 ++
> arch/nds32/math-emu/fmuls.c | 23 ++
> arch/nds32/math-emu/fnegd.c | 21 ++
> arch/nds32/math-emu/fnegs.c | 21 ++
> arch/nds32/math-emu/fpuemu.c | 357 ++++++++++++++++++++++++++++++
> arch/nds32/math-emu/fs2d.c | 23 ++
> arch/nds32/math-emu/fsqrtd.c | 21 ++
> arch/nds32/math-emu/fsqrts.c | 21 ++
> arch/nds32/math-emu/fsubd.c | 27 +++
> arch/nds32/math-emu/fsubs.c | 27 +++
> include/math-emu/op-2.h | 97 ++++-----
> include/math-emu/soft-fp.h | 2 +-
> 46 files changed, 1827 insertions(+), 67 deletions(-)
> create mode 100644 arch/nds32/include/asm/fpu.h
> create mode 100644 arch/nds32/include/asm/fpuemu.h
> create mode 100644 arch/nds32/include/asm/nds32_fpu_inst.h
> create mode 100644 arch/nds32/include/asm/sfp-machine.h
> create mode 100644 arch/nds32/include/uapi/asm/udftrap.h
> create mode 100644 arch/nds32/kernel/fpu.c
> create mode 100644 arch/nds32/math-emu/Makefile
> create mode 100644 arch/nds32/math-emu/faddd.c
> create mode 100644 arch/nds32/math-emu/fadds.c
> create mode 100644 arch/nds32/math-emu/fcmpd.c
> create mode 100644 arch/nds32/math-emu/fcmps.c
> create mode 100644 arch/nds32/math-emu/fd2s.c
> create mode 100644 arch/nds32/math-emu/fdivd.c
> create mode 100644 arch/nds32/math-emu/fdivs.c
> create mode 100644 arch/nds32/math-emu/fmuld.c
> create mode 100644 arch/nds32/math-emu/fmuls.c
> create mode 100644 arch/nds32/math-emu/fnegd.c
> create mode 100644 arch/nds32/math-emu/fnegs.c
> create mode 100644 arch/nds32/math-emu/fpuemu.c
> create mode 100644 arch/nds32/math-emu/fs2d.c
> create mode 100644 arch/nds32/math-emu/fsqrtd.c
> create mode 100644 arch/nds32/math-emu/fsqrts.c
> create mode 100644 arch/nds32/math-emu/fsubd.c
> create mode 100644 arch/nds32/math-emu/fsubs.c
Thank you.
Acked-by: Greentime Hu <greentime@andestech.com>
prev parent reply other threads:[~2018-11-06 9:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-01 7:16 [PATCH v3 0/5] nds32 FPU port Vincent Chen
2018-11-01 7:16 ` [PATCH v3 1/5] nds32: " Vincent Chen
2018-11-01 7:16 ` [PATCH v3 2/5] nds32: Support FP emulation Vincent Chen
2018-11-01 7:16 ` [PATCH v3 3/5] nds32: support denormalized result through FP emulator Vincent Chen
2018-11-01 7:17 ` [PATCH v3 4/5] math-emu/op-2.h: Use statement expressions to prevent negative constant shift Vincent Chen
2018-11-01 7:17 ` [PATCH v3 5/5] math-emu/soft-fp.h: (_FP_ROUND_ZERO) cast 0 to void to fix warning Vincent Chen
2018-11-06 9:52 ` Greentime Hu [this message]
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='CAEbi=3f0OggbR2_ajWPT3Sx=ck2CTj448WUkssr63hHsywCsqQ@mail.gmail.com' \
--to=green.hu@gmail.com \
--cc=arnd@arndb.de \
--cc=deanbo422@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=vincentc@andestech.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).