diff options
author | Stuart Menefy <stuart.menefy@st.com> | 2007-11-30 03:06:36 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-27 23:18:59 -0500 |
commit | cbaa118ecfd99fc5ed7adbd9c34a30e1c05e3c93 (patch) | |
tree | e60db5c0f3573558c97f39cfab78732220a72e6d /arch/sh/mm/cache-sh7705.c | |
parent | 325df7f20467da07901c4f2b006d3457bba0adec (diff) |
sh: Preparation for uncached jumps through PMB.
Presently most of the 29-bit physical parts do P1/P2 segmentation
with a 1:1 cached/uncached mapping, jumping between the two to
control the caching behaviour. This provides the basic infrastructure
to maintain this behaviour on 32-bit physical parts that don't map
P1/P2 at all, using a shiny new linker section and corresponding
fixmap entry.
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/mm/cache-sh7705.c')
-rw-r--r-- | arch/sh/mm/cache-sh7705.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/sh/mm/cache-sh7705.c b/arch/sh/mm/cache-sh7705.c index 4896d7376926..22dacc778823 100644 --- a/arch/sh/mm/cache-sh7705.c +++ b/arch/sh/mm/cache-sh7705.c | |||
@@ -71,7 +71,7 @@ void flush_icache_range(unsigned long start, unsigned long end) | |||
71 | /* | 71 | /* |
72 | * Writeback&Invalidate the D-cache of the page | 72 | * Writeback&Invalidate the D-cache of the page |
73 | */ | 73 | */ |
74 | static void __flush_dcache_page(unsigned long phys) | 74 | static void __uses_jump_to_uncached __flush_dcache_page(unsigned long phys) |
75 | { | 75 | { |
76 | unsigned long ways, waysize, addrstart; | 76 | unsigned long ways, waysize, addrstart; |
77 | unsigned long flags; | 77 | unsigned long flags; |
@@ -92,7 +92,7 @@ static void __flush_dcache_page(unsigned long phys) | |||
92 | * possible. | 92 | * possible. |
93 | */ | 93 | */ |
94 | local_irq_save(flags); | 94 | local_irq_save(flags); |
95 | jump_to_P2(); | 95 | jump_to_uncached(); |
96 | 96 | ||
97 | ways = current_cpu_data.dcache.ways; | 97 | ways = current_cpu_data.dcache.ways; |
98 | waysize = current_cpu_data.dcache.sets; | 98 | waysize = current_cpu_data.dcache.sets; |
@@ -118,7 +118,7 @@ static void __flush_dcache_page(unsigned long phys) | |||
118 | addrstart += current_cpu_data.dcache.way_incr; | 118 | addrstart += current_cpu_data.dcache.way_incr; |
119 | } while (--ways); | 119 | } while (--ways); |
120 | 120 | ||
121 | back_to_P1(); | 121 | back_to_cached(); |
122 | local_irq_restore(flags); | 122 | local_irq_restore(flags); |
123 | } | 123 | } |
124 | 124 | ||
@@ -132,15 +132,15 @@ void flush_dcache_page(struct page *page) | |||
132 | __flush_dcache_page(PHYSADDR(page_address(page))); | 132 | __flush_dcache_page(PHYSADDR(page_address(page))); |
133 | } | 133 | } |
134 | 134 | ||
135 | void flush_cache_all(void) | 135 | void __uses_jump_to_uncached flush_cache_all(void) |
136 | { | 136 | { |
137 | unsigned long flags; | 137 | unsigned long flags; |
138 | 138 | ||
139 | local_irq_save(flags); | 139 | local_irq_save(flags); |
140 | jump_to_P2(); | 140 | jump_to_uncached(); |
141 | 141 | ||
142 | cache_wback_all(); | 142 | cache_wback_all(); |
143 | back_to_P1(); | 143 | back_to_cached(); |
144 | local_irq_restore(flags); | 144 | local_irq_restore(flags); |
145 | } | 145 | } |
146 | 146 | ||