From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH v2 for 4.5] arm32: fix build after 063188f4b3 Date: Tue, 14 Oct 2014 13:57:19 +0100 Message-ID: <1413291439.10417.48.camel@citrix.com> References: <1413214141-370-1-git-send-email-julien.grall@linaro.org> <1413278157.1497.13.camel@citrix.com> <543D1A86.8010001@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Xe1fI-0008CT-FZ for xen-devel@lists.xenproject.org; Tue, 14 Oct 2014 12:57:24 +0000 In-Reply-To: <543D1A86.8010001@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: xen-devel@lists.xenproject.org, tim@xen.org, Jan Beulich , stefano.stabellini@citrix.com List-Id: xen-devel@lists.xenproject.org On Tue, 2014-10-14 at 13:43 +0100, Julien Grall wrote: > On 10/14/2014 10:15 AM, Ian Campbell wrote: > > On Mon, 2014-10-13 at 16:29 +0100, Julien Grall wrote: > > > >> +GLOBAL(do_smc) > > > >> +GLOBAL(do_smc) > > > > These should both be ENTRY. > > Why? Is it because GLOBAL should be used for variable and ENTRY for > function? Exactly. The practical difference is that ENTRY makes sure the code entry point is suitably aligned, but semantically ENTRY is the correct name. > >> +int do_smc(register_t function_id, ...); > > > > Are you sure that the variadic function calling convention is the same > > as for a regular function call? I'm not entirely clear having read > > AAPCS, it says they are marshalled according to "the standard base". > > All the parameters fits in a register, so the compiler will effectively > use the first registers to pass arguments. Does it? Even with variadic functions? It's not unheard of for an ABI to fallback to pushing things onto the stack for such cases, since it works out far easier in stdargs.h. > This may be an issue if the user decides to pass an uint64_t on ARM32. > > > I think it would probably be safer to declare this guy as taking 3-4 > > arguments and pass in 0 for the unused one. You could wrap in > > do_smc() helpers if you really wanted. > > I will introduce helpers. It will be easier if we decide to extend the > number of parameters (SMC64 supports up to 5 parameters). Great. Ian.