diff --git a/drivers/pci.c b/drivers/pci.c
index 295be7e..1788c26 100644
--- a/drivers/pci.c
+++ b/drivers/pci.c
@@ -428,6 +428,15 @@ ob_pci_bus_map_in(int *idx)
 	PUSH(virt);
 }
 
+static void
+ob_pci_config_readl(int *idx)
+{
+    ucell addr = POP();
+
+    uint32_t value = pci_config_read32(0x80000000 | (addr & 0xffffff00), addr & 0xff);
+    PUSH(value);
+}
+
 NODE_METHODS(ob_pci_bus_node) = {
 	{ NULL,			ob_pci_initialize	},
 	{ "open",		ob_pci_open		},
@@ -435,6 +444,7 @@ NODE_METHODS(ob_pci_bus_node) = {
 	{ "decode-unit",	ob_pci_decode_unit	},
 	{ "encode-unit",	ob_pci_encode_unit	},
 	{ "pci-map-in",		ob_pci_bus_map_in	},
+    { "config-l@", ob_pci_config_readl },
 };
 
 /* ( pci-addr.lo pci-addr.mid pci-addr.hi size -- virt ) */
