From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM64: disable DCACHE_WORD_ACCESS in big endian case
Date: Wed, 23 Apr 2014 13:38:45 +0100 [thread overview]
Message-ID: <20140423123845.GB5649@arm.com> (raw)
In-Reply-To: <CAA3XUr20eFyLshVM+7VBSMz4a4-cCA0PLrYGN5oyk-wOM2NLtg@mail.gmail.com>
On Wed, Apr 23, 2014 at 07:37:11AM +0100, Victor Kamensky wrote:
> Hi Will,
Hi Victor,
Thanks for investigating this!
> On 22 April 2014 02:46, Will Deacon <will.deacon@arm.com> wrote:
> > On Mon, Apr 21, 2014 at 11:36:10PM +0100, Victor Kamensky wrote:
> The issue turned out to be in another commit: "word-at-a-time:
> provide generic big-endian zero_bytemask implementation". Because
> of the issue in zero_bytemask function full_name_hash and
> hash_name were giving different hash results for the same path
> name (without slash). The issue is that (~0ul << 64) gives
> ~0ul not 0. I could not come up with more elegant solution other
> than use inline function that check shift value against type maximum
> width. Please take a look below.
Ah yes, we're in UNDEFINED territory here and AArch64 differs from AArch32
wrt LSL >= register width. Can you try the following instead of your patch
please? I think it should be more efficient.
Cheers,
Will
--->8
diff --git a/include/asm-generic/word-at-a-time.h b/include/asm-generic/word-at-a-time.h
index d3909effd725..243ce8c84ee9 100644
--- a/include/asm-generic/word-at-a-time.h
+++ b/include/asm-generic/word-at-a-time.h
@@ -50,11 +50,7 @@ static inline bool has_zero(unsigned long val, unsigned long *data, const struct
}
#ifndef zero_bytemask
-#ifdef CONFIG_64BIT
-#define zero_bytemask(mask) (~0ul << fls64(mask))
-#else
-#define zero_bytemask(mask) (~0ul << fls(mask))
-#endif /* CONFIG_64BIT */
+#define zero_bytemask(mask) (mask ? ~0ul << __fls(mask) << 1 : ~0ul)
#endif /* zero_bytemask */
#endif /* _ASM_WORD_AT_A_TIME_H */
next prev parent reply other threads:[~2014-04-23 12:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 22:36 [PATCH] ARM64: disable DCACHE_WORD_ACCESS in big endian case Victor Kamensky
2014-04-22 9:46 ` Will Deacon
2014-04-23 6:37 ` Victor Kamensky
2014-04-23 12:38 ` Will Deacon [this message]
2014-04-23 16:22 ` Victor Kamensky
2014-04-23 16:37 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140423123845.GB5649@arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.