diff --git a/README.md b/README.md
index 09b62a7..e7ed2a1 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,9 @@
 - [ ] Filesystem
   - [x] Virtual file system
   - [x] Initial ramdisk
-  - [ ] ATA/SATA drivers
+  - [ ] Storage device drivers
+    - [x] ATA PIO
+    - [ ] SATA
   - [ ] Filesystem drivers
     - [ ] EXT2
     - [ ] FAT32
@@ -39,6 +41,12 @@
   - [ ] Lisp API
 - [ ] Graphical subsystem
   - [ ] Graphical environment in Lisp
+- [ ] Network stack in Lisp
+  - [ ] Ethernet driver
+  - [ ] IP
+  - [ ] TCP
+    - [ ] Graphical applications like browser, IRC client
+  - [ ] UDP
 
 ## Documentation
 
diff --git a/include/kernel/dri/ahci/ahci.h b/include/kernel/dri/ahci/ahci.h
new file mode 100644
index 0000000..6f70f09
--- /dev/null
+++ b/include/kernel/dri/ahci/ahci.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/include/kernel/dri/pci/pci.h b/include/kernel/dri/pci/pci.h
new file mode 100644
index 0000000..196a525
--- /dev/null
+++ b/include/kernel/dri/pci/pci.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include <kint.h>
+
+struct pci_config_address
+{
+	union
+	{
+		struct
+		{
+			int enable : 1;
+			int reserved : 7;
+			int bus : 8;
+			int device : 5;
+			int function : 3;
+			// Offset into the 256 byte register. Least significant two bits must be zero.
+			int offset : 8;
+		};
+
+		uint packed;
+	};
+	
+} __attribute__((packed));
+
+ushort pci_config_readw(uchar bus, uchar slot, uchar func, uchar offset);
diff --git a/include/kernel/io.h b/include/kernel/io.h
index 85f2e8c..136c4f9 100644
--- a/include/kernel/io.h
+++ b/include/kernel/io.h
@@ -16,8 +16,10 @@
 extern struct kbd_scan_code_info scan_code_table[0xff];
 
 void outb(ushort port, uchar val);
+void outl(ushort port, uint val);
 uchar inb(ushort port);
 ushort inw(ushort port);
+uint inl(ushort port);
 
 /* Random string.h stuff, TODO: move to own header */
 void *memset(void *s, int c, size_t n);
diff --git a/src/kernel/dri/ahci/Jmk b/src/kernel/dri/ahci/Jmk
new file mode 100644
index 0000000..dd2d4be
--- /dev/null
+++ b/src/kernel/dri/ahci/Jmk
@@ -0,0 +1,17 @@
+init(ahci, ahci.a)
+
+preset(freestanding)
+preset(optimize)
+preset(debug)
+preset(32)
+preset(warn)
+
+CFLAGS += -I $(ROOT)/include/kernel
+
+archetype(c)
+
+OBJECTS = ahci.o
+
+type(static_lib)
+
+finish
diff --git a/src/kernel/dri/ahci/ahci.c b/src/kernel/dri/ahci/ahci.c
new file mode 100644
index 0000000..1f5e1c3
--- /dev/null
+++ b/src/kernel/dri/ahci/ahci.c
@@ -0,0 +1 @@
+#include <dri/ahci.h>
diff --git a/src/kernel/dri/pci/Jmk b/src/kernel/dri/pci/Jmk
new file mode 100644
index 0000000..07b50d2
--- /dev/null
+++ b/src/kernel/dri/pci/Jmk
@@ -0,0 +1,17 @@
+init(pci, pci.a)
+
+preset(freestanding)
+preset(optimize)
+preset(debug)
+preset(32)
+preset(warn)
+
+CFLAGS += -I $(ROOT)/include/kernel
+
+archetype(c)
+
+OBJECTS = pci.o
+
+type(static_lib)
+
+finish
diff --git a/src/kernel/dri/pci/pci.c b/src/kernel/dri/pci/pci.c
new file mode 100644
index 0000000..09c9056
--- /dev/null
+++ b/src/kernel/dri/pci/pci.c
@@ -0,0 +1,13 @@
+#include <dri/pci.h>
+
+ushort pci_config_readw(uchar bus, uchar slot, uchar func, uchar offset)
+{
+	struct pci_config_address address =
+	{
+		.enabled = 1,
+		.bus = bus,
+		.device = slot,
+		.function = func,
+		.offset = offset ^ 0b11,
+	};
+}
diff --git a/src/kernel/io.c b/src/kernel/io.c
index 4f7d3d3..90a365c 100644
--- a/src/kernel/io.c
+++ b/src/kernel/io.c
@@ -30,6 +30,18 @@
 	return ret;
 }
 
+void outl(ushort port, uint val)
+{
+	asm volatile("outl %1, %0" : : "dN"(port), "a"(val));
+}
+
+uint inl(ushort port)
+{
+	uint ret;
+	asm volatile("inl %1, %0" : "=a"(ret) : "dN"(port));
+	return ret;
+}
+
 void *memset(void *s, int c, size_t n)
 {
 	for (size_t i = 0; i < n; i++)
