Revision 8487327a

b/target-mips/translate.c
2627 2627
        switch (sel) {
2628 2628
        case 0:
2629 2629
            gen_op_mtc0_status();
2630
            /* BS_STOP isn't good enough here, hflags may have changed. */
2631
            gen_save_pc(ctx->pc + 4);
2632
            ctx->bstate = BS_EXCP;
2630 2633
            rn = "Status";
2631 2634
            break;
2632 2635
        case 1:
2633 2636
            gen_op_mtc0_intctl();
2637
            /* Stop translation as we may have switched the execution mode */
2638
            ctx->bstate = BS_STOP;
2634 2639
            rn = "IntCtl";
2635 2640
            break;
2636 2641
        case 2:
2637 2642
            gen_op_mtc0_srsctl();
2643
            /* Stop translation as we may have switched the execution mode */
2644
            ctx->bstate = BS_STOP;
2638 2645
            rn = "SRSCtl";
2639 2646
            break;
2640 2647
        case 3:
2641 2648
            gen_op_mtc0_srsmap();
2649
            /* Stop translation as we may have switched the execution mode */
2650
            ctx->bstate = BS_STOP;
2642 2651
            rn = "SRSMap";
2643 2652
            break;
2644 2653
        default:
2645 2654
            goto die;
2646 2655
        }
2647
        /* Stop translation as we may have switched the execution mode */
2648
        ctx->bstate = BS_STOP;
2649 2656
        break;
2650 2657
    case 13:
2651 2658
        switch (sel) {
......
2781 2788
        switch (sel) {
2782 2789
        case 0:
2783 2790
            gen_op_mtc0_debug(); /* EJTAG support */
2791
            /* BS_STOP isn't good enough here, hflags may have changed. */
2792
            gen_save_pc(ctx->pc + 4);
2793
            ctx->bstate = BS_EXCP;
2784 2794
            rn = "Debug";
2785 2795
            break;
2786 2796
        case 1:
2787 2797
//            gen_op_mtc0_tracecontrol(); /* PDtrace support */
2788 2798
            rn = "TraceControl";
2799
            /* Stop translation as we may have switched the execution mode */
2800
            ctx->bstate = BS_STOP;
2789 2801
//            break;
2790 2802
        case 2:
2791 2803
//            gen_op_mtc0_tracecontrol2(); /* PDtrace support */
2792 2804
            rn = "TraceControl2";
2805
            /* Stop translation as we may have switched the execution mode */
2806
            ctx->bstate = BS_STOP;
2793 2807
//            break;
2794 2808
        case 3:
2809
            /* Stop translation as we may have switched the execution mode */
2810
            ctx->bstate = BS_STOP;
2795 2811
//            gen_op_mtc0_usertracedata(); /* PDtrace support */
2796 2812
            rn = "UserTraceData";
2813
            /* Stop translation as we may have switched the execution mode */
2814
            ctx->bstate = BS_STOP;
2797 2815
//            break;
2798 2816
        case 4:
2799 2817
//            gen_op_mtc0_debug(); /* PDtrace support */
2818
            /* Stop translation as we may have switched the execution mode */
2819
            ctx->bstate = BS_STOP;
2800 2820
            rn = "TraceBPC";
2801 2821
//            break;
2802 2822
        default:
2803 2823
            goto die;
2804 2824
        }
2805
        /* Stop translation as we may have switched the execution mode */
2806
        ctx->bstate = BS_STOP;
2807 2825
        break;
2808 2826
    case 24:
2809 2827
        switch (sel) {
......
3704 3722
        switch (sel) {
3705 3723
        case 0:
3706 3724
            gen_op_mtc0_status();
3725
            /* BS_STOP isn't good enough here, hflags may have changed. */
3726
            gen_save_pc(ctx->pc + 4);
3727
            ctx->bstate = BS_EXCP;
3707 3728
            rn = "Status";
3708 3729
            break;
3709 3730
        case 1:
3710 3731
            gen_op_mtc0_intctl();
3732
            /* Stop translation as we may have switched the execution mode */
3733
            ctx->bstate = BS_STOP;
3711 3734
            rn = "IntCtl";
3712 3735
            break;
3713 3736
        case 2:
3714 3737
            gen_op_mtc0_srsctl();
3738
            /* Stop translation as we may have switched the execution mode */
3739
            ctx->bstate = BS_STOP;
3715 3740
            rn = "SRSCtl";
3716 3741
            break;
3717 3742
        case 3:
3718 3743
            gen_op_mtc0_srsmap();
3744
            /* Stop translation as we may have switched the execution mode */
3745
            ctx->bstate = BS_STOP;
3719 3746
            rn = "SRSMap";
3720 3747
            break;
3721 3748
        default:
3722 3749
            goto die;
3723 3750
        }
3724
        /* Stop translation as we may have switched the execution mode */
3725
        ctx->bstate = BS_STOP;
3726 3751
        break;
3727 3752
    case 13:
3728 3753
        switch (sel) {
......
3849 3874
        switch (sel) {
3850 3875
        case 0:
3851 3876
            gen_op_mtc0_debug(); /* EJTAG support */
3877
            /* BS_STOP isn't good enough here, hflags may have changed. */
3878
            gen_save_pc(ctx->pc + 4);
3879
            ctx->bstate = BS_EXCP;
3852 3880
            rn = "Debug";
3853 3881
            break;
3854 3882
        case 1:
3855 3883
//            gen_op_mtc0_tracecontrol(); /* PDtrace support */
3884
            /* Stop translation as we may have switched the execution mode */
3885
            ctx->bstate = BS_STOP;
3856 3886
            rn = "TraceControl";
3857 3887
//            break;
3858 3888
        case 2:
3859 3889
//            gen_op_mtc0_tracecontrol2(); /* PDtrace support */
3890
            /* Stop translation as we may have switched the execution mode */
3891
            ctx->bstate = BS_STOP;
3860 3892
            rn = "TraceControl2";
3861 3893
//            break;
3862 3894
        case 3:
3863 3895
//            gen_op_mtc0_usertracedata(); /* PDtrace support */
3896
            /* Stop translation as we may have switched the execution mode */
3897
            ctx->bstate = BS_STOP;
3864 3898
            rn = "UserTraceData";
3865 3899
//            break;
3866 3900
        case 4:
3867 3901
//            gen_op_mtc0_debug(); /* PDtrace support */
3902
            /* Stop translation as we may have switched the execution mode */
3903
            ctx->bstate = BS_STOP;
3868 3904
            rn = "TraceBPC";
3869 3905
//            break;
3870 3906
        default:
3871 3907
            goto die;
3872 3908
        }
3873
        /* Stop translation as we may have switched the execution mode */
3874
        ctx->bstate = BS_STOP;
3875 3909
        break;
3876 3910
    case 24:
3877 3911
        switch (sel) {

Also available in: Unified diff