]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Common uaeboard_bank and filesys_bank memory allocation/mapping function.
authorToni Wilen <twilen@winuae.net>
Sun, 14 Feb 2016 16:31:33 +0000 (18:31 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 14 Feb 2016 16:31:33 +0000 (18:31 +0200)
expansion.cpp
include/autoconf.h

index 77f30d0497d9d6c1c2ad1b9df0149d91b2f1034b..54e2224fd7f8aaa048cbe32183727a369196b559 100644 (file)
@@ -1116,12 +1116,29 @@ uae_u32 uaeboard_base; /* Determined by the OS */
 static uae_u32 uaeboard_ram_start;
 #define UAEBOARD_WRITEOFFSET 0x4000
 
+uae_u8 *uaeboard_map_ram(uaecptr p)
+{
+       if (currprefs.uaeboard > 1) {
+               p -= uaeboard_base;
+               return uaeboard_bank.baseaddr + p;
+       } else {
+               p -= filesys_start;
+               return filesys_bank.baseaddr + p;
+       }
+}
+
 uaecptr uaeboard_alloc_ram(uae_u32 size)
 {
+       uaecptr p;
        size += 7;
        size &= ~7;
-       uaecptr p = uaeboard_ram_start + uaeboard_base;
-       memset(uaeboard_bank.baseaddr + uaeboard_ram_start, 0, size);
+       if (currprefs.uaeboard > 1) {
+               p = uaeboard_ram_start + uaeboard_base;
+               memset(uaeboard_bank.baseaddr + uaeboard_ram_start, 0, size);
+       } else {
+               p = uaeboard_ram_start + filesys_start;
+               memset(filesys_bank.baseaddr + uaeboard_ram_start, 0, size);
+       }
        uaeboard_ram_start += size;
        return p;
 }
@@ -1517,6 +1534,7 @@ static addrbank *expamem_map_filesys (void)
                regs.halted = -2;
        }
 
+       uaeboard_ram_start = UAEBOARD_WRITEOFFSET;
        filesys_start = expamem_z2_pointer;
        map_banks_z2(&filesys_bank, filesys_start >> 16, 1);
        expamem_map_filesys_update();
index 0ccae101fbf4c7682235fe7264ccdb4d45afa010..5129337f5d1b3592c0a8b8d00212d31f4ff6f83e 100644 (file)
@@ -142,6 +142,7 @@ extern void expansion_autoconfig_put(int, uae_u8);
 extern uaecptr expansion_startaddress(uaecptr addr, uae_u32 size);
 extern bool expansion_is_next_board_fastram(void);
 extern uaecptr uaeboard_alloc_ram(uae_u32);
+extern uae_u8 *uaeboard_map_ram(uaecptr);
 
 extern void uaegfx_install_code (uaecptr);