Loading arch/sparc64/kernel/rtrap.S +8 −5 Original line number Diff line number Diff line Loading @@ -153,11 +153,14 @@ __handle_signal: rtrap_irq: rtrap_clr_l6: clr %l6 rtrap: ldub [%g6 + TI_CPU], %l0 sethi %hi(irq_stat), %l2 ! &softirq_active or %l2, %lo(irq_stat), %l2 ! &softirq_active irqsz_patchme: sllx %l0, 0, %l0 lduw [%l2 + %l0], %l1 ! softirq_pending #ifndef CONFIG_SMP sethi %hi(per_cpu____cpu_data), %l0 lduw [%l0 + %lo(per_cpu____cpu_data)], %l1 #else sethi %hi(per_cpu____cpu_data), %l0 or %l0, %lo(per_cpu____cpu_data), %l0 lduw [%l0 + %g5], %l1 #endif cmp %l1, 0 /* mm/ultra.S:xcall_report_regs KNOWS about this load. */ Loading arch/sparc64/kernel/setup.c +0 −12 Original line number Diff line number Diff line Loading @@ -511,18 +511,6 @@ void __init setup_arch(char **cmdline_p) conswitchp = &prom_con; #endif #ifdef CONFIG_SMP i = (unsigned long)&irq_stat[1] - (unsigned long)&irq_stat[0]; if ((i == SMP_CACHE_BYTES) || (i == (2 * SMP_CACHE_BYTES))) { extern unsigned int irqsz_patchme[1]; irqsz_patchme[0] |= ((i == SMP_CACHE_BYTES) ? SMP_CACHE_BYTES_SHIFT : \ SMP_CACHE_BYTES_SHIFT + 1); flushi((long)&irqsz_patchme[0]); } else { prom_printf("Unexpected size of irq_stat[] elements\n"); prom_halt(); } #endif /* Work out if we are starfire early on */ check_if_starfire(); Loading include/asm-sparc64/cpudata.h +2 −2 Original line number Diff line number Diff line /* cpudata.h: Per-cpu parameters. * * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 2003, 2005 David S. Miller (davem@redhat.com) */ #ifndef _SPARC64_CPUDATA_H Loading @@ -10,7 +10,7 @@ typedef struct { /* Dcache line 1 */ unsigned int __pad0; /* bh_count moved to irq_stat for consistency. KAO */ unsigned int __softirq_pending; /* must be 1st, see rtrap.S */ unsigned int multiplier; unsigned int counter; unsigned int idle_volume; Loading include/asm-sparc64/hardirq.h +5 −11 Original line number Diff line number Diff line /* hardirq.h: 64-bit Sparc hard IRQ support. * * Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1997, 1998, 2005 David S. Miller (davem@davemloft.net) */ #ifndef __SPARC64_HARDIRQ_H #define __SPARC64_HARDIRQ_H #include <linux/config.h> #include <linux/threads.h> #include <linux/spinlock.h> #include <linux/cache.h> #include <asm/cpudata.h> /* rtrap.S is sensitive to the offsets of these fields */ typedef struct { unsigned int __softirq_pending; } ____cacheline_aligned irq_cpustat_t; #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ #define __ARCH_IRQ_STAT #define local_softirq_pending() \ (local_cpu_data().__softirq_pending) #define HARDIRQ_BITS 8 Loading Loading
arch/sparc64/kernel/rtrap.S +8 −5 Original line number Diff line number Diff line Loading @@ -153,11 +153,14 @@ __handle_signal: rtrap_irq: rtrap_clr_l6: clr %l6 rtrap: ldub [%g6 + TI_CPU], %l0 sethi %hi(irq_stat), %l2 ! &softirq_active or %l2, %lo(irq_stat), %l2 ! &softirq_active irqsz_patchme: sllx %l0, 0, %l0 lduw [%l2 + %l0], %l1 ! softirq_pending #ifndef CONFIG_SMP sethi %hi(per_cpu____cpu_data), %l0 lduw [%l0 + %lo(per_cpu____cpu_data)], %l1 #else sethi %hi(per_cpu____cpu_data), %l0 or %l0, %lo(per_cpu____cpu_data), %l0 lduw [%l0 + %g5], %l1 #endif cmp %l1, 0 /* mm/ultra.S:xcall_report_regs KNOWS about this load. */ Loading
arch/sparc64/kernel/setup.c +0 −12 Original line number Diff line number Diff line Loading @@ -511,18 +511,6 @@ void __init setup_arch(char **cmdline_p) conswitchp = &prom_con; #endif #ifdef CONFIG_SMP i = (unsigned long)&irq_stat[1] - (unsigned long)&irq_stat[0]; if ((i == SMP_CACHE_BYTES) || (i == (2 * SMP_CACHE_BYTES))) { extern unsigned int irqsz_patchme[1]; irqsz_patchme[0] |= ((i == SMP_CACHE_BYTES) ? SMP_CACHE_BYTES_SHIFT : \ SMP_CACHE_BYTES_SHIFT + 1); flushi((long)&irqsz_patchme[0]); } else { prom_printf("Unexpected size of irq_stat[] elements\n"); prom_halt(); } #endif /* Work out if we are starfire early on */ check_if_starfire(); Loading
include/asm-sparc64/cpudata.h +2 −2 Original line number Diff line number Diff line /* cpudata.h: Per-cpu parameters. * * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 2003, 2005 David S. Miller (davem@redhat.com) */ #ifndef _SPARC64_CPUDATA_H Loading @@ -10,7 +10,7 @@ typedef struct { /* Dcache line 1 */ unsigned int __pad0; /* bh_count moved to irq_stat for consistency. KAO */ unsigned int __softirq_pending; /* must be 1st, see rtrap.S */ unsigned int multiplier; unsigned int counter; unsigned int idle_volume; Loading
include/asm-sparc64/hardirq.h +5 −11 Original line number Diff line number Diff line /* hardirq.h: 64-bit Sparc hard IRQ support. * * Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1997, 1998, 2005 David S. Miller (davem@davemloft.net) */ #ifndef __SPARC64_HARDIRQ_H #define __SPARC64_HARDIRQ_H #include <linux/config.h> #include <linux/threads.h> #include <linux/spinlock.h> #include <linux/cache.h> #include <asm/cpudata.h> /* rtrap.S is sensitive to the offsets of these fields */ typedef struct { unsigned int __softirq_pending; } ____cacheline_aligned irq_cpustat_t; #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ #define __ARCH_IRQ_STAT #define local_softirq_pending() \ (local_cpu_data().__softirq_pending) #define HARDIRQ_BITS 8 Loading