|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] linux/x86: avoid casting hypercallarguments to l
>>> Keir Fraser <Keir.Fraser@xxxxxxxxxxxx> 21.01.08 17:27 >>>
>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?
In its type: This way, the type gets promoted to int for anything smaller
than int, but left alone if long (or wider) or pointer. Various gcc versions
appear to have various problems when not promoting to at least int...
>> + 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?
That's how they document it, so I suppose this is the canonical way
and can be expected to not break.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|