All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@eu.citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	Tim Deegan <tim@xen.org>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	Suriyan Ramasami <suriyan.r@gmail.com>
Subject: Re: [PATCH] arm32: fix build after 063188f4b3
Date: Fri, 10 Oct 2014 15:17:01 +0100	[thread overview]
Message-ID: <1412950621.27111.29.camel@eu.citrix.com> (raw)
In-Reply-To: <54380211020000780003DC42@mail.emea.novell.com>

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@suse.com>
> 
> --- 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.

  parent reply	other threads:[~2014-10-10 14:17 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-10 13:58 [PATCH] arm32: fix build after 063188f4b3 Jan Beulich
2014-10-10 14:12 ` Julien Grall
2014-10-10 14:51   ` Jan Beulich
2014-10-10 15:55     ` Julien Grall
2014-10-10 16:01       ` Ian Campbell
2014-10-10 16:14         ` Julien Grall
2014-10-10 16:33           ` Ian Campbell
2014-10-10 16:35           ` Ian Campbell
2014-10-10 16:18       ` Jan Beulich
2014-10-10 16:35         ` Julien Grall
2014-10-10 14:17 ` Ian Campbell [this message]
2014-10-10 14:32   ` Stefano Stabellini
2014-10-10 14:58     ` Jan Beulich
2014-10-10 17:03       ` Stefano Stabellini
2014-10-13  6:49         ` Jan Beulich
2014-10-13  9:40           ` Stefano Stabellini
2014-10-13 10:34             ` Jan Beulich
2014-10-10 14:54   ` Jan Beulich
2014-10-10 15:26     ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1412950621.27111.29.camel@eu.citrix.com \
    --to=ian.campbell@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=suriyan.r@gmail.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.