vserver 1.9.3
[linux-2.6.git] / include / asm-ia64 / hardirq.h
1 #ifndef _ASM_IA64_HARDIRQ_H
2 #define _ASM_IA64_HARDIRQ_H
3
4 /*
5  * Modified 1998-2002, 2004 Hewlett-Packard Co
6  *      David Mosberger-Tang <davidm@hpl.hp.com>
7  */
8
9 #include <linux/config.h>
10
11 #include <linux/threads.h>
12 #include <linux/irq.h>
13
14 #include <asm/processor.h>
15
16 /*
17  * No irq_cpustat_t for IA-64.  The data is held in the per-CPU data structure.
18  */
19
20 #define __ARCH_IRQ_STAT 1
21
22 #define softirq_pending(cpu)            (cpu_data(cpu)->softirq_pending)
23 #define syscall_count(cpu)              /* unused on IA-64 */
24 #define ksoftirqd_task(cpu)             (cpu_data(cpu)->ksoftirqd)
25 #define nmi_count(cpu)                  0
26
27 #define local_softirq_pending()         (local_cpu_data->softirq_pending)
28 #define local_syscall_count()           /* unused on IA-64 */
29 #define local_ksoftirqd_task()          (local_cpu_data->ksoftirqd)
30 #define local_nmi_count()               0
31
32 /*
33  * We put the hardirq and softirq counter into the preemption counter. The bitmask has the
34  * following meaning:
35  *
36  * - bits 0-7 are the preemption count (max preemption depth: 256)
37  * - bits 8-15 are the softirq count (max # of softirqs: 256)
38  * - bits 16-29 are the hardirq count (max # of hardirqs: 16384)
39  *
40  * - (bit 63 is the PREEMPT_ACTIVE flag---not currently implemented.)
41  *
42  * PREEMPT_MASK: 0x000000ff
43  * SOFTIRQ_MASK: 0x0000ff00
44  * HARDIRQ_MASK: 0x3fff0000
45  */
46
47 #define PREEMPT_BITS    8
48 #define SOFTIRQ_BITS    8
49 #define HARDIRQ_BITS    14
50
51 #define PREEMPT_SHIFT   0
52 #define SOFTIRQ_SHIFT   (PREEMPT_SHIFT + PREEMPT_BITS)
53 #define HARDIRQ_SHIFT   (SOFTIRQ_SHIFT + SOFTIRQ_BITS)
54
55 /*
56  * The hardirq mask has to be large enough to have space for potentially all IRQ sources
57  * in the system nesting on a single CPU:
58  */
59 #if (1 << HARDIRQ_BITS) < NR_IRQS
60 # error HARDIRQ_BITS is too low!
61 #endif
62
63 extern void __iomem *ipi_base_addr;
64
65 #endif /* _ASM_IA64_HARDIRQ_H */