diff options
author | James Bottomley <jejb@parisc-linux.org> | 2006-08-23 12:00:04 -0400 |
---|---|---|
committer | Matthew Wilcox <willy@parisc-linux.org> | 2006-10-04 08:46:21 -0400 |
commit | 20f4d3cb9b94ce3fec9a6135b9ad075b82b24f41 (patch) | |
tree | 995dec90d251e8e57abca8fea552d8ae5314a493 /include/asm-parisc/page.h | |
parent | e45da35e180a4fc91307648d021a598495742c32 (diff) |
[PARISC] parisc specific kmap API implementation for pa8800
This patch fixes the pa8800 at a gross level (there are still other
subtle incoherency issues which can still cause crashes and HPMCs).
What it does is try to force eject inequivalent aliases before they
become visible to the L2 cache (which is where we get the incoherence
problems).
A new function (parisc_requires_coherency) is introduced in
asm/processor.h to identify the pa8x00 processors (8800 and 8900)
which have the issue.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'include/asm-parisc/page.h')
-rw-r--r-- | include/asm-parisc/page.h | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/include/asm-parisc/page.h b/include/asm-parisc/page.h index 57d6d82756dd..3567208191e3 100644 --- a/include/asm-parisc/page.h +++ b/include/asm-parisc/page.h | |||
@@ -26,24 +26,10 @@ | |||
26 | 26 | ||
27 | struct page; | 27 | struct page; |
28 | 28 | ||
29 | extern void purge_kernel_dcache_page(unsigned long); | 29 | void copy_user_page_asm(void *to, void *from); |
30 | extern void copy_user_page_asm(void *to, void *from); | 30 | void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, |
31 | extern void clear_user_page_asm(void *page, unsigned long vaddr); | 31 | struct page *pg); |
32 | 32 | void clear_user_page(void *page, unsigned long vaddr, struct page *pg); | |
33 | static inline void | ||
34 | copy_user_page(void *vto, void *vfrom, unsigned long vaddr, struct page *pg) | ||
35 | { | ||
36 | copy_user_page_asm(vto, vfrom); | ||
37 | flush_kernel_dcache_page_asm(vto); | ||
38 | /* XXX: ppc flushes icache too, should we? */ | ||
39 | } | ||
40 | |||
41 | static inline void | ||
42 | clear_user_page(void *page, unsigned long vaddr, struct page *pg) | ||
43 | { | ||
44 | purge_kernel_dcache_page((unsigned long)page); | ||
45 | clear_user_page_asm(page, vaddr); | ||
46 | } | ||
47 | 33 | ||
48 | /* | 34 | /* |
49 | * These are used to make use of C type-checking.. | 35 | * These are used to make use of C type-checking.. |