[mupen64plus-core] 26/310: Imported Upstream version 1.99.4~hg20100511
Sven Eckelmann
ecsv-guest at moszumanska.debian.org
Thu Nov 26 05:56:58 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 e4b4bb8900f20ae7b444ae38de8b15b9e7018558
Author: Sven Eckelmann <sven.eckelmann at gmx.de>
Date: Wed May 12 16:42:30 2010 +0200
Imported Upstream version 1.99.4~hg20100511
---
src/r4300/interupt.c | 4 ++--
src/r4300/r4300.c | 4 ++--
src/r4300/recomp.c | 18 +++++++++++++++---
src/r4300/recomp.h | 1 +
src/r4300/x86/rjump.c | 2 +-
src/r4300/x86_64/rjump.c | 2 +-
6 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/src/r4300/interupt.c b/src/r4300/interupt.c
index bc2cf21..ac0f620 100644
--- a/src/r4300/interupt.c
+++ b/src/r4300/interupt.c
@@ -560,8 +560,8 @@ void gen_interupt()
{
if (blocks[i])
{
- if (blocks[i]->block) { free(blocks[i]->block); blocks[i]->block = NULL; }
- if (blocks[i]->code) { free(blocks[i]->code); blocks[i]->code = NULL; }
+ if (blocks[i]->block) { free_exec(blocks[i]->block); blocks[i]->block = NULL; }
+ if (blocks[i]->code) { free_exec(blocks[i]->code); blocks[i]->code = NULL; }
if (blocks[i]->jumps_table) { free(blocks[i]->jumps_table); blocks[i]->jumps_table = NULL; }
if (blocks[i]->riprel_table) { free(blocks[i]->riprel_table); blocks[i]->riprel_table = NULL; }
free(blocks[i]);
diff --git a/src/r4300/r4300.c b/src/r4300/r4300.c
index 3a0fb55..99d85be 100644
--- a/src/r4300/r4300.c
+++ b/src/r4300/r4300.c
@@ -1940,8 +1940,8 @@ void r4300_execute(void)
{
if (blocks[i])
{
- if (blocks[i]->block) { free(blocks[i]->block); blocks[i]->block = NULL; }
- if (blocks[i]->code) { free(blocks[i]->code); blocks[i]->code = NULL; }
+ if (blocks[i]->block) { free_exec(blocks[i]->block); blocks[i]->block = NULL; }
+ if (blocks[i]->code) { free_exec(blocks[i]->code); blocks[i]->code = NULL; }
if (blocks[i]->jumps_table) { free(blocks[i]->jumps_table); blocks[i]->jumps_table = NULL; }
if (blocks[i]->riprel_table) { free(blocks[i]->riprel_table); blocks[i]->riprel_table = NULL; }
free(blocks[i]);
diff --git a/src/r4300/recomp.c b/src/r4300/recomp.c
index cffd254..0cc7cd4 100644
--- a/src/r4300/recomp.c
+++ b/src/r4300/recomp.c
@@ -2591,7 +2591,9 @@ void prefetch_opcode(unsigned int op)
**********************************************************************/
void *malloc_exec(size_t size)
{
-#if defined(__GNUC__)
+#if defined(WIN32)
+ return VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
+#elif defined(__GNUC__)
int pagesize = sysconf(_SC_PAGE_SIZE);
if (pagesize == -1)
{ DebugMessage(M64MSG_ERROR, "Memory error: couldn't determine system memory page size."); return NULL; }
@@ -2625,8 +2627,18 @@ void *realloc_exec(void *ptr, size_t size, size_t newsize)
copysize = newsize;
memcpy(block, ptr, copysize);
}
- free(ptr);
+ free_exec(ptr);
return block;
}
-
+/**********************************************************************
+ **************** frees memory with executable bit set ****************
+ **********************************************************************/
+void free_exec(void *ptr)
+{
+#if defined(WIN32)
+ VirtualFree(ptr, 0, MEM_RELEASE);
+#else
+ free(ptr);
+#endif
+}
diff --git a/src/r4300/recomp.h b/src/r4300/recomp.h
index 6971072..210046e 100644
--- a/src/r4300/recomp.h
+++ b/src/r4300/recomp.h
@@ -95,6 +95,7 @@ void dyna_start(void (*code)(void));
void dyna_stop(void);
void *malloc_exec(size_t size);
void *realloc_exec(void *ptr, size_t size, size_t newsize);
+void free_exec(void *ptr);
extern precomp_instr *dst; /* precomp_instr structure for instruction being recompiled */
diff --git a/src/r4300/x86/rjump.c b/src/r4300/x86/rjump.c
index c7b3541..0c767a0 100644
--- a/src/r4300/x86/rjump.c
+++ b/src/r4300/x86/rjump.c
@@ -62,7 +62,7 @@ static long save_eip ASM_NAME("save_eip") = 0;
#pragma warning(disable:4731) /* frame pointer register 'ebp' modified by inline assembly code */
#endif
-void dyna_start(void (*code)())
+void dyna_start(void (*code)(void))
{
/* save the base and stack pointers */
/* make a call and a pop to retrieve the instruction pointer and save it too */
diff --git a/src/r4300/x86_64/rjump.c b/src/r4300/x86_64/rjump.c
index 0fa37d4..d7d936f 100644
--- a/src/r4300/x86_64/rjump.c
+++ b/src/r4300/x86_64/rjump.c
@@ -49,7 +49,7 @@ void dyna_jump(void)
static long save_rsp = 0;
static long save_rip = 0;
-void dyna_start(void (*code)())
+void dyna_start(void (*code)(void))
{
/* save the base and stack pointers */
/* make a call and a pop to retrieve the instruction pointer and save it too */
--
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