Beispiel #1
0
void FIN_BLOCK()
{
   if (!delay_slot)
     {
	jump_to((PC-1)->addr+4);
	PC->ops();
	if (dynacore) dyna_jump();
     }
   else
     {
#ifdef PPC_DYNAREC
	PowerPC_block* blk = actual;
#else
	precomp_block *blk = actual;
#endif
	precomp_instr *inst = PC;
	jump_to((PC-1)->addr+4);

	if (!skip_jump)
	  {
	     PC->ops();
	     actual = blk;
	     PC = inst+1;
	  }
	else
	  PC->ops();

	if (dynacore) dyna_jump();
     }
}
Beispiel #2
0
void FIN_BLOCK()
{
   if (!delay_slot)
     {
	jump_to((PC-1)->addr+4);
	PC->ops();
	if (dynacore) dyna_jump();
     }
   else
     {
	precomp_block *blk = actual;
	precomp_instr *inst = PC;
	jump_to((PC-1)->addr+4);
	
	if (!skip_jump)
	  {
	     PC->ops();
	     actual = blk;
	     PC = inst+1;
	  }
	else
	  PC->ops();
	
	if (dynacore) dyna_jump();
     }
}
Beispiel #3
0
static void NOTCOMPILED(void)
{
   unsigned int *mem = fast_mem_access(blocks[PC->addr>>12]->start);
#ifdef CORE_DBG
   DebugMessage(M64MSG_INFO, "NOTCOMPILED: addr = %x ops = %lx", PC->addr, (long) PC->ops);
#endif

   if (mem != NULL)
	 {
      recompile_block((int *)mem, blocks[PC->addr >> 12], PC->addr);
			PC->ops();
			if (r4300emu == CORE_DYNAREC)
				dyna_jump();
	 }
// -----------------------------------------------------------
// Flow control 'fake' instructions
// -----------------------------------------------------------
static void FIN_BLOCK(void)
{
   if (!delay_slot)
   {
      jump_to((PC-1)->addr+4);
#if 0
#ifdef DBG
      if (g_DebuggerActive) update_debugger(PC->addr);
#endif
      // Used by dynarec only, check should be unnecessary
#endif
      PC->ops();
      if (r4300emu == CORE_DYNAREC) dyna_jump();
   }
   else
   {
      precomp_block *blk = actual;
      precomp_instr *inst = PC;
      jump_to((PC-1)->addr+4);

#if 0
#ifdef DBG
      if (g_DebuggerActive) update_debugger(PC->addr);
#endif
      // Used by dynarec only, check should be unnecessary
#endif
      PC->ops();
      if (!skip_jump)
      {
         actual = blk;
         PC = inst+1;
      }

      if (r4300emu == CORE_DYNAREC)
         dyna_jump();
   }
}
Beispiel #5
0
void FIN_BLOCK()
{
   if (!delay_slot)
     {
    jump_to((PC-1)->addr+4);
/*#ifdef DBG
            if (debugger_mode) update_debugger(PC->addr);
#endif
Used by dynarec only, check should be unnecessary
*/
    PC->ops();
    if (dynacore) dyna_jump();
     }
   else
     {
    precomp_block *blk = actual;
    precomp_instr *inst = PC;
    jump_to((PC-1)->addr+4);
    
/*#ifdef DBG
            if (debugger_mode) update_debugger(PC->addr);
#endif
Used by dynarec only, check should be unnecessary
*/
    if (!skip_jump)
      {
         PC->ops();
         actual = blk;
         PC = inst+1;
      }
    else
      PC->ops();
    
    if (dynacore) dyna_jump();
     }
}