
From: Paul Mundt <lethal@Linux-SH.ORG>

With the recent cpumask changes, some things ended up being broken on sh64.
This fixes them..

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/sh64/kernel/irq.c         |    2 +-
 25-akpm/arch/sh64/kernel/time.c        |    4 ++--
 25-akpm/include/asm-sh64/bitops.h      |    8 +++-----
 25-akpm/include/asm-sh64/thread_info.h |    2 +-
 4 files changed, 7 insertions(+), 9 deletions(-)

diff -puN arch/sh64/kernel/irq.c~sh64-cpumask-cleanup arch/sh64/kernel/irq.c
--- 25/arch/sh64/kernel/irq.c~sh64-cpumask-cleanup	Thu Jul  8 15:18:08 2004
+++ 25-akpm/arch/sh64/kernel/irq.c	Thu Jul  8 15:18:08 2004
@@ -437,7 +437,7 @@ int request_irq(unsigned int irq,
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
diff -puN arch/sh64/kernel/time.c~sh64-cpumask-cleanup arch/sh64/kernel/time.c
--- 25/arch/sh64/kernel/time.c~sh64-cpumask-cleanup	Thu Jul  8 15:18:08 2004
+++ 25-akpm/arch/sh64/kernel/time.c	Thu Jul  8 15:18:08 2004
@@ -522,8 +522,8 @@ static irqreturn_t rtc_interrupt(int irq
 	return IRQ_HANDLED;
 }
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
-static struct irqaction irq1  = { rtc_interrupt, SA_INTERRUPT, 0, "rtc", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
+static struct irqaction irq1  = { rtc_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "rtc", NULL, NULL};
 
 void __init time_init(void)
 {
diff -puN include/asm-sh64/bitops.h~sh64-cpumask-cleanup include/asm-sh64/bitops.h
--- 25/include/asm-sh64/bitops.h~sh64-cpumask-cleanup	Thu Jul  8 15:18:08 2004
+++ 25-akpm/include/asm-sh64/bitops.h	Thu Jul  8 15:18:08 2004
@@ -46,10 +46,9 @@ static inline void __set_bit(int nr, voi
  */
 #define smp_mb__before_clear_bit()	barrier()
 #define smp_mb__after_clear_bit()	barrier()
-static __inline__ void clear_bit(int nr, void * addr)
+static inline void clear_bit(int nr, volatile unsigned long *a)
 {
 	int	mask;
-	unsigned int *a = addr;
 	unsigned long flags;
 
 	a += nr >> 5;
@@ -59,10 +58,9 @@ static __inline__ void clear_bit(int nr,
 	local_irq_restore(flags);
 }
 
-static inline void __clear_bit(int nr, void *addr)
+static inline void __clear_bit(int nr, volatile unsigned long *a)
 {
 	int	mask;
-	unsigned int *a = addr;
 
 	a += nr >> 5;
 	mask = 1 << (nr & 0x1f);
@@ -247,7 +245,7 @@ static inline unsigned long __ffs(unsign
  * @offset: The bitnumber to start searching at
  * @size: The maximum size to search
  */
-static inline unsigned long find_next_bit(unsigned long *addr,
+static inline unsigned long find_next_bit(const unsigned long *addr,
 	unsigned long size, unsigned long offset)
 {
 	unsigned int *p = ((unsigned int *) addr) + (offset >> 5);
diff -puN include/asm-sh64/thread_info.h~sh64-cpumask-cleanup include/asm-sh64/thread_info.h
--- 25/include/asm-sh64/thread_info.h~sh64-cpumask-cleanup	Thu Jul  8 15:18:08 2004
+++ 25-akpm/include/asm-sh64/thread_info.h	Thu Jul  8 15:18:08 2004
@@ -20,7 +20,7 @@
 struct thread_info {
 	struct task_struct	*task;		/* main task structure */
 	struct exec_domain	*exec_domain;	/* execution domain */
-	__u32			flags;		/* low level flags */
+	unsigned long		flags;		/* low level flags */
 	/* Put the 4 32-bit fields together to make asm offsetting easier. */
 	__s32			preempt_count; /* 0 => preemptable, <0 => BUG */
 	__u16			cpu;
_
