
From: Stephen Rothwell <sfr@canb.auug.org.au>

This patch allows iSeries to come much closer to building.

This is a precurser to my trying to merge the virtual device drivers for
iSeries (console, disk and cdrom).



---

 arch/ppc64/kernel/iSeries_setup.h |    2 ++
 include/asm-ppc64/hw_irq.h        |   28 ++++++++++++++++------------
 include/asm-ppc64/system.h        |    7 -------
 3 files changed, 18 insertions(+), 19 deletions(-)

diff -puN arch/ppc64/kernel/iSeries_setup.h~ppc64-iseries-fixes arch/ppc64/kernel/iSeries_setup.h
--- 25/arch/ppc64/kernel/iSeries_setup.h~ppc64-iseries-fixes	2004-01-19 21:11:44.000000000 -0800
+++ 25-akpm/arch/ppc64/kernel/iSeries_setup.h	2004-01-19 21:11:44.000000000 -0800
@@ -19,6 +19,8 @@
 #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,
diff -puN include/asm-ppc64/hw_irq.h~ppc64-iseries-fixes include/asm-ppc64/hw_irq.h
--- 25/include/asm-ppc64/hw_irq.h~ppc64-iseries-fixes	2004-01-19 21:11:44.000000000 -0800
+++ 25-akpm/include/asm-ppc64/hw_irq.h	2004-01-19 21:11:44.000000000 -0800
@@ -21,18 +21,15 @@ extern void ppc_irq_dispatch_handler(str
 
 #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
 
@@ -69,6 +66,13 @@ static inline void __do_save_and_cli(uns
 
 #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);})
diff -puN include/asm-ppc64/system.h~ppc64-iseries-fixes include/asm-ppc64/system.h
--- 25/include/asm-ppc64/system.h~ppc64-iseries-fixes	2004-01-19 21:11:44.000000000 -0800
+++ 25-akpm/include/asm-ppc64/system.h	2004-01-19 21:11:44.000000000 -0800
@@ -104,13 +104,6 @@ extern struct task_struct * _switch(stru
 struct pt_regs;
 extern void dump_regs(struct pt_regs *);
 
-#define irqs_disabled()				\
-({						\
-	unsigned long flags;			\
-	local_save_flags(flags);		\
-	!(flags & MSR_EE);			\
-})
-
 static inline int __is_processor(unsigned long pv)
 {
 	unsigned long pvr;

_
