[PATCH 2/7] x86/hyper-v: fast hypercall implementation

Vitaly Kuznetsov vkuznets at redhat.com
Mon Apr 10 14:45:13 UTC 2017


Vitaly Kuznetsov <vkuznets at redhat.com> writes:

> Jork Loeser <Jork.Loeser at microsoft.com> writes:
>

[snip]

>
>>> +	}
>>> +#else
>>> +	{
>>> +		u32 hv_status_hi, hv_status_lo;
>>> +
>>> +		__asm__ __volatile__ ("call *%6"
>>> +				      : "=d"(hv_status_hi),
>>> +					"=a"(hv_status_lo) :
>>> +					"d" (control.as_uint32_hi),
>>> +					"a" (control.as_uint32_lo),
>>> +					"c" ((u32)input1),
>>> +					"b" ((u32)(input1 >> 32)),
>>> +					"m" (hv_hypercall_pg)
>>> +				      : "cc");
>>> +
>>> +		return hv_status_lo | ((u64)hv_status_hi << 32);
>>> +	}
>>> +#endif
>> Please clobber ECX, EDI and ESI for x86. Clobber memory as well?
>
> ECX is already in listed in inputs (lower part of input1) so it's
> automatically clobbered. I'll add EDI and ESI to clobbers here, thanks!

Oh, I see what you mean - hypervisor is allowed to write to ecx too, we
need to pass it with '+'. Will do, thanks!

-- 
  Vitaly


More information about the devel mailing list