]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-x86/hw_irq_64.h
x86: convert to generic helpers for IPI function calls
[linux-2.6-omap-h63xx.git] / include / asm-x86 / hw_irq_64.h
index 09dfc18a6dd05cb95e80e2459abbf967271fa736..fe657812d4dfeda45665364ad9e52f98ea925b7f 100644 (file)
  * cleanup after irq migration.
  */
 #define IRQ_MOVE_CLEANUP_VECTOR        FIRST_EXTERNAL_VECTOR
+
 /*
  * Vectors 0x30-0x3f are used for ISA interrupts.
  */
-#define IRQ0_VECTOR            FIRST_EXTERNAL_VECTOR + 0x10
-#define IRQ1_VECTOR            IRQ0_VECTOR + 1
-#define IRQ2_VECTOR            IRQ0_VECTOR + 2
-#define IRQ3_VECTOR            IRQ0_VECTOR + 3
-#define IRQ4_VECTOR            IRQ0_VECTOR + 4
-#define IRQ5_VECTOR            IRQ0_VECTOR + 5 
-#define IRQ6_VECTOR            IRQ0_VECTOR + 6
-#define IRQ7_VECTOR            IRQ0_VECTOR + 7
-#define IRQ8_VECTOR            IRQ0_VECTOR + 8
-#define IRQ9_VECTOR            IRQ0_VECTOR + 9
-#define IRQ10_VECTOR           IRQ0_VECTOR + 10
-#define IRQ11_VECTOR           IRQ0_VECTOR + 11
-#define IRQ12_VECTOR           IRQ0_VECTOR + 12
-#define IRQ13_VECTOR           IRQ0_VECTOR + 13
-#define IRQ14_VECTOR           IRQ0_VECTOR + 14
-#define IRQ15_VECTOR           IRQ0_VECTOR + 15
+#define IRQ0_VECTOR            (FIRST_EXTERNAL_VECTOR + 0x10)
+#define IRQ1_VECTOR            (IRQ0_VECTOR + 1)
+#define IRQ2_VECTOR            (IRQ0_VECTOR + 2)
+#define IRQ3_VECTOR            (IRQ0_VECTOR + 3)
+#define IRQ4_VECTOR            (IRQ0_VECTOR + 4)
+#define IRQ5_VECTOR            (IRQ0_VECTOR + 5)
+#define IRQ6_VECTOR            (IRQ0_VECTOR + 6)
+#define IRQ7_VECTOR            (IRQ0_VECTOR + 7)
+#define IRQ8_VECTOR            (IRQ0_VECTOR + 8)
+#define IRQ9_VECTOR            (IRQ0_VECTOR + 9)
+#define IRQ10_VECTOR           (IRQ0_VECTOR + 10)
+#define IRQ11_VECTOR           (IRQ0_VECTOR + 11)
+#define IRQ12_VECTOR           (IRQ0_VECTOR + 12)
+#define IRQ13_VECTOR           (IRQ0_VECTOR + 13)
+#define IRQ14_VECTOR           (IRQ0_VECTOR + 14)
+#define IRQ15_VECTOR           (IRQ0_VECTOR + 15)
 
 /*
  * Special IRQ vectors used by the SMP architecture, 0xf0-0xff
@@ -68,6 +68,7 @@
 #define ERROR_APIC_VECTOR      0xfe
 #define RESCHEDULE_VECTOR      0xfd
 #define CALL_FUNCTION_VECTOR   0xfc
+#define        CALL_FUNCTION_SINGLE_VECTOR     0xfb
 /* fb free - please don't readd KDB here because it's useless
    (hint - think what a NMI bit does to a vector) */
 #define THERMAL_APIC_VECTOR    0xfa
@@ -102,6 +103,7 @@ void spurious_interrupt(void);
 void error_interrupt(void);
 void reschedule_interrupt(void);
 void call_function_interrupt(void);
+void call_function_single_interrupt(void);
 void irq_move_cleanup_interrupt(void);
 void invalidate_interrupt0(void);
 void invalidate_interrupt1(void);
@@ -135,11 +137,13 @@ extern void init_8259A(int aeoi);
 extern void send_IPI_self(int vector);
 extern void init_VISWS_APIC_irqs(void);
 extern void setup_IO_APIC(void);
+extern void enable_IO_APIC(void);
 extern void disable_IO_APIC(void);
 extern void print_IO_APIC(void);
 extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn);
 extern void send_IPI(int dest, int vector);
 extern void setup_ioapic_dest(void);
+extern void native_init_IRQ(void);
 
 extern unsigned long io_apic_irqs;
 
@@ -148,9 +152,6 @@ extern atomic_t irq_mis_count;
 
 #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
 
-#define __STR(x) #x
-#define STR(x) __STR(x)
-
 #include <asm/ptrace.h>
 
 #define IRQ_NAME2(nr) nr##_interrupt(void)
@@ -160,13 +161,12 @@ extern atomic_t irq_mis_count;
  *     SMP has a few special interrupts for IPI messages
  */
 
-#define BUILD_IRQ(nr) \
-asmlinkage void IRQ_NAME(nr); \
-__asm__( \
-"\n.p2align\n" \
-"IRQ" #nr "_interrupt:\n\t" \
-       "push $~(" #nr ") ; " \
-       "jmp common_interrupt");
+#define BUILD_IRQ(nr)                          \
+       asmlinkage void IRQ_NAME(nr);           \
+       asm("\n.p2align\n"                      \
+           "IRQ" #nr "_interrupt:\n\t"         \
+           "push $~(" #nr ") ; "               \
+           "jmp common_interrupt");
 
 #define platform_legacy_irq(irq)       ((irq) < 16)