]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Support GVP SCSI on boot rom code execution.
authorToni Wilen <twilen@winuae.net>
Sat, 1 Apr 2017 17:07:50 +0000 (20:07 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 1 Apr 2017 17:07:50 +0000 (20:07 +0300)
a2091.cpp

index 763f5e49990f9f95c07b7ff41a0b4f64dcde5c9a..af480f3a2a10fbc32eac103774184455c7239f7e 100644 (file)
--- 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;