Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks
[linux-2.6.git] / arch / x86 / include / asm / io_apic.h
similarity index 87%
rename from include/asm-x86/io_apic.h
rename to arch/x86/include/asm/io_apic.h
index 721605d8f116df1bd152c6b82f42e8586bb310e5..e475e009ae5d4e60dc0e828ad96373ef91f2799a 100644 (file)
@@ -1,9 +1,10 @@
-#ifndef __ASM_IO_APIC_H
-#define __ASM_IO_APIC_H
+#ifndef _ASM_X86_IO_APIC_H
+#define _ASM_X86_IO_APIC_H
 
 #include <linux/types.h>
 #include <asm/mpspec.h>
 #include <asm/apicdef.h>
+#include <asm/irq_vectors.h>
 
 /*
  * Intel IO-APIC support for SMP and UP systems.
@@ -87,24 +88,22 @@ struct IO_APIC_route_entry {
                mask            :  1,   /* 0: enabled, 1: disabled */
                __reserved_2    : 15;
 
-#ifdef CONFIG_X86_32
-       union {
-               struct {
-                       __u32   __reserved_1    : 24,
-                               physical_dest   :  4,
-                               __reserved_2    :  4;
-               } physical;
-
-               struct {
-                       __u32   __reserved_1    : 24,
-                               logical_dest    :  8;
-               } logical;
-       } dest;
-#else
        __u32   __reserved_3    : 24,
                dest            :  8;
-#endif
+} __attribute__ ((packed));
 
+struct IR_IO_APIC_route_entry {
+       __u64   vector          : 8,
+               zero            : 3,
+               index2          : 1,
+               delivery_status : 1,
+               polarity        : 1,
+               irr             : 1,
+               trigger         : 1,
+               mask            : 1,
+               reserved        : 31,
+               format          : 1,
+               index           : 15;
 } __attribute__ ((packed));
 
 #ifdef CONFIG_X86_IO_APIC
@@ -193,10 +192,23 @@ extern int io_apic_set_pci_routing(int ioapic, int pin, int irq,
 extern int (*ioapic_renumber_irq)(int ioapic, int irq);
 extern void ioapic_init_mappings(void);
 
+#ifdef CONFIG_X86_64
+extern int save_mask_IO_APIC_setup(void);
+extern void restore_IO_APIC_setup(void);
+extern void reinit_intr_remapped_IO_APIC(int);
+#endif
+
+extern int probe_nr_irqs(void);
+
 #else  /* !CONFIG_X86_IO_APIC */
 #define io_apic_assign_pci_irqs 0
 static const int timer_through_8259 = 0;
 static inline void ioapic_init_mappings(void) { }
-#endif
 
+static inline int probe_nr_irqs(void)
+{
+       return NR_IRQS;
+}
 #endif
+
+#endif /* _ASM_X86_IO_APIC_H */