From patchwork Fri May 10 21:18:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Woodhouse X-Patchwork-Id: 243067 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id EE1662C024F for ; Sat, 11 May 2013 07:19:18 +1000 (EST) Received: by ozlabs.org (Postfix) id 29C192C00E3; Sat, 11 May 2013 07:18:45 +1000 (EST) Delivered-To: linuxppc-dev@ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:4830:2446:ff00:4687:fcff:fea6:5117]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 8C2FF2C00BC for ; Sat, 11 May 2013 07:18:44 +1000 (EST) Received: from shinybook.infradead.org ([2001:8b0:10b:1:e6ce:8fff:fe1f:f2c0]) by bombadil.infradead.org with esmtpsa (Exim 4.80.1 #2 (Red Hat Linux)) id 1Uaui2-0005CS-A4; Fri, 10 May 2013 21:18:34 +0000 Message-ID: <1368220707.3378.57.camel@shinybook.infradead.org> Subject: [PATCH] powerpc: provide __bswapdi2 From: David Woodhouse To: linuxppc-dev@ozlabs.org Date: Fri, 10 May 2013 22:18:27 +0100 X-Mailer: Evolution 3.6.4 (3.6.4-3.fc18) Mime-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html Cc: viro@zeniv.linux.org.uk X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: David Woodhouse Some versions of GCC apparently expect this to be provided by libgcc. Signed-off-by: David Woodhouse --- Untested. diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S index 19e096b..f077dc2 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S @@ -657,6 +657,17 @@ _GLOBAL(__ucmpdi2) li r3,2 blr +_GLOBAL(__bswapdi2) + rlwinm 10,4,8,0xffffffff + rlwinm 11,3,8,0xffffffff + rlwimi 10,4,24,0,7 + rlwimi 11,3,24,0,7 + rlwimi 10,4,24,16,23 + rlwimi 11,3,24,16,23 + mr 4,11 + mr 3,10 + blr + _GLOBAL(abs) srawi r4,r3,31 xor r3,r3,r4 diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 5cfa800..3b2e6e8 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -234,6 +234,18 @@ _GLOBAL(__flush_dcache_icache) isync blr +_GLOBAL(__bswapdi2) + srdi 8,3,32 + rlwinm 7,3,8,0xffffffff + rlwimi 7,3,24,0,7 + rlwinm 9,8,8,0xffffffff + rlwimi 7,3,24,16,23 + rlwimi 9,8,24,0,7 + rlwimi 9,8,24,16,23 + sldi 7,7,32 + or 7,7,9 + mr 3,7 + blr #if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE) /* diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index 78b8766..c296665 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c @@ -143,7 +143,8 @@ EXPORT_SYMBOL(__lshrdi3); int __ucmpdi2(unsigned long long, unsigned long long); EXPORT_SYMBOL(__ucmpdi2); #endif - +long long __bswapdi2(long long); +EXPORT_SYMBOL(__bswapdi2); EXPORT_SYMBOL(memcpy); EXPORT_SYMBOL(memset); EXPORT_SYMBOL(memmove);