diff options
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/include/asm/io.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h index eda9b909aa05..56ff96501350 100644 --- a/arch/alpha/include/asm/io.h +++ b/arch/alpha/include/asm/io.h | |||
@@ -37,8 +37,9 @@ | |||
37 | */ | 37 | */ |
38 | extern inline void __set_hae(unsigned long new_hae) | 38 | extern inline void __set_hae(unsigned long new_hae) |
39 | { | 39 | { |
40 | unsigned long flags; | 40 | unsigned long flags = swpipl(IPL_MAX); |
41 | local_irq_save(flags); | 41 | |
42 | barrier(); | ||
42 | 43 | ||
43 | alpha_mv.hae_cache = new_hae; | 44 | alpha_mv.hae_cache = new_hae; |
44 | *alpha_mv.hae_register = new_hae; | 45 | *alpha_mv.hae_register = new_hae; |
@@ -46,7 +47,8 @@ extern inline void __set_hae(unsigned long new_hae) | |||
46 | /* Re-read to make sure it was written. */ | 47 | /* Re-read to make sure it was written. */ |
47 | new_hae = *alpha_mv.hae_register; | 48 | new_hae = *alpha_mv.hae_register; |
48 | 49 | ||
49 | local_irq_restore(flags); | 50 | setipl(flags); |
51 | barrier(); | ||
50 | } | 52 | } |
51 | 53 | ||
52 | extern inline void set_hae(unsigned long new_hae) | 54 | extern inline void set_hae(unsigned long new_hae) |