[ARM] Start using mmap'ed JIT caches for most builds
Will revisit remaining platforms and try to clean them too. This should fix Android once and for all.
This commit is contained in:
parent
5c1467cb63
commit
c39f5391f0
5
Makefile
5
Makefile
|
@ -257,6 +257,7 @@ else ifeq ($(platform), rpi3)
|
|||
CFLAGS += -fomit-frame-pointer -ffast-math
|
||||
CXXFLAGS = $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
|
||||
CPU_ARCH := arm
|
||||
HAVE_MMAP = 1
|
||||
HAVE_DYNAREC = 1
|
||||
|
||||
# Raspberry Pi 2
|
||||
|
@ -268,6 +269,7 @@ else ifeq ($(platform), rpi2)
|
|||
CFLAGS += -fomit-frame-pointer -ffast-math
|
||||
CXXFLAGS = $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
|
||||
CPU_ARCH := arm
|
||||
HAVE_MMAP = 1
|
||||
HAVE_DYNAREC = 1
|
||||
|
||||
# Raspberry Pi 1
|
||||
|
@ -280,6 +282,7 @@ else ifeq ($(platform), rpi1)
|
|||
CFLAGS += -fomit-frame-pointer -ffast-math
|
||||
CXXFLAGS = $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
|
||||
CPU_ARCH := arm
|
||||
HAVE_MMAP = 1
|
||||
HAVE_DYNAREC = 1
|
||||
|
||||
# Classic Platforms ####################
|
||||
|
@ -307,6 +310,7 @@ else ifeq ($(platform), classic_armv7_a7)
|
|||
ARCH = arm
|
||||
BUILTIN_GPU = neon
|
||||
CPU_ARCH := arm
|
||||
HAVE_MMAP = 1
|
||||
HAVE_DYNAREC = 1
|
||||
ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1)
|
||||
CFLAGS += -march=armv7-a
|
||||
|
@ -348,6 +352,7 @@ else ifneq (,$(findstring armv,$(platform)))
|
|||
TARGET := $(TARGET_NAME)_libretro.so
|
||||
SHARED := -shared -Wl,--version-script=link.T
|
||||
CPU_ARCH := arm
|
||||
HAVE_MMAP = 1
|
||||
fpic := -fPIC
|
||||
ifneq (,$(findstring cortexa5,$(platform)))
|
||||
CFLAGS += -marm -mcpu=cortex-a5
|
||||
|
|
|
@ -844,13 +844,7 @@ defsymbl(palette_ram_converted)
|
|||
|
||||
@ Make this section executable!
|
||||
.text
|
||||
#ifdef __ANDROID__
|
||||
@ Unfortunately Android builds don't like nobits, so we ship a ton of zeros
|
||||
@ TODO: Revisit this whenever we upgrade to the latest clang NDK
|
||||
.section .jit,"awx",%progbits
|
||||
#else
|
||||
.section .jit,"awx",%nobits
|
||||
#endif
|
||||
.align 4
|
||||
defsymbl(rom_translation_cache)
|
||||
.space ROM_TRANSLATION_CACHE_SIZE
|
||||
|
|
|
@ -9,7 +9,7 @@ HAVE_DYNAREC :=
|
|||
COREFLAGS := -DINLINE=inline -D__LIBRETRO__ -DFRONTEND_SUPPORTS_RGB565
|
||||
|
||||
ifeq ($(TARGET_ARCH),arm)
|
||||
COREFLAGS += -DARM_ARCH
|
||||
COREFLAGS += -DARM_ARCH -DHAVE_MMAP
|
||||
CPU_ARCH := arm
|
||||
HAVE_DYNAREC := 1
|
||||
else ifeq ($(TARGET_ARCH),x86)
|
||||
|
|
|
@ -459,10 +459,9 @@ void retro_init(void)
|
|||
{
|
||||
#if defined(HAVE_DYNAREC)
|
||||
#if defined(HAVE_MMAP)
|
||||
rom_translation_cache = mmap(NULL, ROM_TRANSLATION_CACHE_SIZE,
|
||||
PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
ram_translation_cache = mmap(NULL, RAM_TRANSLATION_CACHE_SIZE,
|
||||
rom_translation_cache = mmap(NULL, ROM_TRANSLATION_CACHE_SIZE + RAM_TRANSLATION_CACHE_SIZE,
|
||||
PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
ram_translation_cache = &rom_translation_cache[ROM_TRANSLATION_CACHE_SIZE];
|
||||
#elif defined(_3DS)
|
||||
if (__ctr_svchax && !translation_caches_inited)
|
||||
{
|
||||
|
@ -550,8 +549,7 @@ void retro_deinit(void)
|
|||
memory_term();
|
||||
|
||||
#if defined(HAVE_MMAP) && defined(HAVE_DYNAREC)
|
||||
munmap(rom_translation_cache, ROM_TRANSLATION_CACHE_SIZE);
|
||||
munmap(ram_translation_cache, RAM_TRANSLATION_CACHE_SIZE);
|
||||
munmap(rom_translation_cache, ROM_TRANSLATION_CACHE_SIZE + RAM_TRANSLATION_CACHE_SIZE);
|
||||
#endif
|
||||
#if defined(_3DS) && defined(HAVE_DYNAREC)
|
||||
|
||||
|
|
Loading…
Reference in New Issue