|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] arm32: fix build after 063188f4b3
On Fri, 2014-10-10 at 14:58 +0100, Jan Beulich wrote:
> "xen: arm: Add support for the Exynos secure firmware" introduced code
> assuming that exynos_smc() would get called with arguments in certain
> registers. While the "noinline" attribute guarantees the function to
> not get inlined, it does not guarantee that all arguments arrive in the
> assumed registers: gcc's interprocedural analysis can result in clone
> functions to be created where some of the incoming arguments (commonly
> when they have constant values) get replaced by putting in place the
> respective values inside the clone.
>
> The alternative of adding __attribute__((optimize("-fno-ipa-cp")))
> to the function definition would likely not work with all supported
> compiler versions.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/arm/platforms/exynos5.c
> +++ b/xen/arch/arm/platforms/exynos5.c
> @@ -40,6 +40,11 @@ static bool_t secure_firmware;
> static noinline void exynos_smc(register_t function_id, register_t arg0,
> register_t arg1, register_t arg2)
> {
> + register register_t fn_id asm("r0") = function_id;
> + register register_t a0 asm("r1") = arg0;
> + register register_t a1 asm("r2") = arg1;
> + register register_t a2 asm("r3") = arg2;
ISTR being told that the arm gcc backend pays this sort of asm("r1")
thing no heed (it's x86 specific?). This is how we ended up with the
asmeq -- it was what the arm compiler guys (via the arm kernels guys)
recommended.
Stefano may remember better (since this was in the context of the Linux
hypervisor stub).
I suppose you have a compiler which tickles this?
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |