|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/6] xen/arm: smccc: Add wrapper to automatically select the calling convention
Hi, On 27.08.18 18:29, Julien Grall wrote: On 27/08/2018 15:15, Volodymyr Babchuk wrote:Hi Julien,Hi,On 24.08.18 19:58, Julien Grall wrote:This will generate lots of code for every arm_smccc_smc(). Can we have function pointer arm_smccc_smc instead and assign it to either arm_smccc_1_1_smc() or arm_asmccc_1_0_smc() at boot?Signed-off-by: Julien Grall <julien.grall@xxxxxxx> --- xen/arch/arm/psci.c | 4 ++++ xen/include/asm-arm/cpufeature.h | 3 ++- xen/include/asm-arm/smccc.h | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c index 3cf5ecf0f3..941eec921b 100644 --- a/xen/arch/arm/psci.c +++ b/xen/arch/arm/psci.c @@ -21,6 +21,7 @@ #include <xen/types.h> #include <xen/mm.h> #include <xen/smp.h> +#include <asm/cpufeature.h> #include <asm/psci.h> #include <asm/acpi.h> @@ -118,6 +119,9 @@ static void __init psci_init_smccc(void) smccc_ver = ret; } + if ( smccc_ver >= SMCCC_VERSION(1, 1) ) + cpus_set_cap(ARM_SMCCC_1_1); + printk(XENLOG_INFO "Using SMC Calling Convention v%u.%u\n",SMCCC_VERSION_MAJOR(smccc_ver), SMCCC_VERSION_MINOR(smccc_ver));}diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h Ah, yes, true.I checked how static keys are working. Seems, they use asm goto feature. Now I think: can we optimize this more? Something like that:
#define arm_smccc_smc(...)
do {
asm goto (ALTERNATIVE(nop",
"b %l[smccc_1_1]",
ARM_SMCCC_1_1));
arm_smccc_1_0_smc(__VA_ARGS__);
break;
smccc_1_1:
arm_smccc_1_1_smc(__VA_ARGS__);
} while ( 0 )
This will save use additional conditional branch.
--
Volodymyr Babchuk
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |