|
@@ -594,19 +594,21 @@ static void __init lguest_init_IRQ(void)
|
|
|
/* Some systems map "vectors" to interrupts weirdly. Lguest has
|
|
|
* a straightforward 1 to 1 mapping, so force that here. */
|
|
|
__get_cpu_var(vector_irq)[vector] = i;
|
|
|
- if (vector != SYSCALL_VECTOR) {
|
|
|
- set_intr_gate(vector,
|
|
|
- interrupt[vector-FIRST_EXTERNAL_VECTOR]);
|
|
|
- set_irq_chip_and_handler_name(i, &lguest_irq_controller,
|
|
|
- handle_level_irq,
|
|
|
- "level");
|
|
|
- }
|
|
|
+ if (vector != SYSCALL_VECTOR)
|
|
|
+ set_intr_gate(vector, interrupt[i]);
|
|
|
}
|
|
|
/* This call is required to set up for 4k stacks, where we have
|
|
|
* separate stacks for hard and soft interrupts. */
|
|
|
irq_ctx_init(smp_processor_id());
|
|
|
}
|
|
|
|
|
|
+void lguest_setup_irq(unsigned int irq)
|
|
|
+{
|
|
|
+ irq_to_desc_alloc_cpu(irq, 0);
|
|
|
+ set_irq_chip_and_handler_name(irq, &lguest_irq_controller,
|
|
|
+ handle_level_irq, "level");
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Time.
|
|
|
*
|