summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-06-29 18:09:39 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-06-29 18:09:39 +0000
commit577028789213c01d1aab94757c18872d7ff862e3 (patch)
tree5136101a9063b0936b11f85b75de455b57edb602
parentb38d3b579074ff3076aadbecd77efb627f7043a8 (diff)
downloadpcsxr-577028789213c01d1aab94757c18872d7ff862e3.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@23849 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--ChangeLog13
-rw-r--r--libpcsxcore/psxbios.c11
-rw-r--r--plugins/dfcdrom/main.c1
-rw-r--r--plugins/dfinput/cfg.c1
-rw-r--r--plugins/dfsound/spucfg-0.1df/main.c1
-rw-r--r--plugins/dfxvideo/gpucfg-0.1df/main.c1
-rw-r--r--plugins/peopsxgl/gpucfg/interface.c1
-rw-r--r--plugins/peopsxgl/gpucfg/main.c1
8 files changed, 29 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b4da887..175ef966 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+June 30, 2009 Peter Collingbourne <peter@pcc.me.uk>
+
+ * plugins/dfcdrom/main.c: #include locale.h as well as libintl.h to allow
+ the code to compile in unoptimized mode.
+ * plugins/dfinput/cfg.c: Likewise.
+ * plugins/dfsound/spucfg-0.1df/main.c: Likewise.
+ * plugins/dfxvideo/gpucfg-0.1df/main.c: Likewise.
+ * plugins/peopsxgl/gpucfg/main.c: Likewise.
+ * plugins/peopsxgl/gpucfg/interface.c: Likewise.
+ * libpcsxcore/psxbios.c: Fixed a cast that may cause problems on x86_64.
+ Allocate stack space for programs which store data below the stack pointer
+ when an interrupt occurs.
+
June 29, 2009 Wei Mingzhi <weimingzhi@gmail.com>
* libpcsxcore/cheat.c: Implemented Cheat Search.
diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c
index 38e7649e..1de7e0bc 100644
--- a/libpcsxcore/psxbios.c
+++ b/libpcsxcore/psxbios.c
@@ -262,14 +262,23 @@ static FileDesc FDesc[32];
static __inline void softCall(u32 pc) {
pc0 = pc;
ra = 0x80001000;
+
+ // Fixes crashing problems with at least Final Fantasy 7 and Xenogears.
+ // This should be considered a temporary fix; after all, we do not
+ // know how much space below sp is in use. It may be worth considering
+ // creating a new stack for interrupt handlers.
+ sp -= 128;
while (pc0 != 0x80001000) psxCpu->ExecuteBlock();
+ sp += 128;
}
static __inline void softCall2(u32 pc) {
u32 sra = ra;
pc0 = pc;
ra = 0x80001000;
+ sp -= 128;
while (pc0 != 0x80001000) psxCpu->ExecuteBlock();
+ sp += 128;
ra = sra;
}
@@ -611,7 +620,7 @@ void psxBios_InitHeap() { // 39
size &= 0xfffffffc;
heap_addr = (u32*)Ra0;
- heap_end = (u32*)((u32)heap_addr + size);
+ heap_end = (u32*)((void *)heap_addr + size);
*heap_addr = SWAP32(size | 1);
SysPrintf("InitHeap %lx,%lx : %lx %lx\n",a0,a1, (uptr)heap_addr-(uptr)psxM, size);
diff --git a/plugins/dfcdrom/main.c b/plugins/dfcdrom/main.c
index c68c8107..3241561e 100644
--- a/plugins/dfcdrom/main.c
+++ b/plugins/dfcdrom/main.c
@@ -5,6 +5,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#endif
#include "interface.h"
diff --git a/plugins/dfinput/cfg.c b/plugins/dfinput/cfg.c
index dbb7f858..d5f54a63 100644
--- a/plugins/dfinput/cfg.c
+++ b/plugins/dfinput/cfg.c
@@ -48,6 +48,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#endif
#ifdef __linux__
diff --git a/plugins/dfsound/spucfg-0.1df/main.c b/plugins/dfsound/spucfg-0.1df/main.c
index e40c74aa..51d27254 100644
--- a/plugins/dfsound/spucfg-0.1df/main.c
+++ b/plugins/dfsound/spucfg-0.1df/main.c
@@ -11,6 +11,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#endif
#define READBINARY "rb"
diff --git a/plugins/dfxvideo/gpucfg-0.1df/main.c b/plugins/dfxvideo/gpucfg-0.1df/main.c
index 487b9cfc..daa27b7c 100644
--- a/plugins/dfxvideo/gpucfg-0.1df/main.c
+++ b/plugins/dfxvideo/gpucfg-0.1df/main.c
@@ -5,6 +5,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#endif
#include <unistd.h>
diff --git a/plugins/peopsxgl/gpucfg/interface.c b/plugins/peopsxgl/gpucfg/interface.c
index bc269b3a..c70b4932 100644
--- a/plugins/peopsxgl/gpucfg/interface.c
+++ b/plugins/peopsxgl/gpucfg/interface.c
@@ -14,6 +14,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#define _(x) gettext(x)
#else
#define _(x) (x)
diff --git a/plugins/peopsxgl/gpucfg/main.c b/plugins/peopsxgl/gpucfg/main.c
index a3d21661..5c38737f 100644
--- a/plugins/peopsxgl/gpucfg/main.c
+++ b/plugins/peopsxgl/gpucfg/main.c
@@ -11,6 +11,7 @@
#ifdef ENABLE_NLS
#include <libintl.h>
+#include <locale.h>
#endif
#define SETCHECK(winame) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON ((GtkWidget*) gtk_object_get_data (GTK_OBJECT (CfgWnd),winame)), TRUE)