[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 for 4.5] arm32: fix build after 063188f4b3



On Tue, 2014-10-14 at 21:09 +0200, Tim Deegan wrote:
> At 14:13 +0100 on 14 Oct (1413292415), Jan Beulich wrote:
> > >>> On 14.10.14 at 15:06, <julien.grall@xxxxxxxxxx> wrote:
> > > On 10/14/2014 01:57 PM, Ian Campbell wrote:
> > >> 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:
> > >>>>> +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.
> > > 
> > > You are right, it looks like it's compiler depend how variadic function
> > > will be called.
> > 
> > Now that should never happen - there ought to be an ABI that all
> > compilers abide by.
> 
> Indeed.  It may depend on compiler _flags_ but it muct be one of the
> standard layouts.  By my reading of the AAPCS, calls with up to four
> word-sized integer/pointer arguments (even variadic) will use
> registers -- "marshalled as for the base standard" just means "not
> using any of the optional rules for FP arguments".

OK, so that's good. I think smc calls can potentially take more than 4
arguments, but I don't think we have any such right now. Using
call_smc<N> will help protect us against stumbling over this in the
future...

> All of which reminds me of this (from last year):

It reminded me of the stack misalignment issue we used to have on one of
the arm subarchs, which broke variadics iirc...

> https://www.mikeash.com/pyblog/friday-qa-2013-06-28-anatomy-of-a-compiler-bug.html

Interesting read thanks!

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.