Previous 199869 Revisions Next

r20645 Friday 1st February, 2013 at 04:26:47 UTC by R. Belmont
(nw)
[src/emu/cpu/sh2]sh2drc.c

trunk/src/emu/cpu/sh2/sh2drc.c
r20644r20645
274274static void cfunc_unimplemented(void *param)
275275{
276276   sh2_state *sh2 = (sh2_state *)param;
277   UINT16 opcode = sh2->arg0;
278   fatalerror("PC=%08X: Unimplemented op %04X\n", sh2->pc, opcode);
277
278   // set up an invalid opcode exception
279   sh2->evec = RL( sh2, sh2->vbr + 4 * 4 );
280   sh2->evec &= AM;
281   sh2->irqsr = sh2->sr;
282   // claim it's an NMI, because it pretty much is
283   sh2->pending_nmi = 1;
279284}
280285
281286/*-------------------------------------------------
r20644r20645
16221627      /* compile the instruction */
16231628      if (!generate_opcode(sh2, block, compiler, desc, ovrpc))
16241629      {
1630         // handle an illegal op
16251631         UML_MOV(block, mem(&sh2->pc), desc->pc);                            // mov     [pc],desc->pc
16261632         UML_MOV(block, mem(&sh2->arg0), desc->opptr.w[0]);                  // mov     [arg0],opcode
16271633         UML_CALLC(block, cfunc_unimplemented, sh2);                             // callc   cfunc_unimplemented
r20644r20645
17901796         UML_MOV(block, R32(Rn), scratch2);
17911797         return TRUE;
17921798
1793      case 15:    // NOP
1794         return TRUE;
1799      case 15:
1800         return FALSE;
17951801   }
17961802
17971803   return FALSE;
r20644r20645
18011807{
18021808   switch (opcode & 0x3F)
18031809   {
1804   case 0x00: // NOP();
1805   case 0x01: // NOP();
1810   case 0x00:   // these are all illegal
1811   case 0x01:
1812   case 0x10:
1813   case 0x11:
1814   case 0x13:
1815   case 0x20:
1816   case 0x21:
1817   case 0x30:
1818   case 0x31:
1819   case 0x32:
1820   case 0x33:
1821   case 0x38:
1822   case 0x39:
1823   case 0x3a:
1824   case 0x3b:
1825      return FALSE;
1826
18061827   case 0x09: // NOP();
1807   case 0x10: // NOP();
1808   case 0x11: // NOP();
1809   case 0x13: // NOP();
1810   case 0x20: // NOP();
1811   case 0x21: // NOP();
1812   case 0x30: // NOP();
1813   case 0x31: // NOP();
1814   case 0x32: // NOP();
1815   case 0x33: // NOP();
1816   case 0x38: // NOP();
1817   case 0x39: // NOP();
1818   case 0x3a: // NOP();
1819   case 0x3b: // NOP();
18201828      return TRUE;
18211829
18221830   case 0x02: // STCSR(Rn);
r20644r20645
20932101         generate_update_cycles(sh2, block, compiler, desc->pc + 2, TRUE);
20942102      return TRUE;
20952103
2096   case  3: // NOP();
2097      return TRUE;
2104   case  3:
2105      return FALSE;
20982106
20992107   case  4: // MOVBM(Rm, Rn);
21002108      UML_MOV(block, I1, R32(Rm));        // mov r1, Rm
r20644r20645
22652273      UML_ROLINS(block, mem(&sh2->sr), I0, 0, 1); // rolins sr, r0, 0, 1
22662274      return TRUE;
22672275
2268   case  1: // NOP();
2269   case  9: // NOP();
2270      return TRUE;
2276   case  1:
2277   case  9:
2278      return FALSE;
22712279
22722280   case  4: // DIV1(Rm, Rn);
22732281      save_fast_iregs(sh2, block);
r20644r20645
26802688      UML_MOV(block, mem(&sh2->vbr), R32(Rn));        //  mov vbr, Rn
26812689      return TRUE;
26822690
2683   case 0x0c: // NOP();
2684   case 0x0d: // NOP();
2685   case 0x14: // NOP();
2686   case 0x1c: // NOP();
2687   case 0x1d: // NOP();
2688   case 0x2c: // NOP();
2689   case 0x2d: // NOP();
2690   case 0x30: // NOP();
2691   case 0x31: // NOP();
2692   case 0x32: // NOP();
2693   case 0x33: // NOP();
2694   case 0x34: // NOP();
2695   case 0x35: // NOP();
2696   case 0x36: // NOP();
2697   case 0x37: // NOP();
2698   case 0x38: // NOP();
2699   case 0x39: // NOP();
2700   case 0x3a: // NOP();
2701   case 0x3b: // NOP();
2702   case 0x3c: // NOP();
2703   case 0x3d: // NOP();
2704   case 0x3e: // NOP();
2705      return TRUE;
2691   case 0x0c:
2692   case 0x0d:
2693   case 0x14:
2694   case 0x1c:
2695   case 0x1d:
2696   case 0x2c:
2697   case 0x2d:
2698   case 0x30:
2699   case 0x31:
2700   case 0x32:
2701   case 0x33:
2702   case 0x34:
2703   case 0x35:
2704   case 0x36:
2705   case 0x37:
2706   case 0x38:
2707   case 0x39:
2708   case 0x3a:
2709   case 0x3b:
2710   case 0x3c:
2711   case 0x3d:
2712   case 0x3e:
2713      return FALSE;
27062714   }
27072715
27082716   return FALSE;
r20644r20645
28662874         generate_update_cycles(sh2, block, compiler, desc->pc + 2, TRUE);
28672875      return TRUE;
28682876
2869   case  2<< 8: // NOP();
2870   case  3<< 8: // NOP();
2871   case  6<< 8: // NOP();
2872   case  7<< 8: // NOP();
2873   case 10<< 8: // NOP();
2874   case 12<< 8: // NOP();
2875   case 14<< 8: // NOP();
2876      return TRUE;
2877   case  2<< 8:
2878   case  3<< 8:
2879   case  6<< 8:
2880   case  7<< 8:
2881   case 10<< 8:
2882   case 12<< 8:
2883   case 14<< 8:
2884      return FALSE;
28772885
28782886   case  4<< 8: // MOVBL4(Rm, opcode & 0x0f);
28792887      udisp = opcode & 0x0f;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team