Commit 5462327761e909bddb8b3a14051e415351781fe3

Authored by Blue Swirl
1 parent e8eaa2c0

Concentrate most table entries to top

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Showing 1 changed file with 291 additions and 422 deletions
target-ppc/translate.c
@@ -558,10 +558,246 @@ static always_inline void gen_store_spr(int reg, TCGv t) @@ -558,10 +558,246 @@ static always_inline void gen_store_spr(int reg, TCGv t)
558 558
559 /* Start opcode list */ 559 /* Start opcode list */
560 GEN_OPCODE_MARK(start); 560 GEN_OPCODE_MARK(start);
561 -  
562 -/* Invalid instruction */  
563 GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE); 561 GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE);
  562 +GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER);
  563 +GEN_HANDLER(cmpi, 0x0B, 0xFF, 0xFF, 0x00400000, PPC_INTEGER);
  564 +GEN_HANDLER(cmpl, 0x1F, 0x00, 0x01, 0x00400000, PPC_INTEGER);
  565 +GEN_HANDLER(cmpli, 0x0A, 0xFF, 0xFF, 0x00400000, PPC_INTEGER);
  566 +GEN_HANDLER(isel, 0x1F, 0x0F, 0xFF, 0x00000001, PPC_ISEL);
  567 +GEN_HANDLER(addi, 0x0E, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  568 +GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  569 +GEN_HANDLER2(addic_, "addic.", 0x0D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  570 +GEN_HANDLER(addis, 0x0F, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  571 +GEN_HANDLER(mulhw, 0x1F, 0x0B, 0x02, 0x00000400, PPC_INTEGER);
  572 +GEN_HANDLER(mulhwu, 0x1F, 0x0B, 0x00, 0x00000400, PPC_INTEGER);
  573 +GEN_HANDLER(mullw, 0x1F, 0x0B, 0x07, 0x00000000, PPC_INTEGER);
  574 +GEN_HANDLER(mullwo, 0x1F, 0x0B, 0x17, 0x00000000, PPC_INTEGER);
  575 +GEN_HANDLER(mulli, 0x07, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  576 +#if defined(TARGET_PPC64)
  577 +GEN_HANDLER(mulld, 0x1F, 0x09, 0x07, 0x00000000, PPC_64B);
  578 +#endif
  579 +GEN_HANDLER(neg, 0x1F, 0x08, 0x03, 0x0000F800, PPC_INTEGER);
  580 +GEN_HANDLER(nego, 0x1F, 0x08, 0x13, 0x0000F800, PPC_INTEGER);
  581 +GEN_HANDLER(subfic, 0x08, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  582 +GEN_HANDLER2(andi_, "andi.", 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  583 +GEN_HANDLER2(andis_, "andis.", 0x1D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  584 +GEN_HANDLER(cntlzw, 0x1F, 0x1A, 0x00, 0x00000000, PPC_INTEGER);
  585 +GEN_HANDLER(or, 0x1F, 0x1C, 0x0D, 0x00000000, PPC_INTEGER);
  586 +GEN_HANDLER(xor, 0x1F, 0x1C, 0x09, 0x00000000, PPC_INTEGER);
  587 +GEN_HANDLER(ori, 0x18, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  588 +GEN_HANDLER(oris, 0x19, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  589 +GEN_HANDLER(xori, 0x1A, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  590 +GEN_HANDLER(xoris, 0x1B, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  591 +GEN_HANDLER(popcntb, 0x1F, 0x03, 0x03, 0x0000F801, PPC_POPCNTB);
  592 +#if defined(TARGET_PPC64)
  593 +GEN_HANDLER(cntlzd, 0x1F, 0x1A, 0x01, 0x00000000, PPC_64B);
  594 +#endif
  595 +GEN_HANDLER(rlwimi, 0x14, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  596 +GEN_HANDLER(rlwinm, 0x15, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  597 +GEN_HANDLER(rlwnm, 0x17, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  598 +GEN_HANDLER(slw, 0x1F, 0x18, 0x00, 0x00000000, PPC_INTEGER);
  599 +GEN_HANDLER(sraw, 0x1F, 0x18, 0x18, 0x00000000, PPC_INTEGER);
  600 +GEN_HANDLER(srawi, 0x1F, 0x18, 0x19, 0x00000000, PPC_INTEGER);
  601 +GEN_HANDLER(srw, 0x1F, 0x18, 0x10, 0x00000000, PPC_INTEGER);
  602 +#if defined(TARGET_PPC64)
  603 +GEN_HANDLER(sld, 0x1F, 0x1B, 0x00, 0x00000000, PPC_64B);
  604 +GEN_HANDLER(srad, 0x1F, 0x1A, 0x18, 0x00000000, PPC_64B);
  605 +GEN_HANDLER2(sradi0, "sradi", 0x1F, 0x1A, 0x19, 0x00000000, PPC_64B);
  606 +GEN_HANDLER2(sradi1, "sradi", 0x1F, 0x1B, 0x19, 0x00000000, PPC_64B);
  607 +GEN_HANDLER(srd, 0x1F, 0x1B, 0x10, 0x00000000, PPC_64B);
  608 +#endif
  609 +GEN_HANDLER(frsqrtes, 0x3B, 0x1A, 0xFF, 0x001F07C0, PPC_FLOAT_FRSQRTES);
  610 +GEN_HANDLER(fsqrt, 0x3F, 0x16, 0xFF, 0x001F07C0, PPC_FLOAT_FSQRT);
  611 +GEN_HANDLER(fsqrts, 0x3B, 0x16, 0xFF, 0x001F07C0, PPC_FLOAT_FSQRT);
  612 +GEN_HANDLER(fcmpo, 0x3F, 0x00, 0x01, 0x00600001, PPC_FLOAT);
  613 +GEN_HANDLER(fcmpu, 0x3F, 0x00, 0x00, 0x00600001, PPC_FLOAT);
  614 +GEN_HANDLER(fmr, 0x3F, 0x08, 0x02, 0x001F0000, PPC_FLOAT);
  615 +GEN_HANDLER(mcrfs, 0x3F, 0x00, 0x02, 0x0063F801, PPC_FLOAT);
  616 +GEN_HANDLER(mffs, 0x3F, 0x07, 0x12, 0x001FF800, PPC_FLOAT);
  617 +GEN_HANDLER(mtfsb0, 0x3F, 0x06, 0x02, 0x001FF800, PPC_FLOAT);
  618 +GEN_HANDLER(mtfsb1, 0x3F, 0x06, 0x01, 0x001FF800, PPC_FLOAT);
  619 +GEN_HANDLER(mtfsf, 0x3F, 0x07, 0x16, 0x00010000, PPC_FLOAT);
  620 +GEN_HANDLER(mtfsfi, 0x3F, 0x06, 0x04, 0x006f0800, PPC_FLOAT);
  621 +#if defined(TARGET_PPC64)
  622 +GEN_HANDLER(ld, 0x3A, 0xFF, 0xFF, 0x00000000, PPC_64B);
  623 +GEN_HANDLER(lq, 0x38, 0xFF, 0xFF, 0x00000000, PPC_64BX);
  624 +GEN_HANDLER(std, 0x3E, 0xFF, 0xFF, 0x00000000, PPC_64B);
  625 +#endif
  626 +GEN_HANDLER(lmw, 0x2E, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  627 +GEN_HANDLER(stmw, 0x2F, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);
  628 +GEN_HANDLER(lswi, 0x1F, 0x15, 0x12, 0x00000001, PPC_STRING);
  629 +GEN_HANDLER(lswx, 0x1F, 0x15, 0x10, 0x00000001, PPC_STRING);
  630 +GEN_HANDLER(stswi, 0x1F, 0x15, 0x16, 0x00000001, PPC_STRING);
  631 +GEN_HANDLER(stswx, 0x1F, 0x15, 0x14, 0x00000001, PPC_STRING);
  632 +GEN_HANDLER(eieio, 0x1F, 0x16, 0x1A, 0x03FFF801, PPC_MEM_EIEIO);
  633 +GEN_HANDLER(isync, 0x13, 0x16, 0x04, 0x03FFF801, PPC_MEM);
  634 +GEN_HANDLER(lwarx, 0x1F, 0x14, 0x00, 0x00000001, PPC_RES);
  635 +GEN_HANDLER2(stwcx_, "stwcx.", 0x1F, 0x16, 0x04, 0x00000000, PPC_RES);
  636 +#if defined(TARGET_PPC64)
  637 +GEN_HANDLER(ldarx, 0x1F, 0x14, 0x02, 0x00000001, PPC_64B);
  638 +GEN_HANDLER2(stdcx_, "stdcx.", 0x1F, 0x16, 0x06, 0x00000000, PPC_64B);
  639 +#endif
  640 +GEN_HANDLER(sync, 0x1F, 0x16, 0x12, 0x039FF801, PPC_MEM_SYNC);
  641 +GEN_HANDLER(wait, 0x1F, 0x1E, 0x01, 0x03FFF801, PPC_WAIT);
  642 +GEN_HANDLER(b, 0x12, 0xFF, 0xFF, 0x00000000, PPC_FLOW);
  643 +GEN_HANDLER(bc, 0x10, 0xFF, 0xFF, 0x00000000, PPC_FLOW);
  644 +GEN_HANDLER(bcctr, 0x13, 0x10, 0x10, 0x00000000, PPC_FLOW);
  645 +GEN_HANDLER(bclr, 0x13, 0x10, 0x00, 0x00000000, PPC_FLOW);
  646 +GEN_HANDLER(mcrf, 0x13, 0x00, 0xFF, 0x00000001, PPC_INTEGER);
  647 +GEN_HANDLER(rfi, 0x13, 0x12, 0x01, 0x03FF8001, PPC_FLOW);
  648 +#if defined(TARGET_PPC64)
  649 +GEN_HANDLER(rfid, 0x13, 0x12, 0x00, 0x03FF8001, PPC_64B);
  650 +GEN_HANDLER(hrfid, 0x13, 0x12, 0x08, 0x03FF8001, PPC_64H);
  651 +#endif
  652 +GEN_HANDLER(sc, 0x11, 0xFF, 0xFF, 0x03FFF01D, PPC_FLOW);
  653 +GEN_HANDLER(tw, 0x1F, 0x04, 0x00, 0x00000001, PPC_FLOW);
  654 +GEN_HANDLER(twi, 0x03, 0xFF, 0xFF, 0x00000000, PPC_FLOW);
  655 +#if defined(TARGET_PPC64)
  656 +GEN_HANDLER(td, 0x1F, 0x04, 0x02, 0x00000001, PPC_64B);
  657 +GEN_HANDLER(tdi, 0x02, 0xFF, 0xFF, 0x00000000, PPC_64B);
  658 +#endif
  659 +GEN_HANDLER(mcrxr, 0x1F, 0x00, 0x10, 0x007FF801, PPC_MISC);
  660 +GEN_HANDLER(mfcr, 0x1F, 0x13, 0x00, 0x00000801, PPC_MISC);
  661 +GEN_HANDLER(mfmsr, 0x1F, 0x13, 0x02, 0x001FF801, PPC_MISC);
  662 +GEN_HANDLER(mfspr, 0x1F, 0x13, 0x0A, 0x00000001, PPC_MISC);
  663 +GEN_HANDLER(mftb, 0x1F, 0x13, 0x0B, 0x00000001, PPC_MFTB);
  664 +GEN_HANDLER(mtcrf, 0x1F, 0x10, 0x04, 0x00000801, PPC_MISC);
  665 +#if defined(TARGET_PPC64)
  666 +GEN_HANDLER(mtmsrd, 0x1F, 0x12, 0x05, 0x001EF801, PPC_64B);
  667 +#endif
  668 +GEN_HANDLER(mtmsr, 0x1F, 0x12, 0x04, 0x001FF801, PPC_MISC);
  669 +GEN_HANDLER(mtspr, 0x1F, 0x13, 0x0E, 0x00000001, PPC_MISC);
  670 +GEN_HANDLER(dcbf, 0x1F, 0x16, 0x02, 0x03C00001, PPC_CACHE);
  671 +GEN_HANDLER(dcbi, 0x1F, 0x16, 0x0E, 0x03E00001, PPC_CACHE);
  672 +GEN_HANDLER(dcbst, 0x1F, 0x16, 0x01, 0x03E00001, PPC_CACHE);
  673 +GEN_HANDLER(dcbt, 0x1F, 0x16, 0x08, 0x02000001, PPC_CACHE);
  674 +GEN_HANDLER(dcbtst, 0x1F, 0x16, 0x07, 0x02000001, PPC_CACHE);
  675 +GEN_HANDLER(dcbz, 0x1F, 0x16, 0x1F, 0x03E00001, PPC_CACHE_DCBZ);
  676 +GEN_HANDLER2(dcbz_970, "dcbz", 0x1F, 0x16, 0x1F, 0x03C00001, PPC_CACHE_DCBZT);
  677 +GEN_HANDLER(dst, 0x1F, 0x16, 0x0A, 0x01800001, PPC_ALTIVEC);
  678 +GEN_HANDLER(dstst, 0x1F, 0x16, 0x0B, 0x02000001, PPC_ALTIVEC);
  679 +GEN_HANDLER(dss, 0x1F, 0x16, 0x19, 0x019FF801, PPC_ALTIVEC);
  680 +GEN_HANDLER(icbi, 0x1F, 0x16, 0x1E, 0x03E00001, PPC_CACHE_ICBI);
  681 +GEN_HANDLER(dcba, 0x1F, 0x16, 0x17, 0x03E00001, PPC_CACHE_DCBA);
  682 +GEN_HANDLER(mfsr, 0x1F, 0x13, 0x12, 0x0010F801, PPC_SEGMENT);
  683 +GEN_HANDLER(mfsrin, 0x1F, 0x13, 0x14, 0x001F0001, PPC_SEGMENT);
  684 +GEN_HANDLER(mtsr, 0x1F, 0x12, 0x06, 0x0010F801, PPC_SEGMENT);
  685 +GEN_HANDLER(mtsrin, 0x1F, 0x12, 0x07, 0x001F0001, PPC_SEGMENT);
  686 +#if defined(TARGET_PPC64)
  687 +GEN_HANDLER2(mfsr_64b, "mfsr", 0x1F, 0x13, 0x12, 0x0010F801, PPC_SEGMENT_64B);
  688 +GEN_HANDLER2(mfsrin_64b, "mfsrin", 0x1F, 0x13, 0x14, 0x001F0001,
  689 + PPC_SEGMENT_64B);
  690 +GEN_HANDLER2(mtsr_64b, "mtsr", 0x1F, 0x12, 0x06, 0x0010F801, PPC_SEGMENT_64B);
  691 +GEN_HANDLER2(mtsrin_64b, "mtsrin", 0x1F, 0x12, 0x07, 0x001F0001,
  692 + PPC_SEGMENT_64B);
  693 +GEN_HANDLER2(slbmte, "slbmte", 0x1F, 0x12, 0x0C, 0x00000000, PPC_SEGMENT_64B);
  694 +#endif
  695 +GEN_HANDLER(tlbia, 0x1F, 0x12, 0x0B, 0x03FFFC01, PPC_MEM_TLBIA);
  696 +GEN_HANDLER(tlbiel, 0x1F, 0x12, 0x08, 0x03FF0001, PPC_MEM_TLBIE);
  697 +GEN_HANDLER(tlbie, 0x1F, 0x12, 0x09, 0x03FF0001, PPC_MEM_TLBIE);
  698 +GEN_HANDLER(tlbsync, 0x1F, 0x16, 0x11, 0x03FFF801, PPC_MEM_TLBSYNC);
  699 +#if defined(TARGET_PPC64)
  700 +GEN_HANDLER(slbia, 0x1F, 0x12, 0x0F, 0x03FFFC01, PPC_SLBI);
  701 +GEN_HANDLER(slbie, 0x1F, 0x12, 0x0D, 0x03FF0001, PPC_SLBI);
  702 +#endif
  703 +GEN_HANDLER(eciwx, 0x1F, 0x16, 0x0D, 0x00000001, PPC_EXTERN);
  704 +GEN_HANDLER(ecowx, 0x1F, 0x16, 0x09, 0x00000001, PPC_EXTERN);
  705 +GEN_HANDLER(abs, 0x1F, 0x08, 0x0B, 0x0000F800, PPC_POWER_BR);
  706 +GEN_HANDLER(abso, 0x1F, 0x08, 0x1B, 0x0000F800, PPC_POWER_BR);
  707 +GEN_HANDLER(clcs, 0x1F, 0x10, 0x13, 0x0000F800, PPC_POWER_BR);
  708 +GEN_HANDLER(div, 0x1F, 0x0B, 0x0A, 0x00000000, PPC_POWER_BR);
  709 +GEN_HANDLER(divo, 0x1F, 0x0B, 0x1A, 0x00000000, PPC_POWER_BR);
  710 +GEN_HANDLER(divs, 0x1F, 0x0B, 0x0B, 0x00000000, PPC_POWER_BR);
  711 +GEN_HANDLER(divso, 0x1F, 0x0B, 0x1B, 0x00000000, PPC_POWER_BR);
  712 +GEN_HANDLER(doz, 0x1F, 0x08, 0x08, 0x00000000, PPC_POWER_BR);
  713 +GEN_HANDLER(dozo, 0x1F, 0x08, 0x18, 0x00000000, PPC_POWER_BR);
  714 +GEN_HANDLER(dozi, 0x09, 0xFF, 0xFF, 0x00000000, PPC_POWER_BR);
  715 +GEN_HANDLER(lscbx, 0x1F, 0x15, 0x08, 0x00000000, PPC_POWER_BR);
  716 +GEN_HANDLER(maskg, 0x1F, 0x1D, 0x00, 0x00000000, PPC_POWER_BR);
  717 +GEN_HANDLER(maskir, 0x1F, 0x1D, 0x10, 0x00000000, PPC_POWER_BR);
  718 +GEN_HANDLER(mul, 0x1F, 0x0B, 0x03, 0x00000000, PPC_POWER_BR);
  719 +GEN_HANDLER(mulo, 0x1F, 0x0B, 0x13, 0x00000000, PPC_POWER_BR);
  720 +GEN_HANDLER(nabs, 0x1F, 0x08, 0x0F, 0x00000000, PPC_POWER_BR);
  721 +GEN_HANDLER(nabso, 0x1F, 0x08, 0x1F, 0x00000000, PPC_POWER_BR);
  722 +GEN_HANDLER(rlmi, 0x16, 0xFF, 0xFF, 0x00000000, PPC_POWER_BR);
  723 +GEN_HANDLER(rrib, 0x1F, 0x19, 0x10, 0x00000000, PPC_POWER_BR);
  724 +GEN_HANDLER(sle, 0x1F, 0x19, 0x04, 0x00000000, PPC_POWER_BR);
  725 +GEN_HANDLER(sleq, 0x1F, 0x19, 0x06, 0x00000000, PPC_POWER_BR);
  726 +GEN_HANDLER(sliq, 0x1F, 0x18, 0x05, 0x00000000, PPC_POWER_BR);
  727 +GEN_HANDLER(slliq, 0x1F, 0x18, 0x07, 0x00000000, PPC_POWER_BR);
  728 +GEN_HANDLER(sllq, 0x1F, 0x18, 0x06, 0x00000000, PPC_POWER_BR);
  729 +GEN_HANDLER(slq, 0x1F, 0x18, 0x04, 0x00000000, PPC_POWER_BR);
  730 +GEN_HANDLER(sraiq, 0x1F, 0x18, 0x1D, 0x00000000, PPC_POWER_BR);
  731 +GEN_HANDLER(sraq, 0x1F, 0x18, 0x1C, 0x00000000, PPC_POWER_BR);
  732 +GEN_HANDLER(sre, 0x1F, 0x19, 0x14, 0x00000000, PPC_POWER_BR);
  733 +GEN_HANDLER(srea, 0x1F, 0x19, 0x1C, 0x00000000, PPC_POWER_BR);
  734 +GEN_HANDLER(sreq, 0x1F, 0x19, 0x16, 0x00000000, PPC_POWER_BR);
  735 +GEN_HANDLER(sriq, 0x1F, 0x18, 0x15, 0x00000000, PPC_POWER_BR);
  736 +GEN_HANDLER(srliq, 0x1F, 0x18, 0x17, 0x00000000, PPC_POWER_BR);
  737 +GEN_HANDLER(srlq, 0x1F, 0x18, 0x16, 0x00000000, PPC_POWER_BR);
  738 +GEN_HANDLER(srq, 0x1F, 0x18, 0x14, 0x00000000, PPC_POWER_BR);
  739 +GEN_HANDLER(dsa, 0x1F, 0x14, 0x13, 0x03FFF801, PPC_602_SPEC);
  740 +GEN_HANDLER(esa, 0x1F, 0x14, 0x12, 0x03FFF801, PPC_602_SPEC);
  741 +GEN_HANDLER(mfrom, 0x1F, 0x09, 0x08, 0x03E0F801, PPC_602_SPEC);
  742 +GEN_HANDLER2(tlbld_6xx, "tlbld", 0x1F, 0x12, 0x1E, 0x03FF0001, PPC_6xx_TLB);
  743 +GEN_HANDLER2(tlbli_6xx, "tlbli", 0x1F, 0x12, 0x1F, 0x03FF0001, PPC_6xx_TLB);
  744 +GEN_HANDLER2(tlbld_74xx, "tlbld", 0x1F, 0x12, 0x1E, 0x03FF0001, PPC_74xx_TLB);
  745 +GEN_HANDLER2(tlbli_74xx, "tlbli", 0x1F, 0x12, 0x1F, 0x03FF0001, PPC_74xx_TLB);
  746 +GEN_HANDLER(clf, 0x1F, 0x16, 0x03, 0x03E00000, PPC_POWER);
  747 +GEN_HANDLER(cli, 0x1F, 0x16, 0x0F, 0x03E00000, PPC_POWER);
  748 +GEN_HANDLER(dclst, 0x1F, 0x16, 0x13, 0x03E00000, PPC_POWER);
  749 +GEN_HANDLER(mfsri, 0x1F, 0x13, 0x13, 0x00000001, PPC_POWER);
  750 +GEN_HANDLER(rac, 0x1F, 0x12, 0x19, 0x00000001, PPC_POWER);
  751 +GEN_HANDLER(rfsvc, 0x13, 0x12, 0x02, 0x03FFF0001, PPC_POWER);
  752 +GEN_HANDLER(lfq, 0x38, 0xFF, 0xFF, 0x00000003, PPC_POWER2);
  753 +GEN_HANDLER(lfqu, 0x39, 0xFF, 0xFF, 0x00000003, PPC_POWER2);
  754 +GEN_HANDLER(lfqux, 0x1F, 0x17, 0x19, 0x00000001, PPC_POWER2);
  755 +GEN_HANDLER(lfqx, 0x1F, 0x17, 0x18, 0x00000001, PPC_POWER2);
  756 +GEN_HANDLER(stfq, 0x3C, 0xFF, 0xFF, 0x00000003, PPC_POWER2);
  757 +GEN_HANDLER(stfqu, 0x3D, 0xFF, 0xFF, 0x00000003, PPC_POWER2);
  758 +GEN_HANDLER(stfqux, 0x1F, 0x17, 0x1D, 0x00000001, PPC_POWER2);
  759 +GEN_HANDLER(stfqx, 0x1F, 0x17, 0x1C, 0x00000001, PPC_POWER2);
  760 +GEN_HANDLER(mfapidi, 0x1F, 0x13, 0x08, 0x0000F801, PPC_MFAPIDI);
  761 +GEN_HANDLER(tlbiva, 0x1F, 0x12, 0x18, 0x03FFF801, PPC_TLBIVA);
  762 +GEN_HANDLER(mfdcr, 0x1F, 0x03, 0x0A, 0x00000001, PPC_DCR);
  763 +GEN_HANDLER(mtdcr, 0x1F, 0x03, 0x0E, 0x00000001, PPC_DCR);
  764 +GEN_HANDLER(mfdcrx, 0x1F, 0x03, 0x08, 0x00000000, PPC_DCRX);
  765 +GEN_HANDLER(mtdcrx, 0x1F, 0x03, 0x0C, 0x00000000, PPC_DCRX);
  766 +GEN_HANDLER(mfdcrux, 0x1F, 0x03, 0x09, 0x00000000, PPC_DCRUX);
  767 +GEN_HANDLER(mtdcrux, 0x1F, 0x03, 0x0D, 0x00000000, PPC_DCRUX);
  768 +GEN_HANDLER(dccci, 0x1F, 0x06, 0x0E, 0x03E00001, PPC_4xx_COMMON);
  769 +GEN_HANDLER(dcread, 0x1F, 0x06, 0x0F, 0x00000001, PPC_4xx_COMMON);
  770 +GEN_HANDLER2(icbt_40x, "icbt", 0x1F, 0x06, 0x08, 0x03E00001, PPC_40x_ICBT);
  771 +GEN_HANDLER(iccci, 0x1F, 0x06, 0x1E, 0x00000001, PPC_4xx_COMMON);
  772 +GEN_HANDLER(icread, 0x1F, 0x06, 0x1F, 0x03E00001, PPC_4xx_COMMON);
  773 +GEN_HANDLER2(rfci_40x, "rfci", 0x13, 0x13, 0x01, 0x03FF8001, PPC_40x_EXCP);
  774 +GEN_HANDLER(rfci, 0x13, 0x13, 0x01, 0x03FF8001, PPC_BOOKE);
  775 +GEN_HANDLER(rfdi, 0x13, 0x07, 0x01, 0x03FF8001, PPC_RFDI);
  776 +GEN_HANDLER(rfmci, 0x13, 0x06, 0x01, 0x03FF8001, PPC_RFMCI);
  777 +GEN_HANDLER2(tlbre_40x, "tlbre", 0x1F, 0x12, 0x1D, 0x00000001, PPC_40x_TLB);
  778 +GEN_HANDLER2(tlbsx_40x, "tlbsx", 0x1F, 0x12, 0x1C, 0x00000000, PPC_40x_TLB);
  779 +GEN_HANDLER2(tlbwe_40x, "tlbwe", 0x1F, 0x12, 0x1E, 0x00000001, PPC_40x_TLB);
  780 +GEN_HANDLER2(tlbre_440, "tlbre", 0x1F, 0x12, 0x1D, 0x00000001, PPC_BOOKE);
  781 +GEN_HANDLER2(tlbsx_440, "tlbsx", 0x1F, 0x12, 0x1C, 0x00000000, PPC_BOOKE);
  782 +GEN_HANDLER2(tlbwe_440, "tlbwe", 0x1F, 0x12, 0x1E, 0x00000001, PPC_BOOKE);
  783 +GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE);
  784 +GEN_HANDLER(wrteei, 0x1F, 0x03, 0x05, 0x000EFC01, PPC_WRTEE);
  785 +GEN_HANDLER(dlmzb, 0x1F, 0x0E, 0x02, 0x00000000, PPC_440_SPEC);
  786 +GEN_HANDLER(mbar, 0x1F, 0x16, 0x1a, 0x001FF801, PPC_BOOKE);
  787 +GEN_HANDLER(msync, 0x1F, 0x16, 0x12, 0x03FFF801, PPC_BOOKE);
  788 +GEN_HANDLER2(icbt_440, "icbt", 0x1F, 0x16, 0x00, 0x03E00001, PPC_BOOKE);
  789 +GEN_HANDLER(lvsl, 0x1f, 0x06, 0x00, 0x00000001, PPC_ALTIVEC);
  790 +GEN_HANDLER(lvsr, 0x1f, 0x06, 0x01, 0x00000001, PPC_ALTIVEC);
  791 +GEN_HANDLER(mfvscr, 0x04, 0x2, 0x18, 0x001ff800, PPC_ALTIVEC);
  792 +GEN_HANDLER(mtvscr, 0x04, 0x2, 0x19, 0x03ff0000, PPC_ALTIVEC);
  793 +GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC);
  794 +GEN_HANDLER(vmladduhm, 0x04, 0x11, 0xFF, 0x00000000, PPC_ALTIVEC);
  795 +GEN_HANDLER2(evsel0, "evsel", 0x04, 0x1c, 0x09, 0x00000000, PPC_SPE);
  796 +GEN_HANDLER2(evsel1, "evsel", 0x04, 0x1d, 0x09, 0x00000000, PPC_SPE);
  797 +GEN_HANDLER2(evsel2, "evsel", 0x04, 0x1e, 0x09, 0x00000000, PPC_SPE);
  798 +GEN_HANDLER2(evsel3, "evsel", 0x04, 0x1f, 0x09, 0x00000000, PPC_SPE);
564 799
  800 +/* Invalid instruction */
565 static void gen_invalid(DisasContext *ctx) 801 static void gen_invalid(DisasContext *ctx)
566 { 802 {
567 gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL); 803 gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);
@@ -647,8 +883,6 @@ static always_inline void gen_set_Rc0 (DisasContext *ctx, TCGv reg) @@ -647,8 +883,6 @@ static always_inline void gen_set_Rc0 (DisasContext *ctx, TCGv reg)
647 } 883 }
648 884
649 /* cmp */ 885 /* cmp */
650 -GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER);  
651 -  
652 static void gen_cmp(DisasContext *ctx) 886 static void gen_cmp(DisasContext *ctx)
653 { 887 {
654 #if defined(TARGET_PPC64) 888 #if defined(TARGET_PPC64)
@@ -662,8 +896,6 @@ static void gen_cmp(DisasContext *ctx) @@ -662,8 +896,6 @@ static void gen_cmp(DisasContext *ctx)
662 } 896 }
663 897
664 /* cmpi */ 898 /* cmpi */
665 -GEN_HANDLER(cmpi, 0x0B, 0xFF, 0xFF, 0x00400000, PPC_INTEGER);  
666 -  
667 static void gen_cmpi(DisasContext *ctx) 899 static void gen_cmpi(DisasContext *ctx)
668 { 900 {
669 #if defined(TARGET_PPC64) 901 #if defined(TARGET_PPC64)
@@ -677,8 +909,6 @@ static void gen_cmpi(DisasContext *ctx) @@ -677,8 +909,6 @@ static void gen_cmpi(DisasContext *ctx)
677 } 909 }
678 910
679 /* cmpl */ 911 /* cmpl */
680 -GEN_HANDLER(cmpl, 0x1F, 0x00, 0x01, 0x00400000, PPC_INTEGER);  
681 -  
682 static void gen_cmpl(DisasContext *ctx) 912 static void gen_cmpl(DisasContext *ctx)
683 { 913 {
684 #if defined(TARGET_PPC64) 914 #if defined(TARGET_PPC64)
@@ -692,8 +922,6 @@ static void gen_cmpl(DisasContext *ctx) @@ -692,8 +922,6 @@ static void gen_cmpl(DisasContext *ctx)
692 } 922 }
693 923
694 /* cmpli */ 924 /* cmpli */
695 -GEN_HANDLER(cmpli, 0x0A, 0xFF, 0xFF, 0x00400000, PPC_INTEGER);  
696 -  
697 static void gen_cmpli(DisasContext *ctx) 925 static void gen_cmpli(DisasContext *ctx)
698 { 926 {
699 #if defined(TARGET_PPC64) 927 #if defined(TARGET_PPC64)
@@ -707,8 +935,6 @@ static void gen_cmpli(DisasContext *ctx) @@ -707,8 +935,6 @@ static void gen_cmpli(DisasContext *ctx)
707 } 935 }
708 936
709 /* isel (PowerPC 2.03 specification) */ 937 /* isel (PowerPC 2.03 specification) */
710 -GEN_HANDLER(isel, 0x1F, 0x0F, 0xFF, 0x00000001, PPC_ISEL);  
711 -  
712 static void gen_isel(DisasContext *ctx) 938 static void gen_isel(DisasContext *ctx)
713 { 939 {
714 int l1, l2; 940 int l1, l2;
@@ -894,8 +1120,6 @@ GEN_INT_ARITH_ADD_CONST(addmeo, 0x17, -1LL, 1, 1, 1) @@ -894,8 +1120,6 @@ GEN_INT_ARITH_ADD_CONST(addmeo, 0x17, -1LL, 1, 1, 1)
894 GEN_INT_ARITH_ADD_CONST(addze, 0x06, 0, 1, 1, 0) 1120 GEN_INT_ARITH_ADD_CONST(addze, 0x06, 0, 1, 1, 0)
895 GEN_INT_ARITH_ADD_CONST(addzeo, 0x16, 0, 1, 1, 1) 1121 GEN_INT_ARITH_ADD_CONST(addzeo, 0x16, 0, 1, 1, 1)
896 /* addi */ 1122 /* addi */
897 -GEN_HANDLER(addi, 0x0E, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
898 -  
899 static void gen_addi(DisasContext *ctx) 1123 static void gen_addi(DisasContext *ctx)
900 { 1124 {
901 target_long simm = SIMM(ctx->opcode); 1125 target_long simm = SIMM(ctx->opcode);
@@ -929,21 +1153,18 @@ static always_inline void gen_op_addic (DisasContext *ctx, TCGv ret, TCGv arg1, @@ -929,21 +1153,18 @@ static always_inline void gen_op_addic (DisasContext *ctx, TCGv ret, TCGv arg1,
929 gen_set_Rc0(ctx, ret); 1153 gen_set_Rc0(ctx, ret);
930 } 1154 }
931 } 1155 }
932 -GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
933 1156
934 static void gen_addic(DisasContext *ctx) 1157 static void gen_addic(DisasContext *ctx)
935 { 1158 {
936 gen_op_addic(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 0); 1159 gen_op_addic(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 0);
937 } 1160 }
938 -GEN_HANDLER2(addic_, "addic.", 0x0D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
939 1161
940 static void gen_addic_(DisasContext *ctx) 1162 static void gen_addic_(DisasContext *ctx)
941 { 1163 {
942 gen_op_addic(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 1); 1164 gen_op_addic(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 1);
943 } 1165 }
944 -/* addis */  
945 -GEN_HANDLER(addis, 0x0F, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
946 1166
  1167 +/* addis */
947 static void gen_addis(DisasContext *ctx) 1168 static void gen_addis(DisasContext *ctx)
948 { 1169 {
949 target_long simm = SIMM(ctx->opcode); 1170 target_long simm = SIMM(ctx->opcode);
@@ -1064,8 +1285,6 @@ GEN_INT_ARITH_DIVD(divdo, 0x1F, 1, 1); @@ -1064,8 +1285,6 @@ GEN_INT_ARITH_DIVD(divdo, 0x1F, 1, 1);
1064 #endif 1285 #endif
1065 1286
1066 /* mulhw mulhw. */ 1287 /* mulhw mulhw. */
1067 -GEN_HANDLER(mulhw, 0x1F, 0x0B, 0x02, 0x00000400, PPC_INTEGER);  
1068 -  
1069 static void gen_mulhw(DisasContext *ctx) 1288 static void gen_mulhw(DisasContext *ctx)
1070 { 1289 {
1071 TCGv_i64 t0, t1; 1290 TCGv_i64 t0, t1;
@@ -1089,9 +1308,8 @@ static void gen_mulhw(DisasContext *ctx) @@ -1089,9 +1308,8 @@ static void gen_mulhw(DisasContext *ctx)
1089 if (unlikely(Rc(ctx->opcode) != 0)) 1308 if (unlikely(Rc(ctx->opcode) != 0))
1090 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]); 1309 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]);
1091 } 1310 }
1092 -/* mulhwu mulhwu. */  
1093 -GEN_HANDLER(mulhwu, 0x1F, 0x0B, 0x00, 0x00000400, PPC_INTEGER);  
1094 1311
  1312 +/* mulhwu mulhwu. */
1095 static void gen_mulhwu(DisasContext *ctx) 1313 static void gen_mulhwu(DisasContext *ctx)
1096 { 1314 {
1097 TCGv_i64 t0, t1; 1315 TCGv_i64 t0, t1;
@@ -1115,9 +1333,8 @@ static void gen_mulhwu(DisasContext *ctx) @@ -1115,9 +1333,8 @@ static void gen_mulhwu(DisasContext *ctx)
1115 if (unlikely(Rc(ctx->opcode) != 0)) 1333 if (unlikely(Rc(ctx->opcode) != 0))
1116 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]); 1334 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]);
1117 } 1335 }
1118 -/* mullw mullw. */  
1119 -GEN_HANDLER(mullw, 0x1F, 0x0B, 0x07, 0x00000000, PPC_INTEGER);  
1120 1336
  1337 +/* mullw mullw. */
1121 static void gen_mullw(DisasContext *ctx) 1338 static void gen_mullw(DisasContext *ctx)
1122 { 1339 {
1123 tcg_gen_mul_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 1340 tcg_gen_mul_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
@@ -1126,9 +1343,8 @@ static void gen_mullw(DisasContext *ctx) @@ -1126,9 +1343,8 @@ static void gen_mullw(DisasContext *ctx)
1126 if (unlikely(Rc(ctx->opcode) != 0)) 1343 if (unlikely(Rc(ctx->opcode) != 0))
1127 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]); 1344 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]);
1128 } 1345 }
1129 -/* mullwo mullwo. */  
1130 -GEN_HANDLER(mullwo, 0x1F, 0x0B, 0x17, 0x00000000, PPC_INTEGER);  
1131 1346
  1347 +/* mullwo mullwo. */
1132 static void gen_mullwo(DisasContext *ctx) 1348 static void gen_mullwo(DisasContext *ctx)
1133 { 1349 {
1134 int l1; 1350 int l1;
@@ -1162,9 +1378,8 @@ static void gen_mullwo(DisasContext *ctx) @@ -1162,9 +1378,8 @@ static void gen_mullwo(DisasContext *ctx)
1162 if (unlikely(Rc(ctx->opcode) != 0)) 1378 if (unlikely(Rc(ctx->opcode) != 0))
1163 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]); 1379 gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]);
1164 } 1380 }
1165 -/* mulli */  
1166 -GEN_HANDLER(mulli, 0x07, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1167 1381
  1382 +/* mulli */
1168 static void gen_mulli(DisasContext *ctx) 1383 static void gen_mulli(DisasContext *ctx)
1169 { 1384 {
1170 tcg_gen_muli_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 1385 tcg_gen_muli_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
@@ -1185,9 +1400,8 @@ static void glue(gen_, name)(DisasContext *ctx) @@ -1185,9 +1400,8 @@ static void glue(gen_, name)(DisasContext *ctx)
1185 GEN_INT_ARITH_MUL_HELPER(mulhdu, 0x00); 1400 GEN_INT_ARITH_MUL_HELPER(mulhdu, 0x00);
1186 /* mulhdu mulhdu. */ 1401 /* mulhdu mulhdu. */
1187 GEN_INT_ARITH_MUL_HELPER(mulhd, 0x02); 1402 GEN_INT_ARITH_MUL_HELPER(mulhd, 0x02);
1188 -/* mulld mulld. */  
1189 -GEN_HANDLER(mulld, 0x1F, 0x09, 0x07, 0x00000000, PPC_64B);  
1190 1403
  1404 +/* mulld mulld. */
1191 static void gen_mulld(DisasContext *ctx) 1405 static void gen_mulld(DisasContext *ctx)
1192 { 1406 {
1193 tcg_gen_mul_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 1407 tcg_gen_mul_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
@@ -1230,13 +1444,11 @@ static always_inline void gen_op_arith_neg (DisasContext *ctx, TCGv ret, TCGv ar @@ -1230,13 +1444,11 @@ static always_inline void gen_op_arith_neg (DisasContext *ctx, TCGv ret, TCGv ar
1230 if (unlikely(Rc(ctx->opcode) != 0)) 1444 if (unlikely(Rc(ctx->opcode) != 0))
1231 gen_set_Rc0(ctx, ret); 1445 gen_set_Rc0(ctx, ret);
1232 } 1446 }
1233 -GEN_HANDLER(neg, 0x1F, 0x08, 0x03, 0x0000F800, PPC_INTEGER);  
1234 1447
1235 static void gen_neg(DisasContext *ctx) 1448 static void gen_neg(DisasContext *ctx)
1236 { 1449 {
1237 gen_op_arith_neg(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 0); 1450 gen_op_arith_neg(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], 0);
1238 } 1451 }
1239 -GEN_HANDLER(nego, 0x1F, 0x08, 0x13, 0x0000F800, PPC_INTEGER);  
1240 1452
1241 static void gen_nego(DisasContext *ctx) 1453 static void gen_nego(DisasContext *ctx)
1242 { 1454 {
@@ -1336,9 +1548,8 @@ GEN_INT_ARITH_SUBF_CONST(subfmeo, 0x17, -1LL, 1, 1, 1) @@ -1336,9 +1548,8 @@ GEN_INT_ARITH_SUBF_CONST(subfmeo, 0x17, -1LL, 1, 1, 1)
1336 /* subfze subfze. subfzeo subfzeo.*/ 1548 /* subfze subfze. subfzeo subfzeo.*/
1337 GEN_INT_ARITH_SUBF_CONST(subfze, 0x06, 0, 1, 1, 0) 1549 GEN_INT_ARITH_SUBF_CONST(subfze, 0x06, 0, 1, 1, 0)
1338 GEN_INT_ARITH_SUBF_CONST(subfzeo, 0x16, 0, 1, 1, 1) 1550 GEN_INT_ARITH_SUBF_CONST(subfzeo, 0x16, 0, 1, 1, 1)
1339 -/* subfic */  
1340 -GEN_HANDLER(subfic, 0x08, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1341 1551
  1552 +/* subfic */
1342 static void gen_subfic(DisasContext *ctx) 1553 static void gen_subfic(DisasContext *ctx)
1343 { 1554 {
1344 /* Start with XER CA and OV disabled, the most likely case */ 1555 /* Start with XER CA and OV disabled, the most likely case */
@@ -1378,25 +1589,22 @@ static void glue(gen_, name)(DisasContext *ctx) @@ -1378,25 +1589,22 @@ static void glue(gen_, name)(DisasContext *ctx)
1378 GEN_LOGICAL2(and, tcg_gen_and_tl, 0x00, PPC_INTEGER); 1589 GEN_LOGICAL2(and, tcg_gen_and_tl, 0x00, PPC_INTEGER);
1379 /* andc & andc. */ 1590 /* andc & andc. */
1380 GEN_LOGICAL2(andc, tcg_gen_andc_tl, 0x01, PPC_INTEGER); 1591 GEN_LOGICAL2(andc, tcg_gen_andc_tl, 0x01, PPC_INTEGER);
1381 -/* andi. */  
1382 -GEN_HANDLER2(andi_, "andi.", 0x1C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1383 1592
  1593 +/* andi. */
1384 static void gen_andi_(DisasContext *ctx) 1594 static void gen_andi_(DisasContext *ctx)
1385 { 1595 {
1386 tcg_gen_andi_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], UIMM(ctx->opcode)); 1596 tcg_gen_andi_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], UIMM(ctx->opcode));
1387 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 1597 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1388 } 1598 }
1389 -/* andis. */  
1390 -GEN_HANDLER2(andis_, "andis.", 0x1D, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1391 1599
  1600 +/* andis. */
1392 static void gen_andis_(DisasContext *ctx) 1601 static void gen_andis_(DisasContext *ctx)
1393 { 1602 {
1394 tcg_gen_andi_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], UIMM(ctx->opcode) << 16); 1603 tcg_gen_andi_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], UIMM(ctx->opcode) << 16);
1395 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 1604 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1396 } 1605 }
1397 -/* cntlzw */  
1398 -GEN_HANDLER(cntlzw, 0x1F, 0x1A, 0x00, 0x00000000, PPC_INTEGER);  
1399 1606
  1607 +/* cntlzw */
1400 static void gen_cntlzw(DisasContext *ctx) 1608 static void gen_cntlzw(DisasContext *ctx)
1401 { 1609 {
1402 gen_helper_cntlzw(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)]); 1610 gen_helper_cntlzw(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)]);
@@ -1413,9 +1621,8 @@ GEN_LOGICAL1(extsh, tcg_gen_ext16s_tl, 0x1C, PPC_INTEGER); @@ -1413,9 +1621,8 @@ GEN_LOGICAL1(extsh, tcg_gen_ext16s_tl, 0x1C, PPC_INTEGER);
1413 GEN_LOGICAL2(nand, tcg_gen_nand_tl, 0x0E, PPC_INTEGER); 1621 GEN_LOGICAL2(nand, tcg_gen_nand_tl, 0x0E, PPC_INTEGER);
1414 /* nor & nor. */ 1622 /* nor & nor. */
1415 GEN_LOGICAL2(nor, tcg_gen_nor_tl, 0x03, PPC_INTEGER); 1623 GEN_LOGICAL2(nor, tcg_gen_nor_tl, 0x03, PPC_INTEGER);
1416 -/* or & or. */  
1417 -GEN_HANDLER(or, 0x1F, 0x1C, 0x0D, 0x00000000, PPC_INTEGER);  
1418 1624
  1625 +/* or & or. */
1419 static void gen_or(DisasContext *ctx) 1626 static void gen_or(DisasContext *ctx)
1420 { 1627 {
1421 int rs, ra, rb; 1628 int rs, ra, rb;
@@ -1493,9 +1700,8 @@ static void gen_or(DisasContext *ctx) @@ -1493,9 +1700,8 @@ static void gen_or(DisasContext *ctx)
1493 } 1700 }
1494 /* orc & orc. */ 1701 /* orc & orc. */
1495 GEN_LOGICAL2(orc, tcg_gen_orc_tl, 0x0C, PPC_INTEGER); 1702 GEN_LOGICAL2(orc, tcg_gen_orc_tl, 0x0C, PPC_INTEGER);
1496 -/* xor & xor. */  
1497 -GEN_HANDLER(xor, 0x1F, 0x1C, 0x09, 0x00000000, PPC_INTEGER);  
1498 1703
  1704 +/* xor & xor. */
1499 static void gen_xor(DisasContext *ctx) 1705 static void gen_xor(DisasContext *ctx)
1500 { 1706 {
1501 /* Optimisation for "set to zero" case */ 1707 /* Optimisation for "set to zero" case */
@@ -1506,9 +1712,8 @@ static void gen_xor(DisasContext *ctx) @@ -1506,9 +1712,8 @@ static void gen_xor(DisasContext *ctx)
1506 if (unlikely(Rc(ctx->opcode) != 0)) 1712 if (unlikely(Rc(ctx->opcode) != 0))
1507 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 1713 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1508 } 1714 }
1509 -/* ori */  
1510 -GEN_HANDLER(ori, 0x18, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1511 1715
  1716 +/* ori */
1512 static void gen_ori(DisasContext *ctx) 1717 static void gen_ori(DisasContext *ctx)
1513 { 1718 {
1514 target_ulong uimm = UIMM(ctx->opcode); 1719 target_ulong uimm = UIMM(ctx->opcode);
@@ -1520,9 +1725,8 @@ static void gen_ori(DisasContext *ctx) @@ -1520,9 +1725,8 @@ static void gen_ori(DisasContext *ctx)
1520 } 1725 }
1521 tcg_gen_ori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm); 1726 tcg_gen_ori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm);
1522 } 1727 }
1523 -/* oris */  
1524 -GEN_HANDLER(oris, 0x19, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1525 1728
  1729 +/* oris */
1526 static void gen_oris(DisasContext *ctx) 1730 static void gen_oris(DisasContext *ctx)
1527 { 1731 {
1528 target_ulong uimm = UIMM(ctx->opcode); 1732 target_ulong uimm = UIMM(ctx->opcode);
@@ -1533,9 +1737,8 @@ static void gen_oris(DisasContext *ctx) @@ -1533,9 +1737,8 @@ static void gen_oris(DisasContext *ctx)
1533 } 1737 }
1534 tcg_gen_ori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm << 16); 1738 tcg_gen_ori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm << 16);
1535 } 1739 }
1536 -/* xori */  
1537 -GEN_HANDLER(xori, 0x1A, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1538 1740
  1741 +/* xori */
1539 static void gen_xori(DisasContext *ctx) 1742 static void gen_xori(DisasContext *ctx)
1540 { 1743 {
1541 target_ulong uimm = UIMM(ctx->opcode); 1744 target_ulong uimm = UIMM(ctx->opcode);
@@ -1546,9 +1749,8 @@ static void gen_xori(DisasContext *ctx) @@ -1546,9 +1749,8 @@ static void gen_xori(DisasContext *ctx)
1546 } 1749 }
1547 tcg_gen_xori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm); 1750 tcg_gen_xori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm);
1548 } 1751 }
1549 -/* xoris */  
1550 -GEN_HANDLER(xoris, 0x1B, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1551 1752
  1753 +/* xoris */
1552 static void gen_xoris(DisasContext *ctx) 1754 static void gen_xoris(DisasContext *ctx)
1553 { 1755 {
1554 target_ulong uimm = UIMM(ctx->opcode); 1756 target_ulong uimm = UIMM(ctx->opcode);
@@ -1559,9 +1761,8 @@ static void gen_xoris(DisasContext *ctx) @@ -1559,9 +1761,8 @@ static void gen_xoris(DisasContext *ctx)
1559 } 1761 }
1560 tcg_gen_xori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm << 16); 1762 tcg_gen_xori_tl(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)], uimm << 16);
1561 } 1763 }
1562 -/* popcntb : PowerPC 2.03 specification */  
1563 -GEN_HANDLER(popcntb, 0x1F, 0x03, 0x03, 0x0000F801, PPC_POPCNTB);  
1564 1764
  1765 +/* popcntb : PowerPC 2.03 specification */
1565 static void gen_popcntb(DisasContext *ctx) 1766 static void gen_popcntb(DisasContext *ctx)
1566 { 1767 {
1567 #if defined(TARGET_PPC64) 1768 #if defined(TARGET_PPC64)
@@ -1575,9 +1776,8 @@ static void gen_popcntb(DisasContext *ctx) @@ -1575,9 +1776,8 @@ static void gen_popcntb(DisasContext *ctx)
1575 #if defined(TARGET_PPC64) 1776 #if defined(TARGET_PPC64)
1576 /* extsw & extsw. */ 1777 /* extsw & extsw. */
1577 GEN_LOGICAL1(extsw, tcg_gen_ext32s_tl, 0x1E, PPC_64B); 1778 GEN_LOGICAL1(extsw, tcg_gen_ext32s_tl, 0x1E, PPC_64B);
1578 -/* cntlzd */  
1579 -GEN_HANDLER(cntlzd, 0x1F, 0x1A, 0x01, 0x00000000, PPC_64B);  
1580 1779
  1780 +/* cntlzd */
1581 static void gen_cntlzd(DisasContext *ctx) 1781 static void gen_cntlzd(DisasContext *ctx)
1582 { 1782 {
1583 gen_helper_cntlzd(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)]); 1783 gen_helper_cntlzd(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)]);
@@ -1587,9 +1787,8 @@ static void gen_cntlzd(DisasContext *ctx) @@ -1587,9 +1787,8 @@ static void gen_cntlzd(DisasContext *ctx)
1587 #endif 1787 #endif
1588 1788
1589 /*** Integer rotate ***/ 1789 /*** Integer rotate ***/
1590 -/* rlwimi & rlwimi. */  
1591 -GEN_HANDLER(rlwimi, 0x14, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1592 1790
  1791 +/* rlwimi & rlwimi. */
1593 static void gen_rlwimi(DisasContext *ctx) 1792 static void gen_rlwimi(DisasContext *ctx)
1594 { 1793 {
1595 uint32_t mb, me, sh; 1794 uint32_t mb, me, sh;
@@ -1627,9 +1826,8 @@ static void gen_rlwimi(DisasContext *ctx) @@ -1627,9 +1826,8 @@ static void gen_rlwimi(DisasContext *ctx)
1627 if (unlikely(Rc(ctx->opcode) != 0)) 1826 if (unlikely(Rc(ctx->opcode) != 0))
1628 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 1827 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1629 } 1828 }
1630 -/* rlwinm & rlwinm. */  
1631 -GEN_HANDLER(rlwinm, 0x15, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1632 1829
  1830 +/* rlwinm & rlwinm. */
1633 static void gen_rlwinm(DisasContext *ctx) 1831 static void gen_rlwinm(DisasContext *ctx)
1634 { 1832 {
1635 uint32_t mb, me, sh; 1833 uint32_t mb, me, sh;
@@ -1675,9 +1873,8 @@ static void gen_rlwinm(DisasContext *ctx) @@ -1675,9 +1873,8 @@ static void gen_rlwinm(DisasContext *ctx)
1675 if (unlikely(Rc(ctx->opcode) != 0)) 1873 if (unlikely(Rc(ctx->opcode) != 0))
1676 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 1874 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1677 } 1875 }
1678 -/* rlwnm & rlwnm. */  
1679 -GEN_HANDLER(rlwnm, 0x17, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
1680 1876
  1877 +/* rlwnm & rlwnm. */
1681 static void gen_rlwnm(DisasContext *ctx) 1878 static void gen_rlwnm(DisasContext *ctx)
1682 { 1879 {
1683 uint32_t mb, me; 1880 uint32_t mb, me;
@@ -1880,9 +2077,8 @@ GEN_PPC64_R4(rldimi, 0x1E, 0x06); @@ -1880,9 +2077,8 @@ GEN_PPC64_R4(rldimi, 0x1E, 0x06);
1880 #endif 2077 #endif
1881 2078
1882 /*** Integer shift ***/ 2079 /*** Integer shift ***/
1883 -/* slw & slw. */  
1884 -GEN_HANDLER(slw, 0x1F, 0x18, 0x00, 0x00000000, PPC_INTEGER);  
1885 2080
  2081 +/* slw & slw. */
1886 static void gen_slw(DisasContext *ctx) 2082 static void gen_slw(DisasContext *ctx)
1887 { 2083 {
1888 TCGv t0; 2084 TCGv t0;
@@ -1903,9 +2099,8 @@ static void gen_slw(DisasContext *ctx) @@ -1903,9 +2099,8 @@ static void gen_slw(DisasContext *ctx)
1903 if (unlikely(Rc(ctx->opcode) != 0)) 2099 if (unlikely(Rc(ctx->opcode) != 0))
1904 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2100 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1905 } 2101 }
1906 -/* sraw & sraw. */  
1907 -GEN_HANDLER(sraw, 0x1F, 0x18, 0x18, 0x00000000, PPC_INTEGER);  
1908 2102
  2103 +/* sraw & sraw. */
1909 static void gen_sraw(DisasContext *ctx) 2104 static void gen_sraw(DisasContext *ctx)
1910 { 2105 {
1911 gen_helper_sraw(cpu_gpr[rA(ctx->opcode)], 2106 gen_helper_sraw(cpu_gpr[rA(ctx->opcode)],
@@ -1913,9 +2108,8 @@ static void gen_sraw(DisasContext *ctx) @@ -1913,9 +2108,8 @@ static void gen_sraw(DisasContext *ctx)
1913 if (unlikely(Rc(ctx->opcode) != 0)) 2108 if (unlikely(Rc(ctx->opcode) != 0))
1914 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2109 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1915 } 2110 }
1916 -/* srawi & srawi. */  
1917 -GEN_HANDLER(srawi, 0x1F, 0x18, 0x19, 0x00000000, PPC_INTEGER);  
1918 2111
  2112 +/* srawi & srawi. */
1919 static void gen_srawi(DisasContext *ctx) 2113 static void gen_srawi(DisasContext *ctx)
1920 { 2114 {
1921 int sh = SH(ctx->opcode); 2115 int sh = SH(ctx->opcode);
@@ -1944,9 +2138,8 @@ static void gen_srawi(DisasContext *ctx) @@ -1944,9 +2138,8 @@ static void gen_srawi(DisasContext *ctx)
1944 if (unlikely(Rc(ctx->opcode) != 0)) 2138 if (unlikely(Rc(ctx->opcode) != 0))
1945 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2139 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1946 } 2140 }
1947 -/* srw & srw. */  
1948 -GEN_HANDLER(srw, 0x1F, 0x18, 0x10, 0x00000000, PPC_INTEGER);  
1949 2141
  2142 +/* srw & srw. */
1950 static void gen_srw(DisasContext *ctx) 2143 static void gen_srw(DisasContext *ctx)
1951 { 2144 {
1952 TCGv t0, t1; 2145 TCGv t0, t1;
@@ -1969,10 +2162,9 @@ static void gen_srw(DisasContext *ctx) @@ -1969,10 +2162,9 @@ static void gen_srw(DisasContext *ctx)
1969 if (unlikely(Rc(ctx->opcode) != 0)) 2162 if (unlikely(Rc(ctx->opcode) != 0))
1970 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2163 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1971 } 2164 }
  2165 +
1972 #if defined(TARGET_PPC64) 2166 #if defined(TARGET_PPC64)
1973 /* sld & sld. */ 2167 /* sld & sld. */
1974 -GEN_HANDLER(sld, 0x1F, 0x1B, 0x00, 0x00000000, PPC_64B);  
1975 -  
1976 static void gen_sld(DisasContext *ctx) 2168 static void gen_sld(DisasContext *ctx)
1977 { 2169 {
1978 TCGv t0; 2170 TCGv t0;
@@ -1992,9 +2184,8 @@ static void gen_sld(DisasContext *ctx) @@ -1992,9 +2184,8 @@ static void gen_sld(DisasContext *ctx)
1992 if (unlikely(Rc(ctx->opcode) != 0)) 2184 if (unlikely(Rc(ctx->opcode) != 0))
1993 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2185 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
1994 } 2186 }
1995 -/* srad & srad. */  
1996 -GEN_HANDLER(srad, 0x1F, 0x1A, 0x18, 0x00000000, PPC_64B);  
1997 2187
  2188 +/* srad & srad. */
1998 static void gen_srad(DisasContext *ctx) 2189 static void gen_srad(DisasContext *ctx)
1999 { 2190 {
2000 gen_helper_srad(cpu_gpr[rA(ctx->opcode)], 2191 gen_helper_srad(cpu_gpr[rA(ctx->opcode)],
@@ -2029,21 +2220,18 @@ static always_inline void gen_sradi (DisasContext *ctx, int n) @@ -2029,21 +2220,18 @@ static always_inline void gen_sradi (DisasContext *ctx, int n)
2029 if (unlikely(Rc(ctx->opcode) != 0)) 2220 if (unlikely(Rc(ctx->opcode) != 0))
2030 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]); 2221 gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
2031 } 2222 }
2032 -GEN_HANDLER2(sradi0, "sradi", 0x1F, 0x1A, 0x19, 0x00000000, PPC_64B);  
2033 2223
2034 static void gen_sradi0(DisasContext *ctx) 2224 static void gen_sradi0(DisasContext *ctx)
2035 { 2225 {
2036 gen_sradi(ctx, 0); 2226 gen_sradi(ctx, 0);
2037 } 2227 }
2038 -GEN_HANDLER2(sradi1, "sradi", 0x1F, 0x1B, 0x19, 0x00000000, PPC_64B);  
2039 2228
2040 static void gen_sradi1(DisasContext *ctx) 2229 static void gen_sradi1(DisasContext *ctx)
2041 { 2230 {
2042 gen_sradi(ctx, 1); 2231 gen_sradi(ctx, 1);
2043 } 2232 }
2044 -/* srd & srd. */  
2045 -GEN_HANDLER(srd, 0x1F, 0x1B, 0x10, 0x00000000, PPC_64B);  
2046 2233
  2234 +/* srd & srd. */
2047 static void gen_srd(DisasContext *ctx) 2235 static void gen_srd(DisasContext *ctx)
2048 { 2236 {
2049 TCGv t0; 2237 TCGv t0;
@@ -2190,8 +2378,6 @@ GEN_FLOAT_BS(res, 0x3B, 0x18, 1, PPC_FLOAT_FRES); @@ -2190,8 +2378,6 @@ GEN_FLOAT_BS(res, 0x3B, 0x18, 1, PPC_FLOAT_FRES);
2190 GEN_FLOAT_BS(rsqrte, 0x3F, 0x1A, 1, PPC_FLOAT_FRSQRTE); 2378 GEN_FLOAT_BS(rsqrte, 0x3F, 0x1A, 1, PPC_FLOAT_FRSQRTE);
2191 2379
2192 /* frsqrtes */ 2380 /* frsqrtes */
2193 -GEN_HANDLER(frsqrtes, 0x3B, 0x1A, 0xFF, 0x001F07C0, PPC_FLOAT_FRSQRTES);  
2194 -  
2195 static void gen_frsqrtes(DisasContext *ctx) 2381 static void gen_frsqrtes(DisasContext *ctx)
2196 { 2382 {
2197 if (unlikely(!ctx->fpu_enabled)) { 2383 if (unlikely(!ctx->fpu_enabled)) {
@@ -2211,9 +2397,8 @@ _GEN_FLOAT_ACB(sel, sel, 0x3F, 0x17, 0, 0, PPC_FLOAT_FSEL); @@ -2211,9 +2397,8 @@ _GEN_FLOAT_ACB(sel, sel, 0x3F, 0x17, 0, 0, PPC_FLOAT_FSEL);
2211 /* fsub - fsubs */ 2397 /* fsub - fsubs */
2212 GEN_FLOAT_AB(sub, 0x14, 0x000007C0, 1, PPC_FLOAT); 2398 GEN_FLOAT_AB(sub, 0x14, 0x000007C0, 1, PPC_FLOAT);
2213 /* Optional: */ 2399 /* Optional: */
2214 -/* fsqrt */  
2215 -GEN_HANDLER(fsqrt, 0x3F, 0x16, 0xFF, 0x001F07C0, PPC_FLOAT_FSQRT);  
2216 2400
  2401 +/* fsqrt */
2217 static void gen_fsqrt(DisasContext *ctx) 2402 static void gen_fsqrt(DisasContext *ctx)
2218 { 2403 {
2219 if (unlikely(!ctx->fpu_enabled)) { 2404 if (unlikely(!ctx->fpu_enabled)) {
@@ -2227,8 +2412,6 @@ static void gen_fsqrt(DisasContext *ctx) @@ -2227,8 +2412,6 @@ static void gen_fsqrt(DisasContext *ctx)
2227 gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1, Rc(ctx->opcode) != 0); 2412 gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1, Rc(ctx->opcode) != 0);
2228 } 2413 }
2229 2414
2230 -GEN_HANDLER(fsqrts, 0x3B, 0x16, 0xFF, 0x001F07C0, PPC_FLOAT_FSQRT);  
2231 -  
2232 static void gen_fsqrts(DisasContext *ctx) 2415 static void gen_fsqrts(DisasContext *ctx)
2233 { 2416 {
2234 if (unlikely(!ctx->fpu_enabled)) { 2417 if (unlikely(!ctx->fpu_enabled)) {
@@ -2279,9 +2462,8 @@ GEN_FLOAT_B(rip, 0x08, 0x0E, 1, PPC_FLOAT_EXT); @@ -2279,9 +2462,8 @@ GEN_FLOAT_B(rip, 0x08, 0x0E, 1, PPC_FLOAT_EXT);
2279 GEN_FLOAT_B(rim, 0x08, 0x0F, 1, PPC_FLOAT_EXT); 2462 GEN_FLOAT_B(rim, 0x08, 0x0F, 1, PPC_FLOAT_EXT);
2280 2463
2281 /*** Floating-Point compare ***/ 2464 /*** Floating-Point compare ***/
2282 -/* fcmpo */  
2283 -GEN_HANDLER(fcmpo, 0x3F, 0x00, 0x01, 0x00600001, PPC_FLOAT);  
2284 2465
  2466 +/* fcmpo */
2285 static void gen_fcmpo(DisasContext *ctx) 2467 static void gen_fcmpo(DisasContext *ctx)
2286 { 2468 {
2287 TCGv_i32 crf; 2469 TCGv_i32 crf;
@@ -2299,8 +2481,6 @@ static void gen_fcmpo(DisasContext *ctx) @@ -2299,8 +2481,6 @@ static void gen_fcmpo(DisasContext *ctx)
2299 } 2481 }
2300 2482
2301 /* fcmpu */ 2483 /* fcmpu */
2302 -GEN_HANDLER(fcmpu, 0x3F, 0x00, 0x00, 0x00600001, PPC_FLOAT);  
2303 -  
2304 static void gen_fcmpu(DisasContext *ctx) 2484 static void gen_fcmpu(DisasContext *ctx)
2305 { 2485 {
2306 TCGv_i32 crf; 2486 TCGv_i32 crf;
@@ -2324,8 +2504,6 @@ GEN_FLOAT_B(abs, 0x08, 0x08, 0, PPC_FLOAT); @@ -2324,8 +2504,6 @@ GEN_FLOAT_B(abs, 0x08, 0x08, 0, PPC_FLOAT);
2324 2504
2325 /* fmr - fmr. */ 2505 /* fmr - fmr. */
2326 /* XXX: beware that fmr never checks for NaNs nor update FPSCR */ 2506 /* XXX: beware that fmr never checks for NaNs nor update FPSCR */
2327 -GEN_HANDLER(fmr, 0x3F, 0x08, 0x02, 0x001F0000, PPC_FLOAT);  
2328 -  
2329 static void gen_fmr(DisasContext *ctx) 2507 static void gen_fmr(DisasContext *ctx)
2330 { 2508 {
2331 if (unlikely(!ctx->fpu_enabled)) { 2509 if (unlikely(!ctx->fpu_enabled)) {
@@ -2344,9 +2522,8 @@ GEN_FLOAT_B(nabs, 0x08, 0x04, 0, PPC_FLOAT); @@ -2344,9 +2522,8 @@ GEN_FLOAT_B(nabs, 0x08, 0x04, 0, PPC_FLOAT);
2344 GEN_FLOAT_B(neg, 0x08, 0x01, 0, PPC_FLOAT); 2522 GEN_FLOAT_B(neg, 0x08, 0x01, 0, PPC_FLOAT);
2345 2523
2346 /*** Floating-Point status & ctrl register ***/ 2524 /*** Floating-Point status & ctrl register ***/
2347 -/* mcrfs */  
2348 -GEN_HANDLER(mcrfs, 0x3F, 0x00, 0x02, 0x0063F801, PPC_FLOAT);  
2349 2525
  2526 +/* mcrfs */
2350 static void gen_mcrfs(DisasContext *ctx) 2527 static void gen_mcrfs(DisasContext *ctx)
2351 { 2528 {
2352 int bfa; 2529 int bfa;
@@ -2362,8 +2539,6 @@ static void gen_mcrfs(DisasContext *ctx) @@ -2362,8 +2539,6 @@ static void gen_mcrfs(DisasContext *ctx)
2362 } 2539 }
2363 2540
2364 /* mffs */ 2541 /* mffs */
2365 -GEN_HANDLER(mffs, 0x3F, 0x07, 0x12, 0x001FF800, PPC_FLOAT);  
2366 -  
2367 static void gen_mffs(DisasContext *ctx) 2542 static void gen_mffs(DisasContext *ctx)
2368 { 2543 {
2369 if (unlikely(!ctx->fpu_enabled)) { 2544 if (unlikely(!ctx->fpu_enabled)) {
@@ -2376,8 +2551,6 @@ static void gen_mffs(DisasContext *ctx) @@ -2376,8 +2551,6 @@ static void gen_mffs(DisasContext *ctx)
2376 } 2551 }
2377 2552
2378 /* mtfsb0 */ 2553 /* mtfsb0 */
2379 -GEN_HANDLER(mtfsb0, 0x3F, 0x06, 0x02, 0x001FF800, PPC_FLOAT);  
2380 -  
2381 static void gen_mtfsb0(DisasContext *ctx) 2554 static void gen_mtfsb0(DisasContext *ctx)
2382 { 2555 {
2383 uint8_t crb; 2556 uint8_t crb;
@@ -2402,8 +2575,6 @@ static void gen_mtfsb0(DisasContext *ctx) @@ -2402,8 +2575,6 @@ static void gen_mtfsb0(DisasContext *ctx)
2402 } 2575 }
2403 2576
2404 /* mtfsb1 */ 2577 /* mtfsb1 */
2405 -GEN_HANDLER(mtfsb1, 0x3F, 0x06, 0x01, 0x001FF800, PPC_FLOAT);  
2406 -  
2407 static void gen_mtfsb1(DisasContext *ctx) 2578 static void gen_mtfsb1(DisasContext *ctx)
2408 { 2579 {
2409 uint8_t crb; 2580 uint8_t crb;
@@ -2431,8 +2602,6 @@ static void gen_mtfsb1(DisasContext *ctx) @@ -2431,8 +2602,6 @@ static void gen_mtfsb1(DisasContext *ctx)
2431 } 2602 }
2432 2603
2433 /* mtfsf */ 2604 /* mtfsf */
2434 -GEN_HANDLER(mtfsf, 0x3F, 0x07, 0x16, 0x00010000, PPC_FLOAT);  
2435 -  
2436 static void gen_mtfsf(DisasContext *ctx) 2605 static void gen_mtfsf(DisasContext *ctx)
2437 { 2606 {
2438 TCGv_i32 t0; 2607 TCGv_i32 t0;
@@ -2459,8 +2628,6 @@ static void gen_mtfsf(DisasContext *ctx) @@ -2459,8 +2628,6 @@ static void gen_mtfsf(DisasContext *ctx)
2459 } 2628 }
2460 2629
2461 /* mtfsfi */ 2630 /* mtfsfi */
2462 -GEN_HANDLER(mtfsfi, 0x3F, 0x06, 0x04, 0x006f0800, PPC_FLOAT);  
2463 -  
2464 static void gen_mtfsfi(DisasContext *ctx) 2631 static void gen_mtfsfi(DisasContext *ctx)
2465 { 2632 {
2466 int bf, sh; 2633 int bf, sh;
@@ -2770,7 +2937,6 @@ GEN_LDX(lwa, ld32s, 0x15, 0x0A, PPC_64B); @@ -2770,7 +2937,6 @@ GEN_LDX(lwa, ld32s, 0x15, 0x0A, PPC_64B);
2770 GEN_LDUX(ld, ld64, 0x15, 0x01, PPC_64B); 2937 GEN_LDUX(ld, ld64, 0x15, 0x01, PPC_64B);
2771 /* ldx */ 2938 /* ldx */
2772 GEN_LDX(ld, ld64, 0x15, 0x00, PPC_64B); 2939 GEN_LDX(ld, ld64, 0x15, 0x00, PPC_64B);
2773 -GEN_HANDLER(ld, 0x3A, 0xFF, 0xFF, 0x00000000, PPC_64B);  
2774 2940
2775 static void gen_ld(DisasContext *ctx) 2941 static void gen_ld(DisasContext *ctx)
2776 { 2942 {
@@ -2796,9 +2962,8 @@ static void gen_ld(DisasContext *ctx) @@ -2796,9 +2962,8 @@ static void gen_ld(DisasContext *ctx)
2796 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], EA); 2962 tcg_gen_mov_tl(cpu_gpr[rA(ctx->opcode)], EA);
2797 tcg_temp_free(EA); 2963 tcg_temp_free(EA);
2798 } 2964 }
2799 -/* lq */  
2800 -GEN_HANDLER(lq, 0x38, 0xFF, 0xFF, 0x00000000, PPC_64BX);  
2801 2965
  2966 +/* lq */
2802 static void gen_lq(DisasContext *ctx) 2967 static void gen_lq(DisasContext *ctx)
2803 { 2968 {
2804 #if defined(CONFIG_USER_ONLY) 2969 #if defined(CONFIG_USER_ONLY)
@@ -2915,7 +3080,6 @@ GEN_STS(stw, st32, 0x04, PPC_INTEGER); @@ -2915,7 +3080,6 @@ GEN_STS(stw, st32, 0x04, PPC_INTEGER);
2915 #if defined(TARGET_PPC64) 3080 #if defined(TARGET_PPC64)
2916 GEN_STUX(std, st64, 0x15, 0x05, PPC_64B); 3081 GEN_STUX(std, st64, 0x15, 0x05, PPC_64B);
2917 GEN_STX(std, st64, 0x15, 0x04, PPC_64B); 3082 GEN_STX(std, st64, 0x15, 0x04, PPC_64B);
2918 -GEN_HANDLER(std, 0x3E, 0xFF, 0xFF, 0x00000000, PPC_64B);  
2919 3083
2920 static void gen_std(DisasContext *ctx) 3084 static void gen_std(DisasContext *ctx)
2921 { 3085 {
@@ -3019,9 +3183,8 @@ static void always_inline gen_qemu_st32r(DisasContext *ctx, TCGv arg1, TCGv arg2 @@ -3019,9 +3183,8 @@ static void always_inline gen_qemu_st32r(DisasContext *ctx, TCGv arg1, TCGv arg2
3019 GEN_STX(stwbr, st32r, 0x16, 0x14, PPC_INTEGER); 3183 GEN_STX(stwbr, st32r, 0x16, 0x14, PPC_INTEGER);
3020 3184
3021 /*** Integer load and store multiple ***/ 3185 /*** Integer load and store multiple ***/
3022 -/* lmw */  
3023 -GEN_HANDLER(lmw, 0x2E, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
3024 3186
  3187 +/* lmw */
3025 static void gen_lmw(DisasContext *ctx) 3188 static void gen_lmw(DisasContext *ctx)
3026 { 3189 {
3027 TCGv t0; 3190 TCGv t0;
@@ -3038,8 +3201,6 @@ static void gen_lmw(DisasContext *ctx) @@ -3038,8 +3201,6 @@ static void gen_lmw(DisasContext *ctx)
3038 } 3201 }
3039 3202
3040 /* stmw */ 3203 /* stmw */
3041 -GEN_HANDLER(stmw, 0x2F, 0xFF, 0xFF, 0x00000000, PPC_INTEGER);  
3042 -  
3043 static void gen_stmw(DisasContext *ctx) 3204 static void gen_stmw(DisasContext *ctx)
3044 { 3205 {
3045 TCGv t0; 3206 TCGv t0;
@@ -3056,14 +3217,13 @@ static void gen_stmw(DisasContext *ctx) @@ -3056,14 +3217,13 @@ static void gen_stmw(DisasContext *ctx)
3056 } 3217 }
3057 3218
3058 /*** Integer load and store strings ***/ 3219 /*** Integer load and store strings ***/
  3220 +
3059 /* lswi */ 3221 /* lswi */
3060 /* PowerPC32 specification says we must generate an exception if 3222 /* PowerPC32 specification says we must generate an exception if
3061 * rA is in the range of registers to be loaded. 3223 * rA is in the range of registers to be loaded.
3062 * In an other hand, IBM says this is valid, but rA won't be loaded. 3224 * In an other hand, IBM says this is valid, but rA won't be loaded.
3063 * For now, I'll follow the spec... 3225 * For now, I'll follow the spec...
3064 */ 3226 */
3065 -GEN_HANDLER(lswi, 0x1F, 0x15, 0x12, 0x00000001, PPC_STRING);  
3066 -  
3067 static void gen_lswi(DisasContext *ctx) 3227 static void gen_lswi(DisasContext *ctx)
3068 { 3228 {
3069 TCGv t0; 3229 TCGv t0;
@@ -3096,8 +3256,6 @@ static void gen_lswi(DisasContext *ctx) @@ -3096,8 +3256,6 @@ static void gen_lswi(DisasContext *ctx)
3096 } 3256 }
3097 3257
3098 /* lswx */ 3258 /* lswx */
3099 -GEN_HANDLER(lswx, 0x1F, 0x15, 0x10, 0x00000001, PPC_STRING);  
3100 -  
3101 static void gen_lswx(DisasContext *ctx) 3259 static void gen_lswx(DisasContext *ctx)
3102 { 3260 {
3103 TCGv t0; 3261 TCGv t0;
@@ -3118,8 +3276,6 @@ static void gen_lswx(DisasContext *ctx) @@ -3118,8 +3276,6 @@ static void gen_lswx(DisasContext *ctx)
3118 } 3276 }
3119 3277
3120 /* stswi */ 3278 /* stswi */
3121 -GEN_HANDLER(stswi, 0x1F, 0x15, 0x16, 0x00000001, PPC_STRING);  
3122 -  
3123 static void gen_stswi(DisasContext *ctx) 3279 static void gen_stswi(DisasContext *ctx)
3124 { 3280 {
3125 TCGv t0; 3281 TCGv t0;
@@ -3141,8 +3297,6 @@ static void gen_stswi(DisasContext *ctx) @@ -3141,8 +3297,6 @@ static void gen_stswi(DisasContext *ctx)
3141 } 3297 }
3142 3298
3143 /* stswx */ 3299 /* stswx */
3144 -GEN_HANDLER(stswx, 0x1F, 0x15, 0x14, 0x00000001, PPC_STRING);  
3145 -  
3146 static void gen_stswx(DisasContext *ctx) 3300 static void gen_stswx(DisasContext *ctx)
3147 { 3301 {
3148 TCGv t0; 3302 TCGv t0;
@@ -3164,23 +3318,17 @@ static void gen_stswx(DisasContext *ctx) @@ -3164,23 +3318,17 @@ static void gen_stswx(DisasContext *ctx)
3164 3318
3165 /*** Memory synchronisation ***/ 3319 /*** Memory synchronisation ***/
3166 /* eieio */ 3320 /* eieio */
3167 -GEN_HANDLER(eieio, 0x1F, 0x16, 0x1A, 0x03FFF801, PPC_MEM_EIEIO);  
3168 -  
3169 static void gen_eieio(DisasContext *ctx) 3321 static void gen_eieio(DisasContext *ctx)
3170 { 3322 {
3171 } 3323 }
3172 3324
3173 /* isync */ 3325 /* isync */
3174 -GEN_HANDLER(isync, 0x13, 0x16, 0x04, 0x03FFF801, PPC_MEM);  
3175 -  
3176 static void gen_isync(DisasContext *ctx) 3326 static void gen_isync(DisasContext *ctx)
3177 { 3327 {
3178 gen_stop_exception(ctx); 3328 gen_stop_exception(ctx);
3179 } 3329 }
3180 3330
3181 /* lwarx */ 3331 /* lwarx */
3182 -GEN_HANDLER(lwarx, 0x1F, 0x14, 0x00, 0x00000001, PPC_RES);  
3183 -  
3184 static void gen_lwarx(DisasContext *ctx) 3332 static void gen_lwarx(DisasContext *ctx)
3185 { 3333 {
3186 TCGv t0; 3334 TCGv t0;
@@ -3194,8 +3342,6 @@ static void gen_lwarx(DisasContext *ctx) @@ -3194,8 +3342,6 @@ static void gen_lwarx(DisasContext *ctx)
3194 } 3342 }
3195 3343
3196 /* stwcx. */ 3344 /* stwcx. */
3197 -GEN_HANDLER2(stwcx_, "stwcx.", 0x1F, 0x16, 0x04, 0x00000000, PPC_RES);  
3198 -  
3199 static void gen_stwcx_(DisasContext *ctx) 3345 static void gen_stwcx_(DisasContext *ctx)
3200 { 3346 {
3201 int l1; 3347 int l1;
@@ -3218,8 +3364,6 @@ static void gen_stwcx_(DisasContext *ctx) @@ -3218,8 +3364,6 @@ static void gen_stwcx_(DisasContext *ctx)
3218 3364
3219 #if defined(TARGET_PPC64) 3365 #if defined(TARGET_PPC64)
3220 /* ldarx */ 3366 /* ldarx */
3221 -GEN_HANDLER(ldarx, 0x1F, 0x14, 0x02, 0x00000001, PPC_64B);  
3222 -  
3223 static void gen_ldarx(DisasContext *ctx) 3367 static void gen_ldarx(DisasContext *ctx)
3224 { 3368 {
3225 TCGv t0; 3369 TCGv t0;
@@ -3233,8 +3377,6 @@ static void gen_ldarx(DisasContext *ctx) @@ -3233,8 +3377,6 @@ static void gen_ldarx(DisasContext *ctx)
3233 } 3377 }
3234 3378
3235 /* stdcx. */ 3379 /* stdcx. */
3236 -GEN_HANDLER2(stdcx_, "stdcx.", 0x1F, 0x16, 0x06, 0x00000000, PPC_64B);  
3237 -  
3238 static void gen_stdcx_(DisasContext *ctx) 3380 static void gen_stdcx_(DisasContext *ctx)
3239 { 3381 {
3240 int l1; 3382 int l1;
@@ -3257,15 +3399,11 @@ static void gen_stdcx_(DisasContext *ctx) @@ -3257,15 +3399,11 @@ static void gen_stdcx_(DisasContext *ctx)
3257 #endif /* defined(TARGET_PPC64) */ 3399 #endif /* defined(TARGET_PPC64) */
3258 3400
3259 /* sync */ 3401 /* sync */
3260 -GEN_HANDLER(sync, 0x1F, 0x16, 0x12, 0x039FF801, PPC_MEM_SYNC);  
3261 -  
3262 static void gen_sync(DisasContext *ctx) 3402 static void gen_sync(DisasContext *ctx)
3263 { 3403 {
3264 } 3404 }
3265 3405
3266 /* wait */ 3406 /* wait */
3267 -GEN_HANDLER(wait, 0x1F, 0x1E, 0x01, 0x03FFF801, PPC_WAIT);  
3268 -  
3269 static void gen_wait(DisasContext *ctx) 3407 static void gen_wait(DisasContext *ctx)
3270 { 3408 {
3271 TCGv_i32 t0 = tcg_temp_new_i32(); 3409 TCGv_i32 t0 = tcg_temp_new_i32();
@@ -3533,8 +3671,6 @@ static always_inline void gen_setlr (DisasContext *ctx, target_ulong nip) @@ -3533,8 +3671,6 @@ static always_inline void gen_setlr (DisasContext *ctx, target_ulong nip)
3533 } 3671 }
3534 3672
3535 /* b ba bl bla */ 3673 /* b ba bl bla */
3536 -GEN_HANDLER(b, 0x12, 0xFF, 0xFF, 0x00000000, PPC_FLOW);  
3537 -  
3538 static void gen_b(DisasContext *ctx) 3674 static void gen_b(DisasContext *ctx)
3539 { 3675 {
3540 target_ulong li, target; 3676 target_ulong li, target;
@@ -3641,22 +3777,16 @@ static always_inline void gen_bcond (DisasContext *ctx, int type) @@ -3641,22 +3777,16 @@ static always_inline void gen_bcond (DisasContext *ctx, int type)
3641 } 3777 }
3642 } 3778 }
3643 3779
3644 -GEN_HANDLER(bc, 0x10, 0xFF, 0xFF, 0x00000000, PPC_FLOW);  
3645 -  
3646 static void gen_bc(DisasContext *ctx) 3780 static void gen_bc(DisasContext *ctx)
3647 { 3781 {
3648 gen_bcond(ctx, BCOND_IM); 3782 gen_bcond(ctx, BCOND_IM);
3649 } 3783 }
3650 3784
3651 -GEN_HANDLER(bcctr, 0x13, 0x10, 0x10, 0x00000000, PPC_FLOW);  
3652 -  
3653 static void gen_bcctr(DisasContext *ctx) 3785 static void gen_bcctr(DisasContext *ctx)
3654 { 3786 {
3655 gen_bcond(ctx, BCOND_CTR); 3787 gen_bcond(ctx, BCOND_CTR);
3656 } 3788 }
3657 3789
3658 -GEN_HANDLER(bclr, 0x13, 0x10, 0x00, 0x00000000, PPC_FLOW);  
3659 -  
3660 static void gen_bclr(DisasContext *ctx) 3790 static void gen_bclr(DisasContext *ctx)
3661 { 3791 {
3662 gen_bcond(ctx, BCOND_LR); 3792 gen_bcond(ctx, BCOND_LR);
@@ -3712,18 +3842,16 @@ GEN_CRLOGIC(cror, tcg_gen_or_i32, 0x0E); @@ -3712,18 +3842,16 @@ GEN_CRLOGIC(cror, tcg_gen_or_i32, 0x0E);
3712 GEN_CRLOGIC(crorc, tcg_gen_orc_i32, 0x0D); 3842 GEN_CRLOGIC(crorc, tcg_gen_orc_i32, 0x0D);
3713 /* crxor */ 3843 /* crxor */
3714 GEN_CRLOGIC(crxor, tcg_gen_xor_i32, 0x06); 3844 GEN_CRLOGIC(crxor, tcg_gen_xor_i32, 0x06);
3715 -/* mcrf */  
3716 -GEN_HANDLER(mcrf, 0x13, 0x00, 0xFF, 0x00000001, PPC_INTEGER);  
3717 3845
  3846 +/* mcrf */
3718 static void gen_mcrf(DisasContext *ctx) 3847 static void gen_mcrf(DisasContext *ctx)
3719 { 3848 {
3720 tcg_gen_mov_i32(cpu_crf[crfD(ctx->opcode)], cpu_crf[crfS(ctx->opcode)]); 3849 tcg_gen_mov_i32(cpu_crf[crfD(ctx->opcode)], cpu_crf[crfS(ctx->opcode)]);
3721 } 3850 }
3722 3851
3723 /*** System linkage ***/ 3852 /*** System linkage ***/
3724 -/* rfi (mem_idx only) */  
3725 -GEN_HANDLER(rfi, 0x13, 0x12, 0x01, 0x03FF8001, PPC_FLOW);  
3726 3853
  3854 +/* rfi (mem_idx only) */
3727 static void gen_rfi(DisasContext *ctx) 3855 static void gen_rfi(DisasContext *ctx)
3728 { 3856 {
3729 #if defined(CONFIG_USER_ONLY) 3857 #if defined(CONFIG_USER_ONLY)
@@ -3740,8 +3868,6 @@ static void gen_rfi(DisasContext *ctx) @@ -3740,8 +3868,6 @@ static void gen_rfi(DisasContext *ctx)
3740 } 3868 }
3741 3869
3742 #if defined(TARGET_PPC64) 3870 #if defined(TARGET_PPC64)
3743 -GEN_HANDLER(rfid, 0x13, 0x12, 0x00, 0x03FF8001, PPC_64B);  
3744 -  
3745 static void gen_rfid(DisasContext *ctx) 3871 static void gen_rfid(DisasContext *ctx)
3746 { 3872 {
3747 #if defined(CONFIG_USER_ONLY) 3873 #if defined(CONFIG_USER_ONLY)
@@ -3757,8 +3883,6 @@ static void gen_rfid(DisasContext *ctx) @@ -3757,8 +3883,6 @@ static void gen_rfid(DisasContext *ctx)
3757 #endif 3883 #endif
3758 } 3884 }
3759 3885
3760 -GEN_HANDLER(hrfid, 0x13, 0x12, 0x08, 0x03FF8001, PPC_64H);  
3761 -  
3762 static void gen_hrfid(DisasContext *ctx) 3886 static void gen_hrfid(DisasContext *ctx)
3763 { 3887 {
3764 #if defined(CONFIG_USER_ONLY) 3888 #if defined(CONFIG_USER_ONLY)
@@ -3781,8 +3905,6 @@ static void gen_hrfid(DisasContext *ctx) @@ -3781,8 +3905,6 @@ static void gen_hrfid(DisasContext *ctx)
3781 #else 3905 #else
3782 #define POWERPC_SYSCALL POWERPC_EXCP_SYSCALL 3906 #define POWERPC_SYSCALL POWERPC_EXCP_SYSCALL
3783 #endif 3907 #endif
3784 -GEN_HANDLER(sc, 0x11, 0xFF, 0xFF, 0x03FFF01D, PPC_FLOW);  
3785 -  
3786 static void gen_sc(DisasContext *ctx) 3908 static void gen_sc(DisasContext *ctx)
3787 { 3909 {
3788 uint32_t lev; 3910 uint32_t lev;
@@ -3792,9 +3914,8 @@ static void gen_sc(DisasContext *ctx) @@ -3792,9 +3914,8 @@ static void gen_sc(DisasContext *ctx)
3792 } 3914 }
3793 3915
3794 /*** Trap ***/ 3916 /*** Trap ***/
3795 -/* tw */  
3796 -GEN_HANDLER(tw, 0x1F, 0x04, 0x00, 0x00000001, PPC_FLOW);  
3797 3917
  3918 +/* tw */
3798 static void gen_tw(DisasContext *ctx) 3919 static void gen_tw(DisasContext *ctx)
3799 { 3920 {
3800 TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode)); 3921 TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode));
@@ -3805,8 +3926,6 @@ static void gen_tw(DisasContext *ctx) @@ -3805,8 +3926,6 @@ static void gen_tw(DisasContext *ctx)
3805 } 3926 }
3806 3927
3807 /* twi */ 3928 /* twi */
3808 -GEN_HANDLER(twi, 0x03, 0xFF, 0xFF, 0x00000000, PPC_FLOW);  
3809 -  
3810 static void gen_twi(DisasContext *ctx) 3929 static void gen_twi(DisasContext *ctx)
3811 { 3930 {
3812 TCGv t0 = tcg_const_tl(SIMM(ctx->opcode)); 3931 TCGv t0 = tcg_const_tl(SIMM(ctx->opcode));
@@ -3820,8 +3939,6 @@ static void gen_twi(DisasContext *ctx) @@ -3820,8 +3939,6 @@ static void gen_twi(DisasContext *ctx)
3820 3939
3821 #if defined(TARGET_PPC64) 3940 #if defined(TARGET_PPC64)
3822 /* td */ 3941 /* td */
3823 -GEN_HANDLER(td, 0x1F, 0x04, 0x02, 0x00000001, PPC_64B);  
3824 -  
3825 static void gen_td(DisasContext *ctx) 3942 static void gen_td(DisasContext *ctx)
3826 { 3943 {
3827 TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode)); 3944 TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode));
@@ -3832,8 +3949,6 @@ static void gen_td(DisasContext *ctx) @@ -3832,8 +3949,6 @@ static void gen_td(DisasContext *ctx)
3832 } 3949 }
3833 3950
3834 /* tdi */ 3951 /* tdi */
3835 -GEN_HANDLER(tdi, 0x02, 0xFF, 0xFF, 0x00000000, PPC_64B);  
3836 -  
3837 static void gen_tdi(DisasContext *ctx) 3952 static void gen_tdi(DisasContext *ctx)
3838 { 3953 {
3839 TCGv t0 = tcg_const_tl(SIMM(ctx->opcode)); 3954 TCGv t0 = tcg_const_tl(SIMM(ctx->opcode));
@@ -3847,9 +3962,8 @@ static void gen_tdi(DisasContext *ctx) @@ -3847,9 +3962,8 @@ static void gen_tdi(DisasContext *ctx)
3847 #endif 3962 #endif
3848 3963
3849 /*** Processor control ***/ 3964 /*** Processor control ***/
3850 -/* mcrxr */  
3851 -GEN_HANDLER(mcrxr, 0x1F, 0x00, 0x10, 0x007FF801, PPC_MISC);  
3852 3965
  3966 +/* mcrxr */
3853 static void gen_mcrxr(DisasContext *ctx) 3967 static void gen_mcrxr(DisasContext *ctx)
3854 { 3968 {
3855 tcg_gen_trunc_tl_i32(cpu_crf[crfD(ctx->opcode)], cpu_xer); 3969 tcg_gen_trunc_tl_i32(cpu_crf[crfD(ctx->opcode)], cpu_xer);
@@ -3858,8 +3972,6 @@ static void gen_mcrxr(DisasContext *ctx) @@ -3858,8 +3972,6 @@ static void gen_mcrxr(DisasContext *ctx)
3858 } 3972 }
3859 3973
3860 /* mfcr mfocrf */ 3974 /* mfcr mfocrf */
3861 -GEN_HANDLER(mfcr, 0x1F, 0x13, 0x00, 0x00000801, PPC_MISC);  
3862 -  
3863 static void gen_mfcr(DisasContext *ctx) 3975 static void gen_mfcr(DisasContext *ctx)
3864 { 3976 {
3865 uint32_t crm, crn; 3977 uint32_t crm, crn;
@@ -3895,8 +4007,6 @@ static void gen_mfcr(DisasContext *ctx) @@ -3895,8 +4007,6 @@ static void gen_mfcr(DisasContext *ctx)
3895 } 4007 }
3896 4008
3897 /* mfmsr */ 4009 /* mfmsr */
3898 -GEN_HANDLER(mfmsr, 0x1F, 0x13, 0x02, 0x001FF801, PPC_MISC);  
3899 -  
3900 static void gen_mfmsr(DisasContext *ctx) 4010 static void gen_mfmsr(DisasContext *ctx)
3901 { 4011 {
3902 #if defined(CONFIG_USER_ONLY) 4012 #if defined(CONFIG_USER_ONLY)
@@ -3962,24 +4072,18 @@ static always_inline void gen_op_mfspr (DisasContext *ctx) @@ -3962,24 +4072,18 @@ static always_inline void gen_op_mfspr (DisasContext *ctx)
3962 } 4072 }
3963 } 4073 }
3964 4074
3965 -GEN_HANDLER(mfspr, 0x1F, 0x13, 0x0A, 0x00000001, PPC_MISC);  
3966 -  
3967 static void gen_mfspr(DisasContext *ctx) 4075 static void gen_mfspr(DisasContext *ctx)
3968 { 4076 {
3969 gen_op_mfspr(ctx); 4077 gen_op_mfspr(ctx);
3970 } 4078 }
3971 4079
3972 /* mftb */ 4080 /* mftb */
3973 -GEN_HANDLER(mftb, 0x1F, 0x13, 0x0B, 0x00000001, PPC_MFTB);  
3974 -  
3975 static void gen_mftb(DisasContext *ctx) 4081 static void gen_mftb(DisasContext *ctx)
3976 { 4082 {
3977 gen_op_mfspr(ctx); 4083 gen_op_mfspr(ctx);
3978 } 4084 }
3979 4085
3980 /* mtcrf mtocrf*/ 4086 /* mtcrf mtocrf*/
3981 -GEN_HANDLER(mtcrf, 0x1F, 0x10, 0x04, 0x00000801, PPC_MISC);  
3982 -  
3983 static void gen_mtcrf(DisasContext *ctx) 4087 static void gen_mtcrf(DisasContext *ctx)
3984 { 4088 {
3985 uint32_t crm, crn; 4089 uint32_t crm, crn;
@@ -4009,8 +4113,6 @@ static void gen_mtcrf(DisasContext *ctx) @@ -4009,8 +4113,6 @@ static void gen_mtcrf(DisasContext *ctx)
4009 4113
4010 /* mtmsr */ 4114 /* mtmsr */
4011 #if defined(TARGET_PPC64) 4115 #if defined(TARGET_PPC64)
4012 -GEN_HANDLER(mtmsrd, 0x1F, 0x12, 0x05, 0x001EF801, PPC_64B);  
4013 -  
4014 static void gen_mtmsrd(DisasContext *ctx) 4116 static void gen_mtmsrd(DisasContext *ctx)
4015 { 4117 {
4016 #if defined(CONFIG_USER_ONLY) 4118 #if defined(CONFIG_USER_ONLY)
@@ -4042,8 +4144,6 @@ static void gen_mtmsrd(DisasContext *ctx) @@ -4042,8 +4144,6 @@ static void gen_mtmsrd(DisasContext *ctx)
4042 } 4144 }
4043 #endif 4145 #endif
4044 4146
4045 -GEN_HANDLER(mtmsr, 0x1F, 0x12, 0x04, 0x001FF801, PPC_MISC);  
4046 -  
4047 static void gen_mtmsr(DisasContext *ctx) 4147 static void gen_mtmsr(DisasContext *ctx)
4048 { 4148 {
4049 #if defined(CONFIG_USER_ONLY) 4149 #if defined(CONFIG_USER_ONLY)
@@ -4087,8 +4187,6 @@ static void gen_mtmsr(DisasContext *ctx) @@ -4087,8 +4187,6 @@ static void gen_mtmsr(DisasContext *ctx)
4087 } 4187 }
4088 4188
4089 /* mtspr */ 4189 /* mtspr */
4090 -GEN_HANDLER(mtspr, 0x1F, 0x13, 0x0E, 0x00000001, PPC_MISC);  
4091 -  
4092 static void gen_mtspr(DisasContext *ctx) 4190 static void gen_mtspr(DisasContext *ctx)
4093 { 4191 {
4094 void (*write_cb)(void *opaque, int sprn, int gprn); 4192 void (*write_cb)(void *opaque, int sprn, int gprn);
@@ -4124,9 +4222,8 @@ static void gen_mtspr(DisasContext *ctx) @@ -4124,9 +4222,8 @@ static void gen_mtspr(DisasContext *ctx)
4124 } 4222 }
4125 4223
4126 /*** Cache management ***/ 4224 /*** Cache management ***/
4127 -/* dcbf */  
4128 -GEN_HANDLER(dcbf, 0x1F, 0x16, 0x02, 0x03C00001, PPC_CACHE);  
4129 4225
  4226 +/* dcbf */
4130 static void gen_dcbf(DisasContext *ctx) 4227 static void gen_dcbf(DisasContext *ctx)
4131 { 4228 {
4132 /* XXX: specification says this is treated as a load by the MMU */ 4229 /* XXX: specification says this is treated as a load by the MMU */
@@ -4139,8 +4236,6 @@ static void gen_dcbf(DisasContext *ctx) @@ -4139,8 +4236,6 @@ static void gen_dcbf(DisasContext *ctx)
4139 } 4236 }
4140 4237
4141 /* dcbi (Supervisor only) */ 4238 /* dcbi (Supervisor only) */
4142 -GEN_HANDLER(dcbi, 0x1F, 0x16, 0x0E, 0x03E00001, PPC_CACHE);  
4143 -  
4144 static void gen_dcbi(DisasContext *ctx) 4239 static void gen_dcbi(DisasContext *ctx)
4145 { 4240 {
4146 #if defined(CONFIG_USER_ONLY) 4241 #if defined(CONFIG_USER_ONLY)
@@ -4164,8 +4259,6 @@ static void gen_dcbi(DisasContext *ctx) @@ -4164,8 +4259,6 @@ static void gen_dcbi(DisasContext *ctx)
4164 } 4259 }
4165 4260
4166 /* dcdst */ 4261 /* dcdst */
4167 -GEN_HANDLER(dcbst, 0x1F, 0x16, 0x01, 0x03E00001, PPC_CACHE);  
4168 -  
4169 static void gen_dcbst(DisasContext *ctx) 4262 static void gen_dcbst(DisasContext *ctx)
4170 { 4263 {
4171 /* XXX: specification say this is treated as a load by the MMU */ 4264 /* XXX: specification say this is treated as a load by the MMU */
@@ -4178,8 +4271,6 @@ static void gen_dcbst(DisasContext *ctx) @@ -4178,8 +4271,6 @@ static void gen_dcbst(DisasContext *ctx)
4178 } 4271 }
4179 4272
4180 /* dcbt */ 4273 /* dcbt */
4181 -GEN_HANDLER(dcbt, 0x1F, 0x16, 0x08, 0x02000001, PPC_CACHE);  
4182 -  
4183 static void gen_dcbt(DisasContext *ctx) 4274 static void gen_dcbt(DisasContext *ctx)
4184 { 4275 {
4185 /* interpreted as no-op */ 4276 /* interpreted as no-op */
@@ -4189,8 +4280,6 @@ static void gen_dcbt(DisasContext *ctx) @@ -4189,8 +4280,6 @@ static void gen_dcbt(DisasContext *ctx)
4189 } 4280 }
4190 4281
4191 /* dcbtst */ 4282 /* dcbtst */
4192 -GEN_HANDLER(dcbtst, 0x1F, 0x16, 0x07, 0x02000001, PPC_CACHE);  
4193 -  
4194 static void gen_dcbtst(DisasContext *ctx) 4283 static void gen_dcbtst(DisasContext *ctx)
4195 { 4284 {
4196 /* interpreted as no-op */ 4285 /* interpreted as no-op */
@@ -4200,8 +4289,6 @@ static void gen_dcbtst(DisasContext *ctx) @@ -4200,8 +4289,6 @@ static void gen_dcbtst(DisasContext *ctx)
4200 } 4289 }
4201 4290
4202 /* dcbz */ 4291 /* dcbz */
4203 -GEN_HANDLER(dcbz, 0x1F, 0x16, 0x1F, 0x03E00001, PPC_CACHE_DCBZ);  
4204 -  
4205 static void gen_dcbz(DisasContext *ctx) 4292 static void gen_dcbz(DisasContext *ctx)
4206 { 4293 {
4207 TCGv t0; 4294 TCGv t0;
@@ -4214,8 +4301,6 @@ static void gen_dcbz(DisasContext *ctx) @@ -4214,8 +4301,6 @@ static void gen_dcbz(DisasContext *ctx)
4214 tcg_temp_free(t0); 4301 tcg_temp_free(t0);
4215 } 4302 }
4216 4303
4217 -GEN_HANDLER2(dcbz_970, "dcbz", 0x1F, 0x16, 0x1F, 0x03C00001, PPC_CACHE_DCBZT);  
4218 -  
4219 static void gen_dcbz_970(DisasContext *ctx) 4304 static void gen_dcbz_970(DisasContext *ctx)
4220 { 4305 {
4221 TCGv t0; 4306 TCGv t0;
@@ -4232,8 +4317,6 @@ static void gen_dcbz_970(DisasContext *ctx) @@ -4232,8 +4317,6 @@ static void gen_dcbz_970(DisasContext *ctx)
4232 } 4317 }
4233 4318
4234 /* dst / dstt */ 4319 /* dst / dstt */
4235 -GEN_HANDLER(dst, 0x1F, 0x16, 0x0A, 0x01800001, PPC_ALTIVEC);  
4236 -  
4237 static void gen_dst(DisasContext *ctx) 4320 static void gen_dst(DisasContext *ctx)
4238 { 4321 {
4239 if (rA(ctx->opcode) == 0) { 4322 if (rA(ctx->opcode) == 0) {
@@ -4244,8 +4327,6 @@ static void gen_dst(DisasContext *ctx) @@ -4244,8 +4327,6 @@ static void gen_dst(DisasContext *ctx)
4244 } 4327 }
4245 4328
4246 /* dstst /dststt */ 4329 /* dstst /dststt */
4247 -GEN_HANDLER(dstst, 0x1F, 0x16, 0x0B, 0x02000001, PPC_ALTIVEC);  
4248 -  
4249 static void gen_dstst(DisasContext *ctx) 4330 static void gen_dstst(DisasContext *ctx)
4250 { 4331 {
4251 if (rA(ctx->opcode) == 0) { 4332 if (rA(ctx->opcode) == 0) {
@@ -4257,16 +4338,12 @@ static void gen_dstst(DisasContext *ctx) @@ -4257,16 +4338,12 @@ static void gen_dstst(DisasContext *ctx)
4257 } 4338 }
4258 4339
4259 /* dss / dssall */ 4340 /* dss / dssall */
4260 -GEN_HANDLER(dss, 0x1F, 0x16, 0x19, 0x019FF801, PPC_ALTIVEC);  
4261 -  
4262 static void gen_dss(DisasContext *ctx) 4341 static void gen_dss(DisasContext *ctx)
4263 { 4342 {
4264 /* interpreted as no-op */ 4343 /* interpreted as no-op */
4265 } 4344 }
4266 4345
4267 /* icbi */ 4346 /* icbi */
4268 -GEN_HANDLER(icbi, 0x1F, 0x16, 0x1E, 0x03E00001, PPC_CACHE_ICBI);  
4269 -  
4270 static void gen_icbi(DisasContext *ctx) 4347 static void gen_icbi(DisasContext *ctx)
4271 { 4348 {
4272 TCGv t0; 4349 TCGv t0;
@@ -4281,8 +4358,6 @@ static void gen_icbi(DisasContext *ctx) @@ -4281,8 +4358,6 @@ static void gen_icbi(DisasContext *ctx)
4281 4358
4282 /* Optional: */ 4359 /* Optional: */
4283 /* dcba */ 4360 /* dcba */
4284 -GEN_HANDLER(dcba, 0x1F, 0x16, 0x17, 0x03E00001, PPC_CACHE_DCBA);  
4285 -  
4286 static void gen_dcba(DisasContext *ctx) 4361 static void gen_dcba(DisasContext *ctx)
4287 { 4362 {
4288 /* interpreted as no-op */ 4363 /* interpreted as no-op */
@@ -4293,9 +4368,8 @@ static void gen_dcba(DisasContext *ctx) @@ -4293,9 +4368,8 @@ static void gen_dcba(DisasContext *ctx)
4293 4368
4294 /*** Segment register manipulation ***/ 4369 /*** Segment register manipulation ***/
4295 /* Supervisor only: */ 4370 /* Supervisor only: */
4296 -/* mfsr */  
4297 -GEN_HANDLER(mfsr, 0x1F, 0x13, 0x12, 0x0010F801, PPC_SEGMENT);  
4298 4371
  4372 +/* mfsr */
4299 static void gen_mfsr(DisasContext *ctx) 4373 static void gen_mfsr(DisasContext *ctx)
4300 { 4374 {
4301 #if defined(CONFIG_USER_ONLY) 4375 #if defined(CONFIG_USER_ONLY)
@@ -4313,8 +4387,6 @@ static void gen_mfsr(DisasContext *ctx) @@ -4313,8 +4387,6 @@ static void gen_mfsr(DisasContext *ctx)
4313 } 4387 }
4314 4388
4315 /* mfsrin */ 4389 /* mfsrin */
4316 -GEN_HANDLER(mfsrin, 0x1F, 0x13, 0x14, 0x001F0001, PPC_SEGMENT);  
4317 -  
4318 static void gen_mfsrin(DisasContext *ctx) 4390 static void gen_mfsrin(DisasContext *ctx)
4319 { 4391 {
4320 #if defined(CONFIG_USER_ONLY) 4392 #if defined(CONFIG_USER_ONLY)
@@ -4334,8 +4406,6 @@ static void gen_mfsrin(DisasContext *ctx) @@ -4334,8 +4406,6 @@ static void gen_mfsrin(DisasContext *ctx)
4334 } 4406 }
4335 4407
4336 /* mtsr */ 4408 /* mtsr */
4337 -GEN_HANDLER(mtsr, 0x1F, 0x12, 0x06, 0x0010F801, PPC_SEGMENT);  
4338 -  
4339 static void gen_mtsr(DisasContext *ctx) 4409 static void gen_mtsr(DisasContext *ctx)
4340 { 4410 {
4341 #if defined(CONFIG_USER_ONLY) 4411 #if defined(CONFIG_USER_ONLY)
@@ -4353,8 +4423,6 @@ static void gen_mtsr(DisasContext *ctx) @@ -4353,8 +4423,6 @@ static void gen_mtsr(DisasContext *ctx)
4353 } 4423 }
4354 4424
4355 /* mtsrin */ 4425 /* mtsrin */
4356 -GEN_HANDLER(mtsrin, 0x1F, 0x12, 0x07, 0x001F0001, PPC_SEGMENT);  
4357 -  
4358 static void gen_mtsrin(DisasContext *ctx) 4426 static void gen_mtsrin(DisasContext *ctx)
4359 { 4427 {
4360 #if defined(CONFIG_USER_ONLY) 4428 #if defined(CONFIG_USER_ONLY)
@@ -4375,9 +4443,8 @@ static void gen_mtsrin(DisasContext *ctx) @@ -4375,9 +4443,8 @@ static void gen_mtsrin(DisasContext *ctx)
4375 4443
4376 #if defined(TARGET_PPC64) 4444 #if defined(TARGET_PPC64)
4377 /* Specific implementation for PowerPC 64 "bridge" emulation using SLB */ 4445 /* Specific implementation for PowerPC 64 "bridge" emulation using SLB */
4378 -/* mfsr */  
4379 -GEN_HANDLER2(mfsr_64b, "mfsr", 0x1F, 0x13, 0x12, 0x0010F801, PPC_SEGMENT_64B);  
4380 4446
  4447 +/* mfsr */
4381 static void gen_mfsr_64b(DisasContext *ctx) 4448 static void gen_mfsr_64b(DisasContext *ctx)
4382 { 4449 {
4383 #if defined(CONFIG_USER_ONLY) 4450 #if defined(CONFIG_USER_ONLY)
@@ -4395,9 +4462,6 @@ static void gen_mfsr_64b(DisasContext *ctx) @@ -4395,9 +4462,6 @@ static void gen_mfsr_64b(DisasContext *ctx)
4395 } 4462 }
4396 4463
4397 /* mfsrin */ 4464 /* mfsrin */
4398 -GEN_HANDLER2(mfsrin_64b, "mfsrin", 0x1F, 0x13, 0x14, 0x001F0001,  
4399 - PPC_SEGMENT_64B);  
4400 -  
4401 static void gen_mfsrin_64b(DisasContext *ctx) 4465 static void gen_mfsrin_64b(DisasContext *ctx)
4402 { 4466 {
4403 #if defined(CONFIG_USER_ONLY) 4467 #if defined(CONFIG_USER_ONLY)
@@ -4417,8 +4481,6 @@ static void gen_mfsrin_64b(DisasContext *ctx) @@ -4417,8 +4481,6 @@ static void gen_mfsrin_64b(DisasContext *ctx)
4417 } 4481 }
4418 4482
4419 /* mtsr */ 4483 /* mtsr */
4420 -GEN_HANDLER2(mtsr_64b, "mtsr", 0x1F, 0x12, 0x06, 0x0010F801, PPC_SEGMENT_64B);  
4421 -  
4422 static void gen_mtsr_64b(DisasContext *ctx) 4484 static void gen_mtsr_64b(DisasContext *ctx)
4423 { 4485 {
4424 #if defined(CONFIG_USER_ONLY) 4486 #if defined(CONFIG_USER_ONLY)
@@ -4436,9 +4498,6 @@ static void gen_mtsr_64b(DisasContext *ctx) @@ -4436,9 +4498,6 @@ static void gen_mtsr_64b(DisasContext *ctx)
4436 } 4498 }
4437 4499
4438 /* mtsrin */ 4500 /* mtsrin */
4439 -GEN_HANDLER2(mtsrin_64b, "mtsrin", 0x1F, 0x12, 0x07, 0x001F0001,  
4440 - PPC_SEGMENT_64B);  
4441 -  
4442 static void gen_mtsrin_64b(DisasContext *ctx) 4501 static void gen_mtsrin_64b(DisasContext *ctx)
4443 { 4502 {
4444 #if defined(CONFIG_USER_ONLY) 4503 #if defined(CONFIG_USER_ONLY)
@@ -4458,8 +4517,6 @@ static void gen_mtsrin_64b(DisasContext *ctx) @@ -4458,8 +4517,6 @@ static void gen_mtsrin_64b(DisasContext *ctx)
4458 } 4517 }
4459 4518
4460 /* slbmte */ 4519 /* slbmte */
4461 -GEN_HANDLER2(slbmte, "slbmte", 0x1F, 0x12, 0x0C, 0x00000000, PPC_SEGMENT_64B);  
4462 -  
4463 static void gen_slbmte(DisasContext *ctx) 4520 static void gen_slbmte(DisasContext *ctx)
4464 { 4521 {
4465 #if defined(CONFIG_USER_ONLY) 4522 #if defined(CONFIG_USER_ONLY)
@@ -4477,9 +4534,8 @@ static void gen_slbmte(DisasContext *ctx) @@ -4477,9 +4534,8 @@ static void gen_slbmte(DisasContext *ctx)
4477 4534
4478 /*** Lookaside buffer management ***/ 4535 /*** Lookaside buffer management ***/
4479 /* Optional & mem_idx only: */ 4536 /* Optional & mem_idx only: */
4480 -/* tlbia */  
4481 -GEN_HANDLER(tlbia, 0x1F, 0x12, 0x0B, 0x03FFFC01, PPC_MEM_TLBIA);  
4482 4537
  4538 +/* tlbia */
4483 static void gen_tlbia(DisasContext *ctx) 4539 static void gen_tlbia(DisasContext *ctx)
4484 { 4540 {
4485 #if defined(CONFIG_USER_ONLY) 4541 #if defined(CONFIG_USER_ONLY)
@@ -4494,8 +4550,6 @@ static void gen_tlbia(DisasContext *ctx) @@ -4494,8 +4550,6 @@ static void gen_tlbia(DisasContext *ctx)
4494 } 4550 }
4495 4551
4496 /* tlbiel */ 4552 /* tlbiel */
4497 -GEN_HANDLER(tlbiel, 0x1F, 0x12, 0x08, 0x03FF0001, PPC_MEM_TLBIE);  
4498 -  
4499 static void gen_tlbiel(DisasContext *ctx) 4553 static void gen_tlbiel(DisasContext *ctx)
4500 { 4554 {
4501 #if defined(CONFIG_USER_ONLY) 4555 #if defined(CONFIG_USER_ONLY)
@@ -4510,8 +4564,6 @@ static void gen_tlbiel(DisasContext *ctx) @@ -4510,8 +4564,6 @@ static void gen_tlbiel(DisasContext *ctx)
4510 } 4564 }
4511 4565
4512 /* tlbie */ 4566 /* tlbie */
4513 -GEN_HANDLER(tlbie, 0x1F, 0x12, 0x09, 0x03FF0001, PPC_MEM_TLBIE);  
4514 -  
4515 static void gen_tlbie(DisasContext *ctx) 4567 static void gen_tlbie(DisasContext *ctx)
4516 { 4568 {
4517 #if defined(CONFIG_USER_ONLY) 4569 #if defined(CONFIG_USER_ONLY)
@@ -4534,8 +4586,6 @@ static void gen_tlbie(DisasContext *ctx) @@ -4534,8 +4586,6 @@ static void gen_tlbie(DisasContext *ctx)
4534 } 4586 }
4535 4587
4536 /* tlbsync */ 4588 /* tlbsync */
4537 -GEN_HANDLER(tlbsync, 0x1F, 0x16, 0x11, 0x03FFF801, PPC_MEM_TLBSYNC);  
4538 -  
4539 static void gen_tlbsync(DisasContext *ctx) 4589 static void gen_tlbsync(DisasContext *ctx)
4540 { 4590 {
4541 #if defined(CONFIG_USER_ONLY) 4591 #if defined(CONFIG_USER_ONLY)
@@ -4554,8 +4604,6 @@ static void gen_tlbsync(DisasContext *ctx) @@ -4554,8 +4604,6 @@ static void gen_tlbsync(DisasContext *ctx)
4554 4604
4555 #if defined(TARGET_PPC64) 4605 #if defined(TARGET_PPC64)
4556 /* slbia */ 4606 /* slbia */
4557 -GEN_HANDLER(slbia, 0x1F, 0x12, 0x0F, 0x03FFFC01, PPC_SLBI);  
4558 -  
4559 static void gen_slbia(DisasContext *ctx) 4607 static void gen_slbia(DisasContext *ctx)
4560 { 4608 {
4561 #if defined(CONFIG_USER_ONLY) 4609 #if defined(CONFIG_USER_ONLY)
@@ -4570,8 +4618,6 @@ static void gen_slbia(DisasContext *ctx) @@ -4570,8 +4618,6 @@ static void gen_slbia(DisasContext *ctx)
4570 } 4618 }
4571 4619
4572 /* slbie */ 4620 /* slbie */
4573 -GEN_HANDLER(slbie, 0x1F, 0x12, 0x0D, 0x03FF0001, PPC_SLBI);  
4574 -  
4575 static void gen_slbie(DisasContext *ctx) 4621 static void gen_slbie(DisasContext *ctx)
4576 { 4622 {
4577 #if defined(CONFIG_USER_ONLY) 4623 #if defined(CONFIG_USER_ONLY)
@@ -4588,9 +4634,8 @@ static void gen_slbie(DisasContext *ctx) @@ -4588,9 +4634,8 @@ static void gen_slbie(DisasContext *ctx)
4588 4634
4589 /*** External control ***/ 4635 /*** External control ***/
4590 /* Optional: */ 4636 /* Optional: */
4591 -/* eciwx */  
4592 -GEN_HANDLER(eciwx, 0x1F, 0x16, 0x0D, 0x00000001, PPC_EXTERN);  
4593 4637
  4638 +/* eciwx */
4594 static void gen_eciwx(DisasContext *ctx) 4639 static void gen_eciwx(DisasContext *ctx)
4595 { 4640 {
4596 TCGv t0; 4641 TCGv t0;
@@ -4604,8 +4649,6 @@ static void gen_eciwx(DisasContext *ctx) @@ -4604,8 +4649,6 @@ static void gen_eciwx(DisasContext *ctx)
4604 } 4649 }
4605 4650
4606 /* ecowx */ 4651 /* ecowx */
4607 -GEN_HANDLER(ecowx, 0x1F, 0x16, 0x09, 0x00000001, PPC_EXTERN);  
4608 -  
4609 static void gen_ecowx(DisasContext *ctx) 4652 static void gen_ecowx(DisasContext *ctx)
4610 { 4653 {
4611 TCGv t0; 4654 TCGv t0;
@@ -4619,9 +4662,8 @@ static void gen_ecowx(DisasContext *ctx) @@ -4619,9 +4662,8 @@ static void gen_ecowx(DisasContext *ctx)
4619 } 4662 }
4620 4663
4621 /* PowerPC 601 specific instructions */ 4664 /* PowerPC 601 specific instructions */
4622 -/* abs - abs. */  
4623 -GEN_HANDLER(abs, 0x1F, 0x08, 0x0B, 0x0000F800, PPC_POWER_BR);  
4624 4665
  4666 +/* abs - abs. */
4625 static void gen_abs(DisasContext *ctx) 4667 static void gen_abs(DisasContext *ctx)
4626 { 4668 {
4627 int l1 = gen_new_label(); 4669 int l1 = gen_new_label();
@@ -4637,8 +4679,6 @@ static void gen_abs(DisasContext *ctx) @@ -4637,8 +4679,6 @@ static void gen_abs(DisasContext *ctx)
4637 } 4679 }
4638 4680
4639 /* abso - abso. */ 4681 /* abso - abso. */
4640 -GEN_HANDLER(abso, 0x1F, 0x08, 0x1B, 0x0000F800, PPC_POWER_BR);  
4641 -  
4642 static void gen_abso(DisasContext *ctx) 4682 static void gen_abso(DisasContext *ctx)
4643 { 4683 {
4644 int l1 = gen_new_label(); 4684 int l1 = gen_new_label();
@@ -4661,8 +4701,6 @@ static void gen_abso(DisasContext *ctx) @@ -4661,8 +4701,6 @@ static void gen_abso(DisasContext *ctx)
4661 } 4701 }
4662 4702
4663 /* clcs */ 4703 /* clcs */
4664 -GEN_HANDLER(clcs, 0x1F, 0x10, 0x13, 0x0000F800, PPC_POWER_BR);  
4665 -  
4666 static void gen_clcs(DisasContext *ctx) 4704 static void gen_clcs(DisasContext *ctx)
4667 { 4705 {
4668 TCGv_i32 t0 = tcg_const_i32(rA(ctx->opcode)); 4706 TCGv_i32 t0 = tcg_const_i32(rA(ctx->opcode));
@@ -4672,8 +4710,6 @@ static void gen_clcs(DisasContext *ctx) @@ -4672,8 +4710,6 @@ static void gen_clcs(DisasContext *ctx)
4672 } 4710 }
4673 4711
4674 /* div - div. */ 4712 /* div - div. */
4675 -GEN_HANDLER(div, 0x1F, 0x0B, 0x0A, 0x00000000, PPC_POWER_BR);  
4676 -  
4677 static void gen_div(DisasContext *ctx) 4713 static void gen_div(DisasContext *ctx)
4678 { 4714 {
4679 gen_helper_div(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]); 4715 gen_helper_div(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
@@ -4682,8 +4718,6 @@ static void gen_div(DisasContext *ctx) @@ -4682,8 +4718,6 @@ static void gen_div(DisasContext *ctx)
4682 } 4718 }
4683 4719
4684 /* divo - divo. */ 4720 /* divo - divo. */
4685 -GEN_HANDLER(divo, 0x1F, 0x0B, 0x1A, 0x00000000, PPC_POWER_BR);  
4686 -  
4687 static void gen_divo(DisasContext *ctx) 4721 static void gen_divo(DisasContext *ctx)
4688 { 4722 {
4689 gen_helper_divo(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]); 4723 gen_helper_divo(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
@@ -4692,8 +4726,6 @@ static void gen_divo(DisasContext *ctx) @@ -4692,8 +4726,6 @@ static void gen_divo(DisasContext *ctx)
4692 } 4726 }
4693 4727
4694 /* divs - divs. */ 4728 /* divs - divs. */
4695 -GEN_HANDLER(divs, 0x1F, 0x0B, 0x0B, 0x00000000, PPC_POWER_BR);  
4696 -  
4697 static void gen_divs(DisasContext *ctx) 4729 static void gen_divs(DisasContext *ctx)
4698 { 4730 {
4699 gen_helper_divs(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]); 4731 gen_helper_divs(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
@@ -4702,8 +4734,6 @@ static void gen_divs(DisasContext *ctx) @@ -4702,8 +4734,6 @@ static void gen_divs(DisasContext *ctx)
4702 } 4734 }
4703 4735
4704 /* divso - divso. */ 4736 /* divso - divso. */
4705 -GEN_HANDLER(divso, 0x1F, 0x0B, 0x1B, 0x00000000, PPC_POWER_BR);  
4706 -  
4707 static void gen_divso(DisasContext *ctx) 4737 static void gen_divso(DisasContext *ctx)
4708 { 4738 {
4709 gen_helper_divso(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]); 4739 gen_helper_divso(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
@@ -4712,8 +4742,6 @@ static void gen_divso(DisasContext *ctx) @@ -4712,8 +4742,6 @@ static void gen_divso(DisasContext *ctx)
4712 } 4742 }
4713 4743
4714 /* doz - doz. */ 4744 /* doz - doz. */
4715 -GEN_HANDLER(doz, 0x1F, 0x08, 0x08, 0x00000000, PPC_POWER_BR);  
4716 -  
4717 static void gen_doz(DisasContext *ctx) 4745 static void gen_doz(DisasContext *ctx)
4718 { 4746 {
4719 int l1 = gen_new_label(); 4747 int l1 = gen_new_label();
@@ -4729,8 +4757,6 @@ static void gen_doz(DisasContext *ctx) @@ -4729,8 +4757,6 @@ static void gen_doz(DisasContext *ctx)
4729 } 4757 }
4730 4758
4731 /* dozo - dozo. */ 4759 /* dozo - dozo. */
4732 -GEN_HANDLER(dozo, 0x1F, 0x08, 0x18, 0x00000000, PPC_POWER_BR);  
4733 -  
4734 static void gen_dozo(DisasContext *ctx) 4760 static void gen_dozo(DisasContext *ctx)
4735 { 4761 {
4736 int l1 = gen_new_label(); 4762 int l1 = gen_new_label();
@@ -4760,8 +4786,6 @@ static void gen_dozo(DisasContext *ctx) @@ -4760,8 +4786,6 @@ static void gen_dozo(DisasContext *ctx)
4760 } 4786 }
4761 4787
4762 /* dozi */ 4788 /* dozi */
4763 -GEN_HANDLER(dozi, 0x09, 0xFF, 0xFF, 0x00000000, PPC_POWER_BR);  
4764 -  
4765 static void gen_dozi(DisasContext *ctx) 4789 static void gen_dozi(DisasContext *ctx)
4766 { 4790 {
4767 target_long simm = SIMM(ctx->opcode); 4791 target_long simm = SIMM(ctx->opcode);
@@ -4778,8 +4802,6 @@ static void gen_dozi(DisasContext *ctx) @@ -4778,8 +4802,6 @@ static void gen_dozi(DisasContext *ctx)
4778 } 4802 }
4779 4803
4780 /* lscbx - lscbx. */ 4804 /* lscbx - lscbx. */
4781 -GEN_HANDLER(lscbx, 0x1F, 0x15, 0x08, 0x00000000, PPC_POWER_BR);  
4782 -  
4783 static void gen_lscbx(DisasContext *ctx) 4805 static void gen_lscbx(DisasContext *ctx)
4784 { 4806 {
4785 TCGv t0 = tcg_temp_new(); 4807 TCGv t0 = tcg_temp_new();
@@ -4802,8 +4824,6 @@ static void gen_lscbx(DisasContext *ctx) @@ -4802,8 +4824,6 @@ static void gen_lscbx(DisasContext *ctx)
4802 } 4824 }
4803 4825
4804 /* maskg - maskg. */ 4826 /* maskg - maskg. */
4805 -GEN_HANDLER(maskg, 0x1F, 0x1D, 0x00, 0x00000000, PPC_POWER_BR);  
4806 -  
4807 static void gen_maskg(DisasContext *ctx) 4827 static void gen_maskg(DisasContext *ctx)
4808 { 4828 {
4809 int l1 = gen_new_label(); 4829 int l1 = gen_new_label();
@@ -4830,8 +4850,6 @@ static void gen_maskg(DisasContext *ctx) @@ -4830,8 +4850,6 @@ static void gen_maskg(DisasContext *ctx)
4830 } 4850 }
4831 4851
4832 /* maskir - maskir. */ 4852 /* maskir - maskir. */
4833 -GEN_HANDLER(maskir, 0x1F, 0x1D, 0x10, 0x00000000, PPC_POWER_BR);  
4834 -  
4835 static void gen_maskir(DisasContext *ctx) 4853 static void gen_maskir(DisasContext *ctx)
4836 { 4854 {
4837 TCGv t0 = tcg_temp_new(); 4855 TCGv t0 = tcg_temp_new();
@@ -4846,8 +4864,6 @@ static void gen_maskir(DisasContext *ctx) @@ -4846,8 +4864,6 @@ static void gen_maskir(DisasContext *ctx)
4846 } 4864 }
4847 4865
4848 /* mul - mul. */ 4866 /* mul - mul. */
4849 -GEN_HANDLER(mul, 0x1F, 0x0B, 0x03, 0x00000000, PPC_POWER_BR);  
4850 -  
4851 static void gen_mul(DisasContext *ctx) 4867 static void gen_mul(DisasContext *ctx)
4852 { 4868 {
4853 TCGv_i64 t0 = tcg_temp_new_i64(); 4869 TCGv_i64 t0 = tcg_temp_new_i64();
@@ -4868,8 +4884,6 @@ static void gen_mul(DisasContext *ctx) @@ -4868,8 +4884,6 @@ static void gen_mul(DisasContext *ctx)
4868 } 4884 }
4869 4885
4870 /* mulo - mulo. */ 4886 /* mulo - mulo. */
4871 -GEN_HANDLER(mulo, 0x1F, 0x0B, 0x13, 0x00000000, PPC_POWER_BR);  
4872 -  
4873 static void gen_mulo(DisasContext *ctx) 4887 static void gen_mulo(DisasContext *ctx)
4874 { 4888 {
4875 int l1 = gen_new_label(); 4889 int l1 = gen_new_label();
@@ -4897,8 +4911,6 @@ static void gen_mulo(DisasContext *ctx) @@ -4897,8 +4911,6 @@ static void gen_mulo(DisasContext *ctx)
4897 } 4911 }
4898 4912
4899 /* nabs - nabs. */ 4913 /* nabs - nabs. */
4900 -GEN_HANDLER(nabs, 0x1F, 0x08, 0x0F, 0x00000000, PPC_POWER_BR);  
4901 -  
4902 static void gen_nabs(DisasContext *ctx) 4914 static void gen_nabs(DisasContext *ctx)
4903 { 4915 {
4904 int l1 = gen_new_label(); 4916 int l1 = gen_new_label();
@@ -4914,8 +4926,6 @@ static void gen_nabs(DisasContext *ctx) @@ -4914,8 +4926,6 @@ static void gen_nabs(DisasContext *ctx)
4914 } 4926 }
4915 4927
4916 /* nabso - nabso. */ 4928 /* nabso - nabso. */
4917 -GEN_HANDLER(nabso, 0x1F, 0x08, 0x1F, 0x00000000, PPC_POWER_BR);  
4918 -  
4919 static void gen_nabso(DisasContext *ctx) 4929 static void gen_nabso(DisasContext *ctx)
4920 { 4930 {
4921 int l1 = gen_new_label(); 4931 int l1 = gen_new_label();
@@ -4933,8 +4943,6 @@ static void gen_nabso(DisasContext *ctx) @@ -4933,8 +4943,6 @@ static void gen_nabso(DisasContext *ctx)
4933 } 4943 }
4934 4944
4935 /* rlmi - rlmi. */ 4945 /* rlmi - rlmi. */
4936 -GEN_HANDLER(rlmi, 0x16, 0xFF, 0xFF, 0x00000000, PPC_POWER_BR);  
4937 -  
4938 static void gen_rlmi(DisasContext *ctx) 4946 static void gen_rlmi(DisasContext *ctx)
4939 { 4947 {
4940 uint32_t mb = MB(ctx->opcode); 4948 uint32_t mb = MB(ctx->opcode);
@@ -4951,8 +4959,6 @@ static void gen_rlmi(DisasContext *ctx) @@ -4951,8 +4959,6 @@ static void gen_rlmi(DisasContext *ctx)
4951 } 4959 }
4952 4960
4953 /* rrib - rrib. */ 4961 /* rrib - rrib. */
4954 -GEN_HANDLER(rrib, 0x1F, 0x19, 0x10, 0x00000000, PPC_POWER_BR);  
4955 -  
4956 static void gen_rrib(DisasContext *ctx) 4962 static void gen_rrib(DisasContext *ctx)
4957 { 4963 {
4958 TCGv t0 = tcg_temp_new(); 4964 TCGv t0 = tcg_temp_new();
@@ -4971,8 +4977,6 @@ static void gen_rrib(DisasContext *ctx) @@ -4971,8 +4977,6 @@ static void gen_rrib(DisasContext *ctx)
4971 } 4977 }
4972 4978
4973 /* sle - sle. */ 4979 /* sle - sle. */
4974 -GEN_HANDLER(sle, 0x1F, 0x19, 0x04, 0x00000000, PPC_POWER_BR);  
4975 -  
4976 static void gen_sle(DisasContext *ctx) 4980 static void gen_sle(DisasContext *ctx)
4977 { 4981 {
4978 TCGv t0 = tcg_temp_new(); 4982 TCGv t0 = tcg_temp_new();
@@ -4991,8 +4995,6 @@ static void gen_sle(DisasContext *ctx) @@ -4991,8 +4995,6 @@ static void gen_sle(DisasContext *ctx)
4991 } 4995 }
4992 4996
4993 /* sleq - sleq. */ 4997 /* sleq - sleq. */
4994 -GEN_HANDLER(sleq, 0x1F, 0x19, 0x06, 0x00000000, PPC_POWER_BR);  
4995 -  
4996 static void gen_sleq(DisasContext *ctx) 4998 static void gen_sleq(DisasContext *ctx)
4997 { 4999 {
4998 TCGv t0 = tcg_temp_new(); 5000 TCGv t0 = tcg_temp_new();
@@ -5015,8 +5017,6 @@ static void gen_sleq(DisasContext *ctx) @@ -5015,8 +5017,6 @@ static void gen_sleq(DisasContext *ctx)
5015 } 5017 }
5016 5018
5017 /* sliq - sliq. */ 5019 /* sliq - sliq. */
5018 -GEN_HANDLER(sliq, 0x1F, 0x18, 0x05, 0x00000000, PPC_POWER_BR);  
5019 -  
5020 static void gen_sliq(DisasContext *ctx) 5020 static void gen_sliq(DisasContext *ctx)
5021 { 5021 {
5022 int sh = SH(ctx->opcode); 5022 int sh = SH(ctx->opcode);
@@ -5034,8 +5034,6 @@ static void gen_sliq(DisasContext *ctx) @@ -5034,8 +5034,6 @@ static void gen_sliq(DisasContext *ctx)
5034 } 5034 }
5035 5035
5036 /* slliq - slliq. */ 5036 /* slliq - slliq. */
5037 -GEN_HANDLER(slliq, 0x1F, 0x18, 0x07, 0x00000000, PPC_POWER_BR);  
5038 -  
5039 static void gen_slliq(DisasContext *ctx) 5037 static void gen_slliq(DisasContext *ctx)
5040 { 5038 {
5041 int sh = SH(ctx->opcode); 5039 int sh = SH(ctx->opcode);
@@ -5054,8 +5052,6 @@ static void gen_slliq(DisasContext *ctx) @@ -5054,8 +5052,6 @@ static void gen_slliq(DisasContext *ctx)
5054 } 5052 }
5055 5053
5056 /* sllq - sllq. */ 5054 /* sllq - sllq. */
5057 -GEN_HANDLER(sllq, 0x1F, 0x18, 0x06, 0x00000000, PPC_POWER_BR);  
5058 -  
5059 static void gen_sllq(DisasContext *ctx) 5055 static void gen_sllq(DisasContext *ctx)
5060 { 5056 {
5061 int l1 = gen_new_label(); 5057 int l1 = gen_new_label();
@@ -5085,8 +5081,6 @@ static void gen_sllq(DisasContext *ctx) @@ -5085,8 +5081,6 @@ static void gen_sllq(DisasContext *ctx)
5085 } 5081 }
5086 5082
5087 /* slq - slq. */ 5083 /* slq - slq. */
5088 -GEN_HANDLER(slq, 0x1F, 0x18, 0x04, 0x00000000, PPC_POWER_BR);  
5089 -  
5090 static void gen_slq(DisasContext *ctx) 5084 static void gen_slq(DisasContext *ctx)
5091 { 5085 {
5092 int l1 = gen_new_label(); 5086 int l1 = gen_new_label();
@@ -5110,8 +5104,6 @@ static void gen_slq(DisasContext *ctx) @@ -5110,8 +5104,6 @@ static void gen_slq(DisasContext *ctx)
5110 } 5104 }
5111 5105
5112 /* sraiq - sraiq. */ 5106 /* sraiq - sraiq. */
5113 -GEN_HANDLER(sraiq, 0x1F, 0x18, 0x1D, 0x00000000, PPC_POWER_BR);  
5114 -  
5115 static void gen_sraiq(DisasContext *ctx) 5107 static void gen_sraiq(DisasContext *ctx)
5116 { 5108 {
5117 int sh = SH(ctx->opcode); 5109 int sh = SH(ctx->opcode);
@@ -5135,8 +5127,6 @@ static void gen_sraiq(DisasContext *ctx) @@ -5135,8 +5127,6 @@ static void gen_sraiq(DisasContext *ctx)
5135 } 5127 }
5136 5128
5137 /* sraq - sraq. */ 5129 /* sraq - sraq. */
5138 -GEN_HANDLER(sraq, 0x1F, 0x18, 0x1C, 0x00000000, PPC_POWER_BR);  
5139 -  
5140 static void gen_sraq(DisasContext *ctx) 5130 static void gen_sraq(DisasContext *ctx)
5141 { 5131 {
5142 int l1 = gen_new_label(); 5132 int l1 = gen_new_label();
@@ -5170,8 +5160,6 @@ static void gen_sraq(DisasContext *ctx) @@ -5170,8 +5160,6 @@ static void gen_sraq(DisasContext *ctx)
5170 } 5160 }
5171 5161
5172 /* sre - sre. */ 5162 /* sre - sre. */
5173 -GEN_HANDLER(sre, 0x1F, 0x19, 0x14, 0x00000000, PPC_POWER_BR);  
5174 -  
5175 static void gen_sre(DisasContext *ctx) 5163 static void gen_sre(DisasContext *ctx)
5176 { 5164 {
5177 TCGv t0 = tcg_temp_new(); 5165 TCGv t0 = tcg_temp_new();
@@ -5190,8 +5178,6 @@ static void gen_sre(DisasContext *ctx) @@ -5190,8 +5178,6 @@ static void gen_sre(DisasContext *ctx)
5190 } 5178 }
5191 5179
5192 /* srea - srea. */ 5180 /* srea - srea. */
5193 -GEN_HANDLER(srea, 0x1F, 0x19, 0x1C, 0x00000000, PPC_POWER_BR);  
5194 -  
5195 static void gen_srea(DisasContext *ctx) 5181 static void gen_srea(DisasContext *ctx)
5196 { 5182 {
5197 TCGv t0 = tcg_temp_new(); 5183 TCGv t0 = tcg_temp_new();
@@ -5207,8 +5193,6 @@ static void gen_srea(DisasContext *ctx) @@ -5207,8 +5193,6 @@ static void gen_srea(DisasContext *ctx)
5207 } 5193 }
5208 5194
5209 /* sreq */ 5195 /* sreq */
5210 -GEN_HANDLER(sreq, 0x1F, 0x19, 0x16, 0x00000000, PPC_POWER_BR);  
5211 -  
5212 static void gen_sreq(DisasContext *ctx) 5196 static void gen_sreq(DisasContext *ctx)
5213 { 5197 {
5214 TCGv t0 = tcg_temp_new(); 5198 TCGv t0 = tcg_temp_new();
@@ -5231,8 +5215,6 @@ static void gen_sreq(DisasContext *ctx) @@ -5231,8 +5215,6 @@ static void gen_sreq(DisasContext *ctx)
5231 } 5215 }
5232 5216
5233 /* sriq */ 5217 /* sriq */
5234 -GEN_HANDLER(sriq, 0x1F, 0x18, 0x15, 0x00000000, PPC_POWER_BR);  
5235 -  
5236 static void gen_sriq(DisasContext *ctx) 5218 static void gen_sriq(DisasContext *ctx)
5237 { 5219 {
5238 int sh = SH(ctx->opcode); 5220 int sh = SH(ctx->opcode);
@@ -5250,8 +5232,6 @@ static void gen_sriq(DisasContext *ctx) @@ -5250,8 +5232,6 @@ static void gen_sriq(DisasContext *ctx)
5250 } 5232 }
5251 5233
5252 /* srliq */ 5234 /* srliq */
5253 -GEN_HANDLER(srliq, 0x1F, 0x18, 0x17, 0x00000000, PPC_POWER_BR);  
5254 -  
5255 static void gen_srliq(DisasContext *ctx) 5235 static void gen_srliq(DisasContext *ctx)
5256 { 5236 {
5257 int sh = SH(ctx->opcode); 5237 int sh = SH(ctx->opcode);
@@ -5270,8 +5250,6 @@ static void gen_srliq(DisasContext *ctx) @@ -5270,8 +5250,6 @@ static void gen_srliq(DisasContext *ctx)
5270 } 5250 }
5271 5251
5272 /* srlq */ 5252 /* srlq */
5273 -GEN_HANDLER(srlq, 0x1F, 0x18, 0x16, 0x00000000, PPC_POWER_BR);  
5274 -  
5275 static void gen_srlq(DisasContext *ctx) 5253 static void gen_srlq(DisasContext *ctx)
5276 { 5254 {
5277 int l1 = gen_new_label(); 5255 int l1 = gen_new_label();
@@ -5302,8 +5280,6 @@ static void gen_srlq(DisasContext *ctx) @@ -5302,8 +5280,6 @@ static void gen_srlq(DisasContext *ctx)
5302 } 5280 }
5303 5281
5304 /* srq */ 5282 /* srq */
5305 -GEN_HANDLER(srq, 0x1F, 0x18, 0x14, 0x00000000, PPC_POWER_BR);  
5306 -  
5307 static void gen_srq(DisasContext *ctx) 5283 static void gen_srq(DisasContext *ctx)
5308 { 5284 {
5309 int l1 = gen_new_label(); 5285 int l1 = gen_new_label();
@@ -5327,9 +5303,8 @@ static void gen_srq(DisasContext *ctx) @@ -5327,9 +5303,8 @@ static void gen_srq(DisasContext *ctx)
5327 } 5303 }
5328 5304
5329 /* PowerPC 602 specific instructions */ 5305 /* PowerPC 602 specific instructions */
5330 -/* dsa */  
5331 -GEN_HANDLER(dsa, 0x1F, 0x14, 0x13, 0x03FFF801, PPC_602_SPEC);  
5332 5306
  5307 +/* dsa */
5333 static void gen_dsa(DisasContext *ctx) 5308 static void gen_dsa(DisasContext *ctx)
5334 { 5309 {
5335 /* XXX: TODO */ 5310 /* XXX: TODO */
@@ -5337,8 +5312,6 @@ static void gen_dsa(DisasContext *ctx) @@ -5337,8 +5312,6 @@ static void gen_dsa(DisasContext *ctx)
5337 } 5312 }
5338 5313
5339 /* esa */ 5314 /* esa */
5340 -GEN_HANDLER(esa, 0x1F, 0x14, 0x12, 0x03FFF801, PPC_602_SPEC);  
5341 -  
5342 static void gen_esa(DisasContext *ctx) 5315 static void gen_esa(DisasContext *ctx)
5343 { 5316 {
5344 /* XXX: TODO */ 5317 /* XXX: TODO */
@@ -5346,8 +5319,6 @@ static void gen_esa(DisasContext *ctx) @@ -5346,8 +5319,6 @@ static void gen_esa(DisasContext *ctx)
5346 } 5319 }
5347 5320
5348 /* mfrom */ 5321 /* mfrom */
5349 -GEN_HANDLER(mfrom, 0x1F, 0x09, 0x08, 0x03E0F801, PPC_602_SPEC);  
5350 -  
5351 static void gen_mfrom(DisasContext *ctx) 5322 static void gen_mfrom(DisasContext *ctx)
5352 { 5323 {
5353 #if defined(CONFIG_USER_ONLY) 5324 #if defined(CONFIG_USER_ONLY)
@@ -5362,9 +5333,8 @@ static void gen_mfrom(DisasContext *ctx) @@ -5362,9 +5333,8 @@ static void gen_mfrom(DisasContext *ctx)
5362 } 5333 }
5363 5334
5364 /* 602 - 603 - G2 TLB management */ 5335 /* 602 - 603 - G2 TLB management */
5365 -/* tlbld */  
5366 -GEN_HANDLER2(tlbld_6xx, "tlbld", 0x1F, 0x12, 0x1E, 0x03FF0001, PPC_6xx_TLB);  
5367 5336
  5337 +/* tlbld */
5368 static void gen_tlbld_6xx(DisasContext *ctx) 5338 static void gen_tlbld_6xx(DisasContext *ctx)
5369 { 5339 {
5370 #if defined(CONFIG_USER_ONLY) 5340 #if defined(CONFIG_USER_ONLY)
@@ -5379,8 +5349,6 @@ static void gen_tlbld_6xx(DisasContext *ctx) @@ -5379,8 +5349,6 @@ static void gen_tlbld_6xx(DisasContext *ctx)
5379 } 5349 }
5380 5350
5381 /* tlbli */ 5351 /* tlbli */
5382 -GEN_HANDLER2(tlbli_6xx, "tlbli", 0x1F, 0x12, 0x1F, 0x03FF0001, PPC_6xx_TLB);  
5383 -  
5384 static void gen_tlbli_6xx(DisasContext *ctx) 5352 static void gen_tlbli_6xx(DisasContext *ctx)
5385 { 5353 {
5386 #if defined(CONFIG_USER_ONLY) 5354 #if defined(CONFIG_USER_ONLY)
@@ -5395,9 +5363,8 @@ static void gen_tlbli_6xx(DisasContext *ctx) @@ -5395,9 +5363,8 @@ static void gen_tlbli_6xx(DisasContext *ctx)
5395 } 5363 }
5396 5364
5397 /* 74xx TLB management */ 5365 /* 74xx TLB management */
5398 -/* tlbld */  
5399 -GEN_HANDLER2(tlbld_74xx, "tlbld", 0x1F, 0x12, 0x1E, 0x03FF0001, PPC_74xx_TLB);  
5400 5366
  5367 +/* tlbld */
5401 static void gen_tlbld_74xx(DisasContext *ctx) 5368 static void gen_tlbld_74xx(DisasContext *ctx)
5402 { 5369 {
5403 #if defined(CONFIG_USER_ONLY) 5370 #if defined(CONFIG_USER_ONLY)
@@ -5412,8 +5379,6 @@ static void gen_tlbld_74xx(DisasContext *ctx) @@ -5412,8 +5379,6 @@ static void gen_tlbld_74xx(DisasContext *ctx)
5412 } 5379 }
5413 5380
5414 /* tlbli */ 5381 /* tlbli */
5415 -GEN_HANDLER2(tlbli_74xx, "tlbli", 0x1F, 0x12, 0x1F, 0x03FF0001, PPC_74xx_TLB);  
5416 -  
5417 static void gen_tlbli_74xx(DisasContext *ctx) 5382 static void gen_tlbli_74xx(DisasContext *ctx)
5418 { 5383 {
5419 #if defined(CONFIG_USER_ONLY) 5384 #if defined(CONFIG_USER_ONLY)
@@ -5428,17 +5393,14 @@ static void gen_tlbli_74xx(DisasContext *ctx) @@ -5428,17 +5393,14 @@ static void gen_tlbli_74xx(DisasContext *ctx)
5428 } 5393 }
5429 5394
5430 /* POWER instructions not in PowerPC 601 */ 5395 /* POWER instructions not in PowerPC 601 */
5431 -/* clf */  
5432 -GEN_HANDLER(clf, 0x1F, 0x16, 0x03, 0x03E00000, PPC_POWER);  
5433 5396
  5397 +/* clf */
5434 static void gen_clf(DisasContext *ctx) 5398 static void gen_clf(DisasContext *ctx)
5435 { 5399 {
5436 /* Cache line flush: implemented as no-op */ 5400 /* Cache line flush: implemented as no-op */
5437 } 5401 }
5438 5402
5439 /* cli */ 5403 /* cli */
5440 -GEN_HANDLER(cli, 0x1F, 0x16, 0x0F, 0x03E00000, PPC_POWER);  
5441 -  
5442 static void gen_cli(DisasContext *ctx) 5404 static void gen_cli(DisasContext *ctx)
5443 { 5405 {
5444 /* Cache line invalidate: privileged and treated as no-op */ 5406 /* Cache line invalidate: privileged and treated as no-op */
@@ -5453,15 +5415,11 @@ static void gen_cli(DisasContext *ctx) @@ -5453,15 +5415,11 @@ static void gen_cli(DisasContext *ctx)
5453 } 5415 }
5454 5416
5455 /* dclst */ 5417 /* dclst */
5456 -GEN_HANDLER(dclst, 0x1F, 0x16, 0x13, 0x03E00000, PPC_POWER);  
5457 -  
5458 static void gen_dclst(DisasContext *ctx) 5418 static void gen_dclst(DisasContext *ctx)
5459 { 5419 {
5460 /* Data cache line store: treated as no-op */ 5420 /* Data cache line store: treated as no-op */
5461 } 5421 }
5462 5422
5463 -GEN_HANDLER(mfsri, 0x1F, 0x13, 0x13, 0x00000001, PPC_POWER);  
5464 -  
5465 static void gen_mfsri(DisasContext *ctx) 5423 static void gen_mfsri(DisasContext *ctx)
5466 { 5424 {
5467 #if defined(CONFIG_USER_ONLY) 5425 #if defined(CONFIG_USER_ONLY)
@@ -5485,8 +5443,6 @@ static void gen_mfsri(DisasContext *ctx) @@ -5485,8 +5443,6 @@ static void gen_mfsri(DisasContext *ctx)
5485 #endif 5443 #endif
5486 } 5444 }
5487 5445
5488 -GEN_HANDLER(rac, 0x1F, 0x12, 0x19, 0x00000001, PPC_POWER);  
5489 -  
5490 static void gen_rac(DisasContext *ctx) 5446 static void gen_rac(DisasContext *ctx)
5491 { 5447 {
5492 #if defined(CONFIG_USER_ONLY) 5448 #if defined(CONFIG_USER_ONLY)
@@ -5504,8 +5460,6 @@ static void gen_rac(DisasContext *ctx) @@ -5504,8 +5460,6 @@ static void gen_rac(DisasContext *ctx)
5504 #endif 5460 #endif
5505 } 5461 }
5506 5462
5507 -GEN_HANDLER(rfsvc, 0x13, 0x12, 0x02, 0x03FFF0001, PPC_POWER);  
5508 -  
5509 static void gen_rfsvc(DisasContext *ctx) 5463 static void gen_rfsvc(DisasContext *ctx)
5510 { 5464 {
5511 #if defined(CONFIG_USER_ONLY) 5465 #if defined(CONFIG_USER_ONLY)
@@ -5526,8 +5480,6 @@ static void gen_rfsvc(DisasContext *ctx) @@ -5526,8 +5480,6 @@ static void gen_rfsvc(DisasContext *ctx)
5526 /* Quad manipulation (load/store two floats at a time) */ 5480 /* Quad manipulation (load/store two floats at a time) */
5527 5481
5528 /* lfq */ 5482 /* lfq */
5529 -GEN_HANDLER(lfq, 0x38, 0xFF, 0xFF, 0x00000003, PPC_POWER2);  
5530 -  
5531 static void gen_lfq(DisasContext *ctx) 5483 static void gen_lfq(DisasContext *ctx)
5532 { 5484 {
5533 int rd = rD(ctx->opcode); 5485 int rd = rD(ctx->opcode);
@@ -5542,8 +5494,6 @@ static void gen_lfq(DisasContext *ctx) @@ -5542,8 +5494,6 @@ static void gen_lfq(DisasContext *ctx)
5542 } 5494 }
5543 5495
5544 /* lfqu */ 5496 /* lfqu */
5545 -GEN_HANDLER(lfqu, 0x39, 0xFF, 0xFF, 0x00000003, PPC_POWER2);  
5546 -  
5547 static void gen_lfqu(DisasContext *ctx) 5497 static void gen_lfqu(DisasContext *ctx)
5548 { 5498 {
5549 int ra = rA(ctx->opcode); 5499 int ra = rA(ctx->opcode);
@@ -5563,8 +5513,6 @@ static void gen_lfqu(DisasContext *ctx) @@ -5563,8 +5513,6 @@ static void gen_lfqu(DisasContext *ctx)
5563 } 5513 }
5564 5514
5565 /* lfqux */ 5515 /* lfqux */
5566 -GEN_HANDLER(lfqux, 0x1F, 0x17, 0x19, 0x00000001, PPC_POWER2);  
5567 -  
5568 static void gen_lfqux(DisasContext *ctx) 5516 static void gen_lfqux(DisasContext *ctx)
5569 { 5517 {
5570 int ra = rA(ctx->opcode); 5518 int ra = rA(ctx->opcode);
@@ -5584,8 +5532,6 @@ static void gen_lfqux(DisasContext *ctx) @@ -5584,8 +5532,6 @@ static void gen_lfqux(DisasContext *ctx)
5584 } 5532 }
5585 5533
5586 /* lfqx */ 5534 /* lfqx */
5587 -GEN_HANDLER(lfqx, 0x1F, 0x17, 0x18, 0x00000001, PPC_POWER2);  
5588 -  
5589 static void gen_lfqx(DisasContext *ctx) 5535 static void gen_lfqx(DisasContext *ctx)
5590 { 5536 {
5591 int rd = rD(ctx->opcode); 5537 int rd = rD(ctx->opcode);
@@ -5600,8 +5546,6 @@ static void gen_lfqx(DisasContext *ctx) @@ -5600,8 +5546,6 @@ static void gen_lfqx(DisasContext *ctx)
5600 } 5546 }
5601 5547
5602 /* stfq */ 5548 /* stfq */
5603 -GEN_HANDLER(stfq, 0x3C, 0xFF, 0xFF, 0x00000003, PPC_POWER2);  
5604 -  
5605 static void gen_stfq(DisasContext *ctx) 5549 static void gen_stfq(DisasContext *ctx)
5606 { 5550 {
5607 int rd = rD(ctx->opcode); 5551 int rd = rD(ctx->opcode);
@@ -5616,8 +5560,6 @@ static void gen_stfq(DisasContext *ctx) @@ -5616,8 +5560,6 @@ static void gen_stfq(DisasContext *ctx)
5616 } 5560 }
5617 5561
5618 /* stfqu */ 5562 /* stfqu */
5619 -GEN_HANDLER(stfqu, 0x3D, 0xFF, 0xFF, 0x00000003, PPC_POWER2);  
5620 -  
5621 static void gen_stfqu(DisasContext *ctx) 5563 static void gen_stfqu(DisasContext *ctx)
5622 { 5564 {
5623 int ra = rA(ctx->opcode); 5565 int ra = rA(ctx->opcode);
@@ -5637,8 +5579,6 @@ static void gen_stfqu(DisasContext *ctx) @@ -5637,8 +5579,6 @@ static void gen_stfqu(DisasContext *ctx)
5637 } 5579 }
5638 5580
5639 /* stfqux */ 5581 /* stfqux */
5640 -GEN_HANDLER(stfqux, 0x1F, 0x17, 0x1D, 0x00000001, PPC_POWER2);  
5641 -  
5642 static void gen_stfqux(DisasContext *ctx) 5582 static void gen_stfqux(DisasContext *ctx)
5643 { 5583 {
5644 int ra = rA(ctx->opcode); 5584 int ra = rA(ctx->opcode);
@@ -5658,8 +5598,6 @@ static void gen_stfqux(DisasContext *ctx) @@ -5658,8 +5598,6 @@ static void gen_stfqux(DisasContext *ctx)
5658 } 5598 }
5659 5599
5660 /* stfqx */ 5600 /* stfqx */
5661 -GEN_HANDLER(stfqx, 0x1F, 0x17, 0x1C, 0x00000001, PPC_POWER2);  
5662 -  
5663 static void gen_stfqx(DisasContext *ctx) 5601 static void gen_stfqx(DisasContext *ctx)
5664 { 5602 {
5665 int rd = rD(ctx->opcode); 5603 int rd = rD(ctx->opcode);
@@ -5674,9 +5612,8 @@ static void gen_stfqx(DisasContext *ctx) @@ -5674,9 +5612,8 @@ static void gen_stfqx(DisasContext *ctx)
5674 } 5612 }
5675 5613
5676 /* BookE specific instructions */ 5614 /* BookE specific instructions */
5677 -/* XXX: not implemented on 440 ? */  
5678 -GEN_HANDLER(mfapidi, 0x1F, 0x13, 0x08, 0x0000F801, PPC_MFAPIDI);  
5679 5615
  5616 +/* XXX: not implemented on 440 ? */
5680 static void gen_mfapidi(DisasContext *ctx) 5617 static void gen_mfapidi(DisasContext *ctx)
5681 { 5618 {
5682 /* XXX: TODO */ 5619 /* XXX: TODO */
@@ -5684,8 +5621,6 @@ static void gen_mfapidi(DisasContext *ctx) @@ -5684,8 +5621,6 @@ static void gen_mfapidi(DisasContext *ctx)
5684 } 5621 }
5685 5622
5686 /* XXX: not implemented on 440 ? */ 5623 /* XXX: not implemented on 440 ? */
5687 -GEN_HANDLER(tlbiva, 0x1F, 0x12, 0x18, 0x03FFF801, PPC_TLBIVA);  
5688 -  
5689 static void gen_tlbiva(DisasContext *ctx) 5624 static void gen_tlbiva(DisasContext *ctx)
5690 { 5625 {
5691 #if defined(CONFIG_USER_ONLY) 5626 #if defined(CONFIG_USER_ONLY)
@@ -5921,8 +5856,6 @@ GEN_MAC_HANDLER(mullhw, 0x08, 0x0D); @@ -5921,8 +5856,6 @@ GEN_MAC_HANDLER(mullhw, 0x08, 0x0D);
5921 GEN_MAC_HANDLER(mullhwu, 0x08, 0x0C); 5856 GEN_MAC_HANDLER(mullhwu, 0x08, 0x0C);
5922 5857
5923 /* mfdcr */ 5858 /* mfdcr */
5924 -GEN_HANDLER(mfdcr, 0x1F, 0x03, 0x0A, 0x00000001, PPC_DCR);  
5925 -  
5926 static void gen_mfdcr(DisasContext *ctx) 5859 static void gen_mfdcr(DisasContext *ctx)
5927 { 5860 {
5928 #if defined(CONFIG_USER_ONLY) 5861 #if defined(CONFIG_USER_ONLY)
@@ -5942,8 +5875,6 @@ static void gen_mfdcr(DisasContext *ctx) @@ -5942,8 +5875,6 @@ static void gen_mfdcr(DisasContext *ctx)
5942 } 5875 }
5943 5876
5944 /* mtdcr */ 5877 /* mtdcr */
5945 -GEN_HANDLER(mtdcr, 0x1F, 0x03, 0x0E, 0x00000001, PPC_DCR);  
5946 -  
5947 static void gen_mtdcr(DisasContext *ctx) 5878 static void gen_mtdcr(DisasContext *ctx)
5948 { 5879 {
5949 #if defined(CONFIG_USER_ONLY) 5880 #if defined(CONFIG_USER_ONLY)
@@ -5964,8 +5895,6 @@ static void gen_mtdcr(DisasContext *ctx) @@ -5964,8 +5895,6 @@ static void gen_mtdcr(DisasContext *ctx)
5964 5895
5965 /* mfdcrx */ 5896 /* mfdcrx */
5966 /* XXX: not implemented on 440 ? */ 5897 /* XXX: not implemented on 440 ? */
5967 -GEN_HANDLER(mfdcrx, 0x1F, 0x03, 0x08, 0x00000000, PPC_DCRX);  
5968 -  
5969 static void gen_mfdcrx(DisasContext *ctx) 5898 static void gen_mfdcrx(DisasContext *ctx)
5970 { 5899 {
5971 #if defined(CONFIG_USER_ONLY) 5900 #if defined(CONFIG_USER_ONLY)
@@ -5984,8 +5913,6 @@ static void gen_mfdcrx(DisasContext *ctx) @@ -5984,8 +5913,6 @@ static void gen_mfdcrx(DisasContext *ctx)
5984 5913
5985 /* mtdcrx */ 5914 /* mtdcrx */
5986 /* XXX: not implemented on 440 ? */ 5915 /* XXX: not implemented on 440 ? */
5987 -GEN_HANDLER(mtdcrx, 0x1F, 0x03, 0x0C, 0x00000000, PPC_DCRX);  
5988 -  
5989 static void gen_mtdcrx(DisasContext *ctx) 5916 static void gen_mtdcrx(DisasContext *ctx)
5990 { 5917 {
5991 #if defined(CONFIG_USER_ONLY) 5918 #if defined(CONFIG_USER_ONLY)
@@ -6003,8 +5930,6 @@ static void gen_mtdcrx(DisasContext *ctx) @@ -6003,8 +5930,6 @@ static void gen_mtdcrx(DisasContext *ctx)
6003 } 5930 }
6004 5931
6005 /* mfdcrux (PPC 460) : user-mode access to DCR */ 5932 /* mfdcrux (PPC 460) : user-mode access to DCR */
6006 -GEN_HANDLER(mfdcrux, 0x1F, 0x03, 0x09, 0x00000000, PPC_DCRUX);  
6007 -  
6008 static void gen_mfdcrux(DisasContext *ctx) 5933 static void gen_mfdcrux(DisasContext *ctx)
6009 { 5934 {
6010 /* NIP cannot be restored if the memory exception comes from an helper */ 5935 /* NIP cannot be restored if the memory exception comes from an helper */
@@ -6014,8 +5939,6 @@ static void gen_mfdcrux(DisasContext *ctx) @@ -6014,8 +5939,6 @@ static void gen_mfdcrux(DisasContext *ctx)
6014 } 5939 }
6015 5940
6016 /* mtdcrux (PPC 460) : user-mode access to DCR */ 5941 /* mtdcrux (PPC 460) : user-mode access to DCR */
6017 -GEN_HANDLER(mtdcrux, 0x1F, 0x03, 0x0D, 0x00000000, PPC_DCRUX);  
6018 -  
6019 static void gen_mtdcrux(DisasContext *ctx) 5942 static void gen_mtdcrux(DisasContext *ctx)
6020 { 5943 {
6021 /* NIP cannot be restored if the memory exception comes from an helper */ 5944 /* NIP cannot be restored if the memory exception comes from an helper */
@@ -6025,8 +5948,6 @@ static void gen_mtdcrux(DisasContext *ctx) @@ -6025,8 +5948,6 @@ static void gen_mtdcrux(DisasContext *ctx)
6025 } 5948 }
6026 5949
6027 /* dccci */ 5950 /* dccci */
6028 -GEN_HANDLER(dccci, 0x1F, 0x06, 0x0E, 0x03E00001, PPC_4xx_COMMON);  
6029 -  
6030 static void gen_dccci(DisasContext *ctx) 5951 static void gen_dccci(DisasContext *ctx)
6031 { 5952 {
6032 #if defined(CONFIG_USER_ONLY) 5953 #if defined(CONFIG_USER_ONLY)
@@ -6041,8 +5962,6 @@ static void gen_dccci(DisasContext *ctx) @@ -6041,8 +5962,6 @@ static void gen_dccci(DisasContext *ctx)
6041 } 5962 }
6042 5963
6043 /* dcread */ 5964 /* dcread */
6044 -GEN_HANDLER(dcread, 0x1F, 0x06, 0x0F, 0x00000001, PPC_4xx_COMMON);  
6045 -  
6046 static void gen_dcread(DisasContext *ctx) 5965 static void gen_dcread(DisasContext *ctx)
6047 { 5966 {
6048 #if defined(CONFIG_USER_ONLY) 5967 #if defined(CONFIG_USER_ONLY)
@@ -6065,8 +5984,6 @@ static void gen_dcread(DisasContext *ctx) @@ -6065,8 +5984,6 @@ static void gen_dcread(DisasContext *ctx)
6065 } 5984 }
6066 5985
6067 /* icbt */ 5986 /* icbt */
6068 -GEN_HANDLER2(icbt_40x, "icbt", 0x1F, 0x06, 0x08, 0x03E00001, PPC_40x_ICBT);  
6069 -  
6070 static void gen_icbt_40x(DisasContext *ctx) 5987 static void gen_icbt_40x(DisasContext *ctx)
6071 { 5988 {
6072 /* interpreted as no-op */ 5989 /* interpreted as no-op */
@@ -6076,8 +5993,6 @@ static void gen_icbt_40x(DisasContext *ctx) @@ -6076,8 +5993,6 @@ static void gen_icbt_40x(DisasContext *ctx)
6076 } 5993 }
6077 5994
6078 /* iccci */ 5995 /* iccci */
6079 -GEN_HANDLER(iccci, 0x1F, 0x06, 0x1E, 0x00000001, PPC_4xx_COMMON);  
6080 -  
6081 static void gen_iccci(DisasContext *ctx) 5996 static void gen_iccci(DisasContext *ctx)
6082 { 5997 {
6083 #if defined(CONFIG_USER_ONLY) 5998 #if defined(CONFIG_USER_ONLY)
@@ -6092,8 +6007,6 @@ static void gen_iccci(DisasContext *ctx) @@ -6092,8 +6007,6 @@ static void gen_iccci(DisasContext *ctx)
6092 } 6007 }
6093 6008
6094 /* icread */ 6009 /* icread */
6095 -GEN_HANDLER(icread, 0x1F, 0x06, 0x1F, 0x03E00001, PPC_4xx_COMMON);  
6096 -  
6097 static void gen_icread(DisasContext *ctx) 6010 static void gen_icread(DisasContext *ctx)
6098 { 6011 {
6099 #if defined(CONFIG_USER_ONLY) 6012 #if defined(CONFIG_USER_ONLY)
@@ -6108,8 +6021,6 @@ static void gen_icread(DisasContext *ctx) @@ -6108,8 +6021,6 @@ static void gen_icread(DisasContext *ctx)
6108 } 6021 }
6109 6022
6110 /* rfci (mem_idx only) */ 6023 /* rfci (mem_idx only) */
6111 -GEN_HANDLER2(rfci_40x, "rfci", 0x13, 0x13, 0x01, 0x03FF8001, PPC_40x_EXCP);  
6112 -  
6113 static void gen_rfci_40x(DisasContext *ctx) 6024 static void gen_rfci_40x(DisasContext *ctx)
6114 { 6025 {
6115 #if defined(CONFIG_USER_ONLY) 6026 #if defined(CONFIG_USER_ONLY)
@@ -6125,8 +6036,6 @@ static void gen_rfci_40x(DisasContext *ctx) @@ -6125,8 +6036,6 @@ static void gen_rfci_40x(DisasContext *ctx)
6125 #endif 6036 #endif
6126 } 6037 }
6127 6038
6128 -GEN_HANDLER(rfci, 0x13, 0x13, 0x01, 0x03FF8001, PPC_BOOKE);  
6129 -  
6130 static void gen_rfci(DisasContext *ctx) 6039 static void gen_rfci(DisasContext *ctx)
6131 { 6040 {
6132 #if defined(CONFIG_USER_ONLY) 6041 #if defined(CONFIG_USER_ONLY)
@@ -6143,9 +6052,8 @@ static void gen_rfci(DisasContext *ctx) @@ -6143,9 +6052,8 @@ static void gen_rfci(DisasContext *ctx)
6143 } 6052 }
6144 6053
6145 /* BookE specific */ 6054 /* BookE specific */
6146 -/* XXX: not implemented on 440 ? */  
6147 -GEN_HANDLER(rfdi, 0x13, 0x07, 0x01, 0x03FF8001, PPC_RFDI);  
6148 6055
  6056 +/* XXX: not implemented on 440 ? */
6149 static void gen_rfdi(DisasContext *ctx) 6057 static void gen_rfdi(DisasContext *ctx)
6150 { 6058 {
6151 #if defined(CONFIG_USER_ONLY) 6059 #if defined(CONFIG_USER_ONLY)
@@ -6162,8 +6070,6 @@ static void gen_rfdi(DisasContext *ctx) @@ -6162,8 +6070,6 @@ static void gen_rfdi(DisasContext *ctx)
6162 } 6070 }
6163 6071
6164 /* XXX: not implemented on 440 ? */ 6072 /* XXX: not implemented on 440 ? */
6165 -GEN_HANDLER(rfmci, 0x13, 0x06, 0x01, 0x03FF8001, PPC_RFMCI);  
6166 -  
6167 static void gen_rfmci(DisasContext *ctx) 6073 static void gen_rfmci(DisasContext *ctx)
6168 { 6074 {
6169 #if defined(CONFIG_USER_ONLY) 6075 #if defined(CONFIG_USER_ONLY)
@@ -6180,9 +6086,8 @@ static void gen_rfmci(DisasContext *ctx) @@ -6180,9 +6086,8 @@ static void gen_rfmci(DisasContext *ctx)
6180 } 6086 }
6181 6087
6182 /* TLB management - PowerPC 405 implementation */ 6088 /* TLB management - PowerPC 405 implementation */
6183 -/* tlbre */  
6184 -GEN_HANDLER2(tlbre_40x, "tlbre", 0x1F, 0x12, 0x1D, 0x00000001, PPC_40x_TLB);  
6185 6089
  6090 +/* tlbre */
6186 static void gen_tlbre_40x(DisasContext *ctx) 6091 static void gen_tlbre_40x(DisasContext *ctx)
6187 { 6092 {
6188 #if defined(CONFIG_USER_ONLY) 6093 #if defined(CONFIG_USER_ONLY)
@@ -6207,8 +6112,6 @@ static void gen_tlbre_40x(DisasContext *ctx) @@ -6207,8 +6112,6 @@ static void gen_tlbre_40x(DisasContext *ctx)
6207 } 6112 }
6208 6113
6209 /* tlbsx - tlbsx. */ 6114 /* tlbsx - tlbsx. */
6210 -GEN_HANDLER2(tlbsx_40x, "tlbsx", 0x1F, 0x12, 0x1C, 0x00000000, PPC_40x_TLB);  
6211 -  
6212 static void gen_tlbsx_40x(DisasContext *ctx) 6115 static void gen_tlbsx_40x(DisasContext *ctx)
6213 { 6116 {
6214 #if defined(CONFIG_USER_ONLY) 6117 #if defined(CONFIG_USER_ONLY)
@@ -6236,8 +6139,6 @@ static void gen_tlbsx_40x(DisasContext *ctx) @@ -6236,8 +6139,6 @@ static void gen_tlbsx_40x(DisasContext *ctx)
6236 } 6139 }
6237 6140
6238 /* tlbwe */ 6141 /* tlbwe */
6239 -GEN_HANDLER2(tlbwe_40x, "tlbwe", 0x1F, 0x12, 0x1E, 0x00000001, PPC_40x_TLB);  
6240 -  
6241 static void gen_tlbwe_40x(DisasContext *ctx) 6142 static void gen_tlbwe_40x(DisasContext *ctx)
6242 { 6143 {
6243 #if defined(CONFIG_USER_ONLY) 6144 #if defined(CONFIG_USER_ONLY)
@@ -6262,9 +6163,8 @@ static void gen_tlbwe_40x(DisasContext *ctx) @@ -6262,9 +6163,8 @@ static void gen_tlbwe_40x(DisasContext *ctx)
6262 } 6163 }
6263 6164
6264 /* TLB management - PowerPC 440 implementation */ 6165 /* TLB management - PowerPC 440 implementation */
6265 -/* tlbre */  
6266 -GEN_HANDLER2(tlbre_440, "tlbre", 0x1F, 0x12, 0x1D, 0x00000001, PPC_BOOKE);  
6267 6166
  6167 +/* tlbre */
6268 static void gen_tlbre_440(DisasContext *ctx) 6168 static void gen_tlbre_440(DisasContext *ctx)
6269 { 6169 {
6270 #if defined(CONFIG_USER_ONLY) 6170 #if defined(CONFIG_USER_ONLY)
@@ -6292,8 +6192,6 @@ static void gen_tlbre_440(DisasContext *ctx) @@ -6292,8 +6192,6 @@ static void gen_tlbre_440(DisasContext *ctx)
6292 } 6192 }
6293 6193
6294 /* tlbsx - tlbsx. */ 6194 /* tlbsx - tlbsx. */
6295 -GEN_HANDLER2(tlbsx_440, "tlbsx", 0x1F, 0x12, 0x1C, 0x00000000, PPC_BOOKE);  
6296 -  
6297 static void gen_tlbsx_440(DisasContext *ctx) 6195 static void gen_tlbsx_440(DisasContext *ctx)
6298 { 6196 {
6299 #if defined(CONFIG_USER_ONLY) 6197 #if defined(CONFIG_USER_ONLY)
@@ -6321,8 +6219,6 @@ static void gen_tlbsx_440(DisasContext *ctx) @@ -6321,8 +6219,6 @@ static void gen_tlbsx_440(DisasContext *ctx)
6321 } 6219 }
6322 6220
6323 /* tlbwe */ 6221 /* tlbwe */
6324 -GEN_HANDLER2(tlbwe_440, "tlbwe", 0x1F, 0x12, 0x1E, 0x00000001, PPC_BOOKE);  
6325 -  
6326 static void gen_tlbwe_440(DisasContext *ctx) 6222 static void gen_tlbwe_440(DisasContext *ctx)
6327 { 6223 {
6328 #if defined(CONFIG_USER_ONLY) 6224 #if defined(CONFIG_USER_ONLY)
@@ -6350,8 +6246,6 @@ static void gen_tlbwe_440(DisasContext *ctx) @@ -6350,8 +6246,6 @@ static void gen_tlbwe_440(DisasContext *ctx)
6350 } 6246 }
6351 6247
6352 /* wrtee */ 6248 /* wrtee */
6353 -GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE);  
6354 -  
6355 static void gen_wrtee(DisasContext *ctx) 6249 static void gen_wrtee(DisasContext *ctx)
6356 { 6250 {
6357 #if defined(CONFIG_USER_ONLY) 6251 #if defined(CONFIG_USER_ONLY)
@@ -6375,8 +6269,6 @@ static void gen_wrtee(DisasContext *ctx) @@ -6375,8 +6269,6 @@ static void gen_wrtee(DisasContext *ctx)
6375 } 6269 }
6376 6270
6377 /* wrteei */ 6271 /* wrteei */
6378 -GEN_HANDLER(wrteei, 0x1F, 0x03, 0x05, 0x000EFC01, PPC_WRTEE);  
6379 -  
6380 static void gen_wrteei(DisasContext *ctx) 6272 static void gen_wrteei(DisasContext *ctx)
6381 { 6273 {
6382 #if defined(CONFIG_USER_ONLY) 6274 #if defined(CONFIG_USER_ONLY)
@@ -6397,9 +6289,8 @@ static void gen_wrteei(DisasContext *ctx) @@ -6397,9 +6289,8 @@ static void gen_wrteei(DisasContext *ctx)
6397 } 6289 }
6398 6290
6399 /* PowerPC 440 specific instructions */ 6291 /* PowerPC 440 specific instructions */
6400 -/* dlmzb */  
6401 -GEN_HANDLER(dlmzb, 0x1F, 0x0E, 0x02, 0x00000000, PPC_440_SPEC);  
6402 6292
  6293 +/* dlmzb */
6403 static void gen_dlmzb(DisasContext *ctx) 6294 static void gen_dlmzb(DisasContext *ctx)
6404 { 6295 {
6405 TCGv_i32 t0 = tcg_const_i32(Rc(ctx->opcode)); 6296 TCGv_i32 t0 = tcg_const_i32(Rc(ctx->opcode));
@@ -6409,24 +6300,18 @@ static void gen_dlmzb(DisasContext *ctx) @@ -6409,24 +6300,18 @@ static void gen_dlmzb(DisasContext *ctx)
6409 } 6300 }
6410 6301
6411 /* mbar replaces eieio on 440 */ 6302 /* mbar replaces eieio on 440 */
6412 -GEN_HANDLER(mbar, 0x1F, 0x16, 0x1a, 0x001FF801, PPC_BOOKE);  
6413 -  
6414 static void gen_mbar(DisasContext *ctx) 6303 static void gen_mbar(DisasContext *ctx)
6415 { 6304 {
6416 /* interpreted as no-op */ 6305 /* interpreted as no-op */
6417 } 6306 }
6418 6307
6419 /* msync replaces sync on 440 */ 6308 /* msync replaces sync on 440 */
6420 -GEN_HANDLER(msync, 0x1F, 0x16, 0x12, 0x03FFF801, PPC_BOOKE);  
6421 -  
6422 static void gen_msync(DisasContext *ctx) 6309 static void gen_msync(DisasContext *ctx)
6423 { 6310 {
6424 /* interpreted as no-op */ 6311 /* interpreted as no-op */
6425 } 6312 }
6426 6313
6427 /* icbt */ 6314 /* icbt */
6428 -GEN_HANDLER2(icbt_440, "icbt", 0x1F, 0x16, 0x00, 0x03E00001, PPC_BOOKE);  
6429 -  
6430 static void gen_icbt_440(DisasContext *ctx) 6315 static void gen_icbt_440(DisasContext *ctx)
6431 { 6316 {
6432 /* interpreted as no-op */ 6317 /* interpreted as no-op */
@@ -6553,8 +6438,6 @@ GEN_VR_STVE(bx, 0x07, 0x04); @@ -6553,8 +6438,6 @@ GEN_VR_STVE(bx, 0x07, 0x04);
6553 GEN_VR_STVE(hx, 0x07, 0x05); 6438 GEN_VR_STVE(hx, 0x07, 0x05);
6554 GEN_VR_STVE(wx, 0x07, 0x06); 6439 GEN_VR_STVE(wx, 0x07, 0x06);
6555 6440
6556 -GEN_HANDLER(lvsl, 0x1f, 0x06, 0x00, 0x00000001, PPC_ALTIVEC);  
6557 -  
6558 static void gen_lvsl(DisasContext *ctx) 6441 static void gen_lvsl(DisasContext *ctx)
6559 { 6442 {
6560 TCGv_ptr rd; 6443 TCGv_ptr rd;
@@ -6571,8 +6454,6 @@ static void gen_lvsl(DisasContext *ctx) @@ -6571,8 +6454,6 @@ static void gen_lvsl(DisasContext *ctx)
6571 tcg_temp_free_ptr(rd); 6454 tcg_temp_free_ptr(rd);
6572 } 6455 }
6573 6456
6574 -GEN_HANDLER(lvsr, 0x1f, 0x06, 0x01, 0x00000001, PPC_ALTIVEC);  
6575 -  
6576 static void gen_lvsr(DisasContext *ctx) 6457 static void gen_lvsr(DisasContext *ctx)
6577 { 6458 {
6578 TCGv_ptr rd; 6459 TCGv_ptr rd;
@@ -6589,8 +6470,6 @@ static void gen_lvsr(DisasContext *ctx) @@ -6589,8 +6470,6 @@ static void gen_lvsr(DisasContext *ctx)
6589 tcg_temp_free_ptr(rd); 6470 tcg_temp_free_ptr(rd);
6590 } 6471 }
6591 6472
6592 -GEN_HANDLER(mfvscr, 0x04, 0x2, 0x18, 0x001ff800, PPC_ALTIVEC);  
6593 -  
6594 static void gen_mfvscr(DisasContext *ctx) 6473 static void gen_mfvscr(DisasContext *ctx)
6595 { 6474 {
6596 TCGv_i32 t; 6475 TCGv_i32 t;
@@ -6605,8 +6484,6 @@ static void gen_mfvscr(DisasContext *ctx) @@ -6605,8 +6484,6 @@ static void gen_mfvscr(DisasContext *ctx)
6605 tcg_temp_free_i32(t); 6484 tcg_temp_free_i32(t);
6606 } 6485 }
6607 6486
6608 -GEN_HANDLER(mtvscr, 0x04, 0x2, 0x19, 0x03ff0000, PPC_ALTIVEC);  
6609 -  
6610 static void gen_mtvscr(DisasContext *ctx) 6487 static void gen_mtvscr(DisasContext *ctx)
6611 { 6488 {
6612 TCGv_ptr p; 6489 TCGv_ptr p;
@@ -6881,8 +6758,6 @@ GEN_VXFORM_UIMM(vcfsx, 5, 13); @@ -6881,8 +6758,6 @@ GEN_VXFORM_UIMM(vcfsx, 5, 13);
6881 GEN_VXFORM_UIMM(vctuxs, 5, 14); 6758 GEN_VXFORM_UIMM(vctuxs, 5, 14);
6882 GEN_VXFORM_UIMM(vctsxs, 5, 15); 6759 GEN_VXFORM_UIMM(vctsxs, 5, 15);
6883 6760
6884 -GEN_HANDLER(vsldoi, 0x04, 0x16, 0xFF, 0x00000400, PPC_ALTIVEC);  
6885 -  
6886 static void gen_vsldoi(DisasContext *ctx) 6761 static void gen_vsldoi(DisasContext *ctx)
6887 { 6762 {
6888 TCGv_ptr ra, rb, rd; 6763 TCGv_ptr ra, rb, rd;
@@ -6929,8 +6804,6 @@ static void glue(gen_, name0##_##name1)(DisasContext *ctx) @@ -6929,8 +6804,6 @@ static void glue(gen_, name0##_##name1)(DisasContext *ctx)
6929 6804
6930 GEN_VAFORM_PAIRED(vmhaddshs, vmhraddshs, 16) 6805 GEN_VAFORM_PAIRED(vmhaddshs, vmhraddshs, 16)
6931 6806
6932 -GEN_HANDLER(vmladduhm, 0x04, 0x11, 0xFF, 0x00000000, PPC_ALTIVEC);  
6933 -  
6934 static void gen_vmladduhm(DisasContext *ctx) 6807 static void gen_vmladduhm(DisasContext *ctx)
6935 { 6808 {
6936 TCGv_ptr ra, rb, rc, rd; 6809 TCGv_ptr ra, rb, rc, rd;
@@ -7517,25 +7390,21 @@ static always_inline void gen_evsel (DisasContext *ctx) @@ -7517,25 +7390,21 @@ static always_inline void gen_evsel (DisasContext *ctx)
7517 tcg_temp_free(t2); 7390 tcg_temp_free(t2);
7518 #endif 7391 #endif
7519 } 7392 }
7520 -GEN_HANDLER2(evsel0, "evsel", 0x04, 0x1c, 0x09, 0x00000000, PPC_SPE);  
7521 7393
7522 static void gen_evsel0(DisasContext *ctx) 7394 static void gen_evsel0(DisasContext *ctx)
7523 { 7395 {
7524 gen_evsel(ctx); 7396 gen_evsel(ctx);
7525 } 7397 }
7526 -GEN_HANDLER2(evsel1, "evsel", 0x04, 0x1d, 0x09, 0x00000000, PPC_SPE);  
7527 7398
7528 static void gen_evsel1(DisasContext *ctx) 7399 static void gen_evsel1(DisasContext *ctx)
7529 { 7400 {
7530 gen_evsel(ctx); 7401 gen_evsel(ctx);
7531 } 7402 }
7532 -GEN_HANDLER2(evsel2, "evsel", 0x04, 0x1e, 0x09, 0x00000000, PPC_SPE);  
7533 7403
7534 static void gen_evsel2(DisasContext *ctx) 7404 static void gen_evsel2(DisasContext *ctx)
7535 { 7405 {
7536 gen_evsel(ctx); 7406 gen_evsel(ctx);
7537 } 7407 }
7538 -GEN_HANDLER2(evsel3, "evsel", 0x04, 0x1f, 0x09, 0x00000000, PPC_SPE);  
7539 7408
7540 static void gen_evsel3(DisasContext *ctx) 7409 static void gen_evsel3(DisasContext *ctx)
7541 { 7410 {