From cfb130f047a614f9aefed61c9a3ec2974d06d3dd Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 16 Nov 2025 13:42:32 +0200 Subject: [PATCH] Map Z2/Z3 autoconfig RAM boards immediately because JIT does not like memory disappearing under it. --- memory.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/memory.cpp b/memory.cpp index eee38109..cc7b7ac4 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2448,8 +2448,9 @@ bool mapped_malloc (addrbank *ab) static void init_mem_banks (void) { // unsigned so i << 16 won't overflow to negative when i >= 32768 - for (unsigned int i = 0; i < MEMORY_BANKS; i++) + for (unsigned int i = 0; i < MEMORY_BANKS; i++) { put_mem_bank (i << 16, &dummy_bank, 0); + } #ifdef NATMEM_OFFSET delete_shmmaps (0, 0xFFFF0000); #endif @@ -3249,15 +3250,17 @@ void memory_reset (void) map_banks_set(&kickmem_bank, addr, 8, 0); } - if (a1000_bootrom) + if (a1000_bootrom) { a1000_handle_kickstart (1); + } #ifdef AUTOCONFIG expansion_map(); #endif - if (a3000_f0) + if (a3000_f0) { map_banks_set(&extendedkickmem_bank, 0xf0, 1, 0); + } /* Map the chipmem into all of the lower 8MB */ map_overlay (1); @@ -3285,8 +3288,9 @@ void memory_reset (void) } #ifdef AUTOCONFIG - if ((need_uae_boot_rom (&currprefs) && currprefs.uaeboard == 0) || currprefs.uaeboard == 1) + if ((need_uae_boot_rom (&currprefs) && currprefs.uaeboard == 0) || currprefs.uaeboard == 1) { map_banks_set(&rtarea_bank, rtarea_base >> 16, 1, 0); + } #endif if ((cloanto_rom || currprefs.cs_ksmirror_e0) && (currprefs.maprom != 0xe00000) && !extendedkickmem_type) { @@ -3351,6 +3355,18 @@ void memory_reset (void) } } + // Map Z2/Z3 autoconfig RAM boards immediately because JIT does not like memory disappearing under it. + if (currprefs.cachesize) { + for (int i = 0; i < MAX_RAM_BOARDS; i++) { + if (fastmem_bank[i].start && fastmem_bank[i].allocated_size) { + map_banks_z2(&fastmem_bank[i], fastmem_bank[i].start >> 16, fastmem_bank[i].allocated_size >> 16); + } + if (z3fastmem_bank[i].start && z3fastmem_bank[i].allocated_size) { + map_banks_z3(&z3fastmem_bank[i], z3fastmem_bank[i].start >> 16, z3fastmem_bank[i].allocated_size >> 16); + } + } + } + if (mem_hardreset) { memory_clear (); } -- 2.47.3