From 9cabb94b29dcf4d0c250a5754ffade0dd8219b9b Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 1 Apr 2017 20:07:50 +0300 Subject: [PATCH] Support GVP SCSI on boot rom code execution. --- a2091.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/a2091.cpp b/a2091.cpp index 763f5e49..af480f3a 100644 --- a/a2091.cpp +++ b/a2091.cpp @@ -284,7 +284,7 @@ static void freencrunit(struct wd_state *wd) } } 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); @@ -2941,6 +2941,8 @@ static uae_u8 *REGPARAM2 dmac_gvp_xlate(uaecptr addr) 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; } @@ -3709,6 +3711,12 @@ static bool gvp_init(struct autoconfig_info *aci, bool series2, bool accel) } } + 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; -- 2.47.3