From 96f3d5212665264786e2cb0ef847345c152724f4 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 3 Feb 2018 11:18:12 +0200 Subject: [PATCH] Memory bank mapped flag. --- include/memory.h | 1 + memory.cpp | 4 ++++ od-win32/mman.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/include/memory.h b/include/memory.h index 7141e8ab..05e339a0 100644 --- a/include/memory.h +++ b/include/memory.h @@ -93,6 +93,7 @@ enum ABFLAG_NONE = 16, ABFLAG_SAFE = 32, ABFLAG_INDIRECT = 64, ABFLAG_NOALLOC = 128, ABFLAG_RTG = 256, ABFLAG_THREADSAFE = 512, ABFLAG_DIRECTMAP = 1024, ABFLAG_ALLOCINDIRECT = 2048, ABFLAG_CHIPRAM = 4096, ABFLAG_CIA = 8192, ABFLAG_PPCIOSPACE = 16384, + ABFLAG_MAPPED = 32768, ABFLAG_CACHE_ENABLE_DATA = CACHE_ENABLE_DATA << ABFLAG_CACHE_SHIFT, ABFLAG_CACHE_ENABLE_DATA_BURST = CACHE_ENABLE_DATA_BURST << ABFLAG_CACHE_SHIFT, ABFLAG_CACHE_ENABLE_INS = CACHE_ENABLE_INS << ABFLAG_CACHE_SHIFT, diff --git a/memory.cpp b/memory.cpp index 7b808c2a..74c3c76f 100644 --- a/memory.cpp +++ b/memory.cpp @@ -1730,12 +1730,14 @@ bool mapped_malloc (addrbank *ab) ab->startmask = ab->start; ab->baseaddr = xcalloc (uae_u8, ab->reserved_size + 4); ab->allocated_size = ab->baseaddr != NULL ? ab->reserved_size : 0; + ab->flags &= ~ABFLAG_MAPPED; return ab->baseaddr != NULL; } void mapped_free (addrbank *ab) { xfree(ab->baseaddr); + ab->flags &= ~ABFLAG_MAPPED; ab->allocated_size = 0; ab->baseaddr = NULL; } @@ -1862,6 +1864,7 @@ bool mapped_malloc (addrbank *ab) write_log(_T("mapped_malloc with memory bank '%s' already allocated!?\n"), ab->name); } ab->allocated_size = 0; + ab->flags &= ~ABFLAG_MAPPED; if (ab->label && ab->label[0] == '*') { if (ab->start == 0 || ab->start == 0xffffffff) { @@ -2925,6 +2928,7 @@ static void map_banks2 (addrbank *bank, int start, int size, int realsize, int q if (quick <= 0) old = debug_bankchange (-1); flush_icache_hard (3); /* Sure don't want to keep any old mappings around! */ + bank->flags |= ABFLAG_MAPPED; #ifdef NATMEM_OFFSET if (!quick) delete_shmmaps (start << 16, size << 16); diff --git a/od-win32/mman.cpp b/od-win32/mman.cpp index 40d93055..edb11199 100644 --- a/od-win32/mman.cpp +++ b/od-win32/mman.cpp @@ -633,6 +633,7 @@ void mapped_free (addrbank *ab) shmpiece *x = shm_start; bool rtgmem = (ab->flags & ABFLAG_RTG) != 0; + ab->flags &= ~ABFLAG_MAPPED; if (ab->baseaddr == NULL) return; -- 2.47.3