From patchwork Wed May 13 20:56:39 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 6400121 Return-Path: X-Original-To: patchwork-linux-crypto@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 92F66BEEE1 for ; Wed, 13 May 2015 20:57:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B771D2026F for ; Wed, 13 May 2015 20:57:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CAF2020263 for ; Wed, 13 May 2015 20:57:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965326AbbEMU5L (ORCPT ); Wed, 13 May 2015 16:57:11 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:61791 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965142AbbEMU5K (ORCPT ); Wed, 13 May 2015 16:57:10 -0400 Received: from wuerfel.localnet ([149.172.15.242]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0LgNts-1ZX9TC0fGm-00nlbO; Wed, 13 May 2015 22:56:42 +0200 From: Arnd Bergmann To: linux-arm-kernel@lists.infradead.org Cc: Dan Streetman , Herbert Xu , linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] lib: fix 842 build on 32-bit architectures Date: Wed, 13 May 2015 22:56:39 +0200 Message-ID: <2802721.Q9KnE9eNH4@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) MIME-Version: 1.0 X-Provags-ID: V03:K0:Z2zD0Bv0knWpjqlYdzuuCpzpfufhwKtV1Zlqb6yMaZ/enAXfiYq RG6qQj0LiOQ4Sys1t6My1ovrdoaKw303LiRWkkxUHYHQ05uQMb1OTkMoSq7MHfoQWJEJF/r erqCcpJvZvQJT3Qdkc+wzxWQoHhT65jBNAkk4iM9ngvwsmur7wbQqvOWOtpLGREO29aHQhz ulfx/b3w9+xvdSQ7lSgpQ== X-UI-Out-Filterresults: notjunk:1; Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Building the 842 code on 32-bit ARM currently results in this link error: ERROR: "__aeabi_uldivmod" [lib/842/842_decompress.ko] undefined! The reason is that the __do_index function performs a 64-bit division by a power-of-two number, but it has no insight into the function arguments. By marking that function inline, the fsize argument is always known at the time that do_index is called, and the compiler is able to replace the extremely expensive 64-bit division with a cheap constant shift operation. Aside from fixing that link error, this approach should also improve both code size and performance on 32-bit architectures significantly. Signed-off-by: Arnd Bergmann --- Found while building arm32 allmodconfig with gcc-5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/lib/842/842_decompress.c b/lib/842/842_decompress.c index 6b2b45aecde3..285bf6b6959c 100644 --- a/lib/842/842_decompress.c +++ b/lib/842/842_decompress.c @@ -169,7 +169,7 @@ static int do_data(struct sw842_param *p, u8 n) return 0; } -static int __do_index(struct sw842_param *p, u8 size, u8 bits, u64 fsize) +static inline int __do_index(struct sw842_param *p, u8 size, u8 bits, u64 fsize) { u64 index, offset, total = round_down(p->out - p->ostart, 8); int ret;