From mboxrd@z Thu Jan 1 00:00:00 1970 From: Finn Thain Subject: Re: [PATCH] m68k: merge mmu and non-mmu bitops.h Date: Fri, 3 Jun 2011 21:02:51 +1000 (EST) Message-ID: References: <1307083883-10786-1-git-send-email-gerg@snapgear.com> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: Received: from vm4.telegraphics.com.au ([98.124.60.149]:48679 "EHLO vps4.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751803Ab1FCLCn (ORCPT ); Fri, 3 Jun 2011 07:02:43 -0400 In-Reply-To: <1307083883-10786-1-git-send-email-gerg@snapgear.com> Sender: linux-m68k-owner@vger.kernel.org List-Id: linux-m68k@vger.kernel.org To: gerg@snapgear.com Cc: linux-m68k@vger.kernel.org, uclinux-dev@uclinux.org, Greg Ungerer > > +#if defined(CONFIG_M68000) || defined(CONFIG_MCPU32) || defined(CONFIG_COLDFIRE) > + > +/* > + * The newer ColdFire family members support a "bitrev" instruction > + * and we can use that to implement a fast ffs. Older Coldfire parts, > + * and normal 68000 parts don't have anything special, so we use the > + * generic functions for those. > + */ > +#if (defined(__mcfisaaplus__) || defined(__mcfisac__)) && \ > + !defined(CONFIG_M68000) && !defined(CONFIG_MCPU32) Aren't the !defined(CONFIG_M68000) && !defined(CONFIG_MCPU32) terms redundant? Finn > +static inline int __ffs(int x) > +{ > + __asm__ __volatile__ ("bitrev %0; ff1 %0" > + : "=d" (x) > + : "0" (x)); > + return x; > +} > + > +static inline int ffs(int x) > +{ > + if (!x) > + return 0; > + return __ffs(x) + 1; > +} > + > +#else > +#include > +#include > +#endif > + > +#include > +#include > + > #else >