firmware: arm_scmi: Disable ftrace for Clang Thumb2 builds
authorArd Biesheuvel <ardb@kernel.org>
Thu, 3 Feb 2022 08:22:01 +0000 (09:22 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Tue, 8 Feb 2022 23:06:40 +0000 (23:06 +0000)
commitcdf157faaafe36c0823148587a78147200898e87
tree09c8ef73589c35543066a858a5115d62852ecc52
parentb1a1b152321107c74e1bfeaa729582174405ab23
firmware: arm_scmi: Disable ftrace for Clang Thumb2 builds

The SMC calling convention designates R0-R7 as input registers in
AArch32 mode, and this conflicts with the compiler's use of R7 as a
frame pointer when building in Thumb2 mode. Generally, we don't enable
the frame pointer, and GCC happily enables the -pg profiling hooks
without them. However, Clang refuses, and errors out with the message
below:

drivers/firmware/arm_scmi/smc.c:152:2: error: write to reserved register 'R7'
        arm_smccc_1_1_invoke(scmi_info->func_id, 0, 0, 0, 0, 0, 0, 0, &res);
        ^
include/linux/arm-smccc.h:550:4: note: expanded from macro 'arm_smccc_1_1_invoke'
                        arm_smccc_1_1_smc(__VA_ARGS__);                 \
                        ^
Let's just disable ftrace for the compilation unit when building this
configuration.

Link: https://lore.kernel.org/r/20220203082204.1176734-11-ardb@kernel.org
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/Makefile