diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-09-24 03:38:25 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-09-24 03:38:25 -0400 |
commit | d10040f7eb808cd984b563d1cf727a1020990a2e (patch) | |
tree | 08bb8f1357b41ee194b7f198b82af90fe9db8ccb /arch/sh | |
parent | 1a442fe02d205d6980202b07f799ab9336e72ad7 (diff) |
sh: Fix alias calculation for non-aliasing cases.
There was an off-by-1 on the cache alias detection logic on SH-4,
which caused n_aliases to always be 1 even when the page size
precluded the existence of aliases.
With this corrected, 64KB pages happily reports n_aliases == 0, and
hits the appropriate fast paths in the flushing routines.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/mm/cache-sh4.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index bbc226469aa1..6c36c2fb8199 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * arch/sh/mm/cache-sh4.c | 2 | * arch/sh/mm/cache-sh4.c |
3 | * | 3 | * |
4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | 4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
5 | * Copyright (C) 2001 - 2006 Paul Mundt | 5 | * Copyright (C) 2001 - 2007 Paul Mundt |
6 | * Copyright (C) 2003 Richard Curnow | 6 | * Copyright (C) 2003 Richard Curnow |
7 | * | 7 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 8 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -44,7 +44,7 @@ static void (*__flush_dcache_segment_fn)(unsigned long, unsigned long) = | |||
44 | static void compute_alias(struct cache_info *c) | 44 | static void compute_alias(struct cache_info *c) |
45 | { | 45 | { |
46 | c->alias_mask = ((c->sets - 1) << c->entry_shift) & ~(PAGE_SIZE - 1); | 46 | c->alias_mask = ((c->sets - 1) << c->entry_shift) & ~(PAGE_SIZE - 1); |
47 | c->n_aliases = (c->alias_mask >> PAGE_SHIFT) + 1; | 47 | c->n_aliases = c->alias_mask ? (c->alias_mask >> PAGE_SHIFT) + 1 : 0; |
48 | } | 48 | } |
49 | 49 | ||
50 | static void __init emit_cache_params(void) | 50 | static void __init emit_cache_params(void) |