Date: Thu, 7 Aug 2003 16:21:20 -0400 (EDT) From: Daniel Eischen <eischen@vigrid.com> To: Marcel Moolenaar <marcel@xcllnt.net> Cc: alpha@freebsd.org Subject: Re: Atomic swap Message-ID: <Pine.GSO.4.10.10308071617070.14420-100000@pcnet5.pcnet.com> In-Reply-To: <20030807195504.GA837@athlon.pn.xcllnt.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 7 Aug 2003, Marcel Moolenaar wrote: > On Thu, Aug 07, 2003 at 03:31:55PM -0400, Daniel Eischen wrote: > > > > > " stq t0,%3\n" > > > ^^^^^^^^^^^^^^^^^^^^ > > > > > > Whoops, typo: %3 should be %2. > > > > Yup, I caught that but didn't want to complain when something > > is handed to me on a silver platter ;-) > > As long as you saw it :-) BTW, this is the only way I got it to compile. The compiler (or assembler) didn't seem to like having t0 and t1 hardcoded. Grr, I just remembered. t0, t1, etc are our names for them. They should probably be $1 and $2. static __inline void atomic_swap_long(volatile long *dst, long val, long *res) { long temp1, temp2; __asm ( "1: ldq_l %3, %1\n" " mov %2, %4\n" " stq_c %4, %1\n" " beq %4, 1b\n" " stq %3, %0\n" : "=m"(*res) : "m"(*dst), "r"(val), "r"(temp1), "r"(temp2) : "memory"); } -- Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10308071617070.14420-100000>