Commit 1a3fd9c3da4e2d9434a14168306b2fa0abadce18
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
Showing
5 changed files
with
468 additions
and
454 deletions
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 |