Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759050AbbGHUVY (ORCPT ); Wed, 8 Jul 2015 16:21:24 -0400 Received: from mail-db3on0058.outbound.protection.outlook.com ([157.55.234.58]:28874 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754001AbbGHUVM (ORCPT ); Wed, 8 Jul 2015 16:21:12 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; vger.kernel.org; dkim=none (message not signed) header.d=none; From: Chris Metcalf To: Linus Torvalds CC: Chris Metcalf , Al Viro , Fabian Frederick , Randy Dunlap , Rickard Strandqvist , , Peter Zijlstra , "David S. Miller" , Frederic Weisbecker , Andrew Morton , Sam Ravnborg , Stephen Rothwell , "Theodore Ts'o" , Grant Likely , Dan Carpenter , Geert Uytterhoeven , Michael Ellerman , Linux Kernel Mailing List , Subject: [PATCH v2 1/3] Make asm/word-at-a-time.h available on all architectures Date: Wed, 8 Jul 2015 16:20:43 -0400 Message-ID: <1436386845-11989-2-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1436386845-11989-1-git-send-email-cmetcalf@ezchip.com> References: <1436386845-11989-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11OLC002;1:xyfPXvbo8FkIL9em5WxELywqjrxfErfBFafNeqFOzw79ioVyr3EZ5IteX3SC9TuPYQPGIDmWFvh5EjDpFoK1jT0pXtDvQZADTVhUjt5sqjDnHu9kUpej0sQ7I/uWdE8VqsopnTHwi/aRm/A4t9m7mN1HLvnx1sSjPItzPemH6m1ib3qjhDAtGoleoXdA1VnIdX1lJguEvHjl1khhlpzB8cEO+D8JmzBgg4Dwgy5BA3aAO51jZfXlauR4kcdcu0k6lN59u5j8fyYGsZWIF/WgT+hnJWYyc2EQhCBIIWU+uOFll4UrXgpHUWKgYyoPOcN0bzJK8Rut6IwcUOOqOjoMG883rR/aKmuXOPaJwpKsKVlJToxKB9HyDUBaC/CZXf1gQ315DRep9nEGnCUTvB6cNGoB1k7MQ9QRWSq5euS4nkm8hCsOKw/bxwhx4P/MJsCn X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(339900001)(199003)(189002)(110136002)(5001960100002)(6806004)(229853001)(575784001)(47776003)(50986999)(189998001)(86362001)(87936001)(50226001)(76176999)(33646002)(230783001)(104016003)(2950100001)(46102003)(36756003)(85426001)(105606002)(92566002)(50466002)(77156002)(48376002)(62966003)(106466001)(5003940100001)(19580395003)(42186005)(19580405001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR02MB0783;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0783;2:LkWlkGv5YyW5Z6RIuXGnQYvq9/9yWgLYSkxj9v1+1aH9B8WwDMkREv+j9CFNqt77;3:8lrOUlaBSVkc825/+PiOXdDXSfyCAMBvr04wQ39UkwEHx7oSqK8oviXWvqQTXyoukXflxCb0DpHtaHc/BALM2tz0pWNQcQ91YgrQ3IsyGQwS0Om3CJQCBT3rvx8WlPHqpugYCIjAyR08KEMFa4NynQzgOlWqZjv71XhVYeIWFil7RTCOtngPnFzGX7J/y4MHAwYw9/GMDv70m36kuxQ0d1PT2s3BEBeGwD1URUEbG3dMhC4EaEqgmhHyO4WbWZNG;25:+eX2FCeoa2JKPK367017SErFojdvWnhXWLLU+SeoXWcY82LA1iXH7Kswud8rkmfqwHMdGTtZCKIBl/zGr73i1mUxiZkxUgdwXvqe5FVST5YOLA0wCILdonz/Se5662e2VJrc5ggb/b8tuHX1lLlmxR5KwYe9875poBgJytmP/SmnIMGcADodWZSfabJj36tHg6ktYKMpqh3D4C+QigEiZbnKK/9ATE8kD9jxcNkNxcrf0WNb+TZZrAM1vx3n/5Rfj0G7jKErH2Z6lawE9sc3RA==;20:ov3mHi8BWWqaascqMZc5ve/U8GcncZH/Dqg15pnoATU2n+wJrXXB7uAfhomKqjl6bPY2fw88I3PZmhJnFZ4xn07jw5J0BgS6uDC9Hg7kiFM+nTDyhT2PYwCcu670hxhRztrs4Vauz3Qj7RUOUkii1Kn/Q6UFpHIbCseaeOcM8dI= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0783; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:VI1PR02MB0783;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0783; X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0783;4:wxRwNGHzZoiaHe6nQq1vkOaqKzvy1P7ak0UkIixgDtvkelz7cWmeCXXIm1i+CXZfuvVY2qIzNz1lQUQ9GEQe6jcv250tiowuSS8nYexStknypb3jyKhIi5vfmOYNqY/ecWnoGwg0Q1vXQF711cHavwc1teXKndgbqRYeqBKM7rjz0SDvXoSHo6weNaQasP8Hlcf/FwsllfSMUdOxBEQiqWbrXfuiQdPXk36mRjN67tF+/BXpK1G17Jjyl0eO6/59hu7ic51+DrtPAm8F4ZMy9YBHN1Ioj9WzVTlaXfA3HeA= X-Forefront-PRVS: 0631F0BC3D X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0783;23:iSTAiKRKXdvNP97BbYTtWGEzs77YBa7eDYTkEHcdNpjqnduYO2zQRnnyO/049phfOh3KRawdZL16AZPhf9Ql/rTvVBn4BPtvyOJWF+l4NteiKvzZ//aZxWYOMT13hPaAcketHPfWnEieEHFXX89mBqfivHMnDKffdYO30gio4OMNImG5QCJG84n6IZUiHeZBTssF08HNpU+qwVkN5iVJ+Aw5WVXnkTDEpVJP7AvpHfpW957ZDG+QzgB+a/mX50XCngOEU9DZ2dNBUbbEV82AagSZJ59+KHimZv8GPUdy12h6cyVg69dGrww6KzVQtRQ5OY8l5nrkbIb3tlH2mp3NdFlFoVx/QLZF0Fjk0IF0GOOqnFJt/veWi6f48qkN4NqhL8m1885hfM+Pu3erg23LuehtPuSxixUU6o9apWmPoJqE8EG90pJQArbaxAinhwD7c0saKeTpAR2efQkgLNpKqLy1//skW9o/PDOkSxFLmk2H3EEvIqRXcP4HhjNGN8Rap0fUCLOPYEHyYcEDzwyDZUy5saOBthySVjtJ2JFd7NTrux5ITSP0K5zbLQB8FtDG7TCvuVvcn/wkFuqvbPNRkSVGxeI68v8RbCYIGx6zsxFhsq6Gc21QlBSnSt1FjzGaKOZ6PTdb9SBoXypHNEQQ8qhtYcigwm6TFPJ4bDkI6aFk2OyqxdtYeuq/zikGd856kpGAQhlr1nAuV7OHIWsvf5cStc/v2RozT2E0JvU9mar2h9+FdXXYJCHvYzEmUbPbizdRvqtWNLBQT5likV4MLfGjoQEbzPA71XIGUH55we7ke2HYFaJIhcFHWJ/GQpJgSF5uGpWerTPk/9924bKRRGuNXjJxBmwc0glMpVQ5tP8liE23X2BRd2guxvp8w8jYblghe2Nm9LKFnQVP5bDd1Zv8h6+GhV6cJK1TaBmFQ7P8RqfUvN6H4QLJ4bR7s9fQ X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0783;5:isS+xmJ0xDWK9AINm5g0sBAI0MAo1h+yPZZH1I5DUOFDYw7gsbHhSmGPYWImRNueDFzQjt0VcLk2S0HNhxHdNNRauFGTYb8qm/N7qTrm5AJkgvNdOdBEUygLMaGknm+rCzq5IlOQhlDg13JDEr7inw==;24:sPMdqSBaA0ce6Q3+WTiNxr2yPVugQlF67jU5rqRFe/xfO4E0RRPNPr2BH5EvuQXBhKru6JFgQesDGUOwPmi5xEaL3Id1PtERdFBbkNWeU9Q=;20:ReJoEzjzlQHfHuIMmTqfcofzWa7mpW7enlGvL6JCe+hqf+2Yez5idgcrBYx1lztSbLaGc1sQ/9pAvLx/lbjP+w== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2015 20:21:07.1508 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR02MB0783 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 11664 Lines: 344 Added the x86 implementation of word-at-a-time to the generic version, which previously only supported big-endian. Omitted the x86-specific load_unaligned_zeropad(), which in any case is also not present for the existing BE-only implementation of a word-at-a-time, and is only used under CONFIG_DCACHE_WORD_ACCESS. Added as a "generic-y" to the Kbuilds of all architectures that didn't previously have it. Signed-off-by: Chris Metcalf --- arch/arc/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/Kbuild | 1 + arch/xtensa/include/asm/Kbuild | 1 + include/asm-generic/word-at-a-time.h | 80 ++++++++++++++++++++++++++++++++---- 22 files changed, 93 insertions(+), 8 deletions(-) diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index be0c39e76f7c..be895ef03a51 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -49,4 +49,5 @@ generic-y += types.h generic-y += ucontext.h generic-y += user.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 528d70d47a54..10dd6e8470bd 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -20,4 +20,5 @@ generic-y += sections.h generic-y += topology.h generic-y += trace_clock.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index 4bd3c3cfc9ab..9705a527b7b0 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild @@ -46,4 +46,5 @@ generic-y += types.h generic-y += ucontext.h generic-y += unaligned.h generic-y += user.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index ae0a51f5376c..535efdb0692d 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -59,4 +59,5 @@ generic-y += types.h generic-y += ucontext.h generic-y += user.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/cris/include/asm/Kbuild b/arch/cris/include/asm/Kbuild index 057e51859b0a..4991539a25f6 100644 --- a/arch/cris/include/asm/Kbuild +++ b/arch/cris/include/asm/Kbuild @@ -26,4 +26,5 @@ generic-y += sections.h generic-y += topology.h generic-y += trace_clock.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild index e3f81b53578e..ca34d1cf2cdf 100644 --- a/arch/frv/include/asm/Kbuild +++ b/arch/frv/include/asm/Kbuild @@ -7,3 +7,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += scatterlist.h generic-y += trace_clock.h +generic-y += word-at-a-time.h diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild index c7a99f860b40..872920fba0a6 100644 --- a/arch/hexagon/include/asm/Kbuild +++ b/arch/hexagon/include/asm/Kbuild @@ -58,4 +58,5 @@ generic-y += types.h generic-y += ucontext.h generic-y += unaligned.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild index 9b41b4bcc073..614579fa1e49 100644 --- a/arch/ia64/include/asm/Kbuild +++ b/arch/ia64/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += preempt.h generic-y += scatterlist.h generic-y += trace_clock.h generic-y += vtime.h +generic-y += word-at-a-time.h diff --git a/arch/m32r/include/asm/Kbuild b/arch/m32r/include/asm/Kbuild index 2edc793372fc..36f850dd4a1e 100644 --- a/arch/m32r/include/asm/Kbuild +++ b/arch/m32r/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += scatterlist.h generic-y += sections.h generic-y += trace_clock.h +generic-y += word-at-a-time.h diff --git a/arch/metag/include/asm/Kbuild b/arch/metag/include/asm/Kbuild index 0bf5d525b945..a291b3b2529e 100644 --- a/arch/metag/include/asm/Kbuild +++ b/arch/metag/include/asm/Kbuild @@ -54,4 +54,5 @@ generic-y += ucontext.h generic-y += unaligned.h generic-y += user.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild index ab564a6db5c3..966f221b2d67 100644 --- a/arch/microblaze/include/asm/Kbuild +++ b/arch/microblaze/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += preempt.h generic-y += scatterlist.h generic-y += syscalls.h generic-y += trace_clock.h +generic-y += word-at-a-time.h diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild index 526539cbc99f..c3cfb83aca1d 100644 --- a/arch/mips/include/asm/Kbuild +++ b/arch/mips/include/asm/Kbuild @@ -18,4 +18,5 @@ generic-y += serial.h generic-y += trace_clock.h generic-y += ucontext.h generic-y += user.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index f892d9de47d9..30a06e2d6e42 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += scatterlist.h generic-y += sections.h generic-y += trace_clock.h +generic-y += word-at-a-time.h diff --git a/arch/nios2/include/asm/Kbuild b/arch/nios2/include/asm/Kbuild index 24b3d8999ac7..bc87081c0669 100644 --- a/arch/nios2/include/asm/Kbuild +++ b/arch/nios2/include/asm/Kbuild @@ -61,4 +61,5 @@ generic-y += types.h generic-y += unaligned.h generic-y += user.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild index 4b87205c230c..dfc61a151890 100644 --- a/arch/powerpc/include/asm/Kbuild +++ b/arch/powerpc/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += rwsem.h generic-y += scatterlist.h generic-y += trace_clock.h generic-y += vtime.h +generic-y += word-at-a-time.h diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild index c631f98fd524..27c37b3d1dad 100644 --- a/arch/s390/include/asm/Kbuild +++ b/arch/s390/include/asm/Kbuild @@ -6,3 +6,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += scatterlist.h generic-y += trace_clock.h +generic-y += word-at-a-time.h diff --git a/arch/score/include/asm/Kbuild b/arch/score/include/asm/Kbuild index 83ed116d414c..16958f529aa7 100644 --- a/arch/score/include/asm/Kbuild +++ b/arch/score/include/asm/Kbuild @@ -13,3 +13,4 @@ generic-y += sections.h generic-y += trace_clock.h generic-y += xor.h generic-y += serial.h +generic-y += word-at-a-time.h diff --git a/arch/tile/include/asm/Kbuild b/arch/tile/include/asm/Kbuild index f5433e0e34e0..0804122e579a 100644 --- a/arch/tile/include/asm/Kbuild +++ b/arch/tile/include/asm/Kbuild @@ -39,4 +39,5 @@ generic-y += termbits.h generic-y += termios.h generic-y += trace_clock.h generic-y += types.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/um/include/asm/Kbuild b/arch/um/include/asm/Kbuild index 9176fa11d49b..ee02364d8922 100644 --- a/arch/um/include/asm/Kbuild +++ b/arch/um/include/asm/Kbuild @@ -26,4 +26,5 @@ generic-y += sections.h generic-y += switch_to.h generic-y += topology.h generic-y += trace_clock.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/unicore32/include/asm/Kbuild b/arch/unicore32/include/asm/Kbuild index 3e0c19d0f4c5..f456bfa1dd54 100644 --- a/arch/unicore32/include/asm/Kbuild +++ b/arch/unicore32/include/asm/Kbuild @@ -62,4 +62,5 @@ generic-y += ucontext.h generic-y += unaligned.h generic-y += user.h generic-y += vga.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild index 86a9ab2e2ca9..6ac0a9ab3ea3 100644 --- a/arch/xtensa/include/asm/Kbuild +++ b/arch/xtensa/include/asm/Kbuild @@ -29,4 +29,5 @@ generic-y += statfs.h generic-y += termios.h generic-y += topology.h generic-y += trace_clock.h +generic-y += word-at-a-time.h generic-y += xor.h diff --git a/include/asm-generic/word-at-a-time.h b/include/asm-generic/word-at-a-time.h index 94f9ea8abcae..011dde083f23 100644 --- a/include/asm-generic/word-at-a-time.h +++ b/include/asm-generic/word-at-a-time.h @@ -1,15 +1,10 @@ #ifndef _ASM_WORD_AT_A_TIME_H #define _ASM_WORD_AT_A_TIME_H -/* - * This says "generic", but it's actually big-endian only. - * Little-endian can use more efficient versions of these - * interfaces, see for example - * arch/x86/include/asm/word-at-a-time.h - * for those. - */ - #include +#include + +#ifdef __BIG_ENDIAN struct word_at_a_time { const unsigned long high_bits, low_bits; @@ -53,4 +48,73 @@ static inline bool has_zero(unsigned long val, unsigned long *data, const struct #define zero_bytemask(mask) (~1ul << __fls(mask)) #endif +#else + +/* + * The optimal byte mask counting is probably going to be something + * that is architecture-specific. If you have a reliably fast + * bit count instruction, that might be better than the multiply + * and shift, for example. + */ +struct word_at_a_time { + const unsigned long one_bits, high_bits; +}; + +#define WORD_AT_A_TIME_CONSTANTS { REPEAT_BYTE(0x01), REPEAT_BYTE(0x80) } + +#ifdef CONFIG_64BIT + +/* + * Jan Achrenius on G+: microoptimized version of + * the simpler "(mask & ONEBYTES) * ONEBYTES >> 56" + * that works for the bytemasks without having to + * mask them first. + */ +static inline long count_masked_bytes(unsigned long mask) +{ + return mask*0x0001020304050608ul >> 56; +} + +#else /* 32-bit case */ + +/* Carl Chatfield / Jan Achrenius G+ version for 32-bit */ +static inline long count_masked_bytes(long mask) +{ + /* (000000 0000ff 00ffff ffffff) -> ( 1 1 2 3 ) */ + long a = (0x0ff0001+mask) >> 23; + /* Fix the 1 for 00 case */ + return a & mask; +} + +#endif + +/* Return nonzero if it has a zero */ +static inline unsigned long has_zero(unsigned long a, unsigned long *bits, const struct word_at_a_time *c) +{ + unsigned long mask = ((a - c->one_bits) & ~a) & c->high_bits; + *bits = mask; + return mask; +} + +static inline unsigned long prep_zero_mask(unsigned long a, unsigned long bits, const struct word_at_a_time *c) +{ + return bits; +} + +static inline unsigned long create_zero_mask(unsigned long bits) +{ + bits = (bits - 1) & ~bits; + return bits >> 7; +} + +/* The mask we created is directly usable as a bytemask */ +#define zero_bytemask(mask) (mask) + +static inline unsigned long find_zero(unsigned long mask) +{ + return count_masked_bytes(mask); +} + +#endif /* __BIG_ENDIAN */ + #endif /* _ASM_WORD_AT_A_TIME_H */ -- 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/