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

Re: [Xen-devel] [PATCH] linux/x86: avoid casting hypercall arguments to long


  • To: Jan Beulich <jbeulich@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
  • Date: Mon, 21 Jan 2008 16:27:39 +0000
  • Delivery-date: Mon, 21 Jan 2008 08:29:36 -0800
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AchcSonXyEO4hMg9Edy3sQAX8io7RQ==
  • Thread-topic: [Xen-devel] [PATCH] linux/x86: avoid casting hypercall arguments to long

On 21/1/08 15:18, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> -  : "1" ((long)(a1))    \
> +  : "1" ((a1)?:0)     \

Most of the patch seems to be placing this construct all over the place.
What's it for? How is x?:0 different from x?

> + register typeof((a4)?:0) __arg4 asm("r10") = (a4); \
> + register typeof((a5)?:0) __arg5 asm("r8") = (a5); \
> +    "=d" (__ign3), "+r" (__arg4), "+r" (__arg5) \

Is it guaranteed that gcc will keep the register variables in their assigned
registers across the inline asm?

 -- Keir



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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