浏览代码

sh: Zero out aliases counter when using SH-X3 hardware assistance.

This zeroes out the number of cache aliases in the cache info descriptors
when hardware alias avoidance is enabled. This cuts down on the amount of
flushing taken care of by common code, and also permits coherency control
to be disabled for the single CPU and 4k page size case.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt 15 年之前
父节点
当前提交
88253e8459
共有 1 个文件被更改,包括 10 次插入1 次删除
  1. 10 1
      arch/sh/mm/cache-shx3.c

+ 10 - 1
arch/sh/mm/cache-shx3.c

@@ -21,9 +21,18 @@ void __init shx3_cache_init(void)
 
 
 	ccr = __raw_readl(CCR);
 	ccr = __raw_readl(CCR);
 
 
-	if (boot_cpu_data.dcache.n_aliases)
+	/*
+	 * If we've got cache aliases, resolve them in hardware.
+	 */
+	if (boot_cpu_data.dcache.n_aliases || boot_cpu_data.icache.n_aliases) {
 		ccr |= CCR_CACHE_SNM;
 		ccr |= CCR_CACHE_SNM;
 
 
+		boot_cpu_data.icache.n_aliases = 0;
+		boot_cpu_data.dcache.n_aliases = 0;
+
+		pr_info("Enabling hardware synonym avoidance\n");
+	}
+
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
 	/*
 	/*
 	 * Broadcast I-cache block invalidations by default.
 	 * Broadcast I-cache block invalidations by default.