#ifndef __ISERIES_SETUP_H__
#define __ISERIES_SETUP_H__
+#include <linux/irq.h> /* for irq_desc_t */
+
extern void iSeries_init_early(void);
extern void iSeries_init(unsigned long r3, unsigned long ird_start,
unsigned long ird_end, unsigned long cline_start,
#ifdef CONFIG_PPC_ISERIES
-extern void __no_use_sti(void);
-extern void __no_use_cli(void);
-extern void __no_use_restore_flags(unsigned long);
-extern unsigned long __no_use_save_flags(void);
-extern void __no_use_set_lost(unsigned long);
-extern void __no_lpq_restore_flags(unsigned long);
-
-#define local_irq_disable() __no_use_cli()
-#define local_irq_enable() __no_use_sti()
-#define local_save_flags(flags) ((flags) = __no_use_save_flags())
-#define local_irq_restore(flags) __no_use_restore_flags((unsigned long)flags)
-#define local_irq_save(flags) ({local_save_flags(flags);local_irq_disable();})
+extern unsigned long local_get_flags(void);
+extern unsigned long local_irq_disable(void);
+extern void local_irq_restore(unsigned long);
+
+#define local_irq_enable() local_irq_restore(1)
+#define local_save_flags(flags) ((flags) = local_get_flags())
+#define local_irq_save(flags) ((flags) = local_irq_disable())
+
+#define irqs_disabled() (local_get_flags() == 0)
#else
#define local_irq_save(flags) __do_save_and_cli(&flags)
+#define irqs_disabled() \
+({ \
+ unsigned long flags; \
+ local_save_flags(flags); \
+ !(flags & MSR_EE); \
+})
+
#endif /* CONFIG_PPC_ISERIES */
#define mask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->disable) irq_desc[irq].handler->disable(irq);})