[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