mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
famec: eliminate global context ptr
saves like 25-35K of .text current compile resource usage on i5-6600K: cpu mem gcc 5.4.0: 17.0 1.1g clang 3.8: 1686 2.3g FAMEC_NO_GOTOS: gcc 5.4.0: 8.4 0.4g clang 3.8: 20.0 0.15g vs2008/O2: ~1800 ? vs2008/O1: ~720 ?
This commit is contained in:
parent
12f23dac6f
commit
7669591e08
7 changed files with 346 additions and 371 deletions
|
@ -139,7 +139,6 @@ static void SekRunS68k(unsigned int to)
|
|||
m68k_set_context(&PicoCpuMM68k);
|
||||
#elif defined(EMU_F68K)
|
||||
SekCycleCntS68k += fm68k_emulate(&PicoCpuFS68k, cyc_do, 0) - cyc_do;
|
||||
g_m68kcontext = &PicoCpuFM68k;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -117,15 +117,10 @@ PICO_INTERNAL void SekInitS68k(void)
|
|||
}
|
||||
#endif
|
||||
#ifdef EMU_F68K
|
||||
{
|
||||
void *oldcontext = g_m68kcontext;
|
||||
g_m68kcontext = &PicoCpuFS68k;
|
||||
memset(&PicoCpuFS68k, 0, sizeof(PicoCpuFS68k));
|
||||
fm68k_init();
|
||||
PicoCpuFS68k.iack_handler = SekIntAckFS68k;
|
||||
PicoCpuFS68k.sr = 0x2704; // Z flag
|
||||
g_m68kcontext = oldcontext;
|
||||
}
|
||||
memset(&PicoCpuFS68k, 0, sizeof(PicoCpuFS68k));
|
||||
fm68k_init();
|
||||
PicoCpuFS68k.iack_handler = SekIntAckFS68k;
|
||||
PicoCpuFS68k.sr = 0x2704; // Z flag
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -149,11 +144,7 @@ PICO_INTERNAL int SekResetS68k(void)
|
|||
}
|
||||
#endif
|
||||
#ifdef EMU_F68K
|
||||
{
|
||||
void *oldcontext = g_m68kcontext;
|
||||
fm68k_reset(&PicoCpuFS68k);
|
||||
g_m68kcontext = oldcontext;
|
||||
}
|
||||
fm68k_reset(&PicoCpuFS68k);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -30,6 +30,7 @@ static struct Cyclone *currentC68k = NULL;
|
|||
#define other_is_stopped() (currentC68k->state_flags&1)
|
||||
#define other_is_tracing() ((currentC68k->state_flags&2)?1:0)
|
||||
#elif defined(EMU_F68K)
|
||||
static struct M68K_CONTEXT *g_m68kcontext;
|
||||
#define other_set_sub(s) g_m68kcontext=(s)?&PicoCpuFS68k:&PicoCpuFM68k;
|
||||
#define other_get_sr() g_m68kcontext->sr
|
||||
#define other_dar(i) ((unsigned int*)g_m68kcontext->dreg)[i]
|
||||
|
|
13
pico/sek.c
13
pico/sek.c
|
@ -128,15 +128,10 @@ PICO_INTERNAL void SekInit(void)
|
|||
}
|
||||
#endif
|
||||
#ifdef EMU_F68K
|
||||
{
|
||||
void *oldcontext = g_m68kcontext;
|
||||
g_m68kcontext = &PicoCpuFM68k;
|
||||
memset(&PicoCpuFM68k, 0, sizeof(PicoCpuFM68k));
|
||||
fm68k_init();
|
||||
PicoCpuFM68k.iack_handler = SekIntAckF68K;
|
||||
PicoCpuFM68k.sr = 0x2704; // Z flag
|
||||
g_m68kcontext = oldcontext;
|
||||
}
|
||||
memset(&PicoCpuFM68k, 0, sizeof(PicoCpuFM68k));
|
||||
fm68k_init();
|
||||
PicoCpuFM68k.iack_handler = SekIntAckF68K;
|
||||
PicoCpuFM68k.sr = 0x2704; // Z flag
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue