diff --git a/atahpt.c b/atahpt.c
index 242e14a84b3a0feabe4b033b039bfa3483f71b87..edffa3b182479b79eb3d0bab3bf48c82c09509ac 100644
--- a/atahpt.c
+++ b/atahpt.c
@@ -33,6 +33,8 @@
 
 #define PCI_VENDOR_ID_HPT	0x1103
 
+static uint32_t io_base_addr = 0;
+
 const struct dev_entry ata_hpt[] = {
 	{0x1103, 0x0004, NT, "Highpoint", "HPT366/368/370/370A/372/372N"},
 	{0x1103, 0x0005, NT, "Highpoint", "HPT372A/372N"},
diff --git a/gfxnvidia.c b/gfxnvidia.c
index d3ee14e4c93b38de4c84e566bf317fe583e34106..2a5c7ae4aaed122141b9d9571532e29f75eeb4c0 100644
--- a/gfxnvidia.c
+++ b/gfxnvidia.c
@@ -89,7 +89,7 @@ int gfxnvidia_init(void)
 	if (!dev)
 		return 1;
 
-	io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
+	uint32_t io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
 	if (!io_base_addr)
 		return 1;
 
diff --git a/it8212.c b/it8212.c
index f68121a6b9a0d19cda5e474c60fb7e1ae8817967..4d1c403e97fb79e28fd5c5604c0a225fa0ff0674 100644
--- a/it8212.c
+++ b/it8212.c
@@ -59,7 +59,7 @@ int it8212_init(void)
 		return 1;
 
 	/* Bit 0 is address decode enable, 17-31 the base address, everything else reserved/zero. */
-	io_base_addr = pcidev_readbar(dev, PCI_ROM_ADDRESS) & 0xFFFFFFFE;
+	uint32_t io_base_addr = pcidev_readbar(dev, PCI_ROM_ADDRESS) & 0xFFFFFFFE;
 	if (!io_base_addr)
 		return 1;
 
diff --git a/nic3com.c b/nic3com.c
index 27e28c78093ff72a11f91101849cb47c74f24ee5..145554df5275eec3dee5aab65630573a9842a6bb 100644
--- a/nic3com.c
+++ b/nic3com.c
@@ -33,6 +33,7 @@
 
 #define PCI_VENDOR_ID_3COM	0x10b7
 
+static uint32_t io_base_addr = 0;
 static uint32_t internal_conf;
 static uint16_t id;
 
diff --git a/nicintel_spi.c b/nicintel_spi.c
index 1522c9b3f0d0d50f401e46d843a7d081bb4d8e9a..25bfa8f300c94c59f6e41a8d6985ca82a9385b14 100644
--- a/nicintel_spi.c
+++ b/nicintel_spi.c
@@ -179,7 +179,7 @@ int nicintel_spi_init(void)
 	if (!dev)
 		return 1;
 
-	io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
+	uint32_t io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
 	if (!io_base_addr)
 		return 1;
 
diff --git a/nicnatsemi.c b/nicnatsemi.c
index cb8da6d295e12a8488f9255229def2964864bccc..acefddb5ea7a865f736de423982e7f823edb3a15 100644
--- a/nicnatsemi.c
+++ b/nicnatsemi.c
@@ -30,6 +30,7 @@
 #define BOOT_ROM_ADDR		0x50
 #define BOOT_ROM_DATA		0x54
 
+static uint32_t io_base_addr = 0;
 const struct dev_entry nics_natsemi[] = {
 	{0x100b, 0x0020, NT, "National Semiconductor", "DP83815/DP83816"},
 	{0x100b, 0x0022, NT, "National Semiconductor", "DP83820"},
diff --git a/nicrealtek.c b/nicrealtek.c
index 02fbd39c3aed7d82f94beeca0e330617ea9fde4c..4a440ea934a94f10d5233c8c8c9de051658c6697 100644
--- a/nicrealtek.c
+++ b/nicrealtek.c
@@ -28,6 +28,7 @@
 #define PCI_VENDOR_ID_REALTEK	0x10ec
 #define PCI_VENDOR_ID_SMC1211	0x1113
 
+static uint32_t io_base_addr = 0;
 static int bios_rom_addr, bios_rom_data;
 
 const struct dev_entry nics_realtek[] = {
diff --git a/ogp_spi.c b/ogp_spi.c
index 23431d140b2c094b6822e58dc3a5396acefada14..a624dfd269b2f2e9004a9d5596a9f24dba62ba6d 100644
--- a/ogp_spi.c
+++ b/ogp_spi.c
@@ -132,7 +132,7 @@ int ogp_spi_init(void)
 	if (!dev)
 		return 1;
 
-	io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
+	uint32_t io_base_addr = pcidev_readbar(dev, PCI_BASE_ADDRESS_0);
 	if (!io_base_addr)
 		return 1;
 
diff --git a/pcidev.c b/pcidev.c
index 3a3f77c87dbc9d0ff7aeb12af9c1138f86cabbbc..2c780637996f6d70d7b34a0decd551b8cdb80309 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -25,7 +25,6 @@
 #include "programmer.h"
 #include "hwaccess.h"
 
-uint32_t io_base_addr;
 struct pci_access *pacc;
 
 enum pci_bartype {
diff --git a/programmer.h b/programmer.h
index 3ea014cb9c391338e7d3e25bf94cf6f1717ef2b1..d29965629498c316d588d11e90e1bee3f6571288 100644
--- a/programmer.h
+++ b/programmer.h
@@ -173,8 +173,7 @@ struct bitbang_spi_master {
 struct pci_dev;
 
 /* pcidev.c */
-// FIXME: These need to be local, not global
-extern uint32_t io_base_addr;
+// FIXME: This needs to be local, not global(?)
 extern struct pci_access *pacc;
 int pci_init_common(void);
 uintptr_t pcidev_readbar(struct pci_dev *dev, int bar);