From 03155c727e3a69602bad83a909371df8d27efa15 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 14 Feb 2016 18:31:33 +0200 Subject: [PATCH] Common uaeboard_bank and filesys_bank memory allocation/mapping function. --- expansion.cpp | 22 ++++++++++++++++++++-- include/autoconf.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/expansion.cpp b/expansion.cpp index 77f30d04..54e2224f 100644 --- a/expansion.cpp +++ b/expansion.cpp @@ -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(); diff --git a/include/autoconf.h b/include/autoconf.h index 0ccae101..5129337f 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -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); -- 2.47.3