OSDN Git Service

arm/arm64: smccc: Implement SMCCC v1.1 inline primitive
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 8 Nov 2019 12:35:17 +0000 (13:35 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 10 Nov 2019 10:21:20 +0000 (11:21 +0100)
commitdeb97e65fa574ff8d5ed6b36a267c205c1bce618
treed20fe5bf2e8ff08c1f31afa6ed34fef7263e3f89
parent36329b1d312e84a7a1e70f757a8993a3277e67ba
arm/arm64: smccc: Implement SMCCC v1.1 inline primitive

commit f2d3b2e8759a5833df6f022e42df2d581e6d843c upstream.

One of the major improvement of SMCCC v1.1 is that it only clobbers
the first 4 registers, both on 32 and 64bit. This means that it
becomes very easy to provide an inline version of the SMC call
primitive, and avoid performing a function call to stash the
registers that would otherwise be clobbered by SMCCC v1.0.

Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Mark Rutland <mark.rutland@arm.com> [v4.9 backport]
Tested-by: Greg Hackmann <ghackmann@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/arm-smccc.h