git: 9front

Download patch

ref: d205642b72046f94ac4a787636d2f48de72e3acf
parent: 00b75ac7bc3e84964f8a0a9b0c19076519f10148
author: mischief <mischief@offblast.org>
date: Sun Feb 2 20:22:26 EST 2014

pc64: fix up pointer calculations and enable sdvirtio disk driver

--- a/sys/src/9/pc/sdvirtio.c
+++ b/sys/src/9/pc/sdvirtio.c
@@ -42,6 +42,11 @@
 	Next = 1,
 	Write = 2,
 	Indirect = 4,
+};
+
+/* struct sizes */
+enum {
+	VringSize = 4,
 };	
 
 struct Vring
@@ -111,10 +116,10 @@
 	q = malloc(sizeof(*q) + sizeof(void*)*size);
 	p = mallocalign(
 		PGROUND(sizeof(Vdesc)*size + 
-			sizeof(Vring) + 
+			VringSize + 
 			sizeof(u16int)*size + 
 			sizeof(u16int)) +
-		PGROUND(sizeof(Vring) + 
+		PGROUND(VringSize + 
 			sizeof(Vused)*size + 
 			sizeof(u16int)), 
 		BY2PG, 0, 0);
@@ -128,15 +133,15 @@
 	q->desc = (void*)p;
 	p += sizeof(Vdesc)*size;
 	q->avail = (void*)p;
-	p += sizeof(Vring);
+	p += VringSize;
 	q->availent = (void*)p;
 	p += sizeof(u16int)*size;
 	q->availevent = (void*)p;
 	p += sizeof(u16int);
 
-	p = (uchar*)PGROUND((ulong)p);
+	p = (uchar*)PGROUND((uintptr)p);
 	q->used = (void*)p;
-	p += sizeof(Vring);
+	p += VringSize;
 	q->usedent = (void*)p;
 	p += sizeof(Vused)*size;
 	q->usedevent = (void*)p;
--- a/sys/src/9/pc64/pc64
+++ b/sys/src/9/pc64/pc64
@@ -92,7 +92,7 @@
 #	sdmylex		pci sdscsi
 	sdiahci		pci sdscsi led
 #	sdodin		pci sdscsi led
-#	sdvirtio	pci sdscsi
+	sdvirtio	pci sdscsi
 #	sdmmc		pci pmmc
 #	sdloop
 
--