From: Toni Wilen Date: Fri, 29 Oct 2021 14:49:32 +0000 (+0300) Subject: 4M+ Z2 RAM + enabled PCMCIA prevented memory safety barrier. X-Git-Tag: 4900~31 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=e563435853c9eb271cdbbdcee9fb17ca4121f309;p=francis%2Fwinuae.git 4M+ Z2 RAM + enabled PCMCIA prevented memory safety barrier. --- diff --git a/gayle.cpp b/gayle.cpp index 6e24e551..4eff721c 100644 --- a/gayle.cpp +++ b/gayle.cpp @@ -1939,6 +1939,7 @@ bool gayle_init_board_io_pcmcia(struct autoconfig_info *aci) aci->start = PCMCIA_ATTRIBUTE_START; aci->size = PCMCIA_ATTRIBUTE_SIZE; aci->zorro = 0; + aci->indirect = true; aci->parent_address_space = true; device_add_reset(gayle_reset); if (aci->doinit) @@ -1951,6 +1952,7 @@ bool gayle_init_board_common_pcmcia(struct autoconfig_info *aci) aci->start = PCMCIA_COMMON_START; aci->size = PCMCIA_COMMON_SIZE; aci->zorro = 0; + aci->indirect = true; aci->parent_address_space = true; device_add_reset(gayle_reset); if (aci->doinit) @@ -1963,6 +1965,7 @@ bool gayle_init_pcmcia(struct autoconfig_info *aci) aci->start = PCMCIA_COMMON_START; aci->size = 0xa80000 - aci->start; aci->zorro = 0; + aci->indirect = true; device_add_reset(gayle_reset); if (aci->doinit) gayle_init(); diff --git a/include/memory.h b/include/memory.h index 6aa98f25..2b16f907 100644 --- a/include/memory.h +++ b/include/memory.h @@ -170,6 +170,8 @@ struct autoconfig_info uae_u32 start; uae_u32 size; int zorro; + // never direct maps RAM + bool indirect; const TCHAR *label; addrbank *addrbank; uaecptr write_bank_address; diff --git a/od-win32/mman.cpp b/od-win32/mman.cpp index c4c3645c..7c2ed2e9 100644 --- a/od-win32/mman.cpp +++ b/od-win32/mman.cpp @@ -726,8 +726,12 @@ bool uae_mman_info(addrbank *ab, struct uae_mman_data *md) if (!_tcscmp(ab->label, _T("*"))) { start = ab->start; got = true; - if (expansion_get_autoconfig_by_address(&currprefs, ab->start, 0) && !expansion_get_autoconfig_by_address(&currprefs, ab->start + size, 0)) - barrier = true; + if (expansion_get_autoconfig_by_address(&currprefs, ab->start, 0)) { + struct autoconfig_info *aci = expansion_get_autoconfig_by_address(&currprefs, ab->start + size, 0); + if (!aci || aci->indirect) { + barrier = true; + } + } } else if (!_tcscmp(ab->label, _T("*B"))) { start = ab->start; got = true;