notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
allow compiling without 32x and sms code
[picodrive.git]
/
pico
/
32x
/
32x.c
diff --git
a/pico/32x/32x.c
b/pico/32x/32x.c
index
f9ac533
..
59aa142
100644
(file)
--- a/
pico/32x/32x.c
+++ b/
pico/32x/32x.c
@@
-19,7
+19,7
@@
static int REGPARM(2) sh2_irq_cb(SH2 *sh2, int level)
}
}
}
}
-void p32x_update_irls(
void
)
+void p32x_update_irls(
int nested_call
)
{
int irqs, mlvl = 0, slvl = 0;
{
int irqs, mlvl = 0, slvl = 0;
@@
-36,8
+36,8
@@
void p32x_update_irls(void)
slvl *= 2;
elprintf(EL_32X, "update_irls: m %d, s %d", mlvl, slvl);
slvl *= 2;
elprintf(EL_32X, "update_irls: m %d, s %d", mlvl, slvl);
- sh2_irl_irq(&msh2, mlvl);
- sh2_irl_irq(&ssh2, slvl);
+ sh2_irl_irq(&msh2, mlvl
, nested_call
);
+ sh2_irl_irq(&ssh2, slvl
, nested_call
);
mlvl = mlvl ? 1 : 0;
slvl = slvl ? 1 : 0;
p32x_poll_event(mlvl | (slvl << 1), 0);
mlvl = mlvl ? 1 : 0;
slvl = slvl ? 1 : 0;
p32x_poll_event(mlvl | (slvl << 1), 0);
@@
-141,7
+141,7
@@
void PicoReset32x(void)
{
if (PicoAHW & PAHW_32X) {
Pico32x.sh2irqs |= P32XI_VRES;
{
if (PicoAHW & PAHW_32X) {
Pico32x.sh2irqs |= P32XI_VRES;
- p32x_update_irls();
+ p32x_update_irls(
0
);
p32x_poll_event(3, 0);
}
}
p32x_poll_event(3, 0);
}
}
@@
-186,7
+186,7
@@
static void p32x_start_blank(void)
}
Pico32x.sh2irqs |= P32XI_VINT;
}
Pico32x.sh2irqs |= P32XI_VINT;
- p32x_update_irls();
+ p32x_update_irls(
0
);
p32x_poll_event(3, 1);
}
p32x_poll_event(3, 1);
}
@@
-194,6
+194,7
@@
static __inline void run_m68k(int cyc)
{
pprof_start(m68k);
{
pprof_start(m68k);
+p32x_poll_event(3, 0);
#if defined(EMU_C68K)
PicoCpuCM68k.cycles = cyc;
CycloneRun(&PicoCpuCM68k);
#if defined(EMU_C68K)
PicoCpuCM68k.cycles = cyc;
CycloneRun(&PicoCpuCM68k);
@@
-210,7
+211,8
@@
static __inline void run_m68k(int cyc)
// ~1463.8, but due to cache misses and slow mem
// it's much lower than that
//#define SH2_LINE_CYCLES 735
// ~1463.8, but due to cache misses and slow mem
// it's much lower than that
//#define SH2_LINE_CYCLES 735
-#define CYCLES_M68K2SH2(x) ((x) * 6 / 4)
+#define CYCLES_M68K2MSH2(x) (((x) * p32x_msh2_multiplier) >> 10)
+#define CYCLES_M68K2SSH2(x) (((x) * p32x_ssh2_multiplier) >> 10)
#define PICO_32X
#define CPUS_RUN_SIMPLE(m68k_cycles,s68k_cycles) \
#define PICO_32X
#define CPUS_RUN_SIMPLE(m68k_cycles,s68k_cycles) \
@@
-227,12
+229,12
@@
static __inline void run_m68k(int cyc)
elprintf(EL_32X, "slice %d", slice); \
if (!(Pico32x.emu_flags & (P32XF_SSH2POLL|P32XF_SSH2VPOLL))) { \
pprof_start(ssh2); \
elprintf(EL_32X, "slice %d", slice); \
if (!(Pico32x.emu_flags & (P32XF_SSH2POLL|P32XF_SSH2VPOLL))) { \
pprof_start(ssh2); \
- sh2_execute(&ssh2, CYCLES_M68K2SH2(slice)); \
+ sh2_execute(&ssh2, CYCLES_M68K2S
S
H2(slice)); \
pprof_end(ssh2); \
} \
if (!(Pico32x.emu_flags & (P32XF_MSH2POLL|P32XF_MSH2VPOLL))) { \
pprof_start(msh2); \
pprof_end(ssh2); \
} \
if (!(Pico32x.emu_flags & (P32XF_MSH2POLL|P32XF_MSH2VPOLL))) { \
pprof_start(msh2); \
- sh2_execute(&msh2, CYCLES_M68K2SH2(slice)); \
+ sh2_execute(&msh2, CYCLES_M68K2
M
SH2(slice)); \
pprof_end(msh2); \
} \
pprof_start(dummy); \
pprof_end(msh2); \
} \
pprof_start(dummy); \