From owner-freebsd-arm@FreeBSD.ORG Wed Oct 18 13:57:36 2006 Return-Path: X-Original-To: arm@freebsd.org Delivered-To: freebsd-arm@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B6AC716A412 for ; Wed, 18 Oct 2006 13:57:36 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.FreeBSD.org (Postfix) with ESMTP id F113543D53 for ; Wed, 18 Oct 2006 13:57:35 +0000 (GMT) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 5CD88208E for ; Wed, 18 Oct 2006 15:57:26 +0200 (CEST) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: 0.0/3.0 X-Spam-Checker-Version: SpamAssassin 3.1.4 (2006-07-25) on tim.des.no Received: from dwp.des.no (des.no [80.203.243.180]) by tim.des.no (Postfix) with ESMTP id 256ED2082 for ; Wed, 18 Oct 2006 15:57:26 +0200 (CEST) Received: by dwp.des.no (Postfix, from userid 1001) id 05696B85E; Wed, 18 Oct 2006 15:57:26 +0200 (CEST) From: des@des.no (Dag-Erling =?iso-8859-1?Q?Sm=F8rgrav?=) To: arm@freebsd.org Date: Wed, 18 Oct 2006 15:57:25 +0200 Message-ID: <86d58p916i.fsf@dwp.des.no> User-Agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: Subject: atomic operations X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Oct 2006 13:57:36 -0000 --=-=-= Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Seems arm's atomic.h doesn't define the full set. Any objections to the attached patch? DES --=20 Dag-Erling Sm=F8rgrav - des@des.no --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=atomic-arm.diff Index: sys/arm/include/atomic.h =================================================================== RCS file: /home/ncvs/src/sys/arm/include/atomic.h,v retrieving revision 1.19 diff -u -r1.19 atomic.h --- sys/arm/include/atomic.h 15 May 2006 13:08:12 -0000 1.19 +++ sys/arm/include/atomic.h 18 Oct 2006 13:31:30 -0000 @@ -308,45 +308,57 @@ #endif /* _LOCORE */ - -static __inline int -atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src) -{ - return (atomic_cmpset_32((volatile u_int *)dst, (u_int)exp, - (u_int)src)); -} - -#define atomic_set_rel_int atomic_set_32 -#define atomic_set_acq_long atomic_set_32 -#define atomic_set_int atomic_set_32 -#define atomic_readandclear_int atomic_readandclear_32 -#define atomic_clear_int atomic_clear_32 -#define atomic_clear_acq_long atomic_clear_32 -#define atomic_subtract_int atomic_subtract_32 -#define atomic_subtract_rel_int atomic_subtract_32 -#define atomic_subtract_rel_32 atomic_subtract_32 -#define atomic_subtract_acq_int atomic_subtract_32 -#define atomic_add_int atomic_add_32 +#define atomic_fetchadd_int atomic_fetchadd_32 +#define atomic_fetchadd_long atomic_fetchadd_32 +#define atomic_add_acq_32 atomic_add_32 +#define atomic_add_acq_int atomic_add_32 #define atomic_add_acq_long atomic_add_32 -#define atomic_add_rel_int atomic_add_32 +#define atomic_add_int atomic_add_32 +#define atomic_add_long atomic_add_32 #define atomic_add_rel_32 atomic_add_32 -#define atomic_add_acq_int atomic_add_32 -#define atomic_cmpset_int atomic_cmpset_32 -#define atomic_cmpset_rel_int atomic_cmpset_32 -#define atomic_cmpset_rel_ptr atomic_cmpset_ptr +#define atomic_add_rel_int atomic_add_32 +#define atomic_add_rel_long atomic_add_32 +#define atomic_clear_acq_32 atomic_clear_32 +#define atomic_clear_acq_int atomic_clear_32 +#define atomic_clear_acq_long atomic_clear_32 +#define atomic_clear_int atomic_clear_32 +#define atomic_clear_long atomic_clear_32 +#define atomic_clear_rel_32 atomic_clear_32 +#define atomic_clear_rel_int atomic_clear_32 +#define atomic_clear_rel_long atomic_clear_32 +#define atomic_cmpset_acq_32 atomic_cmpset_32 #define atomic_cmpset_acq_int atomic_cmpset_32 -#define atomic_cmpset_acq_ptr atomic_cmpset_ptr -#define atomic_cmpset_acq_long atomic_cmpset_long -#define atomic_store_rel_ptr atomic_store_ptr -#define atomic_store_rel_int atomic_store_32 +#define atomic_cmpset_acq_long atomic_cmpset_32 +#define atomic_cmpset_int atomic_cmpset_32 +#define atomic_cmpset_long atomic_cmpset_32 #define atomic_cmpset_rel_32 atomic_cmpset_32 -#define atomic_cmpset_rel_ptr atomic_cmpset_ptr -#define atomic_load_acq_int atomic_load_32 +#define atomic_cmpset_rel_int atomic_cmpset_32 +#define atomic_cmpset_rel_int atomic_cmpset_32 +#define atomic_cmpset_rel_long atomic_cmpset_32 #define atomic_load_acq_32 atomic_load_32 -#define atomic_clear_ptr atomic_clear_32 -#define atomic_store_ptr atomic_store_32 -#define atomic_cmpset_ptr atomic_cmpset_32 -#define atomic_set_ptr atomic_set_32 -#define atomic_fetchadd_int atomic_fetchadd_32 +#define atomic_load_acq_int atomic_load_32 +#define atomic_load_acq_long atomic_load_32 +#define atomic_readandclear_int atomic_readandclear_32 +#define atomic_readandclear_long atomic_readandclear_32 +#define atomic_set_32 atomic_set_32 +#define atomic_set_acq_32 atomic_set_32 +#define atomic_set_acq_int atomic_set_32 +#define atomic_set_acq_long atomic_set_32 +#define atomic_set_int atomic_set_32 +#define atomic_set_long atomic_set_32 +#define atomic_set_rel_32 atomic_set_32 +#define atomic_set_rel_int atomic_set_32 +#define atomic_set_rel_long atomic_set_32 +#define atomic_store_rel_32 atomic_store_32 +#define atomic_store_rel_int atomic_store_32 +#define atomic_store_rel_long atomic_store_32 +#define atomic_subtract_acq_32 atomic_subtract_32 +#define atomic_subtract_acq_int atomic_subtract_32 +#define atomic_subtract_acq_long atomic_subtract_32 +#define atomic_subtract_int atomic_subtract_32 +#define atomic_subtract_long atomic_subtract_32 +#define atomic_subtract_rel_32 atomic_subtract_32 +#define atomic_subtract_rel_int atomic_subtract_32 +#define atomic_subtract_rel_long atomic_subtract_32 #endif /* _MACHINE_ATOMIC_H_ */ --=-=-=--