fix for load-state-after-load crash
authornotaz <notasas@gmail.com>
Fri, 25 Jul 2008 19:46:56 +0000 (19:46 +0000)
committernotaz <notasas@gmail.com>
Fri, 25 Jul 2008 19:46:56 +0000 (19:46 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@563 be3aeb3a-fb24-0410-a615-afba39da0efa

Pico/Area.c
Pico/cd/Pico.s
platform/base_readme.txt

index 49c2afc..35f28c2 100644 (file)
@@ -62,7 +62,7 @@ PICO_INTERNAL void PicoAreaPackCpu(unsigned char *cpu, int is_sub)
   memcpy(cpu,m68ki_cpu_p->dar,0x40);\r
   pc=m68ki_cpu_p->pc;\r
   *(unsigned int  *)(cpu+0x44)=m68k_get_reg(NULL, M68K_REG_SR);\r
-  *(unsigned int  *)(cpu+0x48)=m68ki_cpu_p->sp[0];\r
+  *(unsigned int  *)(cpu+0x48)=m68ki_cpu_p->sp[m68ki_cpu_p->s_flag^SFLAG_SET];\r
   cpu[0x4c] = CPU_INT_LEVEL>>8;\r
   cpu[0x4d] = CPU_STOPPED;\r
   m68k_set_context(oldcontext);\r
@@ -95,10 +95,10 @@ PICO_INTERNAL void PicoAreaUnpackCpu(unsigned char *cpu, int is_sub)
 #elif defined(EMU_M68K)\r
   void *oldcontext = m68ki_cpu_p;\r
   m68k_set_context(is_sub ? &PicoCpuMS68k : &PicoCpuMM68k);\r
+  m68k_set_reg(M68K_REG_SR, *(unsigned int *)(cpu+0x44));\r
   memcpy(m68ki_cpu_p->dar,cpu,0x40);\r
   m68ki_cpu_p->pc=*(unsigned int *)(cpu+0x40);\r
-  m68k_set_reg(M68K_REG_SR, *(unsigned int *)(cpu+0x44));\r
-  m68ki_cpu_p->sp[0]=*(unsigned int *)(cpu+0x48);\r
+  m68ki_cpu_p->sp[m68ki_cpu_p->s_flag^SFLAG_SET]=*(unsigned int *)(cpu+0x48);\r
   CPU_INT_LEVEL = cpu[0x4c] << 8;\r
   CPU_STOPPED = cpu[0x4d];\r
   m68k_set_context(oldcontext);\r
index 6cd140a..a51590f 100644 (file)
@@ -49,9 +49,11 @@ SekRunPS:
     str     r2, [r8]
     str     r3, [r10]
 
+    ldr     r6, =CycloneJumpTab
     ldr     r1, =SekCycleCnt
     ldr     r0, =((488<<16)-PS_STEP_M68K)
-    ldr     r6, =CycloneJumpTab
+    str     r6, [r7,#0x54]
+    str     r6, [lr,#0x54]            @ make copies to avoid literal pools
 
     @ schedule m68k for the first time..
     ldr     r1, [r1]
index 0ba3a0f..3cb98b0 100644 (file)
@@ -648,6 +648,7 @@ Changelog
 1.51a\r
   * Fixed a sync problem between main and sub 68k. Should fix the hanging\r
     problem for some games.\r
+  * ARM: fixed a crash when CD savestate is loaded just after loading ROM.\r
 \r
 1.51\r
   * Improved bin_to_cso_mp3 tool, it should no longer complain about\r