[mupen64plus-core] 93/310: Don't require executable memory for cached interpreter
Sven Eckelmann
ecsv-guest at moszumanska.debian.org
Thu Nov 26 05:57:25 UTC 2015
This is an automated email from the git hooks/post-receive script.
ecsv-guest pushed a commit to branch armhf_test
in repository mupen64plus-core.
commit 9843f10a5dd00183c719da903740775895701716
Author: Sven Eckelmann <sven at narfation.org>
Date: Sun Jul 24 13:08:11 2011 +0200
Don't require executable memory for cached interpreter
---
debian/changelog | 2 +
debian/patches/interpreter_rw_memory.patch | 63 ++++++++++++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 66 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 11c7e84..186f226 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,8 @@ mupen64plus-core (1.99.4-3) UNRELEASED; urgency=low
- Add allocate_mmap.patch, Allocate exec memory using mmap
- Add interpreter_fpu_modes.patch, Use common fpu implementation for
interpreter modes to fix missing round/trunc/ceil/floor/set_rounding
+ - Add interpreter_rw_memory.patch, Don't require executable memory for
+ cached interpreter
-- Sven Eckelmann <sven at narfation.org> Wed, 13 Jul 2011 08:38:54 +0200
diff --git a/debian/patches/interpreter_rw_memory.patch b/debian/patches/interpreter_rw_memory.patch
new file mode 100644
index 0000000..17d383e
--- /dev/null
+++ b/debian/patches/interpreter_rw_memory.patch
@@ -0,0 +1,63 @@
+Description: Don't require executable memory for cached interpreter
+Origin: upstream, https://bitbucket.org/richard42/mupen64plus-core/changeset/432d55e201d5
+Author: Sven Eckelmann <sven at narfation.org>
+
+---
+diff --git a/src/r4300/r4300.c b/src/r4300/r4300.c
+index a969dab7cc37fd1358d0e11fc605f66fa2cc6952..6a0e1792b088e1068b79c9dd5afaac3b380b978a 100644
+--- a/src/r4300/r4300.c
++++ b/src/r4300/r4300.c
+@@ -1926,7 +1926,7 @@ void r4300_execute(void)
+ init_blocks();
+
+ /* Prevent segfault on failed init_blocks */
+- if (!actual->block || !actual->code)
++ if (!actual->block)
+ return;
+
+ last_addr = PC->addr;
+diff --git a/src/r4300/recomp.c b/src/r4300/recomp.c
+index 07261c7a8808bcf9fe004fad6a1eb91828739dcd..f20ac5dfcf2b464553fb19d6df83351a061e2c10 100644
+--- a/src/r4300/recomp.c
++++ b/src/r4300/recomp.c
+@@ -2187,11 +2187,21 @@ void init_block(int *source, precomp_block *block)
+ if (!block->block)
+ {
+ size_t memsize = get_block_memsize(block);
+- block->block = (precomp_instr *) malloc_exec(memsize);
+- if (!block->block) {
+- DebugMessage(M64MSG_ERROR, "Memory error: couldn't allocate executable memory for dynamic recompiler/cached interpreter. Try to use the pure interpreter.");
+- return;
++ if (r4300emu == CORE_DYNAREC) {
++ block->block = (precomp_instr *) malloc_exec(memsize);
++ if (!block->block) {
++ DebugMessage(M64MSG_ERROR, "Memory error: couldn't allocate executable memory for dynamic recompiler. Try to use an interpreter mode.");
++ return;
++ }
+ }
++ else {
++ block->block = (precomp_instr *) malloc(memsize);
++ if (!block->block) {
++ DebugMessage(M64MSG_ERROR, "Memory error: couldn't allocate memory for cached interpreter.");
++ return;
++ }
++ }
++
+ memset(block->block, 0, memsize);
+ already_exist = 0;
+ }
+@@ -2357,7 +2367,13 @@ void free_block(precomp_block *block)
+ {
+ size_t memsize = get_block_memsize(block);
+
+- if (block->block) { free_exec(block->block, memsize);; block->block = NULL; }
++ if (block->block) {
++ if (r4300emu == CORE_DYNAREC)
++ free_exec(block->block, memsize);
++ else
++ free(block->block);
++ block->block = NULL;
++ }
+ if (block->code) { free_exec(block->code, block->max_code_length); block->code = NULL; }
+ if (block->jumps_table) { free(block->jumps_table); block->jumps_table = NULL; }
+ if (block->riprel_table) { free(block->riprel_table); block->riprel_table = NULL; }
diff --git a/debian/patches/series b/debian/patches/series
index 49ec560..05d31e8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -12,3 +12,4 @@ conflicting_symbol.patch
osd_memory_corruption.patch
allocate_mmap.patch
interpreter_fpu_modes.patch
+interpreter_rw_memory.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/mupen64plus-core.git
More information about the Pkg-games-commits
mailing list