[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 16/17] xen: arm: refactor xchg and cmpxchg into their own headers
Hi Ian, On 03/20/2014 03:46 PM, Ian Campbell wrote: > diff --git a/xen/include/asm-arm/arm32/cmpxchg.h > b/xen/include/asm-arm/arm32/cmpxchg.h > new file mode 100644 > index 0000000..70c6090 > --- /dev/null > +++ b/xen/include/asm-arm/arm32/cmpxchg.h > +static always_inline unsigned long __cmpxchg( > + volatile void *ptr, unsigned long old, unsigned long new, int size) > +{ > + unsigned long oldval, res; > + > + switch (size) { > + case 1: > + do { > + asm volatile("@ __cmpxchg1\n" > + " ldrexb %1, [%2]\n" > + " mov %0, #0\n" > + " teq %1, %3\n" > + " strexbeq %0, %4, [%2]\n" > + : "=&r" (res), "=&r" (oldval) > + : "r" (ptr), "Ir" (old), "r" (new) > + : "memory", "cc"); > + } while (res); > + break; > + case 2: > + do { > + asm volatile("@ __cmpxchg2\n" > + " ldrexh %1, [%2]\n" > + " mov %0, #0\n" > + " teq %1, %3\n" > + " strexheq %0, %4, [%2]\n" > + : "=&r" (res), "=&r" (oldval) > + : "r" (ptr), "Ir" (old), "r" (new) > + : "memory", "cc"); > + } while (res); > + break; > + case 4: > + do { > + asm volatile("@ __cmpxchg4\n" > + " ldrex %1, [%2]\n" > + " mov %0, #0\n" > + " teq %1, %3\n" > + " strexeq %0, %4, [%2]\n" > + : "=&r" (res), "=&r" (oldval) > + : "r" (ptr), "Ir" (old), "r" (new) > + : "memory", "cc"); > + } while (res); > + break; > +#if 0 > + case 8: > + do { > + asm volatile("@ __cmpxchg8\n" > + " ldrexd %1, [%2]\n" > + " mov %0, #0\n" > + " teq %1, %3\n" > + " strexdeq %0, %4, [%2]\n" > + : "=&r" (res), "=&r" (oldval) > + : "r" (ptr), "Ir" (old), "r" (new) > + : "memory", "cc"); > + } while (res); > + break; > +#endif Is it really useful to let the dead code in the header? Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |