ARM: 8990/1: use VFP assembler mnemonics in register load/store macros
authorStefan Agner <stefan@agner.ch>
Thu, 9 Jul 2020 10:19:17 +0000 (11:19 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Tue, 21 Jul 2020 15:33:38 +0000 (16:33 +0100)
commitee440336e5ef977c397afdb72cbf9c6b8effc8ea
tree96447ce9f869799e50b653cebddb431f916979e8
parenta6c30873ee4a5cc0549c1973668156381ab2c1c4
ARM: 8990/1: use VFP assembler mnemonics in register load/store macros

The integrated assembler of Clang 10 and earlier do not allow to access
the VFP registers through the coprocessor load/store instructions:
<instantiation>:4:6: error: invalid operand for instruction
 LDC p11, cr0, [r10],#32*4 @ FLDMIAD r10!, {d0-d15}
     ^

This has been addressed with Clang 11 [0]. However, to support earlier
versions of Clang and for better readability use of VFP assembler
mnemonics still is preferred.

Replace the coprocessor load/store instructions with explicit assembler
mnemonics to accessing the floating point coprocessor registers. Use
assembler directives to select the appropriate FPU version.

This allows to build these macros with GNU assembler as well as with
Clang's built-in assembler.

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

Link: https://github.com/ClangBuiltLinux/linux/issues/905
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/vfpmacros.h