public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] ARM: make use of UAL VFP mnemonics when possible
@ 2020-06-26 21:26 Stefan Agner
  2020-06-26 21:26 ` [PATCH v3 1/3] ARM: use .fpu assembler directives instead of assembler arguments Stefan Agner
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Stefan Agner @ 2020-06-26 21:26 UTC (permalink / raw)
  To: linux
  Cc: arnd, ard.biesheuvel, robin.murphy, yamada.masahiro, ndesaulniers,
	manojgupta, jiancai, linux-arm-kernel, linux-kernel,
	clang-built-linux, Stefan Agner

To build the kernel with the integrated assembler of Clang 10 and earlier
the VFP code needs to make use of the unified assembler language (UAL)
VFP mnemonics.

As pointed out by Russell, even for ARMv7 blocking VFP access through
MCR/MRC is not correct. This has been addressed in upstream Clang and
VFP access will be possible through MCR/MRC (see [0]).

At first I tried to replace all co-processor instructions to access the
floating point unit along with the macros. However, due to missing
FPINST/FPINST2 argument support in older binutils versions we have to
keep them around. Once we drop support for binutils 2.24 and older, the
move to UAL VFP mnemonics will be straight forward with this changes
applied.

Tested using Clang with integrated assembler as well as external
(binutils assembler), various gcc/binutils version down to 4.7/2.23.
Disassembled and compared the object files in arch/arm/vfp/ to make
sure this changes leads to the same code. Besides different inlining
behavior I was not able to spot a difference.

In v2 the check for FPINST argument support is now made in Kconfig.

In v3 reworded commit message and addressed review feedback in patch 1.

--
Stefan

[0] https://reviews.llvm.org/D59733

Stefan Agner (3):
  ARM: use .fpu assembler directives instead of assembler arguments
  ARM: use VFP assembler mnemonics in register load/store macros
  ARM: use VFP assembler mnemonics if available

 arch/arm/Kconfig                 |  2 ++
 arch/arm/Kconfig.assembler       |  6 ++++++
 arch/arm/include/asm/vfp.h       |  2 ++
 arch/arm/include/asm/vfpmacros.h | 31 ++++++++++++++++++++++---------
 arch/arm/vfp/Makefile            |  2 --
 arch/arm/vfp/vfphw.S             | 31 +++++++++++++++++++++----------
 arch/arm/vfp/vfpinstr.h          | 23 +++++++++++++++++++----
 7 files changed, 72 insertions(+), 25 deletions(-)
 create mode 100644 arch/arm/Kconfig.assembler

-- 
2.27.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-06-26 21:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-26 21:26 [PATCH v3 0/3] ARM: make use of UAL VFP mnemonics when possible Stefan Agner
2020-06-26 21:26 ` [PATCH v3 1/3] ARM: use .fpu assembler directives instead of assembler arguments Stefan Agner
2020-06-26 21:26 ` [PATCH v3 2/3] ARM: use VFP assembler mnemonics in register load/store macros Stefan Agner
2020-06-26 21:26 ` [PATCH v3 3/3] ARM: use VFP assembler mnemonics if available Stefan Agner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox