grub-devel
[Top][All Lists]
Advanced

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

Re: [Xen-devel] [PATCH v4 10/19] xen: setup hypercall page for PVH


From: Juergen Gross
Subject: Re: [Xen-devel] [PATCH v4 10/19] xen: setup hypercall page for PVH
Date: Wed, 21 Nov 2018 14:58:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

On 20/11/2018 10:27, Juergen Gross wrote:
> On 09/11/2018 19:12, Daniel Kiper wrote:
>> On Fri, Nov 02, 2018 at 01:37:29PM +0100, Juergen Gross wrote:>>> +
>>> +  asm volatile ("wrmsr" : : "c" (msr), "a" (pfn), "d" (0) : "memory");
>>> +}
>>> +
>>> +int
>>> +grub_xen_hypercall (grub_uint32_t callno, grub_uint32_t a0,
>>> +               grub_uint32_t a1, grub_uint32_t a2,
>>> +               grub_uint32_t a3, grub_uint32_t a4,
>>> +               grub_uint32_t a5 __attribute__ ((unused)))
>>> +{
>>> +  grub_uint32_t __res, __ign0, __ign1, __ign2, __ign3, __ign4;
>>> +
>>> +  asm volatile ("call *%[callno]"
>>> +           : "=a" (__res), "=b" (__ign0), "=c" (__ign1), "=d" (__ign2),
>>> +             "=S" (__ign3), "=D" (__ign4)
>>> +           : "1" (a0), "2" (a1), "3" (a2), "4" (a3), "5" (a4),
>>
>> I think that you can drop all __ign* variables if you specify proper
>> registers in input argument. If this does not work you can use "+"
>> modifier instead of "=" in the output argument.
> 
> I'll have a try.

Doesn't work.

Specifying only the input registers neglects the hypercall
clobbering those.

Using the "+" modifier lets gcc complain.

I'll just use a single dummy variable.


Juergen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]