[PATCH] x86: Move direct PCI scanning functions out of line
authorAndi Kleen <ak@suse.de>
Tue, 26 Sep 2006 08:52:41 +0000 (10:52 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Tue, 26 Sep 2006 08:52:41 +0000 (10:52 +0200)
Saves about 200 bytes of code space.

Signed-off-by: Andi Kleen <ak@suse.de>
arch/i386/pci/Makefile
arch/i386/pci/early.c [new file with mode: 0644]
arch/x86_64/pci/Makefile
include/asm-x86_64/pci-direct.h

index 62ad75c..1594d2f 100644 (file)
@@ -11,4 +11,4 @@ pci-y                         += legacy.o irq.o
 pci-$(CONFIG_X86_VISWS)                := visws.o fixup.o
 pci-$(CONFIG_X86_NUMAQ)                := numa.o irq.o
 
-obj-y                          += $(pci-y) common.o
+obj-y                          += $(pci-y) common.o early.o
diff --git a/arch/i386/pci/early.c b/arch/i386/pci/early.c
new file mode 100644 (file)
index 0000000..b1f7f40
--- /dev/null
@@ -0,0 +1,44 @@
+#include <linux/kernel.h>
+#include <asm/pci-direct.h>
+#include <asm/io.h>
+
+/* Direct PCI access. This is used for PCI accesses in early boot before
+   the PCI subsystem works. */
+
+#define PDprintk(x...)
+
+u32 read_pci_config(u8 bus, u8 slot, u8 func, u8 offset)
+{
+       u32 v;
+       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
+       v = inl(0xcfc);
+       if (v != 0xffffffff)
+               PDprintk("%x reading 4 from %x: %x\n", slot, offset, v);
+       return v;
+}
+
+u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset)
+{
+       u8 v;
+       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
+       v = inb(0xcfc + (offset&3));
+       PDprintk("%x reading 1 from %x: %x\n", slot, offset, v);
+       return v;
+}
+
+u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset)
+{
+       u16 v;
+       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
+       v = inw(0xcfc + (offset&2));
+       PDprintk("%x reading 2 from %x: %x\n", slot, offset, v);
+       return v;
+}
+
+void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset,
+                                   u32 val)
+{
+       PDprintk("%x writing to %x: %x\n", slot, offset, val);
+       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
+       outl(val, 0xcfc);
+}
index a3f6ad5..1eb18f4 100644 (file)
@@ -9,7 +9,7 @@ obj-y           := i386.o
 obj-$(CONFIG_PCI_DIRECT)+= direct.o
 obj-y          += fixup.o init.o
 obj-$(CONFIG_ACPI)     += acpi.o
-obj-y                  += legacy.o irq.o common.o
+obj-y                  += legacy.o irq.o common.o early.o
 # mmconfig has a 64bit special
 obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o
 
@@ -23,3 +23,4 @@ common-y += ../../i386/pci/common.o
 fixup-y  += ../../i386/pci/fixup.o
 i386-y  += ../../i386/pci/i386.o
 init-y += ../../i386/pci/init.o
+early-y += ../../i386/pci/early.o
index 036b6ca..9d916cd 100644 (file)
@@ -2,47 +2,13 @@
 #define ASM_PCI_DIRECT_H 1
 
 #include <linux/types.h>
-#include <asm/io.h>
 
 /* Direct PCI access. This is used for PCI accesses in early boot before
    the PCI subsystem works. */ 
 
-#define PDprintk(x...)
-
-static inline u32 read_pci_config(u8 bus, u8 slot, u8 func, u8 offset)
-{
-       u32 v; 
-       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
-       v = inl(0xcfc); 
-       if (v != 0xffffffff)
-               PDprintk("%x reading 4 from %x: %x\n", slot, offset, v);
-       return v;
-}
-
-static inline u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset)
-{
-       u8 v; 
-       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
-       v = inb(0xcfc + (offset&3)); 
-       PDprintk("%x reading 1 from %x: %x\n", slot, offset, v);
-       return v;
-}
-
-static inline u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset)
-{
-       u16 v; 
-       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
-       v = inw(0xcfc + (offset&2)); 
-       PDprintk("%x reading 2 from %x: %x\n", slot, offset, v);
-       return v;
-}
-
-static inline void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset,
-                                   u32 val)
-{
-       PDprintk("%x writing to %x: %x\n", slot, offset, val); 
-       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
-       outl(val, 0xcfc); 
-}
+extern u32 read_pci_config(u8 bus, u8 slot, u8 func, u8 offset);
+extern u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset);
+extern u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset);
+extern void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset, u32 val);
 
 #endif