fix for load-state-after-load crash
[picodrive.git] / Pico / Area.c
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