savage_in32
return savage_in32(0x8000 + addr, par);
while ((savage_in32(0x48C00, par) & 0x0000ffff) > slots);
while ((savage_in32(0x48C60, par) & 0x001fffff) > slots);
while ((savage_in32(0x48C60, par) & 0x0000ffff) > slots);
while ((savage_in32(0x48C00, par) & 0x0008ffff) != 0x80000);
while ((savage_in32(0x48C60, par) & 0x00a00000) != 0x00a00000);
while ((savage_in32(0x48C60, par) & 0x009fffff));
savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par);
savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x0C, par);
savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par);
savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x08, par);
savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x00280000,
reg->MMPR0 = savage_in32(FIFO_CONTROL_REG, par);
reg->MMPR1 = savage_in32(MIU_CONTROL_REG, par);
reg->MMPR2 = savage_in32(STREAMS_TIMEOUT_REG, par);
reg->MMPR3 = savage_in32(MISC_TIMEOUT_REG, par);