diff options
author | Giuseppe Cavallaro <peppe.cavallaro@st.com> | 2009-08-24 05:59:09 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-24 05:59:09 -0400 |
commit | 788e6af37a4ace8721eda72e4abe66fe0f6b49fd (patch) | |
tree | 121e2d52430dbe5adfb04549bd2c17480e93983f /arch | |
parent | ffad9d7a54a5e809007135595c778715aa0fb07a (diff) |
sh: fix sys_cacheflush error checking
sys_cacheflush should return with EINVAL if the cache parameter is not
one of ICACHE, DCACHE or BCACHE.
So, we need to include 0 in the first check.
It also adds the three definitions above as wrapper of the existent macros.
PS: ltp cacheflush01 test now passes.
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/include/asm/cachectl.h | 7 | ||||
-rw-r--r-- | arch/sh/kernel/sys_sh.c | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/arch/sh/include/asm/cachectl.h b/arch/sh/include/asm/cachectl.h index 305dd7082a66..6ffb4b7a212e 100644 --- a/arch/sh/include/asm/cachectl.h +++ b/arch/sh/include/asm/cachectl.h | |||
@@ -9,4 +9,11 @@ | |||
9 | 9 | ||
10 | #define CACHEFLUSH_I 0x4 | 10 | #define CACHEFLUSH_I 0x4 |
11 | 11 | ||
12 | /* | ||
13 | * Options for cacheflush system call | ||
14 | */ | ||
15 | #define ICACHE CACHEFLUSH_I /* flush instruction cache */ | ||
16 | #define DCACHE CACHEFLUSH_D_PURGE /* writeback and flush data cache */ | ||
17 | #define BCACHE (ICACHE|DCACHE) /* flush both caches */ | ||
18 | |||
12 | #endif /* _SH_CACHECTL_H */ | 19 | #endif /* _SH_CACHECTL_H */ |
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c index ec65dd8842b1..8aa5d1ceaf14 100644 --- a/arch/sh/kernel/sys_sh.c +++ b/arch/sh/kernel/sys_sh.c | |||
@@ -186,7 +186,7 @@ asmlinkage int sys_cacheflush(unsigned long addr, unsigned long len, int op) | |||
186 | { | 186 | { |
187 | struct vm_area_struct *vma; | 187 | struct vm_area_struct *vma; |
188 | 188 | ||
189 | if ((op < 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) | 189 | if ((op <= 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) |
190 | return -EINVAL; | 190 | return -EINVAL; |
191 | 191 | ||
192 | /* | 192 | /* |