Thread (103 messages) 103 messages, 16 authors, 2017-12-04

[PATCH v2 11/18] arm64: make mrs_s and msr_s macros work with LTO

From: Nick Desaulniers <hidden>
Date: 2017-12-04 17:34:10
Also in: linux-kbuild, lkml

On Thu, Nov 16, 2017 at 2:54 PM, Alex Matveev [off-list ref] wrote:
On Fri, 17 Nov 2017 00:29:20 +0300
Yury Norov [off-list ref] wrote:
quoted
On Thu, Nov 16, 2017 at 01:55:31PM +0000, Robin Murphy wrote:
quoted
Given that this whole mrs_s infrastructure is a workaround for older
assemblers which don't support the "S<op0>_<op1>_<Cn>_<Cm>_<op2>"
syntax for arbitrary unnamed system registers (which IIRC was a
fairly late addition to the architecture), the only way it could be
"fixed" on the toolchain side is by removing all those older
toolchains from existence. Good luck with that ;)
commit 72c583951526
Author: Catalin Marinas [off-list ref]
Date:   Thu Jul 24 14:14:42 2014 +0100

    arm64: gicv3: Allow GICv3 compilation with older binutils

    GICv3 introduces new system registers accessible with the full
    msr/mrs syntax (e.g. mrs x0, Sop0_op1_CRm_CRn_op2). However, only
    recent binutils understand the new syntax. This patch introduces
    msr_s/mrs_s assembly macros which generate the equivalent
    instructions above and converts the existing GICv3 code (both
    drivers/irqchip/ and arch/arm64/kernel/).

The question is - is it OK to drop compatibility with old versions of
binutils (which were already "older" back in 2014)? It's not my call to
make. If yes, then it should be possible to make this change more
aesthetic by reverting to "S<op>" (however, it will affect more places
as now some users of register definitions expect them to be numbers, not
"S<op>" strings).
I don't think we found a resolution to the compatibility question
posed.  Given that the affected file is only in use for arm64, I think
the arm64 maintainers should make the call.  I encourage them to drop
support for old toolchains; the use of ld-version macros can help warn
users using old toolchains on newer kernel versions.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help