Previous 15994 Revisions Next

r14751 Monday 12th March, 2012 at 07:25:40 UTC by Miodrag Milanović
Synced MAME core files (no whatsnew)
[src/emu/cpu/powerpc]ppcdrc.c
[src/tools]unidasm.c

src/tools/unidasm.c
r14750r14751
197197CPU_DISASSEMBLE( tms32051 );
198198CPU_DISASSEMBLE( tms34010 );
199199CPU_DISASSEMBLE( tms34020 );
200CPU_DISASSEMBLE( tms57002 );
200//CPU_DISASSEMBLE( tms57002 );
201201CPU_DISASSEMBLE( tms7000 );
202202CPU_DISASSEMBLE( upd7810 );
203203CPU_DISASSEMBLE( upd7807 );
r14750r14751
326326   { "tms32051",   _16le, -1, CPU_DISASSEMBLE_NAME(tms32051) },
327327   { "tms34010",   _8bit,  3, CPU_DISASSEMBLE_NAME(tms34010) },
328328   { "tms34020",   _8bit,  3, CPU_DISASSEMBLE_NAME(tms34020) },
329   { "tms57002",   _32le, -2, CPU_DISASSEMBLE_NAME(tms57002) },
329   //   { "tms57002",   _32le, -2, CPU_DISASSEMBLE_NAME(tms57002) },
330330   { "tms7000",    _8bit,  0, CPU_DISASSEMBLE_NAME(tms7000) },
331331   { "upd7810",    _8bit,  0, CPU_DISASSEMBLE_NAME(upd7810) },
332332   { "upd7807",    _8bit,  0, CPU_DISASSEMBLE_NAME(upd7807) },
src/emu/cpu/powerpc/ppcdrc.c
r14750r14751
22372237   {
22382238      UML_GETFLGS(block, I0, FLAG_S | FLAG_Z);                              // getflgs i0,sz
22392239      UML_LOAD(block, I0, ppc->impstate->sz_cr_table, I0, SIZE_BYTE, SCALE_x1);   // load    i0,sz_cr_table,i0,byte
2240      UML_OR(block, CR32(0), I0, XERSO32);                                 // or      [cr0],i0,[xerso]
2240        UML_OR(block, CR32(0), I0, XERSO32);                                 // or      [cr0],i0,[xerso]
22412241      return;
22422242   }
22432243
r14750r14751
30663066         return TRUE;
30673067
30683068      case 0x1cb:   /* DIVWUx */
3069      case 0x3cb:   /* DIVWUOx */
3069        case 0x3cb:   /* DIVWUOx */
3070            UML_CMP(block, R32(G_RB(op)), 0x0);                 // cmp rb, #0
3071            UML_JMPc(block, COND_NZ, compiler->labelnum);       // bne 0:
3072
3073            UML_MOV(block, R32(G_RD(op)), 0x0);                 // mov rd, #0
3074            if (op & M_OE)
3075            {
3076                UML_OR(block, XERSO32, XERSO32, 0x1);           // SO |= 1
3077                UML_OR(block, SPR32(SPR_XER), SPR32(SPR_XER), XER_OV);  // OV |= 1
3078            }
3079            if (op & M_RC)
3080            {
3081                UML_MOV(block, CR32(0), 0x2);                   // CR = EQ
3082                UML_AND(block, CR32(0), CR32(0), ~0x1);
3083                UML_OR(block, CR32(0), CR32(0), XERSO32);
3084            }
3085
3086            UML_JMP(block, compiler->labelnum+1);               // jmp 1:
3087
3088            UML_LABEL(block, compiler->labelnum++);             // 0:
30703089         UML_DIVU(block, R32(G_RD(op)), R32(G_RD(op)), R32(G_RA(op)), R32(G_RB(op)));   // divu    rd,rd,ra,rb
30713090         generate_compute_flags(ppc, block, desc, op & M_RC, ((op & M_OE) ? XER_OV : 0), FALSE);// <update flags>
3091
3092            UML_LABEL(block, compiler->labelnum++);             // 1:
30723093         return TRUE;
30733094
30743095      case 0x1eb:   /* DIVWx */
30753096        case 0x3eb:   /* DIVWOx */
30763097            UML_CMP(block, R32(G_RB(op)), 0x0);                 // cmp rb, #0
3077            UML_JMPc(block, COND_NE, compiler->labelnum);       // bne 0:
3098            UML_JMPc(block, COND_NZ, compiler->labelnum);       // bne 0:
30783099            UML_CMP(block, R32(G_RA(op)), 0x80000000);          // cmp rb, #80000000
30793100            UML_JMPc(block, COND_AE, compiler->labelnum);       // bae 0:
30803101
30813102            UML_MOV(block, R32(G_RD(op)), 0x0);                 // move rd, #0
30823103            if (op & M_OE)
30833104            {
3084                UML_OR(block, XERSO32, XERSO32, 0x1);           // SO = 1
3105                UML_OR(block, XERSO32, XERSO32, 0x1);           // SO |= 1
3106                UML_OR(block, SPR32(SPR_XER), SPR32(SPR_XER), XER_OV);  // OV |= 1
30853107            }
3108            if (op & M_RC)
3109            {
3110                UML_MOV(block, CR32(0), 0x2);                   // CR = EQ
3111                UML_AND(block, CR32(0), CR32(0), ~0x1);
3112                UML_OR(block, CR32(0), CR32(0), XERSO32);
3113            }
3114
30863115            UML_JMP(block, compiler->labelnum+3);               // jmp 3:
30873116
30883117            UML_LABEL(block, compiler->labelnum++);             // 0:
3089
30903118            UML_CMP(block, R32(G_RB(op)), 0x0);                 // cmp rb, #0
30913119            UML_JMPc(block, COND_Z, compiler->labelnum);        // beq 1:
30923120
30933121            UML_CMP(block, R32(G_RB(op)), 0xffffffff);          // cmp rb, #ffffffff
3094            UML_JMPc(block, COND_NE, compiler->labelnum+1);     // bne 2:
3122            UML_JMPc(block, COND_NZ, compiler->labelnum+1);     // bne 2:
30953123            UML_CMP(block, R32(G_RA(op)), 0x80000000);          // cmp ra, #80000000
3096            UML_JMPc(block, COND_NE, compiler->labelnum+1);     // bne 2:
3124            UML_JMPc(block, COND_NZ, compiler->labelnum+1);     // bne 2:
30973125
30983126            UML_LABEL(block, compiler->labelnum++);             // 1:
3099            // do second branch
31003127            UML_MOV(block, R32(G_RD(op)), 0xffffffff);          // move rd, #ffffffff
31013128            if (op & M_OE)
31023129            {
3103                UML_OR(block, XERSO32, XERSO32, 0x1);           // SO = 1
3130                UML_OR(block, XERSO32, XERSO32, 0x1);           // SO |= 1
3131                UML_OR(block, SPR32(SPR_XER), SPR32(SPR_XER), XER_OV);  // OV |= 1
31043132            }
3133            if (op & M_RC)
3134            {
3135                UML_MOV(block, CR32(0), 0x8);                   // CR = LT
3136                UML_AND(block, CR32(0), CR32(0), ~0x1);
3137                UML_OR(block, CR32(0), CR32(0), XERSO32);
3138            }
31053139            UML_JMP(block, compiler->labelnum+1);               // jmp 3:
31063140
31073141            UML_LABEL(block, compiler->labelnum++);             // 2:
31083142         UML_DIVS(block, R32(G_RD(op)), R32(G_RD(op)), R32(G_RA(op)), R32(G_RB(op)));   // divs    rd,rd,ra,rb
3109            generate_compute_flags(ppc, block, desc, op & M_RC, ((op & M_OE) ? XER_OV : 0), FALSE);// <update flags>
3143            generate_compute_flags(ppc, block, desc, op & M_RC, ((op & M_OE) ? XER_OV : 0), FALSE);// <update flags>
31103144
31113145            UML_LABEL(block, compiler->labelnum++);             // 3:
31123146            return TRUE;
r14750r14751
31563190         generate_compute_flags(ppc, block, desc, op & M_RC, 0, FALSE);               // <update flags>
31573191         return TRUE;
31583192
3159      case 0x018:   /* SLWx */
3193        case 0x018:   /* SLWx */
3194            UML_AND(block, I0, R32(G_RB(op)), 0x3f);            // and i0, rb, 0x3f
3195            UML_CMP(block, I0, 31);                             // cmp i0, #31
3196            UML_JMPc(block, COND_BE, compiler->labelnum);       // be 0:
3197
3198            UML_MOV(block, R32(G_RA(op)), 0x0);                 // mov ra, #0
3199            if (op & M_RC)
3200            {
3201                UML_MOV(block, CR32(0), 0x2);                   // CR = EQ
3202                UML_AND(block, CR32(0), CR32(0), ~0x1);
3203                UML_OR(block, CR32(0), CR32(0), XERSO32);
3204            }
3205            UML_JMP(block, compiler->labelnum+1);               // jmp 1:
3206
3207            UML_LABEL(block, compiler->labelnum++);             // 0:
31603208         UML_SHL(block, R32(G_RA(op)), R32(G_RS(op)), R32(G_RB(op)));               // shl     ra,rs,rb
31613209         generate_compute_flags(ppc, block, desc, op & M_RC, 0, FALSE);               // <update flags>
3162         return TRUE;
31633210
3211            UML_LABEL(block, compiler->labelnum++);             // 1:
3212            return TRUE;
3213
31643214      case 0x218:   /* SRWx */
3165         UML_MOV(block, I0, R32(G_RS(op)));                                 // mov     i0,rs
3166         UML_TEST(block, R32(G_RB(op)), 0x20);                              // test    rb,0x20
3167         UML_MOVc(block, COND_NZ, I0, 0);                              // mov     i0,0,nz
3168         UML_SHR(block, R32(G_RA(op)), I0, R32(G_RB(op)));                     // shr     ra,i0,rb
3215            UML_AND(block, I0, R32(G_RB(op)), 0x3f);            // and i0, rb, 0x3f
3216            UML_CMP(block, I0, 31);                             // cmp i0, #31
3217            UML_JMPc(block, COND_BE, compiler->labelnum);       // be 0:
3218
3219            UML_MOV(block, R32(G_RA(op)), 0x0);                 // mov ra, #0
3220            if (op & M_RC)
3221            {
3222                UML_MOV(block, CR32(0), 0x2);                   // CR = EQ
3223                UML_AND(block, CR32(0), CR32(0), ~0x1);
3224                UML_OR(block, CR32(0), CR32(0), XERSO32);
3225            }
3226            UML_JMP(block, compiler->labelnum+1);               // jmp 1:
3227
3228            UML_LABEL(block, compiler->labelnum++);             // 0:
3229         UML_SHR(block, R32(G_RA(op)), R32(G_RS(op)), R32(G_RB(op)));                     // shr     ra,i0,rb
31693230         generate_compute_flags(ppc, block, desc, op & M_RC, 0, FALSE);               // <update flags>
3231
3232            UML_LABEL(block, compiler->labelnum++);             // 1:
31703233         return TRUE;
31713234
31723235      case 0x318:   /* SRAWx */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team