diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2007-07-10 12:32:56 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2007-07-10 12:32:56 -0400 |
commit | 24e9d0b96dac5503c0b6f034d553030c604228a7 (patch) | |
tree | 19924ab3906f524f8b50983612c8cf056dfdaa72 | |
parent | 8bb809df6919f927bcb910bbc852d5724eaa1eb9 (diff) |
[MIPS] Hook for platforms to define cachability of /dev/mem regions
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-rw-r--r-- | arch/mips/mm/cache.c | 10 | ||||
-rw-r--r-- | drivers/char/mem.c | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c index abf99b1eba13..81f925a9a731 100644 --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c | |||
@@ -6,6 +6,8 @@ | |||
6 | * Copyright (C) 1994 - 2003, 07 by Ralf Baechle (ralf@linux-mips.org) | 6 | * Copyright (C) 1994 - 2003, 07 by Ralf Baechle (ralf@linux-mips.org) |
7 | * Copyright (C) 2007 MIPS Technologies, Inc. | 7 | * Copyright (C) 2007 MIPS Technologies, Inc. |
8 | */ | 8 | */ |
9 | #include <linux/fs.h> | ||
10 | #include <linux/fcntl.h> | ||
9 | #include <linux/init.h> | 11 | #include <linux/init.h> |
10 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
11 | #include <linux/module.h> | 13 | #include <linux/module.h> |
@@ -164,3 +166,11 @@ void __init cpu_cache_init(void) | |||
164 | 166 | ||
165 | panic(cache_panic); | 167 | panic(cache_panic); |
166 | } | 168 | } |
169 | |||
170 | int __weak __uncached_access(struct file *file, unsigned long addr) | ||
171 | { | ||
172 | if (file->f_flags & O_SYNC) | ||
173 | return 1; | ||
174 | |||
175 | return addr >= __pa(high_memory); | ||
176 | } | ||
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index cc9a9d0df979..7e082bceed57 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c | |||
@@ -75,6 +75,13 @@ static inline int uncached_access(struct file *file, unsigned long addr) | |||
75 | * On ia64, we ignore O_SYNC because we cannot tolerate memory attribute aliases. | 75 | * On ia64, we ignore O_SYNC because we cannot tolerate memory attribute aliases. |
76 | */ | 76 | */ |
77 | return !(efi_mem_attributes(addr) & EFI_MEMORY_WB); | 77 | return !(efi_mem_attributes(addr) & EFI_MEMORY_WB); |
78 | #elif defined(CONFIG_MIPS) | ||
79 | { | ||
80 | extern int __uncached_access(struct file *file, | ||
81 | unsigned long addr); | ||
82 | |||
83 | return __uncached_access(file, addr); | ||
84 | } | ||
78 | #else | 85 | #else |
79 | /* | 86 | /* |
80 | * Accessing memory above the top the kernel knows about or through a file pointer | 87 | * Accessing memory above the top the kernel knows about or through a file pointer |