[SPARC64]: Eliminate irq_cpustat_t.
We can put the __softirq_pending mask in the cpudata, no need for the silly NR_CPUS array in kernel/softirq.c Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
826509f811
commit
d7ce78fd9a
|
@ -153,11 +153,14 @@ __handle_signal:
|
||||||
rtrap_irq:
|
rtrap_irq:
|
||||||
rtrap_clr_l6: clr %l6
|
rtrap_clr_l6: clr %l6
|
||||||
rtrap:
|
rtrap:
|
||||||
ldub [%g6 + TI_CPU], %l0
|
#ifndef CONFIG_SMP
|
||||||
sethi %hi(irq_stat), %l2 ! &softirq_active
|
sethi %hi(per_cpu____cpu_data), %l0
|
||||||
or %l2, %lo(irq_stat), %l2 ! &softirq_active
|
lduw [%l0 + %lo(per_cpu____cpu_data)], %l1
|
||||||
irqsz_patchme: sllx %l0, 0, %l0
|
#else
|
||||||
lduw [%l2 + %l0], %l1 ! softirq_pending
|
sethi %hi(per_cpu____cpu_data), %l0
|
||||||
|
or %l0, %lo(per_cpu____cpu_data), %l0
|
||||||
|
lduw [%l0 + %g5], %l1
|
||||||
|
#endif
|
||||||
cmp %l1, 0
|
cmp %l1, 0
|
||||||
|
|
||||||
/* mm/ultra.S:xcall_report_regs KNOWS about this load. */
|
/* mm/ultra.S:xcall_report_regs KNOWS about this load. */
|
||||||
|
|
|
@ -511,18 +511,6 @@ void __init setup_arch(char **cmdline_p)
|
||||||
conswitchp = &prom_con;
|
conswitchp = &prom_con;
|
||||||
#endif
|
#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 */
|
/* Work out if we are starfire early on */
|
||||||
check_if_starfire();
|
check_if_starfire();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* cpudata.h: Per-cpu parameters.
|
/* 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
|
#ifndef _SPARC64_CPUDATA_H
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* Dcache line 1 */
|
/* 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 multiplier;
|
||||||
unsigned int counter;
|
unsigned int counter;
|
||||||
unsigned int idle_volume;
|
unsigned int idle_volume;
|
||||||
|
|
|
@ -1,22 +1,16 @@
|
||||||
/* hardirq.h: 64-bit Sparc hard IRQ support.
|
/* 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
|
#ifndef __SPARC64_HARDIRQ_H
|
||||||
#define __SPARC64_HARDIRQ_H
|
#define __SPARC64_HARDIRQ_H
|
||||||
|
|
||||||
#include <linux/config.h>
|
#include <asm/cpudata.h>
|
||||||
#include <linux/threads.h>
|
|
||||||
#include <linux/spinlock.h>
|
|
||||||
#include <linux/cache.h>
|
|
||||||
|
|
||||||
/* rtrap.S is sensitive to the offsets of these fields */
|
#define __ARCH_IRQ_STAT
|
||||||
typedef struct {
|
#define local_softirq_pending() \
|
||||||
unsigned int __softirq_pending;
|
(local_cpu_data().__softirq_pending)
|
||||||
} ____cacheline_aligned irq_cpustat_t;
|
|
||||||
|
|
||||||
#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
|
|
||||||
|
|
||||||
#define HARDIRQ_BITS 8
|
#define HARDIRQ_BITS 8
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue