]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Memory bank mapped flag.
authorToni Wilen <twilen@winuae.net>
Sat, 3 Feb 2018 09:18:12 +0000 (11:18 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 3 Feb 2018 09:18:12 +0000 (11:18 +0200)
include/memory.h
memory.cpp
od-win32/mman.cpp

index 7141e8ab717a93ec5610cfb340056aab679ab9ed..05e339a028599387279755f269e84a32f3ab3091 100644 (file)
@@ -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,
index 7b808c2a66b3b27b00113ecab744de81d1610733..74c3c76f256e0e7c8dde9b46f48bf135509a841a 100644 (file)
@@ -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);
index 40d930550d088e35779d5712b08b2fe6537caa2a..edb111995f8ded54528e5f174b147c5a8c061f43 100644 (file)
@@ -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;