disksim: don't assume 4-byte pointers

This commit is contained in:
cinap_lenrek 2015-11-24 11:02:04 +01:00
parent 518fd3ec83
commit e82b10ffb4

View file

@ -20,8 +20,7 @@ enum
{ {
LOGBLKSZ = 13, LOGBLKSZ = 13,
BLKSZ = 1<<LOGBLKSZ, /* 8192 */ BLKSZ = 1<<LOGBLKSZ, /* 8192 */
LOGNPTR = LOGBLKSZ-2, /* assume sizeof(void*) == 4 */ NPTR = BLKSZ/sizeof(void*),
NPTR = 1<<LOGNPTR,
}; };
static uchar zero[BLKSZ]; static uchar zero[BLKSZ];
@ -251,12 +250,12 @@ getblock(vlong addr, int alloc)
addr >>= LOGBLKSZ; addr >>= LOGBLKSZ;
oaddr = addr<<LOGBLKSZ; oaddr = addr<<LOGBLKSZ;
i0 = addr & (NPTR-1); i0 = addr % NPTR;
addr >>= LOGNPTR; addr /= NPTR;
i1 = addr & (NPTR-1); i1 = addr % NPTR;
addr >>= LOGNPTR; addr /= NPTR;
i2 = addr & (NPTR-1); i2 = addr % NPTR;
addr >>= LOGNPTR; addr /= NPTR;
assert(addr == 0); assert(addr == 0);
if((p2 = trip.dbl[i2]) == 0){ if((p2 = trip.dbl[i2]) == 0){
@ -633,8 +632,6 @@ main(int argc, char **argv)
file = nil; file = nil;
quotefmtinstall(); quotefmtinstall();
time0 = time(0); time0 = time(0);
if(NPTR != BLKSZ/sizeof(void*))
sysfatal("unexpected pointer size");
ARGBEGIN{ ARGBEGIN{
case 'D': case 'D':