diff options
author | mischief <mischief@offblast.org> | 2014-02-03 01:22:26 -0800 |
---|---|---|
committer | mischief <mischief@offblast.org> | 2014-02-03 01:22:26 -0800 |
commit | 1eef3731520109c4e17225a7c7de16e33c56e6c8 (patch) | |
tree | 0278025a3904baf531a0aced81dd6d988a6a910c /sys/src/9/pc/sdvirtio.c | |
parent | 34f7e4ef9a9e9edafe94317f5e0ec05b6e6477bc (diff) |
pc64: fix up pointer calculations and enable sdvirtio disk driver
Diffstat (limited to 'sys/src/9/pc/sdvirtio.c')
-rw-r--r-- | sys/src/9/pc/sdvirtio.c | 15 |
1 files changed, 10 insertions, 5 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; |