summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f7b2692)
The previous fix was incomplete: it only worked until a STOP instruction
was issued. Incoming IRQs could not wake the M68K from its stopped
state. This has been fixed. :-)
int m68k_execute(int num_cycles)
{
int m68k_execute(int num_cycles)
{
-#if 0
- /* Make sure we're not stopped */
- if (CPU_STOPPED)
- {
- /* We get here if the CPU is stopped or halted */
- SET_CYCLES(0);
- CPU_INT_CYCLES = 0;
-
- return num_cycles;
- }
-#else
if (regs.stopped)
{
regs.remainingCycles = 0; // int32_t
if (regs.stopped)
{
regs.remainingCycles = 0; // int32_t
#if 0
/* Set our pool of clock cycles available */
#if 0
/* Set our pool of clock cycles available */
void m68k_set_irq(unsigned int intLevel)
{
void m68k_set_irq(unsigned int intLevel)
{
+ // We need to check for stopped state as well...
+ if (regs.stopped)
+ {
+ m68k_set_irq2(intLevel);
+ return;
+ }
+
// Since this can be called asynchronously, we need to fix it so that it
// doesn't fuck up the main execution loop.
IRQLevelToHandle = intLevel;
// Since this can be called asynchronously, we need to fix it so that it
// doesn't fuck up the main execution loop.
IRQLevelToHandle = intLevel;