]> Pileus Git - ~andy/linux/blobdiff - arch/sh/mm/cache-sh2a.c
Revert "sh: Kill off now redundant local irq disabling."
[~andy/linux] / arch / sh / mm / cache-sh2a.c
index d783361e3f0a14049e78408b4d7ca062f452a91e..975899d83564e1af4abeb87015f5b2d549f80939 100644 (file)
@@ -102,10 +102,12 @@ static void sh2a_flush_icache_range(void *args)
        struct flusher_data *data = args;
        unsigned long start, end;
        unsigned long v;
+       unsigned long flags;
 
        start = data->addr1 & ~(L1_CACHE_BYTES-1);
        end = (data->addr2 + L1_CACHE_BYTES-1) & ~(L1_CACHE_BYTES-1);
 
+       local_irq_save(flags);
        jump_to_uncached();
 
        for (v = start; v < end; v+=L1_CACHE_BYTES) {
@@ -120,10 +122,12 @@ static void sh2a_flush_icache_range(void *args)
                        }
                }
                /* I-Cache invalidate */
-               ctrl_outl(addr, CACHE_IC_ADDRESS_ARRAY | addr | 0x00000008);
+               ctrl_outl(addr,
+                         CACHE_IC_ADDRESS_ARRAY | addr | 0x00000008);
        }
 
        back_to_cached();
+       local_irq_restore(flags);
 }
 
 void __init sh2a_cache_init(void)