From 802454482c2843234a19a06f6acce360e0be3d60 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 13 Nov 2015 19:15:37 -0800 Subject: It is now possible to switch back and forth between the menu ROM and the game --- mem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'mem.c') diff --git a/mem.c b/mem.c index c9bb75a..b801bea 100644 --- a/mem.c +++ b/mem.c @@ -1,6 +1,6 @@ /* Copyright 2013 Michael Pavone - This file is part of BlastEm. + This file is part of BlastEm. BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. */ #include @@ -12,6 +12,7 @@ #include #include "mem.h" +#include "arena.h" #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif @@ -25,8 +26,12 @@ void * alloc_code(size_t *size) //start at the 1GB mark to allow plenty of room for sbrk based malloc implementations //while still keeping well within 32-bit displacement range for calling code compiled into the executable static uint8_t *next = (uint8_t *)0x40000000; + uint8_t *ret = try_alloc_arena(); + if (ret) { + return ret; + } *size += PAGE_SIZE - (*size & (PAGE_SIZE - 1)); - uint8_t *ret = mmap(NULL, *size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0); + ret = mmap(NULL, *size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0); if (ret == MAP_FAILED) { perror("alloc_code"); return NULL; -- cgit v1.2.3