Subject: Re: [PATCH 2/4] kvmppc: add hypercall infrastructure - guest part

From: Hollis Blanchard <[email-masked]>
Date: Thu, 21 Aug 2008 17:25:40 -0500

On Tue, 2008-08-19 at 13:28 +0200, Arnd Bergmann wrote:
> On Tuesday 19 August 2008, [email-masked] wrote:
> > +static inline long kvm_hypercall1(unsigned int nr, unsigned long p1)
> > +{
> > +       register unsigned long hcall asm ("r0") = nr;
> > +       register unsigned long arg1 asm ("r3") = p1;
> > +       register long ret asm ("r11");
> > +
> > +       asm volatile(".long %1"
> > +                       : "=r"(ret)
> > +                       : "i"(KVM_HYPERCALL_BIN), "r"(hcall), "r"(arg1)
> > +                       : "r4", "r5", "r6", "r7", "r8",
> > +                         "r9", "r10", "r12", "cc");
> > +       return ret;
> > +}
> 
> What is the reasoning for making the calling convention different from
> all the existing hcall interfaces here?
> 
> pseries uses r3 for the hcall number, lv1 and beat use r11, so using
> r0 just for the sake of being different seems counterintuitive.

There was a really good reason at the time, but I can't seem to remember
it now. ;) We're thinking about it.

-- 
Hollis Blanchard
IBM Linux Technology Center