aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-ia64')
-rw-r--r--include/asm-ia64/hw_irq.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h
index c054d7a9aaa7..4eff7ff2da82 100644
--- a/include/asm-ia64/hw_irq.h
+++ b/include/asm-ia64/hw_irq.h
@@ -90,13 +90,24 @@ enum {
90extern __u8 isa_irq_to_vector_map[16]; 90extern __u8 isa_irq_to_vector_map[16];
91#define isa_irq_to_vector(x) isa_irq_to_vector_map[(x)] 91#define isa_irq_to_vector(x) isa_irq_to_vector_map[(x)]
92 92
93struct irq_cfg {
94 ia64_vector vector;
95};
96extern spinlock_t vector_lock;
97extern struct irq_cfg irq_cfg[NR_IRQS];
98DECLARE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq);
99
93extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */ 100extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */
94 101
102extern int bind_irq_vector(int irq, int vector);
95extern int assign_irq_vector (int irq); /* allocate a free vector */ 103extern int assign_irq_vector (int irq); /* allocate a free vector */
96extern void free_irq_vector (int vector); 104extern void free_irq_vector (int vector);
97extern int reserve_irq_vector (int vector); 105extern int reserve_irq_vector (int vector);
106extern void __setup_vector_irq(int cpu);
98extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); 107extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
99extern void register_percpu_irq (ia64_vector vec, struct irqaction *action); 108extern void register_percpu_irq (ia64_vector vec, struct irqaction *action);
109extern int check_irq_used (int irq);
110extern void destroy_and_reserve_irq (unsigned int irq);
100 111
101static inline void ia64_resend_irq(unsigned int vector) 112static inline void ia64_resend_irq(unsigned int vector)
102{ 113{
@@ -113,7 +124,7 @@ extern irq_desc_t irq_desc[NR_IRQS];
113static inline unsigned int 124static inline unsigned int
114__ia64_local_vector_to_irq (ia64_vector vec) 125__ia64_local_vector_to_irq (ia64_vector vec)
115{ 126{
116 return (unsigned int) vec; 127 return __get_cpu_var(vector_irq)[vec];
117} 128}
118#endif 129#endif
119 130
@@ -131,7 +142,7 @@ __ia64_local_vector_to_irq (ia64_vector vec)
131static inline ia64_vector 142static inline ia64_vector
132irq_to_vector (int irq) 143irq_to_vector (int irq)
133{ 144{
134 return (ia64_vector) irq; 145 return irq_cfg[irq].vector;
135} 146}
136 147
137/* 148/*