Date: Thu, 7 Aug 2003 15:15:49 -0400 From: "Portante, Peter" <peter.portante@hp.com> To: <deischen@freebsd.org> Cc: Marcel Moolenaar <marcel@xcllnt.net> Subject: RE: Atomic swap Message-ID: <B24FABB430F7C94D942D6386447C93DC0512B562@tayexc17.americas.cpqcorp.net>
index | next in thread | raw e-mail
> > > static __inline void
> > > atomic_swap_long(volatile long *dst, long val, long *res)
> > > {
> > > __asm ( "1: ldq_l t0,%0\n"
> > > " mov %1,t1\n"
> >
> > If I swap the first 2 instructions:
> >
> > __asm ( "1: mov %1,t1\n"
> > ldq_l t0,%0\n"
> >
> > that eliminates 1 instruction from between the locked
> > instructions. Is there anything wrong with doing that?
> >
> Actually, the processor has a chance to do something while waiting for memory, so it does not hurt to have the mov inside the ldq_l/stq_c pair.
>
And you should also consider that when the code loops, you want to issue the memory operation as soon as possible, which means performing the mov after the ldq_l.
-Peter
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B24FABB430F7C94D942D6386447C93DC0512B562>
