On 3/26/19 8:35 AM, Maxim Kuvyrkov wrote:

I don't follow.  Do you mean that in the below testcase it's not guaranteed 
that casp will get its first two arguments in x0 and x1?  (If so, why?)
Sorry for not to be clear.  With my first patch only, it was not guaranteed for some complicated code cases.  With the additional patch it is guaranteed as it was before.
===
void *a;
long b, c;
void d(void) {
   typeof(0) e=0;
   register long x0 asm ("x0") = b;
   register long x1 asm ("x1") = c;
   asm("   casp\t%[old1], %[old2], %[new1], %[new2], %[v]\n"
       : [old1] "+&r"(b), [old2] "+&r"(c), [v] "+Q"(a)
       : [new1] "r"(d), [new2] "r"(e));
}




Reply via email to