ref: a9cd342c2e331388c6521ce42a95b850f746a96a
parent: 067bbf039bc772ceea4fdfc62b08ea52e78831f8
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Nov 24 06:02:04 EST 2015
disksim: don't assume 4-byte pointers
--- a/sys/src/cmd/aux/disksim.c
+++ b/sys/src/cmd/aux/disksim.c
@@ -20,8 +20,7 @@
{LOGBLKSZ = 13,
BLKSZ = 1<<LOGBLKSZ, /* 8192 */
- LOGNPTR = LOGBLKSZ-2, /* assume sizeof(void*) == 4 */
- NPTR = 1<<LOGNPTR,
+ NPTR = BLKSZ/sizeof(void*),
};
static uchar zero[BLKSZ];
@@ -251,12 +250,12 @@
addr >>= LOGBLKSZ;
oaddr = addr<<LOGBLKSZ;
- i0 = addr & (NPTR-1);
- addr >>= LOGNPTR;
- i1 = addr & (NPTR-1);
- addr >>= LOGNPTR;
- i2 = addr & (NPTR-1);
- addr >>= LOGNPTR;
+ i0 = addr % NPTR;
+ addr /= NPTR;
+ i1 = addr % NPTR;
+ addr /= NPTR;
+ i2 = addr % NPTR;
+ addr /= NPTR;
assert(addr == 0);
if((p2 = trip.dbl[i2]) == 0){@@ -633,8 +632,6 @@
file = nil;
quotefmtinstall();
time0 = time(0);
- if(NPTR != BLKSZ/sizeof(void*))
- sysfatal("unexpected pointer size"); ARGBEGIN{case 'D':
--
⑨