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