From owner-p4-projects@FreeBSD.ORG Mon Mar 7 22:20:19 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 41B3D16A4D0; Mon, 7 Mar 2005 22:20:19 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0535416A4CE for ; Mon, 7 Mar 2005 22:20:19 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BC2D443D1D for ; Mon, 7 Mar 2005 22:20:18 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j27MKItH026793 for ; Mon, 7 Mar 2005 22:20:18 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j27MKI9E026790 for perforce@freebsd.org; Mon, 7 Mar 2005 22:20:18 GMT (envelope-from jhb@freebsd.org) Date: Mon, 7 Mar 2005 22:20:18 GMT Message-Id: <200503072220.j27MKI9E026790@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 72666 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Mar 2005 22:20:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=72666 Change 72666 by jhb@jhb_slimer on 2005/03/07 22:19:49 - Don't use +m. - Lose unneeded "memory" clobbers. - Add explicit "memory" clobbers to acq variants. (XXX: this won't take affect until the clobber is removed from powerpc_mb()). Affected files ... .. //depot/projects/smpng/sys/powerpc/include/atomic.h#6 edit Differences ... ==== //depot/projects/smpng/sys/powerpc/include/atomic.h#6 (text+ko) ==== @@ -59,9 +59,9 @@ "or %0, %3, %0\n\t" /* calculate new value */ "stwcx. %0, 0, %2\n\t" /* attempt to store */ "bne- 1b\n\t" /* spin if failed */ - : "=&r" (temp), "+m" (*p) - : "r" (p), "r" (v) - : "cc", "memory"); + : "=&r" (temp), "=m" (*p) + : "r" (p), "r" (v), "m" (*p) + : "cc"); #endif } @@ -76,9 +76,9 @@ "andc %0, %0, %3\n\t" /* calculate new value */ "stwcx. %0, 0, %2\n\t" /* attempt to store */ "bne- 1b\n\t" /* spin if failed */ - : "=&r" (temp), "+m" (*p) - : "r" (p), "r" (v) - : "cc", "memory"); + : "=&r" (temp), "=m" (*p) + : "r" (p), "r" (v), "m" (*p) + : "cc"); #endif } @@ -93,9 +93,9 @@ "add %0, %3, %0\n\t" /* calculate new value */ "stwcx. %0, 0, %2\n\t" /* attempt to store */ "bne- 1b\n\t" /* spin if failed */ - : "=&r" (temp), "+m" (*p) - : "r" (p), "r" (v) - : "cc", "memory"); + : "=&r" (temp), "=m" (*p) + : "r" (p), "r" (v), "m" (*p) + : "cc"); #endif } @@ -110,9 +110,9 @@ "subf %0, %3, %0\n\t" /* calculate new value */ "stwcx. %0, 0, %2\n\t" /* attempt to store */ "bne- 1b\n\t" /* spin if failed */ - : "=&r" (temp), "+m" (*p) - : "r" (p), "r" (v) - : "cc", "memory"); + : "=&r" (temp), "=m" (*p) + : "r" (p), "r" (v), "m" (*p) + : "cc"); #endif } @@ -128,9 +128,9 @@ "li %1, 0\n\t" /* load new value */ "stwcx. %1, 0, %3\n\t" /* attempt to store */ "bne- 1b\n\t" /* spin if failed */ - : "=&r"(result), "=&r"(temp), "+m" (*addr) - : "r" (addr) - : "cc", "memory"); + : "=&r"(result), "=&r"(temp), "=m" (*addr) + : "r" (addr), "m" (*p) + : "cc"); #endif return (result); @@ -244,6 +244,7 @@ { \ atomic_##NAME##_##WIDTH(p, v); \ powerpc_mb(); \ + __asm __volatile("" ::: "memory"); \ } \ \ static __inline void \ @@ -258,6 +259,7 @@ { \ atomic_##NAME##_##WIDTH(p, v); \ powerpc_mb(); \ + __asm __volatile("" ::: "memory"); \ } \ \ static __inline void \ @@ -302,6 +304,7 @@ \ v = *p; \ powerpc_mb(); \ + __asm __volatile("" ::: "memory"); \ return (v); \ } \ \ @@ -361,9 +364,9 @@ "stwcx. %0, 0, %2\n\t" /* clear reservation (74xx) */ "li %0, 0\n\t" /* failure - retval = 0 */ "3:\n\t" - : "=&r" (ret), "+m" (*p) - : "r" (p), "r" (cmpval), "r" (newval) - : "cc", "memory"); + : "=&r" (ret), "=m" (*p) + : "r" (p), "r" (cmpval), "r" (newval), "m" (*p) + : "cc"); #endif return (ret); @@ -413,6 +416,7 @@ retval = atomic_cmpset_32(p, cmpval, newval); powerpc_mb(); + __asm __volatile("" ::: "memory"); return (retval); }