From 1eef3731520109c4e17225a7c7de16e33c56e6c8 Mon Sep 17 00:00:00 2001 From: mischief Date: Mon, 3 Feb 2014 01:22:26 -0800 Subject: [PATCH] pc64: fix up pointer calculations and enable sdvirtio disk driver --- sys/src/9/pc/sdvirtio.c | 15 ++++++++++----- sys/src/9/pc64/pc64 | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/sys/src/9/pc/sdvirtio.c b/sys/src/9/pc/sdvirtio.c index 2ccc3dbce..1c26cea58 100644 --- a/sys/src/9/pc/sdvirtio.c +++ b/sys/src/9/pc/sdvirtio.c @@ -42,6 +42,11 @@ enum { Next = 1, Write = 2, Indirect = 4, +}; + +/* struct sizes */ +enum { + VringSize = 4, }; struct Vring @@ -111,10 +116,10 @@ mkvqueue(int size) 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 @@ mkvqueue(int size) 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; diff --git a/sys/src/9/pc64/pc64 b/sys/src/9/pc64/pc64 index 30c8d4b93..aebcb712a 100644 --- a/sys/src/9/pc64/pc64 +++ b/sys/src/9/pc64/pc64 @@ -92,7 +92,7 @@ misc # sdmylex pci sdscsi sdiahci pci sdscsi led # sdodin pci sdscsi led -# sdvirtio pci sdscsi + sdvirtio pci sdscsi # sdmmc pci pmmc # sdloop