]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/alpha/include/asm/io.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / arch / alpha / include / asm / io.h
index eda9b909aa05e84680d7eb0fa322c5fc4177dd1f..56ff96501350a3741a5621e1ab16590ac9056ab0 100644 (file)
@@ -37,8 +37,9 @@
  */
 extern inline void __set_hae(unsigned long new_hae)
 {
-       unsigned long flags;
-       local_irq_save(flags);
+       unsigned long flags = swpipl(IPL_MAX);
+
+       barrier();
 
        alpha_mv.hae_cache = new_hae;
        *alpha_mv.hae_register = new_hae;
@@ -46,7 +47,8 @@ extern inline void __set_hae(unsigned long new_hae)
        /* Re-read to make sure it was written.  */
        new_hae = *alpha_mv.hae_register;
 
-       local_irq_restore(flags);
+       setipl(flags);
+       barrier();
 }
 
 extern inline void set_hae(unsigned long new_hae)