diff options
Diffstat (limited to 'arch/mips/mm')
-rw-r--r-- | arch/mips/mm/c-r4k.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 6806d58211b2..9355f1c9325f 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -7,6 +7,7 @@ | |||
7 | * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Ralf Baechle (ralf@gnu.org) | 7 | * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Ralf Baechle (ralf@gnu.org) |
8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
9 | */ | 9 | */ |
10 | #include <linux/hardirq.h> | ||
10 | #include <linux/init.h> | 11 | #include <linux/init.h> |
11 | #include <linux/highmem.h> | 12 | #include <linux/highmem.h> |
12 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
@@ -507,7 +508,11 @@ static inline void local_r4k_flush_data_cache_page(void * addr) | |||
507 | 508 | ||
508 | static void r4k_flush_data_cache_page(unsigned long addr) | 509 | static void r4k_flush_data_cache_page(unsigned long addr) |
509 | { | 510 | { |
510 | r4k_on_each_cpu(local_r4k_flush_data_cache_page, (void *) addr, 1, 1); | 511 | if (in_atomic()) |
512 | local_r4k_flush_data_cache_page((void *)addr); | ||
513 | else | ||
514 | r4k_on_each_cpu(local_r4k_flush_data_cache_page, (void *) addr, | ||
515 | 1, 1); | ||
511 | } | 516 | } |
512 | 517 | ||
513 | struct flush_icache_range_args { | 518 | struct flush_icache_range_args { |