diff options
author | David S. Miller <davem@davemloft.net> | 2008-11-26 04:00:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-04 12:17:07 -0500 |
commit | 64273d08dfb41549df3cd815baaaff781cd99992 (patch) | |
tree | c39284911a809c464d10b285de7dfe7421f92e84 /arch/sparc/mm | |
parent | 9acee190c8c055f634475ad3f742ff07049dd51e (diff) |
sparc32: Don't btfixup cache flush ops for viking multiple times.
Just do it once.
Pointed out by Al Viro.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/mm')
-rw-r--r-- | arch/sparc/mm/srmmu.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c index dd8aa36f366c..56df59903eaa 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c | |||
@@ -1916,18 +1916,6 @@ static void __cpuinit poke_viking(void) | |||
1916 | mreg |= VIKING_SBENABLE; | 1916 | mreg |= VIKING_SBENABLE; |
1917 | mreg &= ~(VIKING_ACENABLE); | 1917 | mreg &= ~(VIKING_ACENABLE); |
1918 | srmmu_set_mmureg(mreg); | 1918 | srmmu_set_mmureg(mreg); |
1919 | |||
1920 | #ifdef CONFIG_SMP | ||
1921 | /* Avoid unnecessary cross calls. */ | ||
1922 | BTFIXUPCOPY_CALL(flush_cache_all, local_flush_cache_all); | ||
1923 | BTFIXUPCOPY_CALL(flush_cache_mm, local_flush_cache_mm); | ||
1924 | BTFIXUPCOPY_CALL(flush_cache_range, local_flush_cache_range); | ||
1925 | BTFIXUPCOPY_CALL(flush_cache_page, local_flush_cache_page); | ||
1926 | BTFIXUPCOPY_CALL(__flush_page_to_ram, local_flush_page_to_ram); | ||
1927 | BTFIXUPCOPY_CALL(flush_sig_insns, local_flush_sig_insns); | ||
1928 | BTFIXUPCOPY_CALL(flush_page_for_dma, local_flush_page_for_dma); | ||
1929 | btfixup(); | ||
1930 | #endif | ||
1931 | } | 1919 | } |
1932 | 1920 | ||
1933 | static void __init init_viking(void) | 1921 | static void __init init_viking(void) |
@@ -2272,6 +2260,17 @@ void __init ld_mmu_srmmu(void) | |||
2272 | BTFIXUPSET_CALL(__flush_page_to_ram, smp_flush_page_to_ram, BTFIXUPCALL_NORM); | 2260 | BTFIXUPSET_CALL(__flush_page_to_ram, smp_flush_page_to_ram, BTFIXUPCALL_NORM); |
2273 | BTFIXUPSET_CALL(flush_sig_insns, smp_flush_sig_insns, BTFIXUPCALL_NORM); | 2261 | BTFIXUPSET_CALL(flush_sig_insns, smp_flush_sig_insns, BTFIXUPCALL_NORM); |
2274 | BTFIXUPSET_CALL(flush_page_for_dma, smp_flush_page_for_dma, BTFIXUPCALL_NORM); | 2262 | BTFIXUPSET_CALL(flush_page_for_dma, smp_flush_page_for_dma, BTFIXUPCALL_NORM); |
2263 | |||
2264 | if (poke_srmmu == poke_viking) { | ||
2265 | /* Avoid unnecessary cross calls. */ | ||
2266 | BTFIXUPCOPY_CALL(flush_cache_all, local_flush_cache_all); | ||
2267 | BTFIXUPCOPY_CALL(flush_cache_mm, local_flush_cache_mm); | ||
2268 | BTFIXUPCOPY_CALL(flush_cache_range, local_flush_cache_range); | ||
2269 | BTFIXUPCOPY_CALL(flush_cache_page, local_flush_cache_page); | ||
2270 | BTFIXUPCOPY_CALL(__flush_page_to_ram, local_flush_page_to_ram); | ||
2271 | BTFIXUPCOPY_CALL(flush_sig_insns, local_flush_sig_insns); | ||
2272 | BTFIXUPCOPY_CALL(flush_page_for_dma, local_flush_page_for_dma); | ||
2273 | } | ||
2275 | #endif | 2274 | #endif |
2276 | 2275 | ||
2277 | if (sparc_cpu_model == sun4d) | 2276 | if (sparc_cpu_model == sun4d) |