diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-06-29 18:09:39 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-06-29 18:09:39 +0000 |
| commit | 577028789213c01d1aab94757c18872d7ff862e3 (patch) | |
| tree | 5136101a9063b0936b11f85b75de455b57edb602 | |
| parent | b38d3b579074ff3076aadbecd77efb627f7043a8 (diff) | |
| download | pcsxr-577028789213c01d1aab94757c18872d7ff862e3.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@23849 e17a0e51-4ae3-4d35-97c3-1a29b211df97
| -rw-r--r-- | ChangeLog | 13 | ||||
| -rw-r--r-- | libpcsxcore/psxbios.c | 11 | ||||
| -rw-r--r-- | plugins/dfcdrom/main.c | 1 | ||||
| -rw-r--r-- | plugins/dfinput/cfg.c | 1 | ||||
| -rw-r--r-- | plugins/dfsound/spucfg-0.1df/main.c | 1 | ||||
| -rw-r--r-- | plugins/dfxvideo/gpucfg-0.1df/main.c | 1 | ||||
| -rw-r--r-- | plugins/peopsxgl/gpucfg/interface.c | 1 | ||||
| -rw-r--r-- | plugins/peopsxgl/gpucfg/main.c | 1 |
8 files changed, 29 insertions, 1 deletions
@@ -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) |
