From: Paul Mundt With the recent cpumask changes, some things ended up being broken on sh64. This fixes them.. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton --- 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; _