diff --git a/include/kernel/dri/ata_pio/ata_pio.h b/include/kernel/dri/ata_pio/ata_pio.h
index acd7667..c509f52 100644
--- a/include/kernel/dri/ata_pio/ata_pio.h
+++ b/include/kernel/dri/ata_pio/ata_pio.h
@@ -40,7 +40,8 @@
 
 void ata_pio_wait_bsy();
 void ata_pio_wait_drq();
-void ata_pio_read_sectors(uchar *buffer, uint lba, uchar num_sectors);
-void ata_pio_write_sectors(uint lba, uchar num_sectors, uchar *buffer);
+void ata_pio_read_sectors(void *buffer, uint lba, uchar num_sectors);
+void ata_pio_write_sectors(uint lba, uchar num_sectors, void *buffer);
+uint ata_pio_get_error();
 
 void test_ata_pio();
diff --git a/src/kernel/dri/ata_pio/ata_pio.c b/src/kernel/dri/ata_pio/ata_pio.c
index a8ec300..b33ee20 100644
--- a/src/kernel/dri/ata_pio/ata_pio.c
+++ b/src/kernel/dri/ata_pio/ata_pio.c
@@ -17,6 +17,11 @@
 	{}
 }
 
+uint ata_pio_get_error()
+{
+
+}
+
 static void ata_pio_send_init(uint lba, uchar num_sectors)
 {
 	outb(ATA_PORT_DRIVE_SEL, 0xe0 | (lba >> 24));
@@ -26,44 +31,42 @@
 	outb(ATA_PORT_LBA_HIGH, (lba >> 16) & 0xff);
 }
 
-void ata_pio_read_sectors(uchar *buffer, uint lba, uchar num_sectors)
+void ata_pio_read_sectors(void *buffer, uint lba, uchar num_sectors)
 {
 	ata_pio_wait_bsy();
 
 	ata_pio_send_init(lba, num_sectors);
 	outb(ATA_PORT_CMD, ATA_CMD_READ);
 
-	for (int i = 0; i < num_sectors; i++)
-	{
-		ata_pio_wait_bsy();
-		ata_pio_wait_drq();
+	ata_pio_wait_bsy();
 
-		for (int j = 0; j < 256; j++)
-			buffer[i * 256 + j] = inb(ATA_PORT_DATA);
-	}
+	asm volatile("rep insw" ::
+				 "c"(num_sectors * 256),
+				 "d"(ATA_PORT_DATA),
+				 "D"(buffer));
+
+	ata_pio_wait_bsy();
 }
 
-void ata_pio_write_sectors(uint lba, uchar num_sectors, uchar *buffer)
+void ata_pio_write_sectors(uint lba, uchar num_sectors, void *buffer)
 {
 	ata_pio_wait_bsy();
 
 	ata_pio_send_init(lba, num_sectors);
 	outb(ATA_PORT_CMD, ATA_CMD_WRITE);
 
-	for (int i = 0; i < num_sectors; i++)
-	{
-		ata_pio_wait_bsy();
-		ata_pio_wait_drq();
+	ata_pio_wait_bsy();
 
-		for (int j = 0; j < 256; j++)
-			outb(ATA_PORT_DATA, buffer[i * 256 + j]);
-	}
+	asm volatile("rep outsw" ::
+				 "c"(num_sectors * 256),
+				 "d"(ATA_PORT_DATA),
+				 "S"(buffer));
 }
 
 void test_ata_pio()
 {
 	kprintf("Going to ata_pio_read_sectors\n");
-	ata_pio_read_sectors(test_buffer, 0, 4);
+	ata_pio_read_sectors(test_buffer, 0, 1);
 
 	for (int i = 0; i < 256 * 4; i += 64)
 		kprintf("Byte %d = %d\n", test_buffer[i]);
