Commit 1a3fd9c3da4e2d9434a14168306b2fa0abadce18

Authored by ths
1 parent e1bf387e

Remove remaining uses of T0 in the MIPS target.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4788 c046a42c-6fe2-441c-8c8c-71466251a162
target-mips/cpu.h
@@ -140,9 +140,6 @@ struct CPUMIPSState { @@ -140,9 +140,6 @@ struct CPUMIPSState {
140 target_ulong gpr[MIPS_SHADOW_SET_MAX][32]; 140 target_ulong gpr[MIPS_SHADOW_SET_MAX][32];
141 /* Special registers */ 141 /* Special registers */
142 target_ulong PC[MIPS_TC_MAX]; 142 target_ulong PC[MIPS_TC_MAX];
143 -#if TARGET_LONG_BITS > HOST_LONG_BITS  
144 - target_ulong t0;  
145 -#endif  
146 /* temporary hack for FP globals */ 143 /* temporary hack for FP globals */
147 #ifndef USE_HOST_FLOAT_REGS 144 #ifndef USE_HOST_FLOAT_REGS
148 fpr_t ft0; 145 fpr_t ft0;
target-mips/exec.h
@@ -10,12 +10,6 @@ @@ -10,12 +10,6 @@
10 10
11 register struct CPUMIPSState *env asm(AREG0); 11 register struct CPUMIPSState *env asm(AREG0);
12 12
13 -#if TARGET_LONG_BITS > HOST_LONG_BITS  
14 -#define T0 (env->t0)  
15 -#else  
16 -register target_ulong T0 asm(AREG1);  
17 -#endif  
18 -  
19 #if defined (USE_HOST_FLOAT_REGS) 13 #if defined (USE_HOST_FLOAT_REGS)
20 #error "implement me." 14 #error "implement me."
21 #else 15 #else
target-mips/helper.h
@@ -43,40 +43,40 @@ DEF_HELPER(target_ulong, do_msachiu, (target_ulong t0, target_ulong t1)) @@ -43,40 +43,40 @@ DEF_HELPER(target_ulong, do_msachiu, (target_ulong t0, target_ulong t1))
43 43
44 /* CP0 helpers */ 44 /* CP0 helpers */
45 #ifndef CONFIG_USER_ONLY 45 #ifndef CONFIG_USER_ONLY
46 -DEF_HELPER(target_ulong, do_mfc0_mvpcontrol, (target_ulong t0))  
47 -DEF_HELPER(target_ulong, do_mfc0_mvpconf0, (target_ulong t0))  
48 -DEF_HELPER(target_ulong, do_mfc0_mvpconf1, (target_ulong t0))  
49 -DEF_HELPER(target_ulong, do_mfc0_random, (target_ulong t0))  
50 -DEF_HELPER(target_ulong, do_mfc0_tcstatus, (target_ulong t0))  
51 -DEF_HELPER(target_ulong, do_mftc0_tcstatus, (target_ulong t0))  
52 -DEF_HELPER(target_ulong, do_mfc0_tcbind, (target_ulong t0))  
53 -DEF_HELPER(target_ulong, do_mftc0_tcbind, (target_ulong t0))  
54 -DEF_HELPER(target_ulong, do_mfc0_tcrestart, (target_ulong t0))  
55 -DEF_HELPER(target_ulong, do_mftc0_tcrestart, (target_ulong t0))  
56 -DEF_HELPER(target_ulong, do_mfc0_tchalt, (target_ulong t0))  
57 -DEF_HELPER(target_ulong, do_mftc0_tchalt, (target_ulong t0))  
58 -DEF_HELPER(target_ulong, do_mfc0_tccontext, (target_ulong t0))  
59 -DEF_HELPER(target_ulong, do_mftc0_tccontext, (target_ulong t0))  
60 -DEF_HELPER(target_ulong, do_mfc0_tcschedule, (target_ulong t0))  
61 -DEF_HELPER(target_ulong, do_mftc0_tcschedule, (target_ulong t0))  
62 -DEF_HELPER(target_ulong, do_mfc0_tcschefback, (target_ulong t0))  
63 -DEF_HELPER(target_ulong, do_mftc0_tcschefback, (target_ulong t0))  
64 -DEF_HELPER(target_ulong, do_mfc0_count, (target_ulong t0))  
65 -DEF_HELPER(target_ulong, do_mftc0_entryhi, (target_ulong t0))  
66 -DEF_HELPER(target_ulong, do_mftc0_status, (target_ulong t0))  
67 -DEF_HELPER(target_ulong, do_mfc0_lladdr, (target_ulong t0))  
68 -DEF_HELPER(target_ulong, do_mfc0_watchlo, (target_ulong t0, uint32_t sel))  
69 -DEF_HELPER(target_ulong, do_mfc0_watchhi, (target_ulong t0, uint32_t sel))  
70 -DEF_HELPER(target_ulong, do_mfc0_debug, (target_ulong t0))  
71 -DEF_HELPER(target_ulong, do_mftc0_debug, (target_ulong t0)) 46 +DEF_HELPER(target_ulong, do_mfc0_mvpcontrol, (void))
  47 +DEF_HELPER(target_ulong, do_mfc0_mvpconf0, (void))
  48 +DEF_HELPER(target_ulong, do_mfc0_mvpconf1, (void))
  49 +DEF_HELPER(target_ulong, do_mfc0_random, (void))
  50 +DEF_HELPER(target_ulong, do_mfc0_tcstatus, (void))
  51 +DEF_HELPER(target_ulong, do_mftc0_tcstatus, (void))
  52 +DEF_HELPER(target_ulong, do_mfc0_tcbind, (void))
  53 +DEF_HELPER(target_ulong, do_mftc0_tcbind, (void))
  54 +DEF_HELPER(target_ulong, do_mfc0_tcrestart, (void))
  55 +DEF_HELPER(target_ulong, do_mftc0_tcrestart, (void))
  56 +DEF_HELPER(target_ulong, do_mfc0_tchalt, (void))
  57 +DEF_HELPER(target_ulong, do_mftc0_tchalt, (void))
  58 +DEF_HELPER(target_ulong, do_mfc0_tccontext, (void))
  59 +DEF_HELPER(target_ulong, do_mftc0_tccontext, (void))
  60 +DEF_HELPER(target_ulong, do_mfc0_tcschedule, (void))
  61 +DEF_HELPER(target_ulong, do_mftc0_tcschedule, (void))
  62 +DEF_HELPER(target_ulong, do_mfc0_tcschefback, (void))
  63 +DEF_HELPER(target_ulong, do_mftc0_tcschefback, (void))
  64 +DEF_HELPER(target_ulong, do_mfc0_count, (void))
  65 +DEF_HELPER(target_ulong, do_mftc0_entryhi, (void))
  66 +DEF_HELPER(target_ulong, do_mftc0_status, (void))
  67 +DEF_HELPER(target_ulong, do_mfc0_lladdr, (void))
  68 +DEF_HELPER(target_ulong, do_mfc0_watchlo, (uint32_t sel))
  69 +DEF_HELPER(target_ulong, do_mfc0_watchhi, (uint32_t sel))
  70 +DEF_HELPER(target_ulong, do_mfc0_debug, (void))
  71 +DEF_HELPER(target_ulong, do_mftc0_debug, (void))
72 #ifdef TARGET_MIPS64 72 #ifdef TARGET_MIPS64
73 -DEF_HELPER(target_ulong, do_dmfc0_tcrestart, (target_ulong t0))  
74 -DEF_HELPER(target_ulong, do_dmfc0_tchalt, (target_ulong t0))  
75 -DEF_HELPER(target_ulong, do_dmfc0_tccontext, (target_ulong t0))  
76 -DEF_HELPER(target_ulong, do_dmfc0_tcschedule, (target_ulong t0))  
77 -DEF_HELPER(target_ulong, do_dmfc0_tcschefback, (target_ulong t0))  
78 -DEF_HELPER(target_ulong, do_dmfc0_lladdr, (target_ulong t0))  
79 -DEF_HELPER(target_ulong, do_dmfc0_watchlo, (target_ulong t0, uint32_t sel)) 73 +DEF_HELPER(target_ulong, do_dmfc0_tcrestart, (void))
  74 +DEF_HELPER(target_ulong, do_dmfc0_tchalt, (void))
  75 +DEF_HELPER(target_ulong, do_dmfc0_tccontext, (void))
  76 +DEF_HELPER(target_ulong, do_dmfc0_tcschedule, (void))
  77 +DEF_HELPER(target_ulong, do_dmfc0_tcschefback, (void))
  78 +DEF_HELPER(target_ulong, do_dmfc0_lladdr, (void))
  79 +DEF_HELPER(target_ulong, do_dmfc0_watchlo, (uint32_t sel))
80 #endif /* TARGET_MIPS64 */ 80 #endif /* TARGET_MIPS64 */
81 81
82 DEF_HELPER(void, do_mtc0_index, (target_ulong t0)) 82 DEF_HELPER(void, do_mtc0_index, (target_ulong t0))
target-mips/op_helper.c
@@ -650,126 +650,127 @@ void cpu_mips_tlb_flush (CPUState *env, int flush_global) @@ -650,126 +650,127 @@ void cpu_mips_tlb_flush (CPUState *env, int flush_global)
650 #else 650 #else
651 651
652 /* CP0 helpers */ 652 /* CP0 helpers */
653 -target_ulong do_mfc0_mvpcontrol (target_ulong t0) 653 +target_ulong do_mfc0_mvpcontrol (void)
654 { 654 {
655 return env->mvp->CP0_MVPControl; 655 return env->mvp->CP0_MVPControl;
656 } 656 }
657 657
658 -target_ulong do_mfc0_mvpconf0 (target_ulong t0) 658 +target_ulong do_mfc0_mvpconf0 (void)
659 { 659 {
660 return env->mvp->CP0_MVPConf0; 660 return env->mvp->CP0_MVPConf0;
661 } 661 }
662 662
663 -target_ulong do_mfc0_mvpconf1 (target_ulong t0) 663 +target_ulong do_mfc0_mvpconf1 (void)
664 { 664 {
665 return env->mvp->CP0_MVPConf1; 665 return env->mvp->CP0_MVPConf1;
666 } 666 }
667 667
668 -target_ulong do_mfc0_random (target_ulong t0) 668 +target_ulong do_mfc0_random (void)
669 { 669 {
670 return (int32_t)cpu_mips_get_random(env); 670 return (int32_t)cpu_mips_get_random(env);
671 } 671 }
672 672
673 -target_ulong do_mfc0_tcstatus (target_ulong t0) 673 +target_ulong do_mfc0_tcstatus (void)
674 { 674 {
675 return env->CP0_TCStatus[env->current_tc]; 675 return env->CP0_TCStatus[env->current_tc];
676 } 676 }
677 677
678 -target_ulong do_mftc0_tcstatus(target_ulong t0) 678 +target_ulong do_mftc0_tcstatus(void)
679 { 679 {
680 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 680 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
681 681
682 return env->CP0_TCStatus[other_tc]; 682 return env->CP0_TCStatus[other_tc];
683 } 683 }
684 684
685 -target_ulong do_mfc0_tcbind (target_ulong t0) 685 +target_ulong do_mfc0_tcbind (void)
686 { 686 {
687 return env->CP0_TCBind[env->current_tc]; 687 return env->CP0_TCBind[env->current_tc];
688 } 688 }
689 689
690 -target_ulong do_mftc0_tcbind(target_ulong t0) 690 +target_ulong do_mftc0_tcbind(void)
691 { 691 {
692 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 692 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
693 693
694 return env->CP0_TCBind[other_tc]; 694 return env->CP0_TCBind[other_tc];
695 } 695 }
696 696
697 -target_ulong do_mfc0_tcrestart (target_ulong t0) 697 +target_ulong do_mfc0_tcrestart (void)
698 { 698 {
699 return env->PC[env->current_tc]; 699 return env->PC[env->current_tc];
700 } 700 }
701 701
702 -target_ulong do_mftc0_tcrestart(target_ulong t0) 702 +target_ulong do_mftc0_tcrestart(void)
703 { 703 {
704 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 704 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
705 705
706 return env->PC[other_tc]; 706 return env->PC[other_tc];
707 } 707 }
708 708
709 -target_ulong do_mfc0_tchalt (target_ulong t0) 709 +target_ulong do_mfc0_tchalt (void)
710 { 710 {
711 return env->CP0_TCHalt[env->current_tc]; 711 return env->CP0_TCHalt[env->current_tc];
712 } 712 }
713 713
714 -target_ulong do_mftc0_tchalt(target_ulong t0) 714 +target_ulong do_mftc0_tchalt(void)
715 { 715 {
716 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 716 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
717 717
718 return env->CP0_TCHalt[other_tc]; 718 return env->CP0_TCHalt[other_tc];
719 } 719 }
720 720
721 -target_ulong do_mfc0_tccontext (target_ulong t0) 721 +target_ulong do_mfc0_tccontext (void)
722 { 722 {
723 return env->CP0_TCContext[env->current_tc]; 723 return env->CP0_TCContext[env->current_tc];
724 } 724 }
725 725
726 -target_ulong do_mftc0_tccontext(target_ulong t0) 726 +target_ulong do_mftc0_tccontext(void)
727 { 727 {
728 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 728 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
729 729
730 return env->CP0_TCContext[other_tc]; 730 return env->CP0_TCContext[other_tc];
731 } 731 }
732 732
733 -target_ulong do_mfc0_tcschedule (target_ulong t0) 733 +target_ulong do_mfc0_tcschedule (void)
734 { 734 {
735 return env->CP0_TCSchedule[env->current_tc]; 735 return env->CP0_TCSchedule[env->current_tc];
736 } 736 }
737 737
738 -target_ulong do_mftc0_tcschedule(target_ulong t0) 738 +target_ulong do_mftc0_tcschedule(void)
739 { 739 {
740 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 740 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
741 741
742 return env->CP0_TCSchedule[other_tc]; 742 return env->CP0_TCSchedule[other_tc];
743 } 743 }
744 744
745 -target_ulong do_mfc0_tcschefback (target_ulong t0) 745 +target_ulong do_mfc0_tcschefback (void)
746 { 746 {
747 return env->CP0_TCScheFBack[env->current_tc]; 747 return env->CP0_TCScheFBack[env->current_tc];
748 } 748 }
749 749
750 -target_ulong do_mftc0_tcschefback(target_ulong t0) 750 +target_ulong do_mftc0_tcschefback(void)
751 { 751 {
752 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 752 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
753 753
754 return env->CP0_TCScheFBack[other_tc]; 754 return env->CP0_TCScheFBack[other_tc];
755 } 755 }
756 756
757 -target_ulong do_mfc0_count (target_ulong t0) 757 +target_ulong do_mfc0_count (void)
758 { 758 {
759 return (int32_t)cpu_mips_get_count(env); 759 return (int32_t)cpu_mips_get_count(env);
760 } 760 }
761 761
762 -target_ulong do_mftc0_entryhi(target_ulong t0) 762 +target_ulong do_mftc0_entryhi(void)
763 { 763 {
764 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 764 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
765 765
766 return (env->CP0_EntryHi & ~0xff) | (env->CP0_TCStatus[other_tc] & 0xff); 766 return (env->CP0_EntryHi & ~0xff) | (env->CP0_TCStatus[other_tc] & 0xff);
767 } 767 }
768 768
769 -target_ulong do_mftc0_status(target_ulong t0) 769 +target_ulong do_mftc0_status(void)
770 { 770 {
771 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 771 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
772 uint32_t tcstatus = env->CP0_TCStatus[other_tc]; 772 uint32_t tcstatus = env->CP0_TCStatus[other_tc];
  773 + target_ulong t0;
773 774
774 t0 = env->CP0_Status & ~0xf1000018; 775 t0 = env->CP0_Status & ~0xf1000018;
775 t0 |= tcstatus & (0xf << CP0TCSt_TCU0); 776 t0 |= tcstatus & (0xf << CP0TCSt_TCU0);
@@ -779,31 +780,31 @@ target_ulong do_mftc0_status(target_ulong t0) @@ -779,31 +780,31 @@ target_ulong do_mftc0_status(target_ulong t0)
779 return t0; 780 return t0;
780 } 781 }
781 782
782 -target_ulong do_mfc0_lladdr (target_ulong t0) 783 +target_ulong do_mfc0_lladdr (void)
783 { 784 {
784 return (int32_t)env->CP0_LLAddr >> 4; 785 return (int32_t)env->CP0_LLAddr >> 4;
785 } 786 }
786 787
787 -target_ulong do_mfc0_watchlo (target_ulong t0, uint32_t sel) 788 +target_ulong do_mfc0_watchlo (uint32_t sel)
788 { 789 {
789 return (int32_t)env->CP0_WatchLo[sel]; 790 return (int32_t)env->CP0_WatchLo[sel];
790 } 791 }
791 792
792 -target_ulong do_mfc0_watchhi (target_ulong t0, uint32_t sel) 793 +target_ulong do_mfc0_watchhi (uint32_t sel)
793 { 794 {
794 return env->CP0_WatchHi[sel]; 795 return env->CP0_WatchHi[sel];
795 } 796 }
796 797
797 -target_ulong do_mfc0_debug (target_ulong t0) 798 +target_ulong do_mfc0_debug (void)
798 { 799 {
799 - t0 = env->CP0_Debug; 800 + target_ulong t0 = env->CP0_Debug;
800 if (env->hflags & MIPS_HFLAG_DM) 801 if (env->hflags & MIPS_HFLAG_DM)
801 t0 |= 1 << CP0DB_DM; 802 t0 |= 1 << CP0DB_DM;
802 803
803 return t0; 804 return t0;
804 } 805 }
805 806
806 -target_ulong do_mftc0_debug(target_ulong t0) 807 +target_ulong do_mftc0_debug(void)
807 { 808 {
808 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 809 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
809 810
@@ -814,37 +815,37 @@ target_ulong do_mftc0_debug(target_ulong t0) @@ -814,37 +815,37 @@ target_ulong do_mftc0_debug(target_ulong t0)
814 } 815 }
815 816
816 #if defined(TARGET_MIPS64) 817 #if defined(TARGET_MIPS64)
817 -target_ulong do_dmfc0_tcrestart (target_ulong t0) 818 +target_ulong do_dmfc0_tcrestart (void)
818 { 819 {
819 return env->PC[env->current_tc]; 820 return env->PC[env->current_tc];
820 } 821 }
821 822
822 -target_ulong do_dmfc0_tchalt (target_ulong t0) 823 +target_ulong do_dmfc0_tchalt (void)
823 { 824 {
824 return env->CP0_TCHalt[env->current_tc]; 825 return env->CP0_TCHalt[env->current_tc];
825 } 826 }
826 827
827 -target_ulong do_dmfc0_tccontext (target_ulong t0) 828 +target_ulong do_dmfc0_tccontext (void)
828 { 829 {
829 return env->CP0_TCContext[env->current_tc]; 830 return env->CP0_TCContext[env->current_tc];
830 } 831 }
831 832
832 -target_ulong do_dmfc0_tcschedule (target_ulong t0) 833 +target_ulong do_dmfc0_tcschedule (void)
833 { 834 {
834 return env->CP0_TCSchedule[env->current_tc]; 835 return env->CP0_TCSchedule[env->current_tc];
835 } 836 }
836 837
837 -target_ulong do_dmfc0_tcschefback (target_ulong t0) 838 +target_ulong do_dmfc0_tcschefback (void)
838 { 839 {
839 return env->CP0_TCScheFBack[env->current_tc]; 840 return env->CP0_TCScheFBack[env->current_tc];
840 } 841 }
841 842
842 -target_ulong do_dmfc0_lladdr (target_ulong t0) 843 +target_ulong do_dmfc0_lladdr (void)
843 { 844 {
844 return env->CP0_LLAddr >> 4; 845 return env->CP0_LLAddr >> 4;
845 } 846 }
846 847
847 -target_ulong do_dmfc0_watchlo (target_ulong t0, uint32_t sel) 848 +target_ulong do_dmfc0_watchlo (uint32_t sel)
848 { 849 {
849 return env->CP0_WatchLo[sel]; 850 return env->CP0_WatchLo[sel];
850 } 851 }
target-mips/translate.c
@@ -423,7 +423,7 @@ enum { @@ -423,7 +423,7 @@ enum {
423 }; 423 };
424 424
425 /* global register indices */ 425 /* global register indices */
426 -static TCGv cpu_env, current_tc_gprs, current_tc_hi, current_fpu, cpu_T[1]; 426 +static TCGv cpu_env, current_tc_gprs, current_tc_hi, current_fpu;
427 427
428 /* FPU TNs, global for now. */ 428 /* FPU TNs, global for now. */
429 static TCGv fpu32_T[3], fpu64_T[3], fpu32h_T[3]; 429 static TCGv fpu32_T[3], fpu64_T[3], fpu32h_T[3];
@@ -2856,7 +2856,7 @@ static inline void gen_mtc0_store64 (TCGv t, target_ulong off) @@ -2856,7 +2856,7 @@ static inline void gen_mtc0_store64 (TCGv t, target_ulong off)
2856 tcg_gen_st_tl(t, cpu_env, off); 2856 tcg_gen_st_tl(t, cpu_env, off);
2857 } 2857 }
2858 2858
2859 -static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) 2859 +static void gen_mfc0 (CPUState *env, DisasContext *ctx, TCGv t0, int reg, int sel)
2860 { 2860 {
2861 const char *rn = "invalid"; 2861 const char *rn = "invalid";
2862 2862
@@ -2867,22 +2867,22 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -2867,22 +2867,22 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2867 case 0: 2867 case 0:
2868 switch (sel) { 2868 switch (sel) {
2869 case 0: 2869 case 0:
2870 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Index)); 2870 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Index));
2871 rn = "Index"; 2871 rn = "Index";
2872 break; 2872 break;
2873 case 1: 2873 case 1:
2874 check_insn(env, ctx, ASE_MT); 2874 check_insn(env, ctx, ASE_MT);
2875 - tcg_gen_helper_1_1(do_mfc0_mvpcontrol, cpu_T[0], cpu_T[0]); 2875 + tcg_gen_helper_1_0(do_mfc0_mvpcontrol, t0);
2876 rn = "MVPControl"; 2876 rn = "MVPControl";
2877 break; 2877 break;
2878 case 2: 2878 case 2:
2879 check_insn(env, ctx, ASE_MT); 2879 check_insn(env, ctx, ASE_MT);
2880 - tcg_gen_helper_1_1(do_mfc0_mvpconf0, cpu_T[0], cpu_T[0]); 2880 + tcg_gen_helper_1_0(do_mfc0_mvpconf0, t0);
2881 rn = "MVPConf0"; 2881 rn = "MVPConf0";
2882 break; 2882 break;
2883 case 3: 2883 case 3:
2884 check_insn(env, ctx, ASE_MT); 2884 check_insn(env, ctx, ASE_MT);
2885 - tcg_gen_helper_1_1(do_mfc0_mvpconf1, cpu_T[0], cpu_T[0]); 2885 + tcg_gen_helper_1_0(do_mfc0_mvpconf1, t0);
2886 rn = "MVPConf1"; 2886 rn = "MVPConf1";
2887 break; 2887 break;
2888 default: 2888 default:
@@ -2892,42 +2892,42 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -2892,42 +2892,42 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2892 case 1: 2892 case 1:
2893 switch (sel) { 2893 switch (sel) {
2894 case 0: 2894 case 0:
2895 - tcg_gen_helper_1_1(do_mfc0_random, cpu_T[0], cpu_T[0]); 2895 + tcg_gen_helper_1_0(do_mfc0_random, t0);
2896 rn = "Random"; 2896 rn = "Random";
2897 break; 2897 break;
2898 case 1: 2898 case 1:
2899 check_insn(env, ctx, ASE_MT); 2899 check_insn(env, ctx, ASE_MT);
2900 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEControl)); 2900 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEControl));
2901 rn = "VPEControl"; 2901 rn = "VPEControl";
2902 break; 2902 break;
2903 case 2: 2903 case 2:
2904 check_insn(env, ctx, ASE_MT); 2904 check_insn(env, ctx, ASE_MT);
2905 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEConf0)); 2905 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEConf0));
2906 rn = "VPEConf0"; 2906 rn = "VPEConf0";
2907 break; 2907 break;
2908 case 3: 2908 case 3:
2909 check_insn(env, ctx, ASE_MT); 2909 check_insn(env, ctx, ASE_MT);
2910 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEConf1)); 2910 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEConf1));
2911 rn = "VPEConf1"; 2911 rn = "VPEConf1";
2912 break; 2912 break;
2913 case 4: 2913 case 4:
2914 check_insn(env, ctx, ASE_MT); 2914 check_insn(env, ctx, ASE_MT);
2915 - gen_mfc0_load64(cpu_T[0], offsetof(CPUState, CP0_YQMask)); 2915 + gen_mfc0_load64(t0, offsetof(CPUState, CP0_YQMask));
2916 rn = "YQMask"; 2916 rn = "YQMask";
2917 break; 2917 break;
2918 case 5: 2918 case 5:
2919 check_insn(env, ctx, ASE_MT); 2919 check_insn(env, ctx, ASE_MT);
2920 - gen_mfc0_load64(cpu_T[0], offsetof(CPUState, CP0_VPESchedule)); 2920 + gen_mfc0_load64(t0, offsetof(CPUState, CP0_VPESchedule));
2921 rn = "VPESchedule"; 2921 rn = "VPESchedule";
2922 break; 2922 break;
2923 case 6: 2923 case 6:
2924 check_insn(env, ctx, ASE_MT); 2924 check_insn(env, ctx, ASE_MT);
2925 - gen_mfc0_load64(cpu_T[0], offsetof(CPUState, CP0_VPEScheFBack)); 2925 + gen_mfc0_load64(t0, offsetof(CPUState, CP0_VPEScheFBack));
2926 rn = "VPEScheFBack"; 2926 rn = "VPEScheFBack";
2927 break; 2927 break;
2928 case 7: 2928 case 7:
2929 check_insn(env, ctx, ASE_MT); 2929 check_insn(env, ctx, ASE_MT);
2930 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEOpt)); 2930 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEOpt));
2931 rn = "VPEOpt"; 2931 rn = "VPEOpt";
2932 break; 2932 break;
2933 default: 2933 default:
@@ -2937,43 +2937,43 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -2937,43 +2937,43 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2937 case 2: 2937 case 2:
2938 switch (sel) { 2938 switch (sel) {
2939 case 0: 2939 case 0:
2940 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo0));  
2941 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 2940 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryLo0));
  2941 + tcg_gen_ext32s_tl(t0, t0);
2942 rn = "EntryLo0"; 2942 rn = "EntryLo0";
2943 break; 2943 break;
2944 case 1: 2944 case 1:
2945 check_insn(env, ctx, ASE_MT); 2945 check_insn(env, ctx, ASE_MT);
2946 - tcg_gen_helper_1_1(do_mfc0_tcstatus, cpu_T[0], cpu_T[0]); 2946 + tcg_gen_helper_1_0(do_mfc0_tcstatus, t0);
2947 rn = "TCStatus"; 2947 rn = "TCStatus";
2948 break; 2948 break;
2949 case 2: 2949 case 2:
2950 check_insn(env, ctx, ASE_MT); 2950 check_insn(env, ctx, ASE_MT);
2951 - tcg_gen_helper_1_1(do_mfc0_tcbind, cpu_T[0], cpu_T[0]); 2951 + tcg_gen_helper_1_0(do_mfc0_tcbind, t0);
2952 rn = "TCBind"; 2952 rn = "TCBind";
2953 break; 2953 break;
2954 case 3: 2954 case 3:
2955 check_insn(env, ctx, ASE_MT); 2955 check_insn(env, ctx, ASE_MT);
2956 - tcg_gen_helper_1_1(do_mfc0_tcrestart, cpu_T[0], cpu_T[0]); 2956 + tcg_gen_helper_1_0(do_mfc0_tcrestart, t0);
2957 rn = "TCRestart"; 2957 rn = "TCRestart";
2958 break; 2958 break;
2959 case 4: 2959 case 4:
2960 check_insn(env, ctx, ASE_MT); 2960 check_insn(env, ctx, ASE_MT);
2961 - tcg_gen_helper_1_1(do_mfc0_tchalt, cpu_T[0], cpu_T[0]); 2961 + tcg_gen_helper_1_0(do_mfc0_tchalt, t0);
2962 rn = "TCHalt"; 2962 rn = "TCHalt";
2963 break; 2963 break;
2964 case 5: 2964 case 5:
2965 check_insn(env, ctx, ASE_MT); 2965 check_insn(env, ctx, ASE_MT);
2966 - tcg_gen_helper_1_1(do_mfc0_tccontext, cpu_T[0], cpu_T[0]); 2966 + tcg_gen_helper_1_0(do_mfc0_tccontext, t0);
2967 rn = "TCContext"; 2967 rn = "TCContext";
2968 break; 2968 break;
2969 case 6: 2969 case 6:
2970 check_insn(env, ctx, ASE_MT); 2970 check_insn(env, ctx, ASE_MT);
2971 - tcg_gen_helper_1_1(do_mfc0_tcschedule, cpu_T[0], cpu_T[0]); 2971 + tcg_gen_helper_1_0(do_mfc0_tcschedule, t0);
2972 rn = "TCSchedule"; 2972 rn = "TCSchedule";
2973 break; 2973 break;
2974 case 7: 2974 case 7:
2975 check_insn(env, ctx, ASE_MT); 2975 check_insn(env, ctx, ASE_MT);
2976 - tcg_gen_helper_1_1(do_mfc0_tcschefback, cpu_T[0], cpu_T[0]); 2976 + tcg_gen_helper_1_0(do_mfc0_tcschefback, t0);
2977 rn = "TCScheFBack"; 2977 rn = "TCScheFBack";
2978 break; 2978 break;
2979 default: 2979 default:
@@ -2983,8 +2983,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -2983,8 +2983,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2983 case 3: 2983 case 3:
2984 switch (sel) { 2984 switch (sel) {
2985 case 0: 2985 case 0:
2986 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo1));  
2987 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 2986 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryLo1));
  2987 + tcg_gen_ext32s_tl(t0, t0);
2988 rn = "EntryLo1"; 2988 rn = "EntryLo1";
2989 break; 2989 break;
2990 default: 2990 default:
@@ -2994,12 +2994,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -2994,12 +2994,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2994 case 4: 2994 case 4:
2995 switch (sel) { 2995 switch (sel) {
2996 case 0: 2996 case 0:
2997 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_Context));  
2998 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 2997 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_Context));
  2998 + tcg_gen_ext32s_tl(t0, t0);
2999 rn = "Context"; 2999 rn = "Context";
3000 break; 3000 break;
3001 case 1: 3001 case 1:
3002 -// tcg_gen_helper_1_1(do_mfc0_contextconfig, cpu_T[0], cpu_T[0]); /* SmartMIPS ASE */ 3002 +// tcg_gen_helper_1_0(do_mfc0_contextconfig, t0); /* SmartMIPS ASE */
3003 rn = "ContextConfig"; 3003 rn = "ContextConfig";
3004 // break; 3004 // break;
3005 default: 3005 default:
@@ -3009,12 +3009,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3009,12 +3009,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3009 case 5: 3009 case 5:
3010 switch (sel) { 3010 switch (sel) {
3011 case 0: 3011 case 0:
3012 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PageMask)); 3012 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PageMask));
3013 rn = "PageMask"; 3013 rn = "PageMask";
3014 break; 3014 break;
3015 case 1: 3015 case 1:
3016 check_insn(env, ctx, ISA_MIPS32R2); 3016 check_insn(env, ctx, ISA_MIPS32R2);
3017 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PageGrain)); 3017 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PageGrain));
3018 rn = "PageGrain"; 3018 rn = "PageGrain";
3019 break; 3019 break;
3020 default: 3020 default:
@@ -3024,32 +3024,32 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3024,32 +3024,32 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3024 case 6: 3024 case 6:
3025 switch (sel) { 3025 switch (sel) {
3026 case 0: 3026 case 0:
3027 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Wired)); 3027 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Wired));
3028 rn = "Wired"; 3028 rn = "Wired";
3029 break; 3029 break;
3030 case 1: 3030 case 1:
3031 check_insn(env, ctx, ISA_MIPS32R2); 3031 check_insn(env, ctx, ISA_MIPS32R2);
3032 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf0)); 3032 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf0));
3033 rn = "SRSConf0"; 3033 rn = "SRSConf0";
3034 break; 3034 break;
3035 case 2: 3035 case 2:
3036 check_insn(env, ctx, ISA_MIPS32R2); 3036 check_insn(env, ctx, ISA_MIPS32R2);
3037 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf1)); 3037 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf1));
3038 rn = "SRSConf1"; 3038 rn = "SRSConf1";
3039 break; 3039 break;
3040 case 3: 3040 case 3:
3041 check_insn(env, ctx, ISA_MIPS32R2); 3041 check_insn(env, ctx, ISA_MIPS32R2);
3042 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf2)); 3042 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf2));
3043 rn = "SRSConf2"; 3043 rn = "SRSConf2";
3044 break; 3044 break;
3045 case 4: 3045 case 4:
3046 check_insn(env, ctx, ISA_MIPS32R2); 3046 check_insn(env, ctx, ISA_MIPS32R2);
3047 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf3)); 3047 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf3));
3048 rn = "SRSConf3"; 3048 rn = "SRSConf3";
3049 break; 3049 break;
3050 case 5: 3050 case 5:
3051 check_insn(env, ctx, ISA_MIPS32R2); 3051 check_insn(env, ctx, ISA_MIPS32R2);
3052 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf4)); 3052 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf4));
3053 rn = "SRSConf4"; 3053 rn = "SRSConf4";
3054 break; 3054 break;
3055 default: 3055 default:
@@ -3060,7 +3060,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3060,7 +3060,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3060 switch (sel) { 3060 switch (sel) {
3061 case 0: 3061 case 0:
3062 check_insn(env, ctx, ISA_MIPS32R2); 3062 check_insn(env, ctx, ISA_MIPS32R2);
3063 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_HWREna)); 3063 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_HWREna));
3064 rn = "HWREna"; 3064 rn = "HWREna";
3065 break; 3065 break;
3066 default: 3066 default:
@@ -3070,8 +3070,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3070,8 +3070,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3070 case 8: 3070 case 8:
3071 switch (sel) { 3071 switch (sel) {
3072 case 0: 3072 case 0:
3073 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_BadVAddr));  
3074 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3073 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_BadVAddr));
  3074 + tcg_gen_ext32s_tl(t0, t0);
3075 rn = "BadVAddr"; 3075 rn = "BadVAddr";
3076 break; 3076 break;
3077 default: 3077 default:
@@ -3081,7 +3081,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3081,7 +3081,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3081 case 9: 3081 case 9:
3082 switch (sel) { 3082 switch (sel) {
3083 case 0: 3083 case 0:
3084 - tcg_gen_helper_1_1(do_mfc0_count, cpu_T[0], cpu_T[0]); 3084 + tcg_gen_helper_1_0(do_mfc0_count, t0);
3085 rn = "Count"; 3085 rn = "Count";
3086 break; 3086 break;
3087 /* 6,7 are implementation dependent */ 3087 /* 6,7 are implementation dependent */
@@ -3092,8 +3092,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3092,8 +3092,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3092 case 10: 3092 case 10:
3093 switch (sel) { 3093 switch (sel) {
3094 case 0: 3094 case 0:
3095 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryHi));  
3096 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3095 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryHi));
  3096 + tcg_gen_ext32s_tl(t0, t0);
3097 rn = "EntryHi"; 3097 rn = "EntryHi";
3098 break; 3098 break;
3099 default: 3099 default:
@@ -3103,7 +3103,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3103,7 +3103,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3103 case 11: 3103 case 11:
3104 switch (sel) { 3104 switch (sel) {
3105 case 0: 3105 case 0:
3106 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Compare)); 3106 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Compare));
3107 rn = "Compare"; 3107 rn = "Compare";
3108 break; 3108 break;
3109 /* 6,7 are implementation dependent */ 3109 /* 6,7 are implementation dependent */
@@ -3114,22 +3114,22 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3114,22 +3114,22 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3114 case 12: 3114 case 12:
3115 switch (sel) { 3115 switch (sel) {
3116 case 0: 3116 case 0:
3117 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Status)); 3117 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Status));
3118 rn = "Status"; 3118 rn = "Status";
3119 break; 3119 break;
3120 case 1: 3120 case 1:
3121 check_insn(env, ctx, ISA_MIPS32R2); 3121 check_insn(env, ctx, ISA_MIPS32R2);
3122 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_IntCtl)); 3122 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_IntCtl));
3123 rn = "IntCtl"; 3123 rn = "IntCtl";
3124 break; 3124 break;
3125 case 2: 3125 case 2:
3126 check_insn(env, ctx, ISA_MIPS32R2); 3126 check_insn(env, ctx, ISA_MIPS32R2);
3127 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSCtl)); 3127 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSCtl));
3128 rn = "SRSCtl"; 3128 rn = "SRSCtl";
3129 break; 3129 break;
3130 case 3: 3130 case 3:
3131 check_insn(env, ctx, ISA_MIPS32R2); 3131 check_insn(env, ctx, ISA_MIPS32R2);
3132 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSMap)); 3132 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSMap));
3133 rn = "SRSMap"; 3133 rn = "SRSMap";
3134 break; 3134 break;
3135 default: 3135 default:
@@ -3139,7 +3139,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3139,7 +3139,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3139 case 13: 3139 case 13:
3140 switch (sel) { 3140 switch (sel) {
3141 case 0: 3141 case 0:
3142 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Cause)); 3142 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Cause));
3143 rn = "Cause"; 3143 rn = "Cause";
3144 break; 3144 break;
3145 default: 3145 default:
@@ -3149,8 +3149,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3149,8 +3149,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3149 case 14: 3149 case 14:
3150 switch (sel) { 3150 switch (sel) {
3151 case 0: 3151 case 0:
3152 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EPC));  
3153 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3152 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EPC));
  3153 + tcg_gen_ext32s_tl(t0, t0);
3154 rn = "EPC"; 3154 rn = "EPC";
3155 break; 3155 break;
3156 default: 3156 default:
@@ -3160,12 +3160,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3160,12 +3160,12 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3160 case 15: 3160 case 15:
3161 switch (sel) { 3161 switch (sel) {
3162 case 0: 3162 case 0:
3163 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PRid)); 3163 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PRid));
3164 rn = "PRid"; 3164 rn = "PRid";
3165 break; 3165 break;
3166 case 1: 3166 case 1:
3167 check_insn(env, ctx, ISA_MIPS32R2); 3167 check_insn(env, ctx, ISA_MIPS32R2);
3168 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_EBase)); 3168 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_EBase));
3169 rn = "EBase"; 3169 rn = "EBase";
3170 break; 3170 break;
3171 default: 3171 default:
@@ -3175,29 +3175,29 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3175,29 +3175,29 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3175 case 16: 3175 case 16:
3176 switch (sel) { 3176 switch (sel) {
3177 case 0: 3177 case 0:
3178 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config0)); 3178 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config0));
3179 rn = "Config"; 3179 rn = "Config";
3180 break; 3180 break;
3181 case 1: 3181 case 1:
3182 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config1)); 3182 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config1));
3183 rn = "Config1"; 3183 rn = "Config1";
3184 break; 3184 break;
3185 case 2: 3185 case 2:
3186 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config2)); 3186 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config2));
3187 rn = "Config2"; 3187 rn = "Config2";
3188 break; 3188 break;
3189 case 3: 3189 case 3:
3190 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config3)); 3190 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config3));
3191 rn = "Config3"; 3191 rn = "Config3";
3192 break; 3192 break;
3193 /* 4,5 are reserved */ 3193 /* 4,5 are reserved */
3194 /* 6,7 are implementation dependent */ 3194 /* 6,7 are implementation dependent */
3195 case 6: 3195 case 6:
3196 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config6)); 3196 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config6));
3197 rn = "Config6"; 3197 rn = "Config6";
3198 break; 3198 break;
3199 case 7: 3199 case 7:
3200 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config7)); 3200 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config7));
3201 rn = "Config7"; 3201 rn = "Config7";
3202 break; 3202 break;
3203 default: 3203 default:
@@ -3207,7 +3207,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3207,7 +3207,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3207 case 17: 3207 case 17:
3208 switch (sel) { 3208 switch (sel) {
3209 case 0: 3209 case 0:
3210 - tcg_gen_helper_1_1(do_mfc0_lladdr, cpu_T[0], cpu_T[0]); 3210 + tcg_gen_helper_1_0(do_mfc0_lladdr, t0);
3211 rn = "LLAddr"; 3211 rn = "LLAddr";
3212 break; 3212 break;
3213 default: 3213 default:
@@ -3217,7 +3217,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3217,7 +3217,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3217 case 18: 3217 case 18:
3218 switch (sel) { 3218 switch (sel) {
3219 case 0 ... 7: 3219 case 0 ... 7:
3220 - tcg_gen_helper_1_1i(do_mfc0_watchlo, cpu_T[0], cpu_T[0], sel); 3220 + tcg_gen_helper_1_i(do_mfc0_watchlo, t0, sel);
3221 rn = "WatchLo"; 3221 rn = "WatchLo";
3222 break; 3222 break;
3223 default: 3223 default:
@@ -3227,7 +3227,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3227,7 +3227,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3227 case 19: 3227 case 19:
3228 switch (sel) { 3228 switch (sel) {
3229 case 0 ...7: 3229 case 0 ...7:
3230 - tcg_gen_helper_1_1i(do_mfc0_watchhi, cpu_T[0], cpu_T[0], sel); 3230 + tcg_gen_helper_1_i(do_mfc0_watchhi, t0, sel);
3231 rn = "WatchHi"; 3231 rn = "WatchHi";
3232 break; 3232 break;
3233 default: 3233 default:
@@ -3239,8 +3239,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3239,8 +3239,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3239 case 0: 3239 case 0:
3240 #if defined(TARGET_MIPS64) 3240 #if defined(TARGET_MIPS64)
3241 check_insn(env, ctx, ISA_MIPS3); 3241 check_insn(env, ctx, ISA_MIPS3);
3242 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_XContext));  
3243 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3242 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_XContext));
  3243 + tcg_gen_ext32s_tl(t0, t0);
3244 rn = "XContext"; 3244 rn = "XContext";
3245 break; 3245 break;
3246 #endif 3246 #endif
@@ -3252,7 +3252,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3252,7 +3252,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3252 /* Officially reserved, but sel 0 is used for R1x000 framemask */ 3252 /* Officially reserved, but sel 0 is used for R1x000 framemask */
3253 switch (sel) { 3253 switch (sel) {
3254 case 0: 3254 case 0:
3255 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Framemask)); 3255 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Framemask));
3256 rn = "Framemask"; 3256 rn = "Framemask";
3257 break; 3257 break;
3258 default: 3258 default:
@@ -3266,23 +3266,23 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3266,23 +3266,23 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3266 case 23: 3266 case 23:
3267 switch (sel) { 3267 switch (sel) {
3268 case 0: 3268 case 0:
3269 - tcg_gen_helper_1_1(do_mfc0_debug, cpu_T[0], cpu_T[0]); /* EJTAG support */ 3269 + tcg_gen_helper_1_0(do_mfc0_debug, t0); /* EJTAG support */
3270 rn = "Debug"; 3270 rn = "Debug";
3271 break; 3271 break;
3272 case 1: 3272 case 1:
3273 -// tcg_gen_helper_1_1(do_mfc0_tracecontrol, cpu_T[0], cpu_T[0]); /* PDtrace support */ 3273 +// tcg_gen_helper_1_0(do_mfc0_tracecontrol, t0); /* PDtrace support */
3274 rn = "TraceControl"; 3274 rn = "TraceControl";
3275 // break; 3275 // break;
3276 case 2: 3276 case 2:
3277 -// tcg_gen_helper_1_1(do_mfc0_tracecontrol2, cpu_T[0], cpu_T[0]); /* PDtrace support */ 3277 +// tcg_gen_helper_1_0(do_mfc0_tracecontrol2, t0); /* PDtrace support */
3278 rn = "TraceControl2"; 3278 rn = "TraceControl2";
3279 // break; 3279 // break;
3280 case 3: 3280 case 3:
3281 -// tcg_gen_helper_1_1(do_mfc0_usertracedata, cpu_T[0], cpu_T[0]); /* PDtrace support */ 3281 +// tcg_gen_helper_1_0(do_mfc0_usertracedata, t0); /* PDtrace support */
3282 rn = "UserTraceData"; 3282 rn = "UserTraceData";
3283 // break; 3283 // break;
3284 case 4: 3284 case 4:
3285 -// tcg_gen_helper_1_1(do_mfc0_tracebpc, cpu_T[0], cpu_T[0]); /* PDtrace support */ 3285 +// tcg_gen_helper_1_0(do_mfc0_tracebpc, t0); /* PDtrace support */
3286 rn = "TraceBPC"; 3286 rn = "TraceBPC";
3287 // break; 3287 // break;
3288 default: 3288 default:
@@ -3293,8 +3293,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3293,8 +3293,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3293 switch (sel) { 3293 switch (sel) {
3294 case 0: 3294 case 0:
3295 /* EJTAG support */ 3295 /* EJTAG support */
3296 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_DEPC));  
3297 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3296 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_DEPC));
  3297 + tcg_gen_ext32s_tl(t0, t0);
3298 rn = "DEPC"; 3298 rn = "DEPC";
3299 break; 3299 break;
3300 default: 3300 default:
@@ -3304,35 +3304,35 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3304,35 +3304,35 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3304 case 25: 3304 case 25:
3305 switch (sel) { 3305 switch (sel) {
3306 case 0: 3306 case 0:
3307 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Performance0)); 3307 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Performance0));
3308 rn = "Performance0"; 3308 rn = "Performance0";
3309 break; 3309 break;
3310 case 1: 3310 case 1:
3311 -// tcg_gen_helper_1_1(do_mfc0_performance1, cpu_T[0], cpu_T[0]); 3311 +// tcg_gen_helper_1_0(do_mfc0_performance1, t0);
3312 rn = "Performance1"; 3312 rn = "Performance1";
3313 // break; 3313 // break;
3314 case 2: 3314 case 2:
3315 -// tcg_gen_helper_1_1(do_mfc0_performance2, cpu_T[0], cpu_T[0]); 3315 +// tcg_gen_helper_1_0(do_mfc0_performance2, t0);
3316 rn = "Performance2"; 3316 rn = "Performance2";
3317 // break; 3317 // break;
3318 case 3: 3318 case 3:
3319 -// tcg_gen_helper_1_1(do_mfc0_performance3, cpu_T[0], cpu_T[0]); 3319 +// tcg_gen_helper_1_0(do_mfc0_performance3, t0);
3320 rn = "Performance3"; 3320 rn = "Performance3";
3321 // break; 3321 // break;
3322 case 4: 3322 case 4:
3323 -// tcg_gen_helper_1_1(do_mfc0_performance4, cpu_T[0], cpu_T[0]); 3323 +// tcg_gen_helper_1_0(do_mfc0_performance4, t0);
3324 rn = "Performance4"; 3324 rn = "Performance4";
3325 // break; 3325 // break;
3326 case 5: 3326 case 5:
3327 -// tcg_gen_helper_1_1(do_mfc0_performance5, cpu_T[0], cpu_T[0]); 3327 +// tcg_gen_helper_1_0(do_mfc0_performance5, t0);
3328 rn = "Performance5"; 3328 rn = "Performance5";
3329 // break; 3329 // break;
3330 case 6: 3330 case 6:
3331 -// tcg_gen_helper_1_1(do_mfc0_performance6, cpu_T[0], cpu_T[0]); 3331 +// tcg_gen_helper_1_0(do_mfc0_performance6, t0);
3332 rn = "Performance6"; 3332 rn = "Performance6";
3333 // break; 3333 // break;
3334 case 7: 3334 case 7:
3335 -// tcg_gen_helper_1_1(do_mfc0_performance7, cpu_T[0], cpu_T[0]); 3335 +// tcg_gen_helper_1_0(do_mfc0_performance7, t0);
3336 rn = "Performance7"; 3336 rn = "Performance7";
3337 // break; 3337 // break;
3338 default: 3338 default:
@@ -3358,14 +3358,14 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3358,14 +3358,14 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3358 case 2: 3358 case 2:
3359 case 4: 3359 case 4:
3360 case 6: 3360 case 6:
3361 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_TagLo)); 3361 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_TagLo));
3362 rn = "TagLo"; 3362 rn = "TagLo";
3363 break; 3363 break;
3364 case 1: 3364 case 1:
3365 case 3: 3365 case 3:
3366 case 5: 3366 case 5:
3367 case 7: 3367 case 7:
3368 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DataLo)); 3368 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DataLo));
3369 rn = "DataLo"; 3369 rn = "DataLo";
3370 break; 3370 break;
3371 default: 3371 default:
@@ -3378,14 +3378,14 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3378,14 +3378,14 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3378 case 2: 3378 case 2:
3379 case 4: 3379 case 4:
3380 case 6: 3380 case 6:
3381 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_TagHi)); 3381 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_TagHi));
3382 rn = "TagHi"; 3382 rn = "TagHi";
3383 break; 3383 break;
3384 case 1: 3384 case 1:
3385 case 3: 3385 case 3:
3386 case 5: 3386 case 5:
3387 case 7: 3387 case 7:
3388 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DataHi)); 3388 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DataHi));
3389 rn = "DataHi"; 3389 rn = "DataHi";
3390 break; 3390 break;
3391 default: 3391 default:
@@ -3395,8 +3395,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3395,8 +3395,8 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3395 case 30: 3395 case 30:
3396 switch (sel) { 3396 switch (sel) {
3397 case 0: 3397 case 0:
3398 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_ErrorEPC));  
3399 - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); 3398 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_ErrorEPC));
  3399 + tcg_gen_ext32s_tl(t0, t0);
3400 rn = "ErrorEPC"; 3400 rn = "ErrorEPC";
3401 break; 3401 break;
3402 default: 3402 default:
@@ -3407,7 +3407,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3407,7 +3407,7 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3407 switch (sel) { 3407 switch (sel) {
3408 case 0: 3408 case 0:
3409 /* EJTAG support */ 3409 /* EJTAG support */
3410 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DESAVE)); 3410 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DESAVE));
3411 rn = "DESAVE"; 3411 rn = "DESAVE";
3412 break; 3412 break;
3413 default: 3413 default:
@@ -3435,7 +3435,7 @@ die: @@ -3435,7 +3435,7 @@ die:
3435 generate_exception(ctx, EXCP_RI); 3435 generate_exception(ctx, EXCP_RI);
3436 } 3436 }
3437 3437
3438 -static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) 3438 +static void gen_mtc0 (CPUState *env, DisasContext *ctx, TCGv t0, int reg, int sel)
3439 { 3439 {
3440 const char *rn = "invalid"; 3440 const char *rn = "invalid";
3441 3441
@@ -3446,12 +3446,12 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3446,12 +3446,12 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3446 case 0: 3446 case 0:
3447 switch (sel) { 3447 switch (sel) {
3448 case 0: 3448 case 0:
3449 - tcg_gen_helper_0_1(do_mtc0_index, cpu_T[0]); 3449 + tcg_gen_helper_0_1(do_mtc0_index, t0);
3450 rn = "Index"; 3450 rn = "Index";
3451 break; 3451 break;
3452 case 1: 3452 case 1:
3453 check_insn(env, ctx, ASE_MT); 3453 check_insn(env, ctx, ASE_MT);
3454 - tcg_gen_helper_0_1(do_mtc0_mvpcontrol, cpu_T[0]); 3454 + tcg_gen_helper_0_1(do_mtc0_mvpcontrol, t0);
3455 rn = "MVPControl"; 3455 rn = "MVPControl";
3456 break; 3456 break;
3457 case 2: 3457 case 2:
@@ -3476,37 +3476,37 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3476,37 +3476,37 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3476 break; 3476 break;
3477 case 1: 3477 case 1:
3478 check_insn(env, ctx, ASE_MT); 3478 check_insn(env, ctx, ASE_MT);
3479 - tcg_gen_helper_0_1(do_mtc0_vpecontrol, cpu_T[0]); 3479 + tcg_gen_helper_0_1(do_mtc0_vpecontrol, t0);
3480 rn = "VPEControl"; 3480 rn = "VPEControl";
3481 break; 3481 break;
3482 case 2: 3482 case 2:
3483 check_insn(env, ctx, ASE_MT); 3483 check_insn(env, ctx, ASE_MT);
3484 - tcg_gen_helper_0_1(do_mtc0_vpeconf0, cpu_T[0]); 3484 + tcg_gen_helper_0_1(do_mtc0_vpeconf0, t0);
3485 rn = "VPEConf0"; 3485 rn = "VPEConf0";
3486 break; 3486 break;
3487 case 3: 3487 case 3:
3488 check_insn(env, ctx, ASE_MT); 3488 check_insn(env, ctx, ASE_MT);
3489 - tcg_gen_helper_0_1(do_mtc0_vpeconf1, cpu_T[0]); 3489 + tcg_gen_helper_0_1(do_mtc0_vpeconf1, t0);
3490 rn = "VPEConf1"; 3490 rn = "VPEConf1";
3491 break; 3491 break;
3492 case 4: 3492 case 4:
3493 check_insn(env, ctx, ASE_MT); 3493 check_insn(env, ctx, ASE_MT);
3494 - tcg_gen_helper_0_1(do_mtc0_yqmask, cpu_T[0]); 3494 + tcg_gen_helper_0_1(do_mtc0_yqmask, t0);
3495 rn = "YQMask"; 3495 rn = "YQMask";
3496 break; 3496 break;
3497 case 5: 3497 case 5:
3498 check_insn(env, ctx, ASE_MT); 3498 check_insn(env, ctx, ASE_MT);
3499 - gen_mtc0_store64(cpu_T[0], offsetof(CPUState, CP0_VPESchedule)); 3499 + gen_mtc0_store64(t0, offsetof(CPUState, CP0_VPESchedule));
3500 rn = "VPESchedule"; 3500 rn = "VPESchedule";
3501 break; 3501 break;
3502 case 6: 3502 case 6:
3503 check_insn(env, ctx, ASE_MT); 3503 check_insn(env, ctx, ASE_MT);
3504 - gen_mtc0_store64(cpu_T[0], offsetof(CPUState, CP0_VPEScheFBack)); 3504 + gen_mtc0_store64(t0, offsetof(CPUState, CP0_VPEScheFBack));
3505 rn = "VPEScheFBack"; 3505 rn = "VPEScheFBack";
3506 break; 3506 break;
3507 case 7: 3507 case 7:
3508 check_insn(env, ctx, ASE_MT); 3508 check_insn(env, ctx, ASE_MT);
3509 - tcg_gen_helper_0_1(do_mtc0_vpeopt, cpu_T[0]); 3509 + tcg_gen_helper_0_1(do_mtc0_vpeopt, t0);
3510 rn = "VPEOpt"; 3510 rn = "VPEOpt";
3511 break; 3511 break;
3512 default: 3512 default:
@@ -3516,42 +3516,42 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3516,42 +3516,42 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3516 case 2: 3516 case 2:
3517 switch (sel) { 3517 switch (sel) {
3518 case 0: 3518 case 0:
3519 - tcg_gen_helper_0_1(do_mtc0_entrylo0, cpu_T[0]); 3519 + tcg_gen_helper_0_1(do_mtc0_entrylo0, t0);
3520 rn = "EntryLo0"; 3520 rn = "EntryLo0";
3521 break; 3521 break;
3522 case 1: 3522 case 1:
3523 check_insn(env, ctx, ASE_MT); 3523 check_insn(env, ctx, ASE_MT);
3524 - tcg_gen_helper_0_1(do_mtc0_tcstatus, cpu_T[0]); 3524 + tcg_gen_helper_0_1(do_mtc0_tcstatus, t0);
3525 rn = "TCStatus"; 3525 rn = "TCStatus";
3526 break; 3526 break;
3527 case 2: 3527 case 2:
3528 check_insn(env, ctx, ASE_MT); 3528 check_insn(env, ctx, ASE_MT);
3529 - tcg_gen_helper_0_1(do_mtc0_tcbind, cpu_T[0]); 3529 + tcg_gen_helper_0_1(do_mtc0_tcbind, t0);
3530 rn = "TCBind"; 3530 rn = "TCBind";
3531 break; 3531 break;
3532 case 3: 3532 case 3:
3533 check_insn(env, ctx, ASE_MT); 3533 check_insn(env, ctx, ASE_MT);
3534 - tcg_gen_helper_0_1(do_mtc0_tcrestart, cpu_T[0]); 3534 + tcg_gen_helper_0_1(do_mtc0_tcrestart, t0);
3535 rn = "TCRestart"; 3535 rn = "TCRestart";
3536 break; 3536 break;
3537 case 4: 3537 case 4:
3538 check_insn(env, ctx, ASE_MT); 3538 check_insn(env, ctx, ASE_MT);
3539 - tcg_gen_helper_0_1(do_mtc0_tchalt, cpu_T[0]); 3539 + tcg_gen_helper_0_1(do_mtc0_tchalt, t0);
3540 rn = "TCHalt"; 3540 rn = "TCHalt";
3541 break; 3541 break;
3542 case 5: 3542 case 5:
3543 check_insn(env, ctx, ASE_MT); 3543 check_insn(env, ctx, ASE_MT);
3544 - tcg_gen_helper_0_1(do_mtc0_tccontext, cpu_T[0]); 3544 + tcg_gen_helper_0_1(do_mtc0_tccontext, t0);
3545 rn = "TCContext"; 3545 rn = "TCContext";
3546 break; 3546 break;
3547 case 6: 3547 case 6:
3548 check_insn(env, ctx, ASE_MT); 3548 check_insn(env, ctx, ASE_MT);
3549 - tcg_gen_helper_0_1(do_mtc0_tcschedule, cpu_T[0]); 3549 + tcg_gen_helper_0_1(do_mtc0_tcschedule, t0);
3550 rn = "TCSchedule"; 3550 rn = "TCSchedule";
3551 break; 3551 break;
3552 case 7: 3552 case 7:
3553 check_insn(env, ctx, ASE_MT); 3553 check_insn(env, ctx, ASE_MT);
3554 - tcg_gen_helper_0_1(do_mtc0_tcschefback, cpu_T[0]); 3554 + tcg_gen_helper_0_1(do_mtc0_tcschefback, t0);
3555 rn = "TCScheFBack"; 3555 rn = "TCScheFBack";
3556 break; 3556 break;
3557 default: 3557 default:
@@ -3561,7 +3561,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3561,7 +3561,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3561 case 3: 3561 case 3:
3562 switch (sel) { 3562 switch (sel) {
3563 case 0: 3563 case 0:
3564 - tcg_gen_helper_0_1(do_mtc0_entrylo1, cpu_T[0]); 3564 + tcg_gen_helper_0_1(do_mtc0_entrylo1, t0);
3565 rn = "EntryLo1"; 3565 rn = "EntryLo1";
3566 break; 3566 break;
3567 default: 3567 default:
@@ -3571,11 +3571,11 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3571,11 +3571,11 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3571 case 4: 3571 case 4:
3572 switch (sel) { 3572 switch (sel) {
3573 case 0: 3573 case 0:
3574 - tcg_gen_helper_0_1(do_mtc0_context, cpu_T[0]); 3574 + tcg_gen_helper_0_1(do_mtc0_context, t0);
3575 rn = "Context"; 3575 rn = "Context";
3576 break; 3576 break;
3577 case 1: 3577 case 1:
3578 -// tcg_gen_helper_0_1(do_mtc0_contextconfig, cpu_T[0]); /* SmartMIPS ASE */ 3578 +// tcg_gen_helper_0_1(do_mtc0_contextconfig, t0); /* SmartMIPS ASE */
3579 rn = "ContextConfig"; 3579 rn = "ContextConfig";
3580 // break; 3580 // break;
3581 default: 3581 default:
@@ -3585,12 +3585,12 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3585,12 +3585,12 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3585 case 5: 3585 case 5:
3586 switch (sel) { 3586 switch (sel) {
3587 case 0: 3587 case 0:
3588 - tcg_gen_helper_0_1(do_mtc0_pagemask, cpu_T[0]); 3588 + tcg_gen_helper_0_1(do_mtc0_pagemask, t0);
3589 rn = "PageMask"; 3589 rn = "PageMask";
3590 break; 3590 break;
3591 case 1: 3591 case 1:
3592 check_insn(env, ctx, ISA_MIPS32R2); 3592 check_insn(env, ctx, ISA_MIPS32R2);
3593 - tcg_gen_helper_0_1(do_mtc0_pagegrain, cpu_T[0]); 3593 + tcg_gen_helper_0_1(do_mtc0_pagegrain, t0);
3594 rn = "PageGrain"; 3594 rn = "PageGrain";
3595 break; 3595 break;
3596 default: 3596 default:
@@ -3600,32 +3600,32 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3600,32 +3600,32 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3600 case 6: 3600 case 6:
3601 switch (sel) { 3601 switch (sel) {
3602 case 0: 3602 case 0:
3603 - tcg_gen_helper_0_1(do_mtc0_wired, cpu_T[0]); 3603 + tcg_gen_helper_0_1(do_mtc0_wired, t0);
3604 rn = "Wired"; 3604 rn = "Wired";
3605 break; 3605 break;
3606 case 1: 3606 case 1:
3607 check_insn(env, ctx, ISA_MIPS32R2); 3607 check_insn(env, ctx, ISA_MIPS32R2);
3608 - tcg_gen_helper_0_1(do_mtc0_srsconf0, cpu_T[0]); 3608 + tcg_gen_helper_0_1(do_mtc0_srsconf0, t0);
3609 rn = "SRSConf0"; 3609 rn = "SRSConf0";
3610 break; 3610 break;
3611 case 2: 3611 case 2:
3612 check_insn(env, ctx, ISA_MIPS32R2); 3612 check_insn(env, ctx, ISA_MIPS32R2);
3613 - tcg_gen_helper_0_1(do_mtc0_srsconf1, cpu_T[0]); 3613 + tcg_gen_helper_0_1(do_mtc0_srsconf1, t0);
3614 rn = "SRSConf1"; 3614 rn = "SRSConf1";
3615 break; 3615 break;
3616 case 3: 3616 case 3:
3617 check_insn(env, ctx, ISA_MIPS32R2); 3617 check_insn(env, ctx, ISA_MIPS32R2);
3618 - tcg_gen_helper_0_1(do_mtc0_srsconf2, cpu_T[0]); 3618 + tcg_gen_helper_0_1(do_mtc0_srsconf2, t0);
3619 rn = "SRSConf2"; 3619 rn = "SRSConf2";
3620 break; 3620 break;
3621 case 4: 3621 case 4:
3622 check_insn(env, ctx, ISA_MIPS32R2); 3622 check_insn(env, ctx, ISA_MIPS32R2);
3623 - tcg_gen_helper_0_1(do_mtc0_srsconf3, cpu_T[0]); 3623 + tcg_gen_helper_0_1(do_mtc0_srsconf3, t0);
3624 rn = "SRSConf3"; 3624 rn = "SRSConf3";
3625 break; 3625 break;
3626 case 5: 3626 case 5:
3627 check_insn(env, ctx, ISA_MIPS32R2); 3627 check_insn(env, ctx, ISA_MIPS32R2);
3628 - tcg_gen_helper_0_1(do_mtc0_srsconf4, cpu_T[0]); 3628 + tcg_gen_helper_0_1(do_mtc0_srsconf4, t0);
3629 rn = "SRSConf4"; 3629 rn = "SRSConf4";
3630 break; 3630 break;
3631 default: 3631 default:
@@ -3636,7 +3636,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3636,7 +3636,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3636 switch (sel) { 3636 switch (sel) {
3637 case 0: 3637 case 0:
3638 check_insn(env, ctx, ISA_MIPS32R2); 3638 check_insn(env, ctx, ISA_MIPS32R2);
3639 - tcg_gen_helper_0_1(do_mtc0_hwrena, cpu_T[0]); 3639 + tcg_gen_helper_0_1(do_mtc0_hwrena, t0);
3640 rn = "HWREna"; 3640 rn = "HWREna";
3641 break; 3641 break;
3642 default: 3642 default:
@@ -3650,7 +3650,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3650,7 +3650,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3650 case 9: 3650 case 9:
3651 switch (sel) { 3651 switch (sel) {
3652 case 0: 3652 case 0:
3653 - tcg_gen_helper_0_1(do_mtc0_count, cpu_T[0]); 3653 + tcg_gen_helper_0_1(do_mtc0_count, t0);
3654 rn = "Count"; 3654 rn = "Count";
3655 break; 3655 break;
3656 /* 6,7 are implementation dependent */ 3656 /* 6,7 are implementation dependent */
@@ -3663,7 +3663,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3663,7 +3663,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3663 case 10: 3663 case 10:
3664 switch (sel) { 3664 switch (sel) {
3665 case 0: 3665 case 0:
3666 - tcg_gen_helper_0_1(do_mtc0_entryhi, cpu_T[0]); 3666 + tcg_gen_helper_0_1(do_mtc0_entryhi, t0);
3667 rn = "EntryHi"; 3667 rn = "EntryHi";
3668 break; 3668 break;
3669 default: 3669 default:
@@ -3673,7 +3673,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3673,7 +3673,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3673 case 11: 3673 case 11:
3674 switch (sel) { 3674 switch (sel) {
3675 case 0: 3675 case 0:
3676 - tcg_gen_helper_0_1(do_mtc0_compare, cpu_T[0]); 3676 + tcg_gen_helper_0_1(do_mtc0_compare, t0);
3677 rn = "Compare"; 3677 rn = "Compare";
3678 break; 3678 break;
3679 /* 6,7 are implementation dependent */ 3679 /* 6,7 are implementation dependent */
@@ -3686,7 +3686,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3686,7 +3686,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3686 case 12: 3686 case 12:
3687 switch (sel) { 3687 switch (sel) {
3688 case 0: 3688 case 0:
3689 - tcg_gen_helper_0_1(do_mtc0_status, cpu_T[0]); 3689 + tcg_gen_helper_0_1(do_mtc0_status, t0);
3690 /* BS_STOP isn't good enough here, hflags may have changed. */ 3690 /* BS_STOP isn't good enough here, hflags may have changed. */
3691 gen_save_pc(ctx->pc + 4); 3691 gen_save_pc(ctx->pc + 4);
3692 ctx->bstate = BS_EXCP; 3692 ctx->bstate = BS_EXCP;
@@ -3694,21 +3694,21 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3694,21 +3694,21 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3694 break; 3694 break;
3695 case 1: 3695 case 1:
3696 check_insn(env, ctx, ISA_MIPS32R2); 3696 check_insn(env, ctx, ISA_MIPS32R2);
3697 - tcg_gen_helper_0_1(do_mtc0_intctl, cpu_T[0]); 3697 + tcg_gen_helper_0_1(do_mtc0_intctl, t0);
3698 /* Stop translation as we may have switched the execution mode */ 3698 /* Stop translation as we may have switched the execution mode */
3699 ctx->bstate = BS_STOP; 3699 ctx->bstate = BS_STOP;
3700 rn = "IntCtl"; 3700 rn = "IntCtl";
3701 break; 3701 break;
3702 case 2: 3702 case 2:
3703 check_insn(env, ctx, ISA_MIPS32R2); 3703 check_insn(env, ctx, ISA_MIPS32R2);
3704 - tcg_gen_helper_0_1(do_mtc0_srsctl, cpu_T[0]); 3704 + tcg_gen_helper_0_1(do_mtc0_srsctl, t0);
3705 /* Stop translation as we may have switched the execution mode */ 3705 /* Stop translation as we may have switched the execution mode */
3706 ctx->bstate = BS_STOP; 3706 ctx->bstate = BS_STOP;
3707 rn = "SRSCtl"; 3707 rn = "SRSCtl";
3708 break; 3708 break;
3709 case 3: 3709 case 3:
3710 check_insn(env, ctx, ISA_MIPS32R2); 3710 check_insn(env, ctx, ISA_MIPS32R2);
3711 - gen_mtc0_store32(cpu_T[0], offsetof(CPUState, CP0_SRSMap)); 3711 + gen_mtc0_store32(t0, offsetof(CPUState, CP0_SRSMap));
3712 /* Stop translation as we may have switched the execution mode */ 3712 /* Stop translation as we may have switched the execution mode */
3713 ctx->bstate = BS_STOP; 3713 ctx->bstate = BS_STOP;
3714 rn = "SRSMap"; 3714 rn = "SRSMap";
@@ -3720,7 +3720,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3720,7 +3720,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3720 case 13: 3720 case 13:
3721 switch (sel) { 3721 switch (sel) {
3722 case 0: 3722 case 0:
3723 - tcg_gen_helper_0_1(do_mtc0_cause, cpu_T[0]); 3723 + tcg_gen_helper_0_1(do_mtc0_cause, t0);
3724 rn = "Cause"; 3724 rn = "Cause";
3725 break; 3725 break;
3726 default: 3726 default:
@@ -3732,7 +3732,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3732,7 +3732,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3732 case 14: 3732 case 14:
3733 switch (sel) { 3733 switch (sel) {
3734 case 0: 3734 case 0:
3735 - gen_mtc0_store64(cpu_T[0], offsetof(CPUState, CP0_EPC)); 3735 + gen_mtc0_store64(t0, offsetof(CPUState, CP0_EPC));
3736 rn = "EPC"; 3736 rn = "EPC";
3737 break; 3737 break;
3738 default: 3738 default:
@@ -3747,7 +3747,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3747,7 +3747,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3747 break; 3747 break;
3748 case 1: 3748 case 1:
3749 check_insn(env, ctx, ISA_MIPS32R2); 3749 check_insn(env, ctx, ISA_MIPS32R2);
3750 - tcg_gen_helper_0_1(do_mtc0_ebase, cpu_T[0]); 3750 + tcg_gen_helper_0_1(do_mtc0_ebase, t0);
3751 rn = "EBase"; 3751 rn = "EBase";
3752 break; 3752 break;
3753 default: 3753 default:
@@ -3757,7 +3757,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3757,7 +3757,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3757 case 16: 3757 case 16:
3758 switch (sel) { 3758 switch (sel) {
3759 case 0: 3759 case 0:
3760 - tcg_gen_helper_0_1(do_mtc0_config0, cpu_T[0]); 3760 + tcg_gen_helper_0_1(do_mtc0_config0, t0);
3761 rn = "Config"; 3761 rn = "Config";
3762 /* Stop translation as we may have switched the execution mode */ 3762 /* Stop translation as we may have switched the execution mode */
3763 ctx->bstate = BS_STOP; 3763 ctx->bstate = BS_STOP;
@@ -3767,7 +3767,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3767,7 +3767,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3767 rn = "Config1"; 3767 rn = "Config1";
3768 break; 3768 break;
3769 case 2: 3769 case 2:
3770 - tcg_gen_helper_0_1(do_mtc0_config2, cpu_T[0]); 3770 + tcg_gen_helper_0_1(do_mtc0_config2, t0);
3771 rn = "Config2"; 3771 rn = "Config2";
3772 /* Stop translation as we may have switched the execution mode */ 3772 /* Stop translation as we may have switched the execution mode */
3773 ctx->bstate = BS_STOP; 3773 ctx->bstate = BS_STOP;
@@ -3804,7 +3804,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3804,7 +3804,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3804 case 18: 3804 case 18:
3805 switch (sel) { 3805 switch (sel) {
3806 case 0 ... 7: 3806 case 0 ... 7:
3807 - tcg_gen_helper_0_1i(do_mtc0_watchlo, cpu_T[0], sel); 3807 + tcg_gen_helper_0_1i(do_mtc0_watchlo, t0, sel);
3808 rn = "WatchLo"; 3808 rn = "WatchLo";
3809 break; 3809 break;
3810 default: 3810 default:
@@ -3814,7 +3814,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3814,7 +3814,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3814 case 19: 3814 case 19:
3815 switch (sel) { 3815 switch (sel) {
3816 case 0 ... 7: 3816 case 0 ... 7:
3817 - tcg_gen_helper_0_1i(do_mtc0_watchhi, cpu_T[0], sel); 3817 + tcg_gen_helper_0_1i(do_mtc0_watchhi, t0, sel);
3818 rn = "WatchHi"; 3818 rn = "WatchHi";
3819 break; 3819 break;
3820 default: 3820 default:
@@ -3826,7 +3826,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3826,7 +3826,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3826 case 0: 3826 case 0:
3827 #if defined(TARGET_MIPS64) 3827 #if defined(TARGET_MIPS64)
3828 check_insn(env, ctx, ISA_MIPS3); 3828 check_insn(env, ctx, ISA_MIPS3);
3829 - tcg_gen_helper_0_1(do_mtc0_xcontext, cpu_T[0]); 3829 + tcg_gen_helper_0_1(do_mtc0_xcontext, t0);
3830 rn = "XContext"; 3830 rn = "XContext";
3831 break; 3831 break;
3832 #endif 3832 #endif
@@ -3838,7 +3838,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3838,7 +3838,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3838 /* Officially reserved, but sel 0 is used for R1x000 framemask */ 3838 /* Officially reserved, but sel 0 is used for R1x000 framemask */
3839 switch (sel) { 3839 switch (sel) {
3840 case 0: 3840 case 0:
3841 - tcg_gen_helper_0_1(do_mtc0_framemask, cpu_T[0]); 3841 + tcg_gen_helper_0_1(do_mtc0_framemask, t0);
3842 rn = "Framemask"; 3842 rn = "Framemask";
3843 break; 3843 break;
3844 default: 3844 default:
@@ -3852,20 +3852,20 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3852,20 +3852,20 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3852 case 23: 3852 case 23:
3853 switch (sel) { 3853 switch (sel) {
3854 case 0: 3854 case 0:
3855 - tcg_gen_helper_0_1(do_mtc0_debug, cpu_T[0]); /* EJTAG support */ 3855 + tcg_gen_helper_0_1(do_mtc0_debug, t0); /* EJTAG support */
3856 /* BS_STOP isn't good enough here, hflags may have changed. */ 3856 /* BS_STOP isn't good enough here, hflags may have changed. */
3857 gen_save_pc(ctx->pc + 4); 3857 gen_save_pc(ctx->pc + 4);
3858 ctx->bstate = BS_EXCP; 3858 ctx->bstate = BS_EXCP;
3859 rn = "Debug"; 3859 rn = "Debug";
3860 break; 3860 break;
3861 case 1: 3861 case 1:
3862 -// tcg_gen_helper_0_1(do_mtc0_tracecontrol, cpu_T[0]); /* PDtrace support */ 3862 +// tcg_gen_helper_0_1(do_mtc0_tracecontrol, t0); /* PDtrace support */
3863 rn = "TraceControl"; 3863 rn = "TraceControl";
3864 /* Stop translation as we may have switched the execution mode */ 3864 /* Stop translation as we may have switched the execution mode */
3865 ctx->bstate = BS_STOP; 3865 ctx->bstate = BS_STOP;
3866 // break; 3866 // break;
3867 case 2: 3867 case 2:
3868 -// tcg_gen_helper_0_1(do_mtc0_tracecontrol2, cpu_T[0]); /* PDtrace support */ 3868 +// tcg_gen_helper_0_1(do_mtc0_tracecontrol2, t0); /* PDtrace support */
3869 rn = "TraceControl2"; 3869 rn = "TraceControl2";
3870 /* Stop translation as we may have switched the execution mode */ 3870 /* Stop translation as we may have switched the execution mode */
3871 ctx->bstate = BS_STOP; 3871 ctx->bstate = BS_STOP;
@@ -3873,13 +3873,13 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3873,13 +3873,13 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3873 case 3: 3873 case 3:
3874 /* Stop translation as we may have switched the execution mode */ 3874 /* Stop translation as we may have switched the execution mode */
3875 ctx->bstate = BS_STOP; 3875 ctx->bstate = BS_STOP;
3876 -// tcg_gen_helper_0_1(do_mtc0_usertracedata, cpu_T[0]); /* PDtrace support */ 3876 +// tcg_gen_helper_0_1(do_mtc0_usertracedata, t0); /* PDtrace support */
3877 rn = "UserTraceData"; 3877 rn = "UserTraceData";
3878 /* Stop translation as we may have switched the execution mode */ 3878 /* Stop translation as we may have switched the execution mode */
3879 ctx->bstate = BS_STOP; 3879 ctx->bstate = BS_STOP;
3880 // break; 3880 // break;
3881 case 4: 3881 case 4:
3882 -// tcg_gen_helper_0_1(do_mtc0_tracebpc, cpu_T[0]); /* PDtrace support */ 3882 +// tcg_gen_helper_0_1(do_mtc0_tracebpc, t0); /* PDtrace support */
3883 /* Stop translation as we may have switched the execution mode */ 3883 /* Stop translation as we may have switched the execution mode */
3884 ctx->bstate = BS_STOP; 3884 ctx->bstate = BS_STOP;
3885 rn = "TraceBPC"; 3885 rn = "TraceBPC";
@@ -3892,7 +3892,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3892,7 +3892,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3892 switch (sel) { 3892 switch (sel) {
3893 case 0: 3893 case 0:
3894 /* EJTAG support */ 3894 /* EJTAG support */
3895 - gen_mtc0_store64(cpu_T[0], offsetof(CPUState, CP0_DEPC)); 3895 + gen_mtc0_store64(t0, offsetof(CPUState, CP0_DEPC));
3896 rn = "DEPC"; 3896 rn = "DEPC";
3897 break; 3897 break;
3898 default: 3898 default:
@@ -3902,35 +3902,35 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3902,35 +3902,35 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3902 case 25: 3902 case 25:
3903 switch (sel) { 3903 switch (sel) {
3904 case 0: 3904 case 0:
3905 - tcg_gen_helper_0_1(do_mtc0_performance0, cpu_T[0]); 3905 + tcg_gen_helper_0_1(do_mtc0_performance0, t0);
3906 rn = "Performance0"; 3906 rn = "Performance0";
3907 break; 3907 break;
3908 case 1: 3908 case 1:
3909 -// tcg_gen_helper_0_1(do_mtc0_performance1, cpu_T[0]); 3909 +// tcg_gen_helper_0_1(do_mtc0_performance1, t0);
3910 rn = "Performance1"; 3910 rn = "Performance1";
3911 // break; 3911 // break;
3912 case 2: 3912 case 2:
3913 -// tcg_gen_helper_0_1(do_mtc0_performance2, cpu_T[0]); 3913 +// tcg_gen_helper_0_1(do_mtc0_performance2, t0);
3914 rn = "Performance2"; 3914 rn = "Performance2";
3915 // break; 3915 // break;
3916 case 3: 3916 case 3:
3917 -// tcg_gen_helper_0_1(do_mtc0_performance3, cpu_T[0]); 3917 +// tcg_gen_helper_0_1(do_mtc0_performance3, t0);
3918 rn = "Performance3"; 3918 rn = "Performance3";
3919 // break; 3919 // break;
3920 case 4: 3920 case 4:
3921 -// tcg_gen_helper_0_1(do_mtc0_performance4, cpu_T[0]); 3921 +// tcg_gen_helper_0_1(do_mtc0_performance4, t0);
3922 rn = "Performance4"; 3922 rn = "Performance4";
3923 // break; 3923 // break;
3924 case 5: 3924 case 5:
3925 -// tcg_gen_helper_0_1(do_mtc0_performance5, cpu_T[0]); 3925 +// tcg_gen_helper_0_1(do_mtc0_performance5, t0);
3926 rn = "Performance5"; 3926 rn = "Performance5";
3927 // break; 3927 // break;
3928 case 6: 3928 case 6:
3929 -// tcg_gen_helper_0_1(do_mtc0_performance6, cpu_T[0]); 3929 +// tcg_gen_helper_0_1(do_mtc0_performance6, t0);
3930 rn = "Performance6"; 3930 rn = "Performance6";
3931 // break; 3931 // break;
3932 case 7: 3932 case 7:
3933 -// tcg_gen_helper_0_1(do_mtc0_performance7, cpu_T[0]); 3933 +// tcg_gen_helper_0_1(do_mtc0_performance7, t0);
3934 rn = "Performance7"; 3934 rn = "Performance7";
3935 // break; 3935 // break;
3936 default: 3936 default:
@@ -3957,14 +3957,14 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3957,14 +3957,14 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3957 case 2: 3957 case 2:
3958 case 4: 3958 case 4:
3959 case 6: 3959 case 6:
3960 - tcg_gen_helper_0_1(do_mtc0_taglo, cpu_T[0]); 3960 + tcg_gen_helper_0_1(do_mtc0_taglo, t0);
3961 rn = "TagLo"; 3961 rn = "TagLo";
3962 break; 3962 break;
3963 case 1: 3963 case 1:
3964 case 3: 3964 case 3:
3965 case 5: 3965 case 5:
3966 case 7: 3966 case 7:
3967 - tcg_gen_helper_0_1(do_mtc0_datalo, cpu_T[0]); 3967 + tcg_gen_helper_0_1(do_mtc0_datalo, t0);
3968 rn = "DataLo"; 3968 rn = "DataLo";
3969 break; 3969 break;
3970 default: 3970 default:
@@ -3977,14 +3977,14 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3977,14 +3977,14 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3977 case 2: 3977 case 2:
3978 case 4: 3978 case 4:
3979 case 6: 3979 case 6:
3980 - tcg_gen_helper_0_1(do_mtc0_taghi, cpu_T[0]); 3980 + tcg_gen_helper_0_1(do_mtc0_taghi, t0);
3981 rn = "TagHi"; 3981 rn = "TagHi";
3982 break; 3982 break;
3983 case 1: 3983 case 1:
3984 case 3: 3984 case 3:
3985 case 5: 3985 case 5:
3986 case 7: 3986 case 7:
3987 - tcg_gen_helper_0_1(do_mtc0_datahi, cpu_T[0]); 3987 + tcg_gen_helper_0_1(do_mtc0_datahi, t0);
3988 rn = "DataHi"; 3988 rn = "DataHi";
3989 break; 3989 break;
3990 default: 3990 default:
@@ -3995,7 +3995,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -3995,7 +3995,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3995 case 30: 3995 case 30:
3996 switch (sel) { 3996 switch (sel) {
3997 case 0: 3997 case 0:
3998 - gen_mtc0_store64(cpu_T[0], offsetof(CPUState, CP0_ErrorEPC)); 3998 + gen_mtc0_store64(t0, offsetof(CPUState, CP0_ErrorEPC));
3999 rn = "ErrorEPC"; 3999 rn = "ErrorEPC";
4000 break; 4000 break;
4001 default: 4001 default:
@@ -4006,7 +4006,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4006,7 +4006,7 @@ static void gen_mtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4006 switch (sel) { 4006 switch (sel) {
4007 case 0: 4007 case 0:
4008 /* EJTAG support */ 4008 /* EJTAG support */
4009 - gen_mtc0_store32(cpu_T[0], offsetof(CPUState, CP0_DESAVE)); 4009 + gen_mtc0_store32(t0, offsetof(CPUState, CP0_DESAVE));
4010 rn = "DESAVE"; 4010 rn = "DESAVE";
4011 break; 4011 break;
4012 default: 4012 default:
@@ -4037,7 +4037,7 @@ die: @@ -4037,7 +4037,7 @@ die:
4037 } 4037 }
4038 4038
4039 #if defined(TARGET_MIPS64) 4039 #if defined(TARGET_MIPS64)
4040 -static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) 4040 +static void gen_dmfc0 (CPUState *env, DisasContext *ctx, TCGv t0, int reg, int sel)
4041 { 4041 {
4042 const char *rn = "invalid"; 4042 const char *rn = "invalid";
4043 4043
@@ -4048,22 +4048,22 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4048,22 +4048,22 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4048 case 0: 4048 case 0:
4049 switch (sel) { 4049 switch (sel) {
4050 case 0: 4050 case 0:
4051 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Index)); 4051 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Index));
4052 rn = "Index"; 4052 rn = "Index";
4053 break; 4053 break;
4054 case 1: 4054 case 1:
4055 check_insn(env, ctx, ASE_MT); 4055 check_insn(env, ctx, ASE_MT);
4056 - tcg_gen_helper_1_1(do_mfc0_mvpcontrol, cpu_T[0], cpu_T[0]); 4056 + tcg_gen_helper_1_0(do_mfc0_mvpcontrol, t0);
4057 rn = "MVPControl"; 4057 rn = "MVPControl";
4058 break; 4058 break;
4059 case 2: 4059 case 2:
4060 check_insn(env, ctx, ASE_MT); 4060 check_insn(env, ctx, ASE_MT);
4061 - tcg_gen_helper_1_1(do_mfc0_mvpconf0, cpu_T[0], cpu_T[0]); 4061 + tcg_gen_helper_1_0(do_mfc0_mvpconf0, t0);
4062 rn = "MVPConf0"; 4062 rn = "MVPConf0";
4063 break; 4063 break;
4064 case 3: 4064 case 3:
4065 check_insn(env, ctx, ASE_MT); 4065 check_insn(env, ctx, ASE_MT);
4066 - tcg_gen_helper_1_1(do_mfc0_mvpconf1, cpu_T[0], cpu_T[0]); 4066 + tcg_gen_helper_1_0(do_mfc0_mvpconf1, t0);
4067 rn = "MVPConf1"; 4067 rn = "MVPConf1";
4068 break; 4068 break;
4069 default: 4069 default:
@@ -4073,42 +4073,42 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4073,42 +4073,42 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4073 case 1: 4073 case 1:
4074 switch (sel) { 4074 switch (sel) {
4075 case 0: 4075 case 0:
4076 - tcg_gen_helper_1_1(do_mfc0_random, cpu_T[0], cpu_T[0]); 4076 + tcg_gen_helper_1_0(do_mfc0_random, t0);
4077 rn = "Random"; 4077 rn = "Random";
4078 break; 4078 break;
4079 case 1: 4079 case 1:
4080 check_insn(env, ctx, ASE_MT); 4080 check_insn(env, ctx, ASE_MT);
4081 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEControl)); 4081 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEControl));
4082 rn = "VPEControl"; 4082 rn = "VPEControl";
4083 break; 4083 break;
4084 case 2: 4084 case 2:
4085 check_insn(env, ctx, ASE_MT); 4085 check_insn(env, ctx, ASE_MT);
4086 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEConf0)); 4086 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEConf0));
4087 rn = "VPEConf0"; 4087 rn = "VPEConf0";
4088 break; 4088 break;
4089 case 3: 4089 case 3:
4090 check_insn(env, ctx, ASE_MT); 4090 check_insn(env, ctx, ASE_MT);
4091 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEConf1)); 4091 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEConf1));
4092 rn = "VPEConf1"; 4092 rn = "VPEConf1";
4093 break; 4093 break;
4094 case 4: 4094 case 4:
4095 check_insn(env, ctx, ASE_MT); 4095 check_insn(env, ctx, ASE_MT);
4096 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_YQMask)); 4096 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_YQMask));
4097 rn = "YQMask"; 4097 rn = "YQMask";
4098 break; 4098 break;
4099 case 5: 4099 case 5:
4100 check_insn(env, ctx, ASE_MT); 4100 check_insn(env, ctx, ASE_MT);
4101 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPESchedule)); 4101 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_VPESchedule));
4102 rn = "VPESchedule"; 4102 rn = "VPESchedule";
4103 break; 4103 break;
4104 case 6: 4104 case 6:
4105 check_insn(env, ctx, ASE_MT); 4105 check_insn(env, ctx, ASE_MT);
4106 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPEScheFBack)); 4106 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_VPEScheFBack));
4107 rn = "VPEScheFBack"; 4107 rn = "VPEScheFBack";
4108 break; 4108 break;
4109 case 7: 4109 case 7:
4110 check_insn(env, ctx, ASE_MT); 4110 check_insn(env, ctx, ASE_MT);
4111 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_VPEOpt)); 4111 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_VPEOpt));
4112 rn = "VPEOpt"; 4112 rn = "VPEOpt";
4113 break; 4113 break;
4114 default: 4114 default:
@@ -4118,42 +4118,42 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4118,42 +4118,42 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4118 case 2: 4118 case 2:
4119 switch (sel) { 4119 switch (sel) {
4120 case 0: 4120 case 0:
4121 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo0)); 4121 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryLo0));
4122 rn = "EntryLo0"; 4122 rn = "EntryLo0";
4123 break; 4123 break;
4124 case 1: 4124 case 1:
4125 check_insn(env, ctx, ASE_MT); 4125 check_insn(env, ctx, ASE_MT);
4126 - tcg_gen_helper_1_1(do_mfc0_tcstatus, cpu_T[0], cpu_T[0]); 4126 + tcg_gen_helper_1_0(do_mfc0_tcstatus, t0);
4127 rn = "TCStatus"; 4127 rn = "TCStatus";
4128 break; 4128 break;
4129 case 2: 4129 case 2:
4130 check_insn(env, ctx, ASE_MT); 4130 check_insn(env, ctx, ASE_MT);
4131 - tcg_gen_helper_1_1(do_mfc0_tcbind, cpu_T[0], cpu_T[0]); 4131 + tcg_gen_helper_1_0(do_mfc0_tcbind, t0);
4132 rn = "TCBind"; 4132 rn = "TCBind";
4133 break; 4133 break;
4134 case 3: 4134 case 3:
4135 check_insn(env, ctx, ASE_MT); 4135 check_insn(env, ctx, ASE_MT);
4136 - tcg_gen_helper_1_1(do_dmfc0_tcrestart, cpu_T[0], cpu_T[0]); 4136 + tcg_gen_helper_1_0(do_dmfc0_tcrestart, t0);
4137 rn = "TCRestart"; 4137 rn = "TCRestart";
4138 break; 4138 break;
4139 case 4: 4139 case 4:
4140 check_insn(env, ctx, ASE_MT); 4140 check_insn(env, ctx, ASE_MT);
4141 - tcg_gen_helper_1_1(do_dmfc0_tchalt, cpu_T[0], cpu_T[0]); 4141 + tcg_gen_helper_1_0(do_dmfc0_tchalt, t0);
4142 rn = "TCHalt"; 4142 rn = "TCHalt";
4143 break; 4143 break;
4144 case 5: 4144 case 5:
4145 check_insn(env, ctx, ASE_MT); 4145 check_insn(env, ctx, ASE_MT);
4146 - tcg_gen_helper_1_1(do_dmfc0_tccontext, cpu_T[0], cpu_T[0]); 4146 + tcg_gen_helper_1_0(do_dmfc0_tccontext, t0);
4147 rn = "TCContext"; 4147 rn = "TCContext";
4148 break; 4148 break;
4149 case 6: 4149 case 6:
4150 check_insn(env, ctx, ASE_MT); 4150 check_insn(env, ctx, ASE_MT);
4151 - tcg_gen_helper_1_1(do_dmfc0_tcschedule, cpu_T[0], cpu_T[0]); 4151 + tcg_gen_helper_1_0(do_dmfc0_tcschedule, t0);
4152 rn = "TCSchedule"; 4152 rn = "TCSchedule";
4153 break; 4153 break;
4154 case 7: 4154 case 7:
4155 check_insn(env, ctx, ASE_MT); 4155 check_insn(env, ctx, ASE_MT);
4156 - tcg_gen_helper_1_1(do_dmfc0_tcschefback, cpu_T[0], cpu_T[0]); 4156 + tcg_gen_helper_1_0(do_dmfc0_tcschefback, t0);
4157 rn = "TCScheFBack"; 4157 rn = "TCScheFBack";
4158 break; 4158 break;
4159 default: 4159 default:
@@ -4163,7 +4163,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4163,7 +4163,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4163 case 3: 4163 case 3:
4164 switch (sel) { 4164 switch (sel) {
4165 case 0: 4165 case 0:
4166 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo1)); 4166 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryLo1));
4167 rn = "EntryLo1"; 4167 rn = "EntryLo1";
4168 break; 4168 break;
4169 default: 4169 default:
@@ -4173,11 +4173,11 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4173,11 +4173,11 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4173 case 4: 4173 case 4:
4174 switch (sel) { 4174 switch (sel) {
4175 case 0: 4175 case 0:
4176 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_Context)); 4176 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_Context));
4177 rn = "Context"; 4177 rn = "Context";
4178 break; 4178 break;
4179 case 1: 4179 case 1:
4180 -// tcg_gen_helper_1_1(do_dmfc0_contextconfig, cpu_T[0], cpu_T[0]); /* SmartMIPS ASE */ 4180 +// tcg_gen_helper_1_0(do_dmfc0_contextconfig, t0); /* SmartMIPS ASE */
4181 rn = "ContextConfig"; 4181 rn = "ContextConfig";
4182 // break; 4182 // break;
4183 default: 4183 default:
@@ -4187,12 +4187,12 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4187,12 +4187,12 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4187 case 5: 4187 case 5:
4188 switch (sel) { 4188 switch (sel) {
4189 case 0: 4189 case 0:
4190 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PageMask)); 4190 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PageMask));
4191 rn = "PageMask"; 4191 rn = "PageMask";
4192 break; 4192 break;
4193 case 1: 4193 case 1:
4194 check_insn(env, ctx, ISA_MIPS32R2); 4194 check_insn(env, ctx, ISA_MIPS32R2);
4195 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PageGrain)); 4195 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PageGrain));
4196 rn = "PageGrain"; 4196 rn = "PageGrain";
4197 break; 4197 break;
4198 default: 4198 default:
@@ -4202,32 +4202,32 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4202,32 +4202,32 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4202 case 6: 4202 case 6:
4203 switch (sel) { 4203 switch (sel) {
4204 case 0: 4204 case 0:
4205 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Wired)); 4205 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Wired));
4206 rn = "Wired"; 4206 rn = "Wired";
4207 break; 4207 break;
4208 case 1: 4208 case 1:
4209 check_insn(env, ctx, ISA_MIPS32R2); 4209 check_insn(env, ctx, ISA_MIPS32R2);
4210 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf0)); 4210 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf0));
4211 rn = "SRSConf0"; 4211 rn = "SRSConf0";
4212 break; 4212 break;
4213 case 2: 4213 case 2:
4214 check_insn(env, ctx, ISA_MIPS32R2); 4214 check_insn(env, ctx, ISA_MIPS32R2);
4215 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf1)); 4215 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf1));
4216 rn = "SRSConf1"; 4216 rn = "SRSConf1";
4217 break; 4217 break;
4218 case 3: 4218 case 3:
4219 check_insn(env, ctx, ISA_MIPS32R2); 4219 check_insn(env, ctx, ISA_MIPS32R2);
4220 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf2)); 4220 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf2));
4221 rn = "SRSConf2"; 4221 rn = "SRSConf2";
4222 break; 4222 break;
4223 case 4: 4223 case 4:
4224 check_insn(env, ctx, ISA_MIPS32R2); 4224 check_insn(env, ctx, ISA_MIPS32R2);
4225 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf3)); 4225 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf3));
4226 rn = "SRSConf3"; 4226 rn = "SRSConf3";
4227 break; 4227 break;
4228 case 5: 4228 case 5:
4229 check_insn(env, ctx, ISA_MIPS32R2); 4229 check_insn(env, ctx, ISA_MIPS32R2);
4230 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSConf4)); 4230 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSConf4));
4231 rn = "SRSConf4"; 4231 rn = "SRSConf4";
4232 break; 4232 break;
4233 default: 4233 default:
@@ -4238,7 +4238,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4238,7 +4238,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4238 switch (sel) { 4238 switch (sel) {
4239 case 0: 4239 case 0:
4240 check_insn(env, ctx, ISA_MIPS32R2); 4240 check_insn(env, ctx, ISA_MIPS32R2);
4241 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_HWREna)); 4241 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_HWREna));
4242 rn = "HWREna"; 4242 rn = "HWREna";
4243 break; 4243 break;
4244 default: 4244 default:
@@ -4248,7 +4248,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4248,7 +4248,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4248 case 8: 4248 case 8:
4249 switch (sel) { 4249 switch (sel) {
4250 case 0: 4250 case 0:
4251 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_BadVAddr)); 4251 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_BadVAddr));
4252 rn = "BadVAddr"; 4252 rn = "BadVAddr";
4253 break; 4253 break;
4254 default: 4254 default:
@@ -4258,7 +4258,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4258,7 +4258,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4258 case 9: 4258 case 9:
4259 switch (sel) { 4259 switch (sel) {
4260 case 0: 4260 case 0:
4261 - tcg_gen_helper_1_1(do_mfc0_count, cpu_T[0], cpu_T[0]); 4261 + tcg_gen_helper_1_0(do_mfc0_count, t0);
4262 rn = "Count"; 4262 rn = "Count";
4263 break; 4263 break;
4264 /* 6,7 are implementation dependent */ 4264 /* 6,7 are implementation dependent */
@@ -4269,7 +4269,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4269,7 +4269,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4269 case 10: 4269 case 10:
4270 switch (sel) { 4270 switch (sel) {
4271 case 0: 4271 case 0:
4272 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryHi)); 4272 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EntryHi));
4273 rn = "EntryHi"; 4273 rn = "EntryHi";
4274 break; 4274 break;
4275 default: 4275 default:
@@ -4279,7 +4279,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4279,7 +4279,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4279 case 11: 4279 case 11:
4280 switch (sel) { 4280 switch (sel) {
4281 case 0: 4281 case 0:
4282 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Compare)); 4282 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Compare));
4283 rn = "Compare"; 4283 rn = "Compare";
4284 break; 4284 break;
4285 /* 6,7 are implementation dependent */ 4285 /* 6,7 are implementation dependent */
@@ -4290,22 +4290,22 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4290,22 +4290,22 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4290 case 12: 4290 case 12:
4291 switch (sel) { 4291 switch (sel) {
4292 case 0: 4292 case 0:
4293 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Status)); 4293 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Status));
4294 rn = "Status"; 4294 rn = "Status";
4295 break; 4295 break;
4296 case 1: 4296 case 1:
4297 check_insn(env, ctx, ISA_MIPS32R2); 4297 check_insn(env, ctx, ISA_MIPS32R2);
4298 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_IntCtl)); 4298 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_IntCtl));
4299 rn = "IntCtl"; 4299 rn = "IntCtl";
4300 break; 4300 break;
4301 case 2: 4301 case 2:
4302 check_insn(env, ctx, ISA_MIPS32R2); 4302 check_insn(env, ctx, ISA_MIPS32R2);
4303 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSCtl)); 4303 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSCtl));
4304 rn = "SRSCtl"; 4304 rn = "SRSCtl";
4305 break; 4305 break;
4306 case 3: 4306 case 3:
4307 check_insn(env, ctx, ISA_MIPS32R2); 4307 check_insn(env, ctx, ISA_MIPS32R2);
4308 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_SRSMap)); 4308 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_SRSMap));
4309 rn = "SRSMap"; 4309 rn = "SRSMap";
4310 break; 4310 break;
4311 default: 4311 default:
@@ -4315,7 +4315,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4315,7 +4315,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4315 case 13: 4315 case 13:
4316 switch (sel) { 4316 switch (sel) {
4317 case 0: 4317 case 0:
4318 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Cause)); 4318 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Cause));
4319 rn = "Cause"; 4319 rn = "Cause";
4320 break; 4320 break;
4321 default: 4321 default:
@@ -4325,7 +4325,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4325,7 +4325,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4325 case 14: 4325 case 14:
4326 switch (sel) { 4326 switch (sel) {
4327 case 0: 4327 case 0:
4328 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EPC)); 4328 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_EPC));
4329 rn = "EPC"; 4329 rn = "EPC";
4330 break; 4330 break;
4331 default: 4331 default:
@@ -4335,12 +4335,12 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4335,12 +4335,12 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4335 case 15: 4335 case 15:
4336 switch (sel) { 4336 switch (sel) {
4337 case 0: 4337 case 0:
4338 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_PRid)); 4338 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_PRid));
4339 rn = "PRid"; 4339 rn = "PRid";
4340 break; 4340 break;
4341 case 1: 4341 case 1:
4342 check_insn(env, ctx, ISA_MIPS32R2); 4342 check_insn(env, ctx, ISA_MIPS32R2);
4343 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_EBase)); 4343 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_EBase));
4344 rn = "EBase"; 4344 rn = "EBase";
4345 break; 4345 break;
4346 default: 4346 default:
@@ -4350,28 +4350,28 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4350,28 +4350,28 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4350 case 16: 4350 case 16:
4351 switch (sel) { 4351 switch (sel) {
4352 case 0: 4352 case 0:
4353 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config0)); 4353 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config0));
4354 rn = "Config"; 4354 rn = "Config";
4355 break; 4355 break;
4356 case 1: 4356 case 1:
4357 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config1)); 4357 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config1));
4358 rn = "Config1"; 4358 rn = "Config1";
4359 break; 4359 break;
4360 case 2: 4360 case 2:
4361 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config2)); 4361 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config2));
4362 rn = "Config2"; 4362 rn = "Config2";
4363 break; 4363 break;
4364 case 3: 4364 case 3:
4365 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config3)); 4365 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config3));
4366 rn = "Config3"; 4366 rn = "Config3";
4367 break; 4367 break;
4368 /* 6,7 are implementation dependent */ 4368 /* 6,7 are implementation dependent */
4369 case 6: 4369 case 6:
4370 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config6)); 4370 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config6));
4371 rn = "Config6"; 4371 rn = "Config6";
4372 break; 4372 break;
4373 case 7: 4373 case 7:
4374 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Config7)); 4374 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Config7));
4375 rn = "Config7"; 4375 rn = "Config7";
4376 break; 4376 break;
4377 default: 4377 default:
@@ -4381,7 +4381,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4381,7 +4381,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4381 case 17: 4381 case 17:
4382 switch (sel) { 4382 switch (sel) {
4383 case 0: 4383 case 0:
4384 - tcg_gen_helper_1_1(do_dmfc0_lladdr, cpu_T[0], cpu_T[0]); 4384 + tcg_gen_helper_1_0(do_dmfc0_lladdr, t0);
4385 rn = "LLAddr"; 4385 rn = "LLAddr";
4386 break; 4386 break;
4387 default: 4387 default:
@@ -4391,7 +4391,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4391,7 +4391,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4391 case 18: 4391 case 18:
4392 switch (sel) { 4392 switch (sel) {
4393 case 0 ... 7: 4393 case 0 ... 7:
4394 - tcg_gen_helper_1_1i(do_dmfc0_watchlo, cpu_T[0], cpu_T[0], sel); 4394 + tcg_gen_helper_1_i(do_dmfc0_watchlo, t0, sel);
4395 rn = "WatchLo"; 4395 rn = "WatchLo";
4396 break; 4396 break;
4397 default: 4397 default:
@@ -4401,7 +4401,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4401,7 +4401,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4401 case 19: 4401 case 19:
4402 switch (sel) { 4402 switch (sel) {
4403 case 0 ... 7: 4403 case 0 ... 7:
4404 - tcg_gen_helper_1_1i(do_mfc0_watchhi, cpu_T[0], cpu_T[0], sel); 4404 + tcg_gen_helper_1_i(do_mfc0_watchhi, t0, sel);
4405 rn = "WatchHi"; 4405 rn = "WatchHi";
4406 break; 4406 break;
4407 default: 4407 default:
@@ -4412,7 +4412,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4412,7 +4412,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4412 switch (sel) { 4412 switch (sel) {
4413 case 0: 4413 case 0:
4414 check_insn(env, ctx, ISA_MIPS3); 4414 check_insn(env, ctx, ISA_MIPS3);
4415 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_XContext)); 4415 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_XContext));
4416 rn = "XContext"; 4416 rn = "XContext";
4417 break; 4417 break;
4418 default: 4418 default:
@@ -4423,7 +4423,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4423,7 +4423,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4423 /* Officially reserved, but sel 0 is used for R1x000 framemask */ 4423 /* Officially reserved, but sel 0 is used for R1x000 framemask */
4424 switch (sel) { 4424 switch (sel) {
4425 case 0: 4425 case 0:
4426 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Framemask)); 4426 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Framemask));
4427 rn = "Framemask"; 4427 rn = "Framemask";
4428 break; 4428 break;
4429 default: 4429 default:
@@ -4437,23 +4437,23 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4437,23 +4437,23 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4437 case 23: 4437 case 23:
4438 switch (sel) { 4438 switch (sel) {
4439 case 0: 4439 case 0:
4440 - tcg_gen_helper_1_1(do_mfc0_debug, cpu_T[0], cpu_T[0]); /* EJTAG support */ 4440 + tcg_gen_helper_1_0(do_mfc0_debug, t0); /* EJTAG support */
4441 rn = "Debug"; 4441 rn = "Debug";
4442 break; 4442 break;
4443 case 1: 4443 case 1:
4444 -// tcg_gen_helper_1_1(do_dmfc0_tracecontrol, cpu_T[0], cpu_T[0]); /* PDtrace support */ 4444 +// tcg_gen_helper_1_0(do_dmfc0_tracecontrol, t0); /* PDtrace support */
4445 rn = "TraceControl"; 4445 rn = "TraceControl";
4446 // break; 4446 // break;
4447 case 2: 4447 case 2:
4448 -// tcg_gen_helper_1_1(do_dmfc0_tracecontrol2, cpu_T[0], cpu_T[0]); /* PDtrace support */ 4448 +// tcg_gen_helper_1_0(do_dmfc0_tracecontrol2, t0); /* PDtrace support */
4449 rn = "TraceControl2"; 4449 rn = "TraceControl2";
4450 // break; 4450 // break;
4451 case 3: 4451 case 3:
4452 -// tcg_gen_helper_1_1(do_dmfc0_usertracedata, cpu_T[0], cpu_T[0]); /* PDtrace support */ 4452 +// tcg_gen_helper_1_0(do_dmfc0_usertracedata, t0); /* PDtrace support */
4453 rn = "UserTraceData"; 4453 rn = "UserTraceData";
4454 // break; 4454 // break;
4455 case 4: 4455 case 4:
4456 -// tcg_gen_helper_1_1(do_dmfc0_tracebpc, cpu_T[0], cpu_T[0]); /* PDtrace support */ 4456 +// tcg_gen_helper_1_0(do_dmfc0_tracebpc, t0); /* PDtrace support */
4457 rn = "TraceBPC"; 4457 rn = "TraceBPC";
4458 // break; 4458 // break;
4459 default: 4459 default:
@@ -4464,7 +4464,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4464,7 +4464,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4464 switch (sel) { 4464 switch (sel) {
4465 case 0: 4465 case 0:
4466 /* EJTAG support */ 4466 /* EJTAG support */
4467 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_DEPC)); 4467 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_DEPC));
4468 rn = "DEPC"; 4468 rn = "DEPC";
4469 break; 4469 break;
4470 default: 4470 default:
@@ -4474,35 +4474,35 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4474,35 +4474,35 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4474 case 25: 4474 case 25:
4475 switch (sel) { 4475 switch (sel) {
4476 case 0: 4476 case 0:
4477 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_Performance0)); 4477 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_Performance0));
4478 rn = "Performance0"; 4478 rn = "Performance0";
4479 break; 4479 break;
4480 case 1: 4480 case 1:
4481 -// tcg_gen_helper_1_1(do_dmfc0_performance1, cpu_T[0], cpu_T[0]); 4481 +// tcg_gen_helper_1_0(do_dmfc0_performance1, t0);
4482 rn = "Performance1"; 4482 rn = "Performance1";
4483 // break; 4483 // break;
4484 case 2: 4484 case 2:
4485 -// tcg_gen_helper_1_1(do_dmfc0_performance2, cpu_T[0], cpu_T[0]); 4485 +// tcg_gen_helper_1_0(do_dmfc0_performance2, t0);
4486 rn = "Performance2"; 4486 rn = "Performance2";
4487 // break; 4487 // break;
4488 case 3: 4488 case 3:
4489 -// tcg_gen_helper_1_1(do_dmfc0_performance3, cpu_T[0], cpu_T[0]); 4489 +// tcg_gen_helper_1_0(do_dmfc0_performance3, t0);
4490 rn = "Performance3"; 4490 rn = "Performance3";
4491 // break; 4491 // break;
4492 case 4: 4492 case 4:
4493 -// tcg_gen_helper_1_1(do_dmfc0_performance4, cpu_T[0], cpu_T[0]); 4493 +// tcg_gen_helper_1_0(do_dmfc0_performance4, t0);
4494 rn = "Performance4"; 4494 rn = "Performance4";
4495 // break; 4495 // break;
4496 case 5: 4496 case 5:
4497 -// tcg_gen_helper_1_1(do_dmfc0_performance5, cpu_T[0], cpu_T[0]); 4497 +// tcg_gen_helper_1_0(do_dmfc0_performance5, t0);
4498 rn = "Performance5"; 4498 rn = "Performance5";
4499 // break; 4499 // break;
4500 case 6: 4500 case 6:
4501 -// tcg_gen_helper_1_1(do_dmfc0_performance6, cpu_T[0], cpu_T[0]); 4501 +// tcg_gen_helper_1_0(do_dmfc0_performance6, t0);
4502 rn = "Performance6"; 4502 rn = "Performance6";
4503 // break; 4503 // break;
4504 case 7: 4504 case 7:
4505 -// tcg_gen_helper_1_1(do_dmfc0_performance7, cpu_T[0], cpu_T[0]); 4505 +// tcg_gen_helper_1_0(do_dmfc0_performance7, t0);
4506 rn = "Performance7"; 4506 rn = "Performance7";
4507 // break; 4507 // break;
4508 default: 4508 default:
@@ -4528,14 +4528,14 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4528,14 +4528,14 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4528 case 2: 4528 case 2:
4529 case 4: 4529 case 4:
4530 case 6: 4530 case 6:
4531 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_TagLo)); 4531 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_TagLo));
4532 rn = "TagLo"; 4532 rn = "TagLo";
4533 break; 4533 break;
4534 case 1: 4534 case 1:
4535 case 3: 4535 case 3:
4536 case 5: 4536 case 5:
4537 case 7: 4537 case 7:
4538 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DataLo)); 4538 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DataLo));
4539 rn = "DataLo"; 4539 rn = "DataLo";
4540 break; 4540 break;
4541 default: 4541 default:
@@ -4548,14 +4548,14 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4548,14 +4548,14 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4548 case 2: 4548 case 2:
4549 case 4: 4549 case 4:
4550 case 6: 4550 case 6:
4551 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_TagHi)); 4551 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_TagHi));
4552 rn = "TagHi"; 4552 rn = "TagHi";
4553 break; 4553 break;
4554 case 1: 4554 case 1:
4555 case 3: 4555 case 3:
4556 case 5: 4556 case 5:
4557 case 7: 4557 case 7:
4558 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DataHi)); 4558 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DataHi));
4559 rn = "DataHi"; 4559 rn = "DataHi";
4560 break; 4560 break;
4561 default: 4561 default:
@@ -4565,7 +4565,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4565,7 +4565,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4565 case 30: 4565 case 30:
4566 switch (sel) { 4566 switch (sel) {
4567 case 0: 4567 case 0:
4568 - tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_ErrorEPC)); 4568 + tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUState, CP0_ErrorEPC));
4569 rn = "ErrorEPC"; 4569 rn = "ErrorEPC";
4570 break; 4570 break;
4571 default: 4571 default:
@@ -4576,7 +4576,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4576,7 +4576,7 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4576 switch (sel) { 4576 switch (sel) {
4577 case 0: 4577 case 0:
4578 /* EJTAG support */ 4578 /* EJTAG support */
4579 - gen_mfc0_load32(cpu_T[0], offsetof(CPUState, CP0_DESAVE)); 4579 + gen_mfc0_load32(t0, offsetof(CPUState, CP0_DESAVE));
4580 rn = "DESAVE"; 4580 rn = "DESAVE";
4581 break; 4581 break;
4582 default: 4582 default:
@@ -4604,7 +4604,7 @@ die: @@ -4604,7 +4604,7 @@ die:
4604 generate_exception(ctx, EXCP_RI); 4604 generate_exception(ctx, EXCP_RI);
4605 } 4605 }
4606 4606
4607 -static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) 4607 +static void gen_dmtc0 (CPUState *env, DisasContext *ctx, TCGv t0, int reg, int sel)
4608 { 4608 {
4609 const char *rn = "invalid"; 4609 const char *rn = "invalid";
4610 4610
@@ -4615,12 +4615,12 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4615,12 +4615,12 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4615 case 0: 4615 case 0:
4616 switch (sel) { 4616 switch (sel) {
4617 case 0: 4617 case 0:
4618 - tcg_gen_helper_0_1(do_mtc0_index, cpu_T[0]); 4618 + tcg_gen_helper_0_1(do_mtc0_index, t0);
4619 rn = "Index"; 4619 rn = "Index";
4620 break; 4620 break;
4621 case 1: 4621 case 1:
4622 check_insn(env, ctx, ASE_MT); 4622 check_insn(env, ctx, ASE_MT);
4623 - tcg_gen_helper_0_1(do_mtc0_mvpcontrol, cpu_T[0]); 4623 + tcg_gen_helper_0_1(do_mtc0_mvpcontrol, t0);
4624 rn = "MVPControl"; 4624 rn = "MVPControl";
4625 break; 4625 break;
4626 case 2: 4626 case 2:
@@ -4645,37 +4645,37 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4645,37 +4645,37 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4645 break; 4645 break;
4646 case 1: 4646 case 1:
4647 check_insn(env, ctx, ASE_MT); 4647 check_insn(env, ctx, ASE_MT);
4648 - tcg_gen_helper_0_1(do_mtc0_vpecontrol, cpu_T[0]); 4648 + tcg_gen_helper_0_1(do_mtc0_vpecontrol, t0);
4649 rn = "VPEControl"; 4649 rn = "VPEControl";
4650 break; 4650 break;
4651 case 2: 4651 case 2:
4652 check_insn(env, ctx, ASE_MT); 4652 check_insn(env, ctx, ASE_MT);
4653 - tcg_gen_helper_0_1(do_mtc0_vpeconf0, cpu_T[0]); 4653 + tcg_gen_helper_0_1(do_mtc0_vpeconf0, t0);
4654 rn = "VPEConf0"; 4654 rn = "VPEConf0";
4655 break; 4655 break;
4656 case 3: 4656 case 3:
4657 check_insn(env, ctx, ASE_MT); 4657 check_insn(env, ctx, ASE_MT);
4658 - tcg_gen_helper_0_1(do_mtc0_vpeconf1, cpu_T[0]); 4658 + tcg_gen_helper_0_1(do_mtc0_vpeconf1, t0);
4659 rn = "VPEConf1"; 4659 rn = "VPEConf1";
4660 break; 4660 break;
4661 case 4: 4661 case 4:
4662 check_insn(env, ctx, ASE_MT); 4662 check_insn(env, ctx, ASE_MT);
4663 - tcg_gen_helper_0_1(do_mtc0_yqmask, cpu_T[0]); 4663 + tcg_gen_helper_0_1(do_mtc0_yqmask, t0);
4664 rn = "YQMask"; 4664 rn = "YQMask";
4665 break; 4665 break;
4666 case 5: 4666 case 5:
4667 check_insn(env, ctx, ASE_MT); 4667 check_insn(env, ctx, ASE_MT);
4668 - tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPESchedule)); 4668 + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, CP0_VPESchedule));
4669 rn = "VPESchedule"; 4669 rn = "VPESchedule";
4670 break; 4670 break;
4671 case 6: 4671 case 6:
4672 check_insn(env, ctx, ASE_MT); 4672 check_insn(env, ctx, ASE_MT);
4673 - tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPEScheFBack)); 4673 + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, CP0_VPEScheFBack));
4674 rn = "VPEScheFBack"; 4674 rn = "VPEScheFBack";
4675 break; 4675 break;
4676 case 7: 4676 case 7:
4677 check_insn(env, ctx, ASE_MT); 4677 check_insn(env, ctx, ASE_MT);
4678 - tcg_gen_helper_0_1(do_mtc0_vpeopt, cpu_T[0]); 4678 + tcg_gen_helper_0_1(do_mtc0_vpeopt, t0);
4679 rn = "VPEOpt"; 4679 rn = "VPEOpt";
4680 break; 4680 break;
4681 default: 4681 default:
@@ -4685,42 +4685,42 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4685,42 +4685,42 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4685 case 2: 4685 case 2:
4686 switch (sel) { 4686 switch (sel) {
4687 case 0: 4687 case 0:
4688 - tcg_gen_helper_0_1(do_mtc0_entrylo0, cpu_T[0]); 4688 + tcg_gen_helper_0_1(do_mtc0_entrylo0, t0);
4689 rn = "EntryLo0"; 4689 rn = "EntryLo0";
4690 break; 4690 break;
4691 case 1: 4691 case 1:
4692 check_insn(env, ctx, ASE_MT); 4692 check_insn(env, ctx, ASE_MT);
4693 - tcg_gen_helper_0_1(do_mtc0_tcstatus, cpu_T[0]); 4693 + tcg_gen_helper_0_1(do_mtc0_tcstatus, t0);
4694 rn = "TCStatus"; 4694 rn = "TCStatus";
4695 break; 4695 break;
4696 case 2: 4696 case 2:
4697 check_insn(env, ctx, ASE_MT); 4697 check_insn(env, ctx, ASE_MT);
4698 - tcg_gen_helper_0_1(do_mtc0_tcbind, cpu_T[0]); 4698 + tcg_gen_helper_0_1(do_mtc0_tcbind, t0);
4699 rn = "TCBind"; 4699 rn = "TCBind";
4700 break; 4700 break;
4701 case 3: 4701 case 3:
4702 check_insn(env, ctx, ASE_MT); 4702 check_insn(env, ctx, ASE_MT);
4703 - tcg_gen_helper_0_1(do_mtc0_tcrestart, cpu_T[0]); 4703 + tcg_gen_helper_0_1(do_mtc0_tcrestart, t0);
4704 rn = "TCRestart"; 4704 rn = "TCRestart";
4705 break; 4705 break;
4706 case 4: 4706 case 4:
4707 check_insn(env, ctx, ASE_MT); 4707 check_insn(env, ctx, ASE_MT);
4708 - tcg_gen_helper_0_1(do_mtc0_tchalt, cpu_T[0]); 4708 + tcg_gen_helper_0_1(do_mtc0_tchalt, t0);
4709 rn = "TCHalt"; 4709 rn = "TCHalt";
4710 break; 4710 break;
4711 case 5: 4711 case 5:
4712 check_insn(env, ctx, ASE_MT); 4712 check_insn(env, ctx, ASE_MT);
4713 - tcg_gen_helper_0_1(do_mtc0_tccontext, cpu_T[0]); 4713 + tcg_gen_helper_0_1(do_mtc0_tccontext, t0);
4714 rn = "TCContext"; 4714 rn = "TCContext";
4715 break; 4715 break;
4716 case 6: 4716 case 6:
4717 check_insn(env, ctx, ASE_MT); 4717 check_insn(env, ctx, ASE_MT);
4718 - tcg_gen_helper_0_1(do_mtc0_tcschedule, cpu_T[0]); 4718 + tcg_gen_helper_0_1(do_mtc0_tcschedule, t0);
4719 rn = "TCSchedule"; 4719 rn = "TCSchedule";
4720 break; 4720 break;
4721 case 7: 4721 case 7:
4722 check_insn(env, ctx, ASE_MT); 4722 check_insn(env, ctx, ASE_MT);
4723 - tcg_gen_helper_0_1(do_mtc0_tcschefback, cpu_T[0]); 4723 + tcg_gen_helper_0_1(do_mtc0_tcschefback, t0);
4724 rn = "TCScheFBack"; 4724 rn = "TCScheFBack";
4725 break; 4725 break;
4726 default: 4726 default:
@@ -4730,7 +4730,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4730,7 +4730,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4730 case 3: 4730 case 3:
4731 switch (sel) { 4731 switch (sel) {
4732 case 0: 4732 case 0:
4733 - tcg_gen_helper_0_1(do_mtc0_entrylo1, cpu_T[0]); 4733 + tcg_gen_helper_0_1(do_mtc0_entrylo1, t0);
4734 rn = "EntryLo1"; 4734 rn = "EntryLo1";
4735 break; 4735 break;
4736 default: 4736 default:
@@ -4740,11 +4740,11 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4740,11 +4740,11 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4740 case 4: 4740 case 4:
4741 switch (sel) { 4741 switch (sel) {
4742 case 0: 4742 case 0:
4743 - tcg_gen_helper_0_1(do_mtc0_context, cpu_T[0]); 4743 + tcg_gen_helper_0_1(do_mtc0_context, t0);
4744 rn = "Context"; 4744 rn = "Context";
4745 break; 4745 break;
4746 case 1: 4746 case 1:
4747 -// tcg_gen_helper_0_1(do_mtc0_contextconfig, cpu_T[0]); /* SmartMIPS ASE */ 4747 +// tcg_gen_helper_0_1(do_mtc0_contextconfig, t0); /* SmartMIPS ASE */
4748 rn = "ContextConfig"; 4748 rn = "ContextConfig";
4749 // break; 4749 // break;
4750 default: 4750 default:
@@ -4754,12 +4754,12 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4754,12 +4754,12 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4754 case 5: 4754 case 5:
4755 switch (sel) { 4755 switch (sel) {
4756 case 0: 4756 case 0:
4757 - tcg_gen_helper_0_1(do_mtc0_pagemask, cpu_T[0]); 4757 + tcg_gen_helper_0_1(do_mtc0_pagemask, t0);
4758 rn = "PageMask"; 4758 rn = "PageMask";
4759 break; 4759 break;
4760 case 1: 4760 case 1:
4761 check_insn(env, ctx, ISA_MIPS32R2); 4761 check_insn(env, ctx, ISA_MIPS32R2);
4762 - tcg_gen_helper_0_1(do_mtc0_pagegrain, cpu_T[0]); 4762 + tcg_gen_helper_0_1(do_mtc0_pagegrain, t0);
4763 rn = "PageGrain"; 4763 rn = "PageGrain";
4764 break; 4764 break;
4765 default: 4765 default:
@@ -4769,32 +4769,32 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4769,32 +4769,32 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4769 case 6: 4769 case 6:
4770 switch (sel) { 4770 switch (sel) {
4771 case 0: 4771 case 0:
4772 - tcg_gen_helper_0_1(do_mtc0_wired, cpu_T[0]); 4772 + tcg_gen_helper_0_1(do_mtc0_wired, t0);
4773 rn = "Wired"; 4773 rn = "Wired";
4774 break; 4774 break;
4775 case 1: 4775 case 1:
4776 check_insn(env, ctx, ISA_MIPS32R2); 4776 check_insn(env, ctx, ISA_MIPS32R2);
4777 - tcg_gen_helper_0_1(do_mtc0_srsconf0, cpu_T[0]); 4777 + tcg_gen_helper_0_1(do_mtc0_srsconf0, t0);
4778 rn = "SRSConf0"; 4778 rn = "SRSConf0";
4779 break; 4779 break;
4780 case 2: 4780 case 2:
4781 check_insn(env, ctx, ISA_MIPS32R2); 4781 check_insn(env, ctx, ISA_MIPS32R2);
4782 - tcg_gen_helper_0_1(do_mtc0_srsconf1, cpu_T[0]); 4782 + tcg_gen_helper_0_1(do_mtc0_srsconf1, t0);
4783 rn = "SRSConf1"; 4783 rn = "SRSConf1";
4784 break; 4784 break;
4785 case 3: 4785 case 3:
4786 check_insn(env, ctx, ISA_MIPS32R2); 4786 check_insn(env, ctx, ISA_MIPS32R2);
4787 - tcg_gen_helper_0_1(do_mtc0_srsconf2, cpu_T[0]); 4787 + tcg_gen_helper_0_1(do_mtc0_srsconf2, t0);
4788 rn = "SRSConf2"; 4788 rn = "SRSConf2";
4789 break; 4789 break;
4790 case 4: 4790 case 4:
4791 check_insn(env, ctx, ISA_MIPS32R2); 4791 check_insn(env, ctx, ISA_MIPS32R2);
4792 - tcg_gen_helper_0_1(do_mtc0_srsconf3, cpu_T[0]); 4792 + tcg_gen_helper_0_1(do_mtc0_srsconf3, t0);
4793 rn = "SRSConf3"; 4793 rn = "SRSConf3";
4794 break; 4794 break;
4795 case 5: 4795 case 5:
4796 check_insn(env, ctx, ISA_MIPS32R2); 4796 check_insn(env, ctx, ISA_MIPS32R2);
4797 - tcg_gen_helper_0_1(do_mtc0_srsconf4, cpu_T[0]); 4797 + tcg_gen_helper_0_1(do_mtc0_srsconf4, t0);
4798 rn = "SRSConf4"; 4798 rn = "SRSConf4";
4799 break; 4799 break;
4800 default: 4800 default:
@@ -4805,7 +4805,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4805,7 +4805,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4805 switch (sel) { 4805 switch (sel) {
4806 case 0: 4806 case 0:
4807 check_insn(env, ctx, ISA_MIPS32R2); 4807 check_insn(env, ctx, ISA_MIPS32R2);
4808 - tcg_gen_helper_0_1(do_mtc0_hwrena, cpu_T[0]); 4808 + tcg_gen_helper_0_1(do_mtc0_hwrena, t0);
4809 rn = "HWREna"; 4809 rn = "HWREna";
4810 break; 4810 break;
4811 default: 4811 default:
@@ -4819,7 +4819,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4819,7 +4819,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4819 case 9: 4819 case 9:
4820 switch (sel) { 4820 switch (sel) {
4821 case 0: 4821 case 0:
4822 - tcg_gen_helper_0_1(do_mtc0_count, cpu_T[0]); 4822 + tcg_gen_helper_0_1(do_mtc0_count, t0);
4823 rn = "Count"; 4823 rn = "Count";
4824 break; 4824 break;
4825 /* 6,7 are implementation dependent */ 4825 /* 6,7 are implementation dependent */
@@ -4832,7 +4832,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4832,7 +4832,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4832 case 10: 4832 case 10:
4833 switch (sel) { 4833 switch (sel) {
4834 case 0: 4834 case 0:
4835 - tcg_gen_helper_0_1(do_mtc0_entryhi, cpu_T[0]); 4835 + tcg_gen_helper_0_1(do_mtc0_entryhi, t0);
4836 rn = "EntryHi"; 4836 rn = "EntryHi";
4837 break; 4837 break;
4838 default: 4838 default:
@@ -4842,7 +4842,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4842,7 +4842,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4842 case 11: 4842 case 11:
4843 switch (sel) { 4843 switch (sel) {
4844 case 0: 4844 case 0:
4845 - tcg_gen_helper_0_1(do_mtc0_compare, cpu_T[0]); 4845 + tcg_gen_helper_0_1(do_mtc0_compare, t0);
4846 rn = "Compare"; 4846 rn = "Compare";
4847 break; 4847 break;
4848 /* 6,7 are implementation dependent */ 4848 /* 6,7 are implementation dependent */
@@ -4855,7 +4855,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4855,7 +4855,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4855 case 12: 4855 case 12:
4856 switch (sel) { 4856 switch (sel) {
4857 case 0: 4857 case 0:
4858 - tcg_gen_helper_0_1(do_mtc0_status, cpu_T[0]); 4858 + tcg_gen_helper_0_1(do_mtc0_status, t0);
4859 /* BS_STOP isn't good enough here, hflags may have changed. */ 4859 /* BS_STOP isn't good enough here, hflags may have changed. */
4860 gen_save_pc(ctx->pc + 4); 4860 gen_save_pc(ctx->pc + 4);
4861 ctx->bstate = BS_EXCP; 4861 ctx->bstate = BS_EXCP;
@@ -4863,21 +4863,21 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4863,21 +4863,21 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4863 break; 4863 break;
4864 case 1: 4864 case 1:
4865 check_insn(env, ctx, ISA_MIPS32R2); 4865 check_insn(env, ctx, ISA_MIPS32R2);
4866 - tcg_gen_helper_0_1(do_mtc0_intctl, cpu_T[0]); 4866 + tcg_gen_helper_0_1(do_mtc0_intctl, t0);
4867 /* Stop translation as we may have switched the execution mode */ 4867 /* Stop translation as we may have switched the execution mode */
4868 ctx->bstate = BS_STOP; 4868 ctx->bstate = BS_STOP;
4869 rn = "IntCtl"; 4869 rn = "IntCtl";
4870 break; 4870 break;
4871 case 2: 4871 case 2:
4872 check_insn(env, ctx, ISA_MIPS32R2); 4872 check_insn(env, ctx, ISA_MIPS32R2);
4873 - tcg_gen_helper_0_1(do_mtc0_srsctl, cpu_T[0]); 4873 + tcg_gen_helper_0_1(do_mtc0_srsctl, t0);
4874 /* Stop translation as we may have switched the execution mode */ 4874 /* Stop translation as we may have switched the execution mode */
4875 ctx->bstate = BS_STOP; 4875 ctx->bstate = BS_STOP;
4876 rn = "SRSCtl"; 4876 rn = "SRSCtl";
4877 break; 4877 break;
4878 case 3: 4878 case 3:
4879 check_insn(env, ctx, ISA_MIPS32R2); 4879 check_insn(env, ctx, ISA_MIPS32R2);
4880 - gen_mtc0_store32(cpu_T[0], offsetof(CPUState, CP0_SRSMap)); 4880 + gen_mtc0_store32(t0, offsetof(CPUState, CP0_SRSMap));
4881 /* Stop translation as we may have switched the execution mode */ 4881 /* Stop translation as we may have switched the execution mode */
4882 ctx->bstate = BS_STOP; 4882 ctx->bstate = BS_STOP;
4883 rn = "SRSMap"; 4883 rn = "SRSMap";
@@ -4889,7 +4889,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4889,7 +4889,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4889 case 13: 4889 case 13:
4890 switch (sel) { 4890 switch (sel) {
4891 case 0: 4891 case 0:
4892 - tcg_gen_helper_0_1(do_mtc0_cause, cpu_T[0]); 4892 + tcg_gen_helper_0_1(do_mtc0_cause, t0);
4893 rn = "Cause"; 4893 rn = "Cause";
4894 break; 4894 break;
4895 default: 4895 default:
@@ -4901,7 +4901,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4901,7 +4901,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4901 case 14: 4901 case 14:
4902 switch (sel) { 4902 switch (sel) {
4903 case 0: 4903 case 0:
4904 - tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EPC)); 4904 + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, CP0_EPC));
4905 rn = "EPC"; 4905 rn = "EPC";
4906 break; 4906 break;
4907 default: 4907 default:
@@ -4916,7 +4916,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4916,7 +4916,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4916 break; 4916 break;
4917 case 1: 4917 case 1:
4918 check_insn(env, ctx, ISA_MIPS32R2); 4918 check_insn(env, ctx, ISA_MIPS32R2);
4919 - tcg_gen_helper_0_1(do_mtc0_ebase, cpu_T[0]); 4919 + tcg_gen_helper_0_1(do_mtc0_ebase, t0);
4920 rn = "EBase"; 4920 rn = "EBase";
4921 break; 4921 break;
4922 default: 4922 default:
@@ -4926,7 +4926,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4926,7 +4926,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4926 case 16: 4926 case 16:
4927 switch (sel) { 4927 switch (sel) {
4928 case 0: 4928 case 0:
4929 - tcg_gen_helper_0_1(do_mtc0_config0, cpu_T[0]); 4929 + tcg_gen_helper_0_1(do_mtc0_config0, t0);
4930 rn = "Config"; 4930 rn = "Config";
4931 /* Stop translation as we may have switched the execution mode */ 4931 /* Stop translation as we may have switched the execution mode */
4932 ctx->bstate = BS_STOP; 4932 ctx->bstate = BS_STOP;
@@ -4936,7 +4936,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4936,7 +4936,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4936 rn = "Config1"; 4936 rn = "Config1";
4937 break; 4937 break;
4938 case 2: 4938 case 2:
4939 - tcg_gen_helper_0_1(do_mtc0_config2, cpu_T[0]); 4939 + tcg_gen_helper_0_1(do_mtc0_config2, t0);
4940 rn = "Config2"; 4940 rn = "Config2";
4941 /* Stop translation as we may have switched the execution mode */ 4941 /* Stop translation as we may have switched the execution mode */
4942 ctx->bstate = BS_STOP; 4942 ctx->bstate = BS_STOP;
@@ -4964,7 +4964,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4964,7 +4964,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4964 case 18: 4964 case 18:
4965 switch (sel) { 4965 switch (sel) {
4966 case 0 ... 7: 4966 case 0 ... 7:
4967 - tcg_gen_helper_0_1i(do_mtc0_watchlo, cpu_T[0], sel); 4967 + tcg_gen_helper_0_1i(do_mtc0_watchlo, t0, sel);
4968 rn = "WatchLo"; 4968 rn = "WatchLo";
4969 break; 4969 break;
4970 default: 4970 default:
@@ -4974,7 +4974,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4974,7 +4974,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4974 case 19: 4974 case 19:
4975 switch (sel) { 4975 switch (sel) {
4976 case 0 ... 7: 4976 case 0 ... 7:
4977 - tcg_gen_helper_0_1i(do_mtc0_watchhi, cpu_T[0], sel); 4977 + tcg_gen_helper_0_1i(do_mtc0_watchhi, t0, sel);
4978 rn = "WatchHi"; 4978 rn = "WatchHi";
4979 break; 4979 break;
4980 default: 4980 default:
@@ -4985,7 +4985,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4985,7 +4985,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4985 switch (sel) { 4985 switch (sel) {
4986 case 0: 4986 case 0:
4987 check_insn(env, ctx, ISA_MIPS3); 4987 check_insn(env, ctx, ISA_MIPS3);
4988 - tcg_gen_helper_0_1(do_mtc0_xcontext, cpu_T[0]); 4988 + tcg_gen_helper_0_1(do_mtc0_xcontext, t0);
4989 rn = "XContext"; 4989 rn = "XContext";
4990 break; 4990 break;
4991 default: 4991 default:
@@ -4996,7 +4996,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -4996,7 +4996,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
4996 /* Officially reserved, but sel 0 is used for R1x000 framemask */ 4996 /* Officially reserved, but sel 0 is used for R1x000 framemask */
4997 switch (sel) { 4997 switch (sel) {
4998 case 0: 4998 case 0:
4999 - tcg_gen_helper_0_1(do_mtc0_framemask, cpu_T[0]); 4999 + tcg_gen_helper_0_1(do_mtc0_framemask, t0);
5000 rn = "Framemask"; 5000 rn = "Framemask";
5001 break; 5001 break;
5002 default: 5002 default:
@@ -5010,32 +5010,32 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5010,32 +5010,32 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5010 case 23: 5010 case 23:
5011 switch (sel) { 5011 switch (sel) {
5012 case 0: 5012 case 0:
5013 - tcg_gen_helper_0_1(do_mtc0_debug, cpu_T[0]); /* EJTAG support */ 5013 + tcg_gen_helper_0_1(do_mtc0_debug, t0); /* EJTAG support */
5014 /* BS_STOP isn't good enough here, hflags may have changed. */ 5014 /* BS_STOP isn't good enough here, hflags may have changed. */
5015 gen_save_pc(ctx->pc + 4); 5015 gen_save_pc(ctx->pc + 4);
5016 ctx->bstate = BS_EXCP; 5016 ctx->bstate = BS_EXCP;
5017 rn = "Debug"; 5017 rn = "Debug";
5018 break; 5018 break;
5019 case 1: 5019 case 1:
5020 -// tcg_gen_helper_0_1(do_mtc0_tracecontrol, cpu_T[0]); /* PDtrace support */ 5020 +// tcg_gen_helper_0_1(do_mtc0_tracecontrol, t0); /* PDtrace support */
5021 /* Stop translation as we may have switched the execution mode */ 5021 /* Stop translation as we may have switched the execution mode */
5022 ctx->bstate = BS_STOP; 5022 ctx->bstate = BS_STOP;
5023 rn = "TraceControl"; 5023 rn = "TraceControl";
5024 // break; 5024 // break;
5025 case 2: 5025 case 2:
5026 -// tcg_gen_helper_0_1(do_mtc0_tracecontrol2, cpu_T[0]); /* PDtrace support */ 5026 +// tcg_gen_helper_0_1(do_mtc0_tracecontrol2, t0); /* PDtrace support */
5027 /* Stop translation as we may have switched the execution mode */ 5027 /* Stop translation as we may have switched the execution mode */
5028 ctx->bstate = BS_STOP; 5028 ctx->bstate = BS_STOP;
5029 rn = "TraceControl2"; 5029 rn = "TraceControl2";
5030 // break; 5030 // break;
5031 case 3: 5031 case 3:
5032 -// tcg_gen_helper_0_1(do_mtc0_usertracedata, cpu_T[0]); /* PDtrace support */ 5032 +// tcg_gen_helper_0_1(do_mtc0_usertracedata, t0); /* PDtrace support */
5033 /* Stop translation as we may have switched the execution mode */ 5033 /* Stop translation as we may have switched the execution mode */
5034 ctx->bstate = BS_STOP; 5034 ctx->bstate = BS_STOP;
5035 rn = "UserTraceData"; 5035 rn = "UserTraceData";
5036 // break; 5036 // break;
5037 case 4: 5037 case 4:
5038 -// tcg_gen_helper_0_1(do_mtc0_tracebpc, cpu_T[0]); /* PDtrace support */ 5038 +// tcg_gen_helper_0_1(do_mtc0_tracebpc, t0); /* PDtrace support */
5039 /* Stop translation as we may have switched the execution mode */ 5039 /* Stop translation as we may have switched the execution mode */
5040 ctx->bstate = BS_STOP; 5040 ctx->bstate = BS_STOP;
5041 rn = "TraceBPC"; 5041 rn = "TraceBPC";
@@ -5048,7 +5048,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5048,7 +5048,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5048 switch (sel) { 5048 switch (sel) {
5049 case 0: 5049 case 0:
5050 /* EJTAG support */ 5050 /* EJTAG support */
5051 - tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_DEPC)); 5051 + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, CP0_DEPC));
5052 rn = "DEPC"; 5052 rn = "DEPC";
5053 break; 5053 break;
5054 default: 5054 default:
@@ -5058,35 +5058,35 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5058,35 +5058,35 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5058 case 25: 5058 case 25:
5059 switch (sel) { 5059 switch (sel) {
5060 case 0: 5060 case 0:
5061 - tcg_gen_helper_0_1(do_mtc0_performance0, cpu_T[0]); 5061 + tcg_gen_helper_0_1(do_mtc0_performance0, t0);
5062 rn = "Performance0"; 5062 rn = "Performance0";
5063 break; 5063 break;
5064 case 1: 5064 case 1:
5065 -// tcg_gen_helper_0_1(do_mtc0_performance1, cpu_T[0]); 5065 +// tcg_gen_helper_0_1(do_mtc0_performance1, t0);
5066 rn = "Performance1"; 5066 rn = "Performance1";
5067 // break; 5067 // break;
5068 case 2: 5068 case 2:
5069 -// tcg_gen_helper_0_1(do_mtc0_performance2, cpu_T[0]); 5069 +// tcg_gen_helper_0_1(do_mtc0_performance2, t0);
5070 rn = "Performance2"; 5070 rn = "Performance2";
5071 // break; 5071 // break;
5072 case 3: 5072 case 3:
5073 -// tcg_gen_helper_0_1(do_mtc0_performance3, cpu_T[0]); 5073 +// tcg_gen_helper_0_1(do_mtc0_performance3, t0);
5074 rn = "Performance3"; 5074 rn = "Performance3";
5075 // break; 5075 // break;
5076 case 4: 5076 case 4:
5077 -// tcg_gen_helper_0_1(do_mtc0_performance4, cpu_T[0]); 5077 +// tcg_gen_helper_0_1(do_mtc0_performance4, t0);
5078 rn = "Performance4"; 5078 rn = "Performance4";
5079 // break; 5079 // break;
5080 case 5: 5080 case 5:
5081 -// tcg_gen_helper_0_1(do_mtc0_performance5, cpu_T[0]); 5081 +// tcg_gen_helper_0_1(do_mtc0_performance5, t0);
5082 rn = "Performance5"; 5082 rn = "Performance5";
5083 // break; 5083 // break;
5084 case 6: 5084 case 6:
5085 -// tcg_gen_helper_0_1(do_mtc0_performance6, cpu_T[0]); 5085 +// tcg_gen_helper_0_1(do_mtc0_performance6, t0);
5086 rn = "Performance6"; 5086 rn = "Performance6";
5087 // break; 5087 // break;
5088 case 7: 5088 case 7:
5089 -// tcg_gen_helper_0_1(do_mtc0_performance7, cpu_T[0]); 5089 +// tcg_gen_helper_0_1(do_mtc0_performance7, t0);
5090 rn = "Performance7"; 5090 rn = "Performance7";
5091 // break; 5091 // break;
5092 default: 5092 default:
@@ -5113,14 +5113,14 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5113,14 +5113,14 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5113 case 2: 5113 case 2:
5114 case 4: 5114 case 4:
5115 case 6: 5115 case 6:
5116 - tcg_gen_helper_0_1(do_mtc0_taglo, cpu_T[0]); 5116 + tcg_gen_helper_0_1(do_mtc0_taglo, t0);
5117 rn = "TagLo"; 5117 rn = "TagLo";
5118 break; 5118 break;
5119 case 1: 5119 case 1:
5120 case 3: 5120 case 3:
5121 case 5: 5121 case 5:
5122 case 7: 5122 case 7:
5123 - tcg_gen_helper_0_1(do_mtc0_datalo, cpu_T[0]); 5123 + tcg_gen_helper_0_1(do_mtc0_datalo, t0);
5124 rn = "DataLo"; 5124 rn = "DataLo";
5125 break; 5125 break;
5126 default: 5126 default:
@@ -5133,14 +5133,14 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5133,14 +5133,14 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5133 case 2: 5133 case 2:
5134 case 4: 5134 case 4:
5135 case 6: 5135 case 6:
5136 - tcg_gen_helper_0_1(do_mtc0_taghi, cpu_T[0]); 5136 + tcg_gen_helper_0_1(do_mtc0_taghi, t0);
5137 rn = "TagHi"; 5137 rn = "TagHi";
5138 break; 5138 break;
5139 case 1: 5139 case 1:
5140 case 3: 5140 case 3:
5141 case 5: 5141 case 5:
5142 case 7: 5142 case 7:
5143 - tcg_gen_helper_0_1(do_mtc0_datahi, cpu_T[0]); 5143 + tcg_gen_helper_0_1(do_mtc0_datahi, t0);
5144 rn = "DataHi"; 5144 rn = "DataHi";
5145 break; 5145 break;
5146 default: 5146 default:
@@ -5151,7 +5151,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5151,7 +5151,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5151 case 30: 5151 case 30:
5152 switch (sel) { 5152 switch (sel) {
5153 case 0: 5153 case 0:
5154 - tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_ErrorEPC)); 5154 + tcg_gen_st_tl(t0, cpu_env, offsetof(CPUState, CP0_ErrorEPC));
5155 rn = "ErrorEPC"; 5155 rn = "ErrorEPC";
5156 break; 5156 break;
5157 default: 5157 default:
@@ -5162,7 +5162,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5162,7 +5162,7 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5162 switch (sel) { 5162 switch (sel) {
5163 case 0: 5163 case 0:
5164 /* EJTAG support */ 5164 /* EJTAG support */
5165 - gen_mtc0_store32(cpu_T[0], offsetof(CPUState, CP0_DESAVE)); 5165 + gen_mtc0_store32(t0, offsetof(CPUState, CP0_DESAVE));
5166 rn = "DESAVE"; 5166 rn = "DESAVE";
5167 break; 5167 break;
5168 default: 5168 default:
@@ -5180,9 +5180,11 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel) @@ -5180,9 +5180,11 @@ static void gen_dmtc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
5180 rn, reg, sel); 5180 rn, reg, sel);
5181 } 5181 }
5182 #endif 5182 #endif
  5183 + tcg_temp_free(t0);
5183 return; 5184 return;
5184 5185
5185 die: 5186 die:
  5187 + tcg_temp_free(t0);
5186 #if defined MIPS_DEBUG_DISAS 5188 #if defined MIPS_DEBUG_DISAS
5187 if (loglevel & CPU_LOG_TB_IN_ASM) { 5189 if (loglevel & CPU_LOG_TB_IN_ASM) {
5188 fprintf(logfile, "dmtc0 %s (reg %d sel %d)\n", 5190 fprintf(logfile, "dmtc0 %s (reg %d sel %d)\n",
@@ -5197,121 +5199,122 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd, @@ -5197,121 +5199,122 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd,
5197 int u, int sel, int h) 5199 int u, int sel, int h)
5198 { 5200 {
5199 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 5201 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
  5202 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
5200 5203
5201 if ((env->CP0_VPEConf0 & (1 << CP0VPEC0_MVP)) == 0 && 5204 if ((env->CP0_VPEConf0 & (1 << CP0VPEC0_MVP)) == 0 &&
5202 ((env->CP0_TCBind[other_tc] & (0xf << CP0TCBd_CurVPE)) != 5205 ((env->CP0_TCBind[other_tc] & (0xf << CP0TCBd_CurVPE)) !=
5203 (env->CP0_TCBind[env->current_tc] & (0xf << CP0TCBd_CurVPE)))) 5206 (env->CP0_TCBind[env->current_tc] & (0xf << CP0TCBd_CurVPE))))
5204 - tcg_gen_movi_tl(cpu_T[0], -1); 5207 + tcg_gen_movi_tl(t0, -1);
5205 else if ((env->CP0_VPEControl & (0xff << CP0VPECo_TargTC)) > 5208 else if ((env->CP0_VPEControl & (0xff << CP0VPECo_TargTC)) >
5206 (env->mvp->CP0_MVPConf0 & (0xff << CP0MVPC0_PTC))) 5209 (env->mvp->CP0_MVPConf0 & (0xff << CP0MVPC0_PTC)))
5207 - tcg_gen_movi_tl(cpu_T[0], -1); 5210 + tcg_gen_movi_tl(t0, -1);
5208 else if (u == 0) { 5211 else if (u == 0) {
5209 switch (rt) { 5212 switch (rt) {
5210 case 2: 5213 case 2:
5211 switch (sel) { 5214 switch (sel) {
5212 case 1: 5215 case 1:
5213 - tcg_gen_helper_1_1(do_mftc0_tcstatus, cpu_T[0], cpu_T[0]); 5216 + tcg_gen_helper_1_1(do_mftc0_tcstatus, t0, t0);
5214 break; 5217 break;
5215 case 2: 5218 case 2:
5216 - tcg_gen_helper_1_1(do_mftc0_tcbind, cpu_T[0], cpu_T[0]); 5219 + tcg_gen_helper_1_1(do_mftc0_tcbind, t0, t0);
5217 break; 5220 break;
5218 case 3: 5221 case 3:
5219 - tcg_gen_helper_1_1(do_mftc0_tcrestart, cpu_T[0], cpu_T[0]); 5222 + tcg_gen_helper_1_1(do_mftc0_tcrestart, t0, t0);
5220 break; 5223 break;
5221 case 4: 5224 case 4:
5222 - tcg_gen_helper_1_1(do_mftc0_tchalt, cpu_T[0], cpu_T[0]); 5225 + tcg_gen_helper_1_1(do_mftc0_tchalt, t0, t0);
5223 break; 5226 break;
5224 case 5: 5227 case 5:
5225 - tcg_gen_helper_1_1(do_mftc0_tccontext, cpu_T[0], cpu_T[0]); 5228 + tcg_gen_helper_1_1(do_mftc0_tccontext, t0, t0);
5226 break; 5229 break;
5227 case 6: 5230 case 6:
5228 - tcg_gen_helper_1_1(do_mftc0_tcschedule, cpu_T[0], cpu_T[0]); 5231 + tcg_gen_helper_1_1(do_mftc0_tcschedule, t0, t0);
5229 break; 5232 break;
5230 case 7: 5233 case 7:
5231 - tcg_gen_helper_1_1(do_mftc0_tcschefback, cpu_T[0], cpu_T[0]); 5234 + tcg_gen_helper_1_1(do_mftc0_tcschefback, t0, t0);
5232 break; 5235 break;
5233 default: 5236 default:
5234 - gen_mfc0(env, ctx, rt, sel); 5237 + gen_mfc0(env, ctx, t0, rt, sel);
5235 break; 5238 break;
5236 } 5239 }
5237 break; 5240 break;
5238 case 10: 5241 case 10:
5239 switch (sel) { 5242 switch (sel) {
5240 case 0: 5243 case 0:
5241 - tcg_gen_helper_1_1(do_mftc0_entryhi, cpu_T[0], cpu_T[0]); 5244 + tcg_gen_helper_1_1(do_mftc0_entryhi, t0, t0);
5242 break; 5245 break;
5243 default: 5246 default:
5244 - gen_mfc0(env, ctx, rt, sel); 5247 + gen_mfc0(env, ctx, t0, rt, sel);
5245 break; 5248 break;
5246 } 5249 }
5247 case 12: 5250 case 12:
5248 switch (sel) { 5251 switch (sel) {
5249 case 0: 5252 case 0:
5250 - tcg_gen_helper_1_1(do_mftc0_status, cpu_T[0], cpu_T[0]); 5253 + tcg_gen_helper_1_1(do_mftc0_status, t0, t0);
5251 break; 5254 break;
5252 default: 5255 default:
5253 - gen_mfc0(env, ctx, rt, sel); 5256 + gen_mfc0(env, ctx, t0, rt, sel);
5254 break; 5257 break;
5255 } 5258 }
5256 case 23: 5259 case 23:
5257 switch (sel) { 5260 switch (sel) {
5258 case 0: 5261 case 0:
5259 - tcg_gen_helper_1_1(do_mftc0_debug, cpu_T[0], cpu_T[0]); 5262 + tcg_gen_helper_1_1(do_mftc0_debug, t0, t0);
5260 break; 5263 break;
5261 default: 5264 default:
5262 - gen_mfc0(env, ctx, rt, sel); 5265 + gen_mfc0(env, ctx, t0, rt, sel);
5263 break; 5266 break;
5264 } 5267 }
5265 break; 5268 break;
5266 default: 5269 default:
5267 - gen_mfc0(env, ctx, rt, sel); 5270 + gen_mfc0(env, ctx, t0, rt, sel);
5268 } 5271 }
5269 } else switch (sel) { 5272 } else switch (sel) {
5270 /* GPR registers. */ 5273 /* GPR registers. */
5271 case 0: 5274 case 0:
5272 - tcg_gen_helper_1_1i(do_mftgpr, cpu_T[0], cpu_T[0], rt); 5275 + tcg_gen_helper_1_1i(do_mftgpr, t0, t0, rt);
5273 break; 5276 break;
5274 /* Auxiliary CPU registers */ 5277 /* Auxiliary CPU registers */
5275 case 1: 5278 case 1:
5276 switch (rt) { 5279 switch (rt) {
5277 case 0: 5280 case 0:
5278 - tcg_gen_helper_1_1i(do_mftlo, cpu_T[0], cpu_T[0], 0); 5281 + tcg_gen_helper_1_1i(do_mftlo, t0, t0, 0);
5279 break; 5282 break;
5280 case 1: 5283 case 1:
5281 - tcg_gen_helper_1_1i(do_mfthi, cpu_T[0], cpu_T[0], 0); 5284 + tcg_gen_helper_1_1i(do_mfthi, t0, t0, 0);
5282 break; 5285 break;
5283 case 2: 5286 case 2:
5284 - tcg_gen_helper_1_1i(do_mftacx, cpu_T[0], cpu_T[0], 0); 5287 + tcg_gen_helper_1_1i(do_mftacx, t0, t0, 0);
5285 break; 5288 break;
5286 case 4: 5289 case 4:
5287 - tcg_gen_helper_1_1i(do_mftlo, cpu_T[0], cpu_T[0], 1); 5290 + tcg_gen_helper_1_1i(do_mftlo, t0, t0, 1);
5288 break; 5291 break;
5289 case 5: 5292 case 5:
5290 - tcg_gen_helper_1_1i(do_mfthi, cpu_T[0], cpu_T[0], 1); 5293 + tcg_gen_helper_1_1i(do_mfthi, t0, t0, 1);
5291 break; 5294 break;
5292 case 6: 5295 case 6:
5293 - tcg_gen_helper_1_1i(do_mftacx, cpu_T[0], cpu_T[0], 1); 5296 + tcg_gen_helper_1_1i(do_mftacx, t0, t0, 1);
5294 break; 5297 break;
5295 case 8: 5298 case 8:
5296 - tcg_gen_helper_1_1i(do_mftlo, cpu_T[0], cpu_T[0], 2); 5299 + tcg_gen_helper_1_1i(do_mftlo, t0, t0, 2);
5297 break; 5300 break;
5298 case 9: 5301 case 9:
5299 - tcg_gen_helper_1_1i(do_mfthi, cpu_T[0], cpu_T[0], 2); 5302 + tcg_gen_helper_1_1i(do_mfthi, t0, t0, 2);
5300 break; 5303 break;
5301 case 10: 5304 case 10:
5302 - tcg_gen_helper_1_1i(do_mftacx, cpu_T[0], cpu_T[0], 2); 5305 + tcg_gen_helper_1_1i(do_mftacx, t0, t0, 2);
5303 break; 5306 break;
5304 case 12: 5307 case 12:
5305 - tcg_gen_helper_1_1i(do_mftlo, cpu_T[0], cpu_T[0], 3); 5308 + tcg_gen_helper_1_1i(do_mftlo, t0, t0, 3);
5306 break; 5309 break;
5307 case 13: 5310 case 13:
5308 - tcg_gen_helper_1_1i(do_mfthi, cpu_T[0], cpu_T[0], 3); 5311 + tcg_gen_helper_1_1i(do_mfthi, t0, t0, 3);
5309 break; 5312 break;
5310 case 14: 5313 case 14:
5311 - tcg_gen_helper_1_1i(do_mftacx, cpu_T[0], cpu_T[0], 3); 5314 + tcg_gen_helper_1_1i(do_mftacx, t0, t0, 3);
5312 break; 5315 break;
5313 case 16: 5316 case 16:
5314 - tcg_gen_helper_1_1(do_mftdsp, cpu_T[0], cpu_T[0]); 5317 + tcg_gen_helper_1_1(do_mftdsp, t0, t0);
5315 break; 5318 break;
5316 default: 5319 default:
5317 goto die; 5320 goto die;
@@ -5322,15 +5325,15 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd, @@ -5322,15 +5325,15 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd,
5322 /* XXX: For now we support only a single FPU context. */ 5325 /* XXX: For now we support only a single FPU context. */
5323 if (h == 0) { 5326 if (h == 0) {
5324 gen_load_fpr32(fpu32_T[0], rt); 5327 gen_load_fpr32(fpu32_T[0], rt);
5325 - tcg_gen_ext_i32_tl(cpu_T[0], fpu32_T[0]); 5328 + tcg_gen_ext_i32_tl(t0, fpu32_T[0]);
5326 } else { 5329 } else {
5327 gen_load_fpr32h(fpu32h_T[0], rt); 5330 gen_load_fpr32h(fpu32h_T[0], rt);
5328 - tcg_gen_ext_i32_tl(cpu_T[0], fpu32h_T[0]); 5331 + tcg_gen_ext_i32_tl(t0, fpu32h_T[0]);
5329 } 5332 }
5330 break; 5333 break;
5331 case 3: 5334 case 3:
5332 /* XXX: For now we support only a single FPU context. */ 5335 /* XXX: For now we support only a single FPU context. */
5333 - tcg_gen_helper_1_1i(do_cfc1, cpu_T[0], cpu_T[0], rt); 5336 + tcg_gen_helper_1_1i(do_cfc1, t0, t0, rt);
5334 break; 5337 break;
5335 /* COP2: Not implemented. */ 5338 /* COP2: Not implemented. */
5336 case 4: 5339 case 4:
@@ -5345,10 +5348,12 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd, @@ -5345,10 +5348,12 @@ static void gen_mftr(CPUState *env, DisasContext *ctx, int rt, int rd,
5345 rt, u, sel, h); 5348 rt, u, sel, h);
5346 } 5349 }
5347 #endif 5350 #endif
5348 - gen_store_gpr(cpu_T[0], rd); 5351 + gen_store_gpr(t0, rd);
  5352 + tcg_temp_free(t0);
5349 return; 5353 return;
5350 5354
5351 die: 5355 die:
  5356 + tcg_temp_free(t0);
5352 #if defined MIPS_DEBUG_DISAS 5357 #if defined MIPS_DEBUG_DISAS
5353 if (loglevel & CPU_LOG_TB_IN_ASM) { 5358 if (loglevel & CPU_LOG_TB_IN_ASM) {
5354 fprintf(logfile, "mftr (reg %d u %d sel %d h %d)\n", 5359 fprintf(logfile, "mftr (reg %d u %d sel %d h %d)\n",
@@ -5362,8 +5367,9 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt, @@ -5362,8 +5367,9 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt,
5362 int u, int sel, int h) 5367 int u, int sel, int h)
5363 { 5368 {
5364 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); 5369 int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
  5370 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
5365 5371
5366 - gen_load_gpr(cpu_T[0], rt); 5372 + gen_load_gpr(t0, rt);
5367 if ((env->CP0_VPEConf0 & (1 << CP0VPEC0_MVP)) == 0 && 5373 if ((env->CP0_VPEConf0 & (1 << CP0VPEC0_MVP)) == 0 &&
5368 ((env->CP0_TCBind[other_tc] & (0xf << CP0TCBd_CurVPE)) != 5374 ((env->CP0_TCBind[other_tc] & (0xf << CP0TCBd_CurVPE)) !=
5369 (env->CP0_TCBind[env->current_tc] & (0xf << CP0TCBd_CurVPE)))) 5375 (env->CP0_TCBind[env->current_tc] & (0xf << CP0TCBd_CurVPE))))
@@ -5376,108 +5382,108 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt, @@ -5376,108 +5382,108 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt,
5376 case 2: 5382 case 2:
5377 switch (sel) { 5383 switch (sel) {
5378 case 1: 5384 case 1:
5379 - tcg_gen_helper_0_1(do_mttc0_tcstatus, cpu_T[0]); 5385 + tcg_gen_helper_0_1(do_mttc0_tcstatus, t0);
5380 break; 5386 break;
5381 case 2: 5387 case 2:
5382 - tcg_gen_helper_0_1(do_mttc0_tcbind, cpu_T[0]); 5388 + tcg_gen_helper_0_1(do_mttc0_tcbind, t0);
5383 break; 5389 break;
5384 case 3: 5390 case 3:
5385 - tcg_gen_helper_0_1(do_mttc0_tcrestart, cpu_T[0]); 5391 + tcg_gen_helper_0_1(do_mttc0_tcrestart, t0);
5386 break; 5392 break;
5387 case 4: 5393 case 4:
5388 - tcg_gen_helper_0_1(do_mttc0_tchalt, cpu_T[0]); 5394 + tcg_gen_helper_0_1(do_mttc0_tchalt, t0);
5389 break; 5395 break;
5390 case 5: 5396 case 5:
5391 - tcg_gen_helper_0_1(do_mttc0_tccontext, cpu_T[0]); 5397 + tcg_gen_helper_0_1(do_mttc0_tccontext, t0);
5392 break; 5398 break;
5393 case 6: 5399 case 6:
5394 - tcg_gen_helper_0_1(do_mttc0_tcschedule, cpu_T[0]); 5400 + tcg_gen_helper_0_1(do_mttc0_tcschedule, t0);
5395 break; 5401 break;
5396 case 7: 5402 case 7:
5397 - tcg_gen_helper_0_1(do_mttc0_tcschefback, cpu_T[0]); 5403 + tcg_gen_helper_0_1(do_mttc0_tcschefback, t0);
5398 break; 5404 break;
5399 default: 5405 default:
5400 - gen_mtc0(env, ctx, rd, sel); 5406 + gen_mtc0(env, ctx, t0, rd, sel);
5401 break; 5407 break;
5402 } 5408 }
5403 break; 5409 break;
5404 case 10: 5410 case 10:
5405 switch (sel) { 5411 switch (sel) {
5406 case 0: 5412 case 0:
5407 - tcg_gen_helper_0_1(do_mttc0_entryhi, cpu_T[0]); 5413 + tcg_gen_helper_0_1(do_mttc0_entryhi, t0);
5408 break; 5414 break;
5409 default: 5415 default:
5410 - gen_mtc0(env, ctx, rd, sel); 5416 + gen_mtc0(env, ctx, t0, rd, sel);
5411 break; 5417 break;
5412 } 5418 }
5413 case 12: 5419 case 12:
5414 switch (sel) { 5420 switch (sel) {
5415 case 0: 5421 case 0:
5416 - tcg_gen_helper_0_1(do_mttc0_status, cpu_T[0]); 5422 + tcg_gen_helper_0_1(do_mttc0_status, t0);
5417 break; 5423 break;
5418 default: 5424 default:
5419 - gen_mtc0(env, ctx, rd, sel); 5425 + gen_mtc0(env, ctx, t0, rd, sel);
5420 break; 5426 break;
5421 } 5427 }
5422 case 23: 5428 case 23:
5423 switch (sel) { 5429 switch (sel) {
5424 case 0: 5430 case 0:
5425 - tcg_gen_helper_0_1(do_mttc0_debug, cpu_T[0]); 5431 + tcg_gen_helper_0_1(do_mttc0_debug, t0);
5426 break; 5432 break;
5427 default: 5433 default:
5428 - gen_mtc0(env, ctx, rd, sel); 5434 + gen_mtc0(env, ctx, t0, rd, sel);
5429 break; 5435 break;
5430 } 5436 }
5431 break; 5437 break;
5432 default: 5438 default:
5433 - gen_mtc0(env, ctx, rd, sel); 5439 + gen_mtc0(env, ctx, t0, rd, sel);
5434 } 5440 }
5435 } else switch (sel) { 5441 } else switch (sel) {
5436 /* GPR registers. */ 5442 /* GPR registers. */
5437 case 0: 5443 case 0:
5438 - tcg_gen_helper_0_1i(do_mttgpr, cpu_T[0], rd); 5444 + tcg_gen_helper_0_1i(do_mttgpr, t0, rd);
5439 break; 5445 break;
5440 /* Auxiliary CPU registers */ 5446 /* Auxiliary CPU registers */
5441 case 1: 5447 case 1:
5442 switch (rd) { 5448 switch (rd) {
5443 case 0: 5449 case 0:
5444 - tcg_gen_helper_0_1i(do_mttlo, cpu_T[0], 0); 5450 + tcg_gen_helper_0_1i(do_mttlo, t0, 0);
5445 break; 5451 break;
5446 case 1: 5452 case 1:
5447 - tcg_gen_helper_0_1i(do_mtthi, cpu_T[0], 0); 5453 + tcg_gen_helper_0_1i(do_mtthi, t0, 0);
5448 break; 5454 break;
5449 case 2: 5455 case 2:
5450 - tcg_gen_helper_0_1i(do_mttacx, cpu_T[0], 0); 5456 + tcg_gen_helper_0_1i(do_mttacx, t0, 0);
5451 break; 5457 break;
5452 case 4: 5458 case 4:
5453 - tcg_gen_helper_0_1i(do_mttlo, cpu_T[0], 1); 5459 + tcg_gen_helper_0_1i(do_mttlo, t0, 1);
5454 break; 5460 break;
5455 case 5: 5461 case 5:
5456 - tcg_gen_helper_0_1i(do_mtthi, cpu_T[0], 1); 5462 + tcg_gen_helper_0_1i(do_mtthi, t0, 1);
5457 break; 5463 break;
5458 case 6: 5464 case 6:
5459 - tcg_gen_helper_0_1i(do_mttacx, cpu_T[0], 1); 5465 + tcg_gen_helper_0_1i(do_mttacx, t0, 1);
5460 break; 5466 break;
5461 case 8: 5467 case 8:
5462 - tcg_gen_helper_0_1i(do_mttlo, cpu_T[0], 2); 5468 + tcg_gen_helper_0_1i(do_mttlo, t0, 2);
5463 break; 5469 break;
5464 case 9: 5470 case 9:
5465 - tcg_gen_helper_0_1i(do_mtthi, cpu_T[0], 2); 5471 + tcg_gen_helper_0_1i(do_mtthi, t0, 2);
5466 break; 5472 break;
5467 case 10: 5473 case 10:
5468 - tcg_gen_helper_0_1i(do_mttacx, cpu_T[0], 2); 5474 + tcg_gen_helper_0_1i(do_mttacx, t0, 2);
5469 break; 5475 break;
5470 case 12: 5476 case 12:
5471 - tcg_gen_helper_0_1i(do_mttlo, cpu_T[0], 3); 5477 + tcg_gen_helper_0_1i(do_mttlo, t0, 3);
5472 break; 5478 break;
5473 case 13: 5479 case 13:
5474 - tcg_gen_helper_0_1i(do_mtthi, cpu_T[0], 3); 5480 + tcg_gen_helper_0_1i(do_mtthi, t0, 3);
5475 break; 5481 break;
5476 case 14: 5482 case 14:
5477 - tcg_gen_helper_0_1i(do_mttacx, cpu_T[0], 3); 5483 + tcg_gen_helper_0_1i(do_mttacx, t0, 3);
5478 break; 5484 break;
5479 case 16: 5485 case 16:
5480 - tcg_gen_helper_0_1(do_mttdsp, cpu_T[0]); 5486 + tcg_gen_helper_0_1(do_mttdsp, t0);
5481 break; 5487 break;
5482 default: 5488 default:
5483 goto die; 5489 goto die;
@@ -5487,16 +5493,16 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt, @@ -5487,16 +5493,16 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt,
5487 case 2: 5493 case 2:
5488 /* XXX: For now we support only a single FPU context. */ 5494 /* XXX: For now we support only a single FPU context. */
5489 if (h == 0) { 5495 if (h == 0) {
5490 - tcg_gen_trunc_tl_i32(fpu32_T[0], cpu_T[0]); 5496 + tcg_gen_trunc_tl_i32(fpu32_T[0], t0);
5491 gen_store_fpr32(fpu32_T[0], rd); 5497 gen_store_fpr32(fpu32_T[0], rd);
5492 } else { 5498 } else {
5493 - tcg_gen_trunc_tl_i32(fpu32h_T[0], cpu_T[0]); 5499 + tcg_gen_trunc_tl_i32(fpu32h_T[0], t0);
5494 gen_store_fpr32h(fpu32h_T[0], rd); 5500 gen_store_fpr32h(fpu32h_T[0], rd);
5495 } 5501 }
5496 break; 5502 break;
5497 case 3: 5503 case 3:
5498 /* XXX: For now we support only a single FPU context. */ 5504 /* XXX: For now we support only a single FPU context. */
5499 - tcg_gen_helper_0_1i(do_ctc1, cpu_T[0], rd); 5505 + tcg_gen_helper_0_1i(do_ctc1, t0, rd);
5500 break; 5506 break;
5501 /* COP2: Not implemented. */ 5507 /* COP2: Not implemented. */
5502 case 4: 5508 case 4:
@@ -5511,9 +5517,11 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt, @@ -5511,9 +5517,11 @@ static void gen_mttr(CPUState *env, DisasContext *ctx, int rd, int rt,
5511 rd, u, sel, h); 5517 rd, u, sel, h);
5512 } 5518 }
5513 #endif 5519 #endif
  5520 + tcg_temp_free(t0);
5514 return; 5521 return;
5515 5522
5516 die: 5523 die:
  5524 + tcg_temp_free(t0);
5517 #if defined MIPS_DEBUG_DISAS 5525 #if defined MIPS_DEBUG_DISAS
5518 if (loglevel & CPU_LOG_TB_IN_ASM) { 5526 if (loglevel & CPU_LOG_TB_IN_ASM) {
5519 fprintf(logfile, "mttr (reg %d u %d sel %d h %d)\n", 5527 fprintf(logfile, "mttr (reg %d u %d sel %d h %d)\n",
@@ -5533,14 +5541,24 @@ static void gen_cp0 (CPUState *env, DisasContext *ctx, uint32_t opc, int rt, int @@ -5533,14 +5541,24 @@ static void gen_cp0 (CPUState *env, DisasContext *ctx, uint32_t opc, int rt, int
5533 /* Treat as NOP. */ 5541 /* Treat as NOP. */
5534 return; 5542 return;
5535 } 5543 }
5536 - gen_mfc0(env, ctx, rd, ctx->opcode & 0x7);  
5537 - gen_store_gpr(cpu_T[0], rt); 5544 + {
  5545 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
  5546 +
  5547 + gen_mfc0(env, ctx, t0, rd, ctx->opcode & 0x7);
  5548 + gen_store_gpr(t0, rt);
  5549 + tcg_temp_free(t0);
  5550 + }
5538 opn = "mfc0"; 5551 opn = "mfc0";
5539 break; 5552 break;
5540 case OPC_MTC0: 5553 case OPC_MTC0:
5541 - gen_load_gpr(cpu_T[0], rt);  
5542 - save_cpu_state(ctx, 1);  
5543 - gen_mtc0(env, ctx, rd, ctx->opcode & 0x7); 5554 + {
  5555 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
  5556 +
  5557 + gen_load_gpr(t0, rt);
  5558 + save_cpu_state(ctx, 1);
  5559 + gen_mtc0(env, ctx, t0, rd, ctx->opcode & 0x7);
  5560 + tcg_temp_free(t0);
  5561 + }
5544 opn = "mtc0"; 5562 opn = "mtc0";
5545 break; 5563 break;
5546 #if defined(TARGET_MIPS64) 5564 #if defined(TARGET_MIPS64)
@@ -5550,15 +5568,25 @@ static void gen_cp0 (CPUState *env, DisasContext *ctx, uint32_t opc, int rt, int @@ -5550,15 +5568,25 @@ static void gen_cp0 (CPUState *env, DisasContext *ctx, uint32_t opc, int rt, int
5550 /* Treat as NOP. */ 5568 /* Treat as NOP. */
5551 return; 5569 return;
5552 } 5570 }
5553 - gen_dmfc0(env, ctx, rd, ctx->opcode & 0x7);  
5554 - gen_store_gpr(cpu_T[0], rt); 5571 + {
  5572 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
  5573 +
  5574 + gen_dmfc0(env, ctx, t0, rd, ctx->opcode & 0x7);
  5575 + gen_store_gpr(t0, rt);
  5576 + tcg_temp_free(t0);
  5577 + }
5555 opn = "dmfc0"; 5578 opn = "dmfc0";
5556 break; 5579 break;
5557 case OPC_DMTC0: 5580 case OPC_DMTC0:
5558 check_insn(env, ctx, ISA_MIPS3); 5581 check_insn(env, ctx, ISA_MIPS3);
5559 - gen_load_gpr(cpu_T[0], rt);  
5560 - save_cpu_state(ctx, 1);  
5561 - gen_dmtc0(env, ctx, rd, ctx->opcode & 0x7); 5582 + {
  5583 + TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL);
  5584 +
  5585 + gen_load_gpr(t0, rt);
  5586 + save_cpu_state(ctx, 1);
  5587 + gen_dmtc0(env, ctx, t0, rd, ctx->opcode & 0x7);
  5588 + tcg_temp_free(t0);
  5589 + }
5562 opn = "dmtc0"; 5590 opn = "dmtc0";
5563 break; 5591 break;
5564 #endif 5592 #endif
@@ -8069,12 +8097,6 @@ static void mips_tcg_init(void) @@ -8069,12 +8097,6 @@ static void mips_tcg_init(void)
8069 TCG_AREG0, 8097 TCG_AREG0,
8070 offsetof(CPUState, fpu), 8098 offsetof(CPUState, fpu),
8071 "current_fpu"); 8099 "current_fpu");
8072 -#if TARGET_LONG_BITS > HOST_LONG_BITS  
8073 - cpu_T[0] = tcg_global_mem_new(TCG_TYPE_TL,  
8074 - TCG_AREG0, offsetof(CPUState, t0), "T0");  
8075 -#else  
8076 - cpu_T[0] = tcg_global_reg_new(TCG_TYPE_TL, TCG_AREG1, "T0");  
8077 -#endif  
8078 8100
8079 /* register helpers */ 8101 /* register helpers */
8080 #undef DEF_HELPER 8102 #undef DEF_HELPER