aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-07-24 00:28:26 -0400
committerPaul Mundt <lethal@linux-sh.org>2007-07-24 00:28:26 -0400
commit8cf1a74305688c85fc8d23ab7432a0c447ee6413 (patch)
treed43af5f2515db35ef6a705e5929780f91d34e898 /include/asm-sh
parentf695baf2df9e0413d3521661070103711545207a (diff)
sh: Add kmap_coherent()/kunmap_coherent() interface for SH-4.
This wires up kmap_coherent() and kunmap_coherent() on SH-4, and moves away from the p3map_mutex and reserved P3 space, opting to use fixmaps for colouring instead. The copy_user_page()/clear_user_page() implementations are moved to this, which fixes the nasty blowups with spinlock debugging as a result of having some of these calls nested under the page table lock. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh')
-rw-r--r--include/asm-sh/fixmap.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/asm-sh/fixmap.h b/include/asm-sh/fixmap.h
index 458e9fa5954..8a566177ad9 100644
--- a/include/asm-sh/fixmap.h
+++ b/include/asm-sh/fixmap.h
@@ -46,6 +46,9 @@
46 * fix-mapped? 46 * fix-mapped?
47 */ 47 */
48enum fixed_addresses { 48enum fixed_addresses {
49#define FIX_N_COLOURS 16
50 FIX_CMAP_BEGIN,
51 FIX_CMAP_END = FIX_CMAP_BEGIN + FIX_N_COLOURS,
49#ifdef CONFIG_HIGHMEM 52#ifdef CONFIG_HIGHMEM
50 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ 53 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
51 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, 54 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
@@ -53,8 +56,8 @@ enum fixed_addresses {
53 __end_of_fixed_addresses 56 __end_of_fixed_addresses
54}; 57};
55 58
56extern void __set_fixmap (enum fixed_addresses idx, 59extern void __set_fixmap(enum fixed_addresses idx,
57 unsigned long phys, pgprot_t flags); 60 unsigned long phys, pgprot_t flags);
58 61
59#define set_fixmap(idx, phys) \ 62#define set_fixmap(idx, phys) \
60 __set_fixmap(idx, phys, PAGE_KERNEL) 63 __set_fixmap(idx, phys, PAGE_KERNEL)
@@ -106,5 +109,4 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
106 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); 109 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
107 return __virt_to_fix(vaddr); 110 return __virt_to_fix(vaddr);
108} 111}
109
110#endif 112#endif