diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-03-23 09:50:03 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-03-23 16:20:20 -0400 |
commit | 80c5520811d3805adcb15c570ea5e2d489fa5d0b (patch) | |
tree | ae797a7f4af39f80e77526533d06ac23b439f0ab /arch/x86/include/asm/hardirq.h | |
parent | b3e3b302cf6dc8d60b67f0e84d1fa5648889c038 (diff) | |
parent | 8c083f081d0014057901c68a0a3e0f8ca7ac8d23 (diff) |
Merge branch 'cpus4096' into irq/threaded
Conflicts:
arch/parisc/kernel/irq.c
kernel/irq/handle.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/include/asm/hardirq.h')
-rw-r--r-- | arch/x86/include/asm/hardirq.h | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h index 000787df66e..039db6aa8e0 100644 --- a/arch/x86/include/asm/hardirq.h +++ b/arch/x86/include/asm/hardirq.h | |||
@@ -1,11 +1,53 @@ | |||
1 | #ifdef CONFIG_X86_32 | 1 | #ifndef _ASM_X86_HARDIRQ_H |
2 | # include "hardirq_32.h" | 2 | #define _ASM_X86_HARDIRQ_H |
3 | #else | 3 | |
4 | # include "hardirq_64.h" | 4 | #include <linux/threads.h> |
5 | #include <linux/irq.h> | ||
6 | |||
7 | typedef struct { | ||
8 | unsigned int __softirq_pending; | ||
9 | unsigned int __nmi_count; /* arch dependent */ | ||
10 | unsigned int irq0_irqs; | ||
11 | #ifdef CONFIG_X86_LOCAL_APIC | ||
12 | unsigned int apic_timer_irqs; /* arch dependent */ | ||
13 | unsigned int irq_spurious_count; | ||
14 | #endif | ||
15 | unsigned int generic_irqs; /* arch dependent */ | ||
16 | #ifdef CONFIG_SMP | ||
17 | unsigned int irq_resched_count; | ||
18 | unsigned int irq_call_count; | ||
19 | unsigned int irq_tlb_count; | ||
20 | #endif | ||
21 | #ifdef CONFIG_X86_MCE | ||
22 | unsigned int irq_thermal_count; | ||
23 | # ifdef CONFIG_X86_64 | ||
24 | unsigned int irq_threshold_count; | ||
25 | # endif | ||
5 | #endif | 26 | #endif |
27 | } ____cacheline_aligned irq_cpustat_t; | ||
28 | |||
29 | DECLARE_PER_CPU(irq_cpustat_t, irq_stat); | ||
30 | |||
31 | /* We can have at most NR_VECTORS irqs routed to a cpu at a time */ | ||
32 | #define MAX_HARDIRQS_PER_CPU NR_VECTORS | ||
33 | |||
34 | #define __ARCH_IRQ_STAT | ||
35 | |||
36 | #define inc_irq_stat(member) percpu_add(irq_stat.member, 1) | ||
37 | |||
38 | #define local_softirq_pending() percpu_read(irq_stat.__softirq_pending) | ||
39 | |||
40 | #define __ARCH_SET_SOFTIRQ_PENDING | ||
41 | |||
42 | #define set_softirq_pending(x) percpu_write(irq_stat.__softirq_pending, (x)) | ||
43 | #define or_softirq_pending(x) percpu_or(irq_stat.__softirq_pending, (x)) | ||
44 | |||
45 | extern void ack_bad_irq(unsigned int irq); | ||
6 | 46 | ||
7 | extern u64 arch_irq_stat_cpu(unsigned int cpu); | 47 | extern u64 arch_irq_stat_cpu(unsigned int cpu); |
8 | #define arch_irq_stat_cpu arch_irq_stat_cpu | 48 | #define arch_irq_stat_cpu arch_irq_stat_cpu |
9 | 49 | ||
10 | extern u64 arch_irq_stat(void); | 50 | extern u64 arch_irq_stat(void); |
11 | #define arch_irq_stat arch_irq_stat | 51 | #define arch_irq_stat arch_irq_stat |
52 | |||
53 | #endif /* _ASM_X86_HARDIRQ_H */ | ||