diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-07-24 00:28:26 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-07-24 00:28:26 -0400 |
commit | 8cf1a74305688c85fc8d23ab7432a0c447ee6413 (patch) | |
tree | d43af5f2515db35ef6a705e5929780f91d34e898 /include/asm-sh | |
parent | f695baf2df9e0413d3521661070103711545207a (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.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/asm-sh/fixmap.h b/include/asm-sh/fixmap.h index 458e9fa59545..8a566177ad96 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 | */ |
48 | enum fixed_addresses { | 48 | enum 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 | ||
56 | extern void __set_fixmap (enum fixed_addresses idx, | 59 | extern 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 |