Add start of PCI and AHCI drivers
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);