Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30195
Modified Files: Tag: devel_0_38 m_fifo.c Log Message: cas/cas2 for ppc
Index: m_fifo.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/m_fifo.c,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -C2 -d -r1.1.2.4 -r1.1.2.5 *** m_fifo.c 15 Dec 2004 22:05:59 -0000 1.1.2.4 --- m_fifo.c 16 Dec 2004 13:30:19 -0000 1.1.2.5 *************** *** 91,107 **** }
! #elif defined(__POWERPC__)
! /* gcc on ppc */ \ #define CAS(mem, old, new) \ ({ __typeof__(old) tmp; \ int ret = 0; \ __asm__ __volatile__( \ - "1: \n" \ "lwarx %0,0,%2 \n" \ "cmpw %0,%3 \n" \ "bne 1f \n" \ ! "stwcx %0,0,%4 \n" \ ! "bne 1b \n" \ "li %1,1 \n" \ "1: \n" \ --- 91,107 ---- }
! #elif defined(__POWERPC__)
! /* gcc on ppc */ #define CAS(mem, old, new) \ ({ __typeof__(old) tmp; \ int ret = 0; \ __asm__ __volatile__( \ "lwarx %0,0,%2 \n" \ "cmpw %0,%3 \n" \ "bne 1f \n" \ ! "sync \n" \ ! "stwcx %4,0,%2 \n" \ ! "bne 1f \n" \ "li %1,1 \n" \ "1: \n" \ *************** *** 111,115 **** })
! #error CAS2 hasn't been implemented for ppc, yet
#else --- 111,138 ---- })
! /* tb: i'm nut sure, if the handling of the two stwcx instructions ! * works correctly and if it's atomic */ ! #define CAS2(mem, old1, old2, new1, new2) \ ! ({ int ret = 0; \ ! __asm__ __volatile__( \ ! "lwarx %0,0,%3 \n" \ ! "cmpw %0,%5 \n" \ ! "bne 1f \n" \ ! "lwarx %1,0,%4 \n" \ ! "cmpw %1,%6 \n" \ ! "bne 1f \n" \ ! "sync \n" \ ! "stwcx %7,0,%3 \n" \ ! "bne 1f \n" \ ! "stwcx %8,0,%4 \n" \ ! "bne 1f \n" \ ! "li %2,1 \n" \ ! "1: \n" \ ! :"=&r"(tmp1), "=&r"(tmp2), "=r"(ret) : \ ! "m" (*mem), "m"(*(mem+(sizeof(__typeof__(old1))), \ ! "r" (old1), "r" (old2), \ ! "r" (new1), "r"(new2), "0"(ret), ); \ ! ret; \ ! })
#else