}
}
scsi_freenative(wd->scsis, MAX_SCSI_UNITS);
- if (wd->bank.baseaddr == wd->rom)
+ if (wd->rom >= wd->bank.baseaddr && wd->rom < wd->bank.baseaddr + wd->bank.allocated_size)
free_expansion_bank(&wd->bank);
else
xfree (wd->rom);
if (!wd)
return default_xlate(0);
addr &= 0xffff;
+ if (wd->rom >= wd->bank.baseaddr && wd->rom < wd->bank.baseaddr + wd->bank.allocated_size)
+ return wd->bank.baseaddr + addr;
return wd->rom + addr;
}
}
}
+ if (!wd->rombankswitcher) {
+ memcpy(wd->bank.baseaddr + 32768, wd->rom, 32768);
+ xfree(wd->rom);
+ wd->rom = wd->bank.baseaddr + 32768;
+ }
+
if (series2) {
wd->gdmac.version = GVP_SERIESII;
wd->gdmac.addr_mask = 0x00ffffff;