Revision f0b3f3ae

b/target-mips/op.c
461 461
#endif
462 462

  
463 463
/* CP0 functions */
464
void op_mfc0_index (void)
465
{
466
    T0 = env->CP0_Index;
467
    FORCE_RET();
468
}
469

  
470 464
void op_mfc0_mvpcontrol (void)
471 465
{
472 466
    T0 = env->mvp->CP0_MVPControl;
......
491 485
    FORCE_RET();
492 486
}
493 487

  
494
void op_mfc0_vpecontrol (void)
495
{
496
    T0 = env->CP0_VPEControl;
497
    FORCE_RET();
498
}
499

  
500
void op_mfc0_vpeconf0 (void)
501
{
502
    T0 = env->CP0_VPEConf0;
503
    FORCE_RET();
504
}
505

  
506
void op_mfc0_vpeconf1 (void)
507
{
508
    T0 = env->CP0_VPEConf1;
509
    FORCE_RET();
510
}
511

  
512
void op_mfc0_yqmask (void)
513
{
514
    T0 = env->CP0_YQMask;
515
    FORCE_RET();
516
}
517

  
518
void op_mfc0_vpeschedule (void)
519
{
520
    T0 = env->CP0_VPESchedule;
521
    FORCE_RET();
522
}
523

  
524
void op_mfc0_vpeschefback (void)
525
{
526
    T0 = env->CP0_VPEScheFBack;
527
    FORCE_RET();
528
}
529

  
530
void op_mfc0_vpeopt (void)
531
{
532
    T0 = env->CP0_VPEOpt;
533
    FORCE_RET();
534
}
535

  
536
void op_mfc0_entrylo0 (void)
537
{
538
    T0 = (int32_t)env->CP0_EntryLo0;
539
    FORCE_RET();
540
}
541

  
542 488
void op_mfc0_tcstatus (void)
543 489
{
544 490
    T0 = env->CP0_TCStatus[env->current_tc];
......
637 583
    FORCE_RET();
638 584
}
639 585

  
640
void op_mfc0_entrylo1 (void)
641
{
642
    T0 = (int32_t)env->CP0_EntryLo1;
643
    FORCE_RET();
644
}
645

  
646
void op_mfc0_context (void)
647
{
648
    T0 = (int32_t)env->CP0_Context;
649
    FORCE_RET();
650
}
651

  
652
void op_mfc0_pagemask (void)
653
{
654
    T0 = env->CP0_PageMask;
655
    FORCE_RET();
656
}
657

  
658
void op_mfc0_pagegrain (void)
659
{
660
    T0 = env->CP0_PageGrain;
661
    FORCE_RET();
662
}
663

  
664
void op_mfc0_wired (void)
665
{
666
    T0 = env->CP0_Wired;
667
    FORCE_RET();
668
}
669

  
670
void op_mfc0_srsconf0 (void)
671
{
672
    T0 = env->CP0_SRSConf0;
673
    FORCE_RET();
674
}
675

  
676
void op_mfc0_srsconf1 (void)
677
{
678
    T0 = env->CP0_SRSConf1;
679
    FORCE_RET();
680
}
681

  
682
void op_mfc0_srsconf2 (void)
683
{
684
    T0 = env->CP0_SRSConf2;
685
    FORCE_RET();
686
}
687

  
688
void op_mfc0_srsconf3 (void)
689
{
690
    T0 = env->CP0_SRSConf3;
691
    FORCE_RET();
692
}
693

  
694
void op_mfc0_srsconf4 (void)
695
{
696
    T0 = env->CP0_SRSConf4;
697
    FORCE_RET();
698
}
699

  
700
void op_mfc0_hwrena (void)
701
{
702
    T0 = env->CP0_HWREna;
703
    FORCE_RET();
704
}
705

  
706
void op_mfc0_badvaddr (void)
707
{
708
    T0 = (int32_t)env->CP0_BadVAddr;
709
    FORCE_RET();
710
}
711

  
712 586
void op_mfc0_count (void)
713 587
{
714 588
    CALL_FROM_TB0(do_mfc0_count);
715 589
    FORCE_RET();
716 590
}
717 591

  
718
void op_mfc0_entryhi (void)
719
{
720
    T0 = (int32_t)env->CP0_EntryHi;
721
    FORCE_RET();
722
}
723

  
724 592
void op_mftc0_entryhi(void)
725 593
{
726 594
    int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
......
729 597
    FORCE_RET();
730 598
}
731 599

  
732
void op_mfc0_compare (void)
733
{
734
    T0 = env->CP0_Compare;
735
    FORCE_RET();
736
}
737

  
738
void op_mfc0_status (void)
739
{
740
    T0 = env->CP0_Status;
741
    FORCE_RET();
742
}
743

  
744 600
void op_mftc0_status(void)
745 601
{
746 602
    int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC);
......
753 609
    FORCE_RET();
754 610
}
755 611

  
756
void op_mfc0_intctl (void)
757
{
758
    T0 = env->CP0_IntCtl;
759
    FORCE_RET();
760
}
761

  
762
void op_mfc0_srsctl (void)
763
{
764
    T0 = env->CP0_SRSCtl;
765
    FORCE_RET();
766
}
767

  
768
void op_mfc0_srsmap (void)
769
{
770
    T0 = env->CP0_SRSMap;
771
    FORCE_RET();
772
}
773

  
774
void op_mfc0_cause (void)
775
{
776
    T0 = env->CP0_Cause;
777
    FORCE_RET();
778
}
779

  
780
void op_mfc0_epc (void)
781
{
782
    T0 = (int32_t)env->CP0_EPC;
783
    FORCE_RET();
784
}
785

  
786
void op_mfc0_prid (void)
787
{
788
    T0 = env->CP0_PRid;
789
    FORCE_RET();
790
}
791

  
792
void op_mfc0_ebase (void)
793
{
794
    T0 = env->CP0_EBase;
795
    FORCE_RET();
796
}
797

  
798
void op_mfc0_config0 (void)
799
{
800
    T0 = env->CP0_Config0;
801
    FORCE_RET();
802
}
803

  
804
void op_mfc0_config1 (void)
805
{
806
    T0 = env->CP0_Config1;
807
    FORCE_RET();
808
}
809

  
810
void op_mfc0_config2 (void)
811
{
812
    T0 = env->CP0_Config2;
813
    FORCE_RET();
814
}
815

  
816
void op_mfc0_config3 (void)
817
{
818
    T0 = env->CP0_Config3;
819
    FORCE_RET();
820
}
821

  
822
void op_mfc0_config6 (void)
823
{
824
    T0 = env->CP0_Config6;
825
    FORCE_RET();
826
}
827

  
828
void op_mfc0_config7 (void)
829
{
830
    T0 = env->CP0_Config7;
831
    FORCE_RET();
832
}
833

  
834 612
void op_mfc0_lladdr (void)
835 613
{
836 614
    T0 = (int32_t)env->CP0_LLAddr >> 4;
......
849 627
    FORCE_RET();
850 628
}
851 629

  
852
void op_mfc0_xcontext (void)
853
{
854
    T0 = (int32_t)env->CP0_XContext;
855
    FORCE_RET();
856
}
857

  
858
void op_mfc0_framemask (void)
859
{
860
    T0 = env->CP0_Framemask;
861
    FORCE_RET();
862
}
863

  
864 630
void op_mfc0_debug (void)
865 631
{
866 632
    T0 = env->CP0_Debug;
......
880 646
    FORCE_RET();
881 647
}
882 648

  
883
void op_mfc0_depc (void)
884
{
885
    T0 = (int32_t)env->CP0_DEPC;
886
    FORCE_RET();
887
}
888

  
889
void op_mfc0_performance0 (void)
890
{
891
    T0 = env->CP0_Performance0;
892
    FORCE_RET();
893
}
894

  
895
void op_mfc0_taglo (void)
896
{
897
    T0 = env->CP0_TagLo;
898
    FORCE_RET();
899
}
900

  
901
void op_mfc0_datalo (void)
902
{
903
    T0 = env->CP0_DataLo;
904
    FORCE_RET();
905
}
906

  
907
void op_mfc0_taghi (void)
908
{
909
    T0 = env->CP0_TagHi;
910
    FORCE_RET();
911
}
912

  
913
void op_mfc0_datahi (void)
914
{
915
    T0 = env->CP0_DataHi;
916
    FORCE_RET();
917
}
918

  
919
void op_mfc0_errorepc (void)
920
{
921
    T0 = (int32_t)env->CP0_ErrorEPC;
922
    FORCE_RET();
923
}
924

  
925
void op_mfc0_desave (void)
926
{
927
    T0 = env->CP0_DESAVE;
928
    FORCE_RET();
929
}
930

  
931 649
void op_mtc0_index (void)
932 650
{
933 651
    int num = 1;
......
1488 1206
}
1489 1207

  
1490 1208
#if defined(TARGET_MIPS64)
1491
void op_dmfc0_yqmask (void)
1492
{
1493
    T0 = env->CP0_YQMask;
1494
    FORCE_RET();
1495
}
1496

  
1497
void op_dmfc0_vpeschedule (void)
1498
{
1499
    T0 = env->CP0_VPESchedule;
1500
    FORCE_RET();
1501
}
1502

  
1503
void op_dmfc0_vpeschefback (void)
1504
{
1505
    T0 = env->CP0_VPEScheFBack;
1506
    FORCE_RET();
1507
}
1508

  
1509
void op_dmfc0_entrylo0 (void)
1510
{
1511
    T0 = env->CP0_EntryLo0;
1512
    FORCE_RET();
1513
}
1514

  
1515 1209
void op_dmfc0_tcrestart (void)
1516 1210
{
1517 1211
    T0 = env->PC[env->current_tc];
......
1542 1236
    FORCE_RET();
1543 1237
}
1544 1238

  
1545
void op_dmfc0_entrylo1 (void)
1546
{
1547
    T0 = env->CP0_EntryLo1;
1548
    FORCE_RET();
1549
}
1550

  
1551
void op_dmfc0_context (void)
1552
{
1553
    T0 = env->CP0_Context;
1554
    FORCE_RET();
1555
}
1556

  
1557
void op_dmfc0_badvaddr (void)
1558
{
1559
    T0 = env->CP0_BadVAddr;
1560
    FORCE_RET();
1561
}
1562

  
1563
void op_dmfc0_entryhi (void)
1564
{
1565
    T0 = env->CP0_EntryHi;
1566
    FORCE_RET();
1567
}
1568

  
1569
void op_dmfc0_epc (void)
1570
{
1571
    T0 = env->CP0_EPC;
1572
    FORCE_RET();
1573
}
1574

  
1575 1239
void op_dmfc0_lladdr (void)
1576 1240
{
1577 1241
    T0 = env->CP0_LLAddr >> 4;
......
1583 1247
    T0 = env->CP0_WatchLo[PARAM1];
1584 1248
    FORCE_RET();
1585 1249
}
1586

  
1587
void op_dmfc0_xcontext (void)
1588
{
1589
    T0 = env->CP0_XContext;
1590
    FORCE_RET();
1591
}
1592

  
1593
void op_dmfc0_depc (void)
1594
{
1595
    T0 = env->CP0_DEPC;
1596
    FORCE_RET();
1597
}
1598

  
1599
void op_dmfc0_errorepc (void)
1600
{
1601
    T0 = env->CP0_ErrorEPC;
1602
    FORCE_RET();
1603
}
1604 1250
#endif /* TARGET_MIPS64 */
1605 1251

  
1606 1252
/* MIPS MT functions */
b/target-mips/translate.c
997 997
    tcg_gen_andi_tl(r_tmp, cpu_T[0], almask);                           \
998 998
    tcg_gen_brcond_tl(TCG_COND_EQ, r_tmp, tcg_const_tl(0), l1);         \
999 999
    tcg_gen_st_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_BadVAddr)); \
1000
    generate_exception(ctx, EXCP_AdES);                             \
1000
    generate_exception(ctx, EXCP_AdES);                                 \
1001 1001
    gen_set_label(l1);                                                  \
1002 1002
    tcg_gen_ld_tl(r_tmp, cpu_env, offsetof(CPUState, CP0_LLAddr));      \
1003 1003
    tcg_gen_brcond_tl(TCG_COND_NE, cpu_T[0], r_tmp, l2);                \
......
2568 2568
static void gen_mfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
2569 2569
{
2570 2570
    const char *rn = "invalid";
2571
    TCGv r_tmp = tcg_temp_new(TCG_TYPE_I32);
2572
    TCGv r_tmp64 = tcg_temp_new(TCG_TYPE_I64);
2571 2573

  
2572 2574
    if (sel != 0)
2573 2575
        check_insn(env, ctx, ISA_MIPS32);
......
2576 2578
    case 0:
2577 2579
        switch (sel) {
2578 2580
        case 0:
2579
            gen_op_mfc0_index();
2581
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Index));
2582
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2580 2583
            rn = "Index";
2581 2584
            break;
2582 2585
        case 1:
......
2606 2609
            break;
2607 2610
        case 1:
2608 2611
            check_insn(env, ctx, ASE_MT);
2609
            gen_op_mfc0_vpecontrol();
2612
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEControl));
2613
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2610 2614
            rn = "VPEControl";
2611 2615
            break;
2612 2616
        case 2:
2613 2617
            check_insn(env, ctx, ASE_MT);
2614
            gen_op_mfc0_vpeconf0();
2618
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEConf0));
2619
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2615 2620
            rn = "VPEConf0";
2616 2621
            break;
2617 2622
        case 3:
2618 2623
            check_insn(env, ctx, ASE_MT);
2619
            gen_op_mfc0_vpeconf1();
2624
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEConf1));
2625
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2620 2626
            rn = "VPEConf1";
2621 2627
            break;
2622 2628
        case 4:
2623 2629
            check_insn(env, ctx, ASE_MT);
2624
            gen_op_mfc0_yqmask();
2630
            tcg_gen_ld_i64(r_tmp64, cpu_env, offsetof(CPUState, CP0_YQMask));
2631
            tcg_gen_trunc_i64_tl(cpu_T[0], r_tmp64);
2625 2632
            rn = "YQMask";
2626 2633
            break;
2627 2634
        case 5:
2628 2635
            check_insn(env, ctx, ASE_MT);
2629
            gen_op_mfc0_vpeschedule();
2636
            tcg_gen_ld_tl(r_tmp64, cpu_env, offsetof(CPUState, CP0_VPESchedule));
2637
            tcg_gen_trunc_i64_tl(cpu_T[0], r_tmp64);
2630 2638
            rn = "VPESchedule";
2631 2639
            break;
2632 2640
        case 6:
2633 2641
            check_insn(env, ctx, ASE_MT);
2634
            gen_op_mfc0_vpeschefback();
2642
            tcg_gen_ld_tl(r_tmp64, cpu_env, offsetof(CPUState, CP0_VPEScheFBack));
2643
            tcg_gen_trunc_i64_tl(cpu_T[0], r_tmp64);
2635 2644
            rn = "VPEScheFBack";
2636 2645
            break;
2637 2646
        case 7:
2638 2647
            check_insn(env, ctx, ASE_MT);
2639
            gen_op_mfc0_vpeopt();
2648
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEOpt));
2649
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2640 2650
            rn = "VPEOpt";
2641 2651
            break;
2642 2652
        default:
......
2646 2656
    case 2:
2647 2657
        switch (sel) {
2648 2658
        case 0:
2649
            gen_op_mfc0_entrylo0();
2659
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo0));
2660
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2650 2661
            rn = "EntryLo0";
2651 2662
            break;
2652 2663
        case 1:
......
2691 2702
    case 3:
2692 2703
        switch (sel) {
2693 2704
        case 0:
2694
            gen_op_mfc0_entrylo1();
2705
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo1));
2706
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2695 2707
            rn = "EntryLo1";
2696 2708
            break;
2697 2709
        default:
......
2701 2713
    case 4:
2702 2714
        switch (sel) {
2703 2715
        case 0:
2704
            gen_op_mfc0_context();
2716
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_Context));
2717
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2705 2718
            rn = "Context";
2706 2719
            break;
2707 2720
        case 1:
......
2715 2728
    case 5:
2716 2729
        switch (sel) {
2717 2730
        case 0:
2718
            gen_op_mfc0_pagemask();
2731
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PageMask));
2732
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2719 2733
            rn = "PageMask";
2720 2734
            break;
2721 2735
        case 1:
2722 2736
            check_insn(env, ctx, ISA_MIPS32R2);
2723
            gen_op_mfc0_pagegrain();
2737
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PageGrain));
2738
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2724 2739
            rn = "PageGrain";
2725 2740
            break;
2726 2741
        default:
......
2730 2745
    case 6:
2731 2746
        switch (sel) {
2732 2747
        case 0:
2733
            gen_op_mfc0_wired();
2748
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Wired));
2749
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2734 2750
            rn = "Wired";
2735 2751
            break;
2736 2752
        case 1:
2737 2753
            check_insn(env, ctx, ISA_MIPS32R2);
2738
            gen_op_mfc0_srsconf0();
2754
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf0));
2755
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2739 2756
            rn = "SRSConf0";
2740 2757
            break;
2741 2758
        case 2:
2742 2759
            check_insn(env, ctx, ISA_MIPS32R2);
2743
            gen_op_mfc0_srsconf1();
2760
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf1));
2761
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2744 2762
            rn = "SRSConf1";
2745 2763
            break;
2746 2764
        case 3:
2747 2765
            check_insn(env, ctx, ISA_MIPS32R2);
2748
            gen_op_mfc0_srsconf2();
2766
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf2));
2767
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2749 2768
            rn = "SRSConf2";
2750 2769
            break;
2751 2770
        case 4:
2752 2771
            check_insn(env, ctx, ISA_MIPS32R2);
2753
            gen_op_mfc0_srsconf3();
2772
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf3));
2773
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2754 2774
            rn = "SRSConf3";
2755 2775
            break;
2756 2776
        case 5:
2757 2777
            check_insn(env, ctx, ISA_MIPS32R2);
2758
            gen_op_mfc0_srsconf4();
2778
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf4));
2779
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2759 2780
            rn = "SRSConf4";
2760 2781
            break;
2761 2782
        default:
......
2766 2787
        switch (sel) {
2767 2788
        case 0:
2768 2789
            check_insn(env, ctx, ISA_MIPS32R2);
2769
            gen_op_mfc0_hwrena();
2790
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_HWREna));
2791
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2770 2792
            rn = "HWREna";
2771 2793
            break;
2772 2794
        default:
......
2776 2798
    case 8:
2777 2799
        switch (sel) {
2778 2800
        case 0:
2779
            gen_op_mfc0_badvaddr();
2780
            rn = "BadVaddr";
2801
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_BadVAddr));
2802
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2803
            rn = "BadVAddr";
2781 2804
            break;
2782 2805
        default:
2783 2806
            goto die;
......
2797 2820
    case 10:
2798 2821
        switch (sel) {
2799 2822
        case 0:
2800
            gen_op_mfc0_entryhi();
2823
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryHi));
2824
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2801 2825
            rn = "EntryHi";
2802 2826
            break;
2803 2827
        default:
......
2807 2831
    case 11:
2808 2832
        switch (sel) {
2809 2833
        case 0:
2810
            gen_op_mfc0_compare();
2834
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Compare));
2835
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2811 2836
            rn = "Compare";
2812 2837
            break;
2813 2838
        /* 6,7 are implementation dependent */
......
2818 2843
    case 12:
2819 2844
        switch (sel) {
2820 2845
        case 0:
2821
            gen_op_mfc0_status();
2846
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Status));
2847
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2822 2848
            rn = "Status";
2823 2849
            break;
2824 2850
        case 1:
2825 2851
            check_insn(env, ctx, ISA_MIPS32R2);
2826
            gen_op_mfc0_intctl();
2852
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_IntCtl));
2853
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2827 2854
            rn = "IntCtl";
2828 2855
            break;
2829 2856
        case 2:
2830 2857
            check_insn(env, ctx, ISA_MIPS32R2);
2831
            gen_op_mfc0_srsctl();
2858
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSCtl));
2859
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2832 2860
            rn = "SRSCtl";
2833 2861
            break;
2834 2862
        case 3:
2835 2863
            check_insn(env, ctx, ISA_MIPS32R2);
2836
            gen_op_mfc0_srsmap();
2864
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSMap));
2865
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2837 2866
            rn = "SRSMap";
2838 2867
            break;
2839 2868
        default:
......
2843 2872
    case 13:
2844 2873
        switch (sel) {
2845 2874
        case 0:
2846
            gen_op_mfc0_cause();
2875
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Cause));
2876
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2847 2877
            rn = "Cause";
2848 2878
            break;
2849 2879
        default:
......
2853 2883
    case 14:
2854 2884
        switch (sel) {
2855 2885
        case 0:
2856
            gen_op_mfc0_epc();
2886
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EPC));
2887
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2857 2888
            rn = "EPC";
2858 2889
            break;
2859 2890
        default:
......
2863 2894
    case 15:
2864 2895
        switch (sel) {
2865 2896
        case 0:
2866
            gen_op_mfc0_prid();
2897
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PRid));
2898
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2867 2899
            rn = "PRid";
2868 2900
            break;
2869 2901
        case 1:
2870 2902
            check_insn(env, ctx, ISA_MIPS32R2);
2871
            gen_op_mfc0_ebase();
2903
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_EBase));
2904
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2872 2905
            rn = "EBase";
2873 2906
            break;
2874 2907
        default:
......
2878 2911
    case 16:
2879 2912
        switch (sel) {
2880 2913
        case 0:
2881
            gen_op_mfc0_config0();
2914
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config0));
2915
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2882 2916
            rn = "Config";
2883 2917
            break;
2884 2918
        case 1:
2885
            gen_op_mfc0_config1();
2919
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config1));
2920
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2886 2921
            rn = "Config1";
2887 2922
            break;
2888 2923
        case 2:
2889
            gen_op_mfc0_config2();
2924
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config2));
2925
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2890 2926
            rn = "Config2";
2891 2927
            break;
2892 2928
        case 3:
2893
            gen_op_mfc0_config3();
2929
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config3));
2930
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2894 2931
            rn = "Config3";
2895 2932
            break;
2896 2933
        /* 4,5 are reserved */
2897 2934
        /* 6,7 are implementation dependent */
2898 2935
        case 6:
2899
            gen_op_mfc0_config6();
2936
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config6));
2937
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2900 2938
            rn = "Config6";
2901 2939
            break;
2902 2940
        case 7:
2903
            gen_op_mfc0_config7();
2941
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config7));
2942
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2904 2943
            rn = "Config7";
2905 2944
            break;
2906 2945
        default:
......
2942 2981
        case 0:
2943 2982
#if defined(TARGET_MIPS64)
2944 2983
            check_insn(env, ctx, ISA_MIPS3);
2945
            gen_op_mfc0_xcontext();
2984
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_XContext));
2985
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2946 2986
            rn = "XContext";
2947 2987
            break;
2948 2988
#endif
......
2954 2994
       /* Officially reserved, but sel 0 is used for R1x000 framemask */
2955 2995
        switch (sel) {
2956 2996
        case 0:
2957
            gen_op_mfc0_framemask();
2997
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Framemask));
2998
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
2958 2999
            rn = "Framemask";
2959 3000
            break;
2960 3001
        default:
......
2994 3035
    case 24:
2995 3036
        switch (sel) {
2996 3037
        case 0:
2997
            gen_op_mfc0_depc(); /* EJTAG support */
3038
            /* EJTAG support */
3039
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_DEPC));
3040
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
2998 3041
            rn = "DEPC";
2999 3042
            break;
3000 3043
        default:
......
3004 3047
    case 25:
3005 3048
        switch (sel) {
3006 3049
        case 0:
3007
            gen_op_mfc0_performance0();
3050
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Performance0));
3051
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3008 3052
            rn = "Performance0";
3009 3053
            break;
3010 3054
        case 1:
......
3058 3102
        case 2:
3059 3103
        case 4:
3060 3104
        case 6:
3061
            gen_op_mfc0_taglo();
3105
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_TagLo));
3106
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3062 3107
            rn = "TagLo";
3063 3108
            break;
3064 3109
        case 1:
3065 3110
        case 3:
3066 3111
        case 5:
3067 3112
        case 7:
3068
            gen_op_mfc0_datalo();
3113
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DataLo));
3114
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3069 3115
            rn = "DataLo";
3070 3116
            break;
3071 3117
        default:
......
3078 3124
        case 2:
3079 3125
        case 4:
3080 3126
        case 6:
3081
            gen_op_mfc0_taghi();
3127
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_TagHi));
3128
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3082 3129
            rn = "TagHi";
3083 3130
            break;
3084 3131
        case 1:
3085 3132
        case 3:
3086 3133
        case 5:
3087 3134
        case 7:
3088
            gen_op_mfc0_datahi();
3135
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DataHi));
3136
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3089 3137
            rn = "DataHi";
3090 3138
            break;
3091 3139
        default:
......
3095 3143
    case 30:
3096 3144
        switch (sel) {
3097 3145
        case 0:
3098
            gen_op_mfc0_errorepc();
3146
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_ErrorEPC));
3147
            tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]);
3099 3148
            rn = "ErrorEPC";
3100 3149
            break;
3101 3150
        default:
......
3105 3154
    case 31:
3106 3155
        switch (sel) {
3107 3156
        case 0:
3108
            gen_op_mfc0_desave(); /* EJTAG support */
3157
            /* EJTAG support */
3158
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DESAVE));
3159
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3109 3160
            rn = "DESAVE";
3110 3161
            break;
3111 3162
        default:
......
3343 3394
        break;
3344 3395
    case 8:
3345 3396
        /* ignored */
3346
        rn = "BadVaddr";
3397
        rn = "BadVAddr";
3347 3398
        break;
3348 3399
    case 9:
3349 3400
        switch (sel) {
......
3736 3787
static void gen_dmfc0 (CPUState *env, DisasContext *ctx, int reg, int sel)
3737 3788
{
3738 3789
    const char *rn = "invalid";
3790
    TCGv r_tmp = tcg_temp_new(TCG_TYPE_I32);
3739 3791

  
3740 3792
    if (sel != 0)
3741 3793
        check_insn(env, ctx, ISA_MIPS64);
......
3744 3796
    case 0:
3745 3797
        switch (sel) {
3746 3798
        case 0:
3747
            gen_op_mfc0_index();
3799
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Index));
3800
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3748 3801
            rn = "Index";
3749 3802
            break;
3750 3803
        case 1:
......
3774 3827
            break;
3775 3828
        case 1:
3776 3829
            check_insn(env, ctx, ASE_MT);
3777
            gen_op_mfc0_vpecontrol();
3830
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEControl));
3831
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3778 3832
            rn = "VPEControl";
3779 3833
            break;
3780 3834
        case 2:
3781 3835
            check_insn(env, ctx, ASE_MT);
3782
            gen_op_mfc0_vpeconf0();
3836
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEConf0));
3837
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3783 3838
            rn = "VPEConf0";
3784 3839
            break;
3785 3840
        case 3:
3786 3841
            check_insn(env, ctx, ASE_MT);
3787
            gen_op_mfc0_vpeconf1();
3842
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEConf1));
3843
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3788 3844
            rn = "VPEConf1";
3789 3845
            break;
3790 3846
        case 4:
3791 3847
            check_insn(env, ctx, ASE_MT);
3792
            gen_op_dmfc0_yqmask();
3848
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_YQMask));
3793 3849
            rn = "YQMask";
3794 3850
            break;
3795 3851
        case 5:
3796 3852
            check_insn(env, ctx, ASE_MT);
3797
            gen_op_dmfc0_vpeschedule();
3853
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPESchedule));
3798 3854
            rn = "VPESchedule";
3799 3855
            break;
3800 3856
        case 6:
3801 3857
            check_insn(env, ctx, ASE_MT);
3802
            gen_op_dmfc0_vpeschefback();
3858
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_VPEScheFBack));
3803 3859
            rn = "VPEScheFBack";
3804 3860
            break;
3805 3861
        case 7:
3806 3862
            check_insn(env, ctx, ASE_MT);
3807
            gen_op_mfc0_vpeopt();
3863
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_VPEOpt));
3864
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3808 3865
            rn = "VPEOpt";
3809 3866
            break;
3810 3867
        default:
......
3814 3871
    case 2:
3815 3872
        switch (sel) {
3816 3873
        case 0:
3817
            gen_op_dmfc0_entrylo0();
3874
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo0));
3818 3875
            rn = "EntryLo0";
3819 3876
            break;
3820 3877
        case 1:
......
3859 3916
    case 3:
3860 3917
        switch (sel) {
3861 3918
        case 0:
3862
            gen_op_dmfc0_entrylo1();
3919
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryLo1));
3863 3920
            rn = "EntryLo1";
3864 3921
            break;
3865 3922
        default:
......
3869 3926
    case 4:
3870 3927
        switch (sel) {
3871 3928
        case 0:
3872
            gen_op_dmfc0_context();
3929
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_Context));
3873 3930
            rn = "Context";
3874 3931
            break;
3875 3932
        case 1:
......
3883 3940
    case 5:
3884 3941
        switch (sel) {
3885 3942
        case 0:
3886
            gen_op_mfc0_pagemask();
3943
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PageMask));
3944
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3887 3945
            rn = "PageMask";
3888 3946
            break;
3889 3947
        case 1:
3890 3948
            check_insn(env, ctx, ISA_MIPS32R2);
3891
            gen_op_mfc0_pagegrain();
3949
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PageGrain));
3950
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3892 3951
            rn = "PageGrain";
3893 3952
            break;
3894 3953
        default:
......
3898 3957
    case 6:
3899 3958
        switch (sel) {
3900 3959
        case 0:
3901
            gen_op_mfc0_wired();
3960
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Wired));
3961
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3902 3962
            rn = "Wired";
3903 3963
            break;
3904 3964
        case 1:
3905 3965
            check_insn(env, ctx, ISA_MIPS32R2);
3906
            gen_op_mfc0_srsconf0();
3966
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf0));
3967
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3907 3968
            rn = "SRSConf0";
3908 3969
            break;
3909 3970
        case 2:
3910 3971
            check_insn(env, ctx, ISA_MIPS32R2);
3911
            gen_op_mfc0_srsconf1();
3972
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf1));
3973
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3912 3974
            rn = "SRSConf1";
3913 3975
            break;
3914 3976
        case 3:
3915 3977
            check_insn(env, ctx, ISA_MIPS32R2);
3916
            gen_op_mfc0_srsconf2();
3978
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf2));
3979
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3917 3980
            rn = "SRSConf2";
3918 3981
            break;
3919 3982
        case 4:
3920 3983
            check_insn(env, ctx, ISA_MIPS32R2);
3921
            gen_op_mfc0_srsconf3();
3984
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf3));
3985
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3922 3986
            rn = "SRSConf3";
3923 3987
            break;
3924 3988
        case 5:
3925 3989
            check_insn(env, ctx, ISA_MIPS32R2);
3926
            gen_op_mfc0_srsconf4();
3990
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSConf4));
3991
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3927 3992
            rn = "SRSConf4";
3928 3993
            break;
3929 3994
        default:
......
3934 3999
        switch (sel) {
3935 4000
        case 0:
3936 4001
            check_insn(env, ctx, ISA_MIPS32R2);
3937
            gen_op_mfc0_hwrena();
4002
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_HWREna));
4003
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3938 4004
            rn = "HWREna";
3939 4005
            break;
3940 4006
        default:
......
3944 4010
    case 8:
3945 4011
        switch (sel) {
3946 4012
        case 0:
3947
            gen_op_dmfc0_badvaddr();
3948
            rn = "BadVaddr";
4013
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_BadVAddr));
4014
            rn = "BadVAddr";
3949 4015
            break;
3950 4016
        default:
3951 4017
            goto die;
......
3965 4031
    case 10:
3966 4032
        switch (sel) {
3967 4033
        case 0:
3968
            gen_op_dmfc0_entryhi();
4034
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EntryHi));
3969 4035
            rn = "EntryHi";
3970 4036
            break;
3971 4037
        default:
......
3975 4041
    case 11:
3976 4042
        switch (sel) {
3977 4043
        case 0:
3978
            gen_op_mfc0_compare();
4044
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Compare));
4045
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3979 4046
            rn = "Compare";
3980 4047
            break;
3981 4048
        /* 6,7 are implementation dependent */
......
3986 4053
    case 12:
3987 4054
        switch (sel) {
3988 4055
        case 0:
3989
            gen_op_mfc0_status();
4056
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Status));
4057
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3990 4058
            rn = "Status";
3991 4059
            break;
3992 4060
        case 1:
3993 4061
            check_insn(env, ctx, ISA_MIPS32R2);
3994
            gen_op_mfc0_intctl();
4062
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_IntCtl));
4063
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
3995 4064
            rn = "IntCtl";
3996 4065
            break;
3997 4066
        case 2:
3998 4067
            check_insn(env, ctx, ISA_MIPS32R2);
3999
            gen_op_mfc0_srsctl();
4068
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSCtl));
4069
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4000 4070
            rn = "SRSCtl";
4001 4071
            break;
4002 4072
        case 3:
4003 4073
            check_insn(env, ctx, ISA_MIPS32R2);
4004
            gen_op_mfc0_srsmap();
4074
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_SRSMap));
4075
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4005 4076
            rn = "SRSMap";
4006 4077
            break;
4007 4078
        default:
......
4011 4082
    case 13:
4012 4083
        switch (sel) {
4013 4084
        case 0:
4014
            gen_op_mfc0_cause();
4085
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Cause));
4086
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4015 4087
            rn = "Cause";
4016 4088
            break;
4017 4089
        default:
......
4021 4093
    case 14:
4022 4094
        switch (sel) {
4023 4095
        case 0:
4024
            gen_op_dmfc0_epc();
4096
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_EPC));
4025 4097
            rn = "EPC";
4026 4098
            break;
4027 4099
        default:
......
4031 4103
    case 15:
4032 4104
        switch (sel) {
4033 4105
        case 0:
4034
            gen_op_mfc0_prid();
4106
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_PRid));
4107
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4035 4108
            rn = "PRid";
4036 4109
            break;
4037 4110
        case 1:
4038 4111
            check_insn(env, ctx, ISA_MIPS32R2);
4039
            gen_op_mfc0_ebase();
4112
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_EBase));
4113
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4040 4114
            rn = "EBase";
4041 4115
            break;
4042 4116
        default:
......
4046 4120
    case 16:
4047 4121
        switch (sel) {
4048 4122
        case 0:
4049
            gen_op_mfc0_config0();
4123
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config0));
4124
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4050 4125
            rn = "Config";
4051 4126
            break;
4052 4127
        case 1:
4053
            gen_op_mfc0_config1();
4128
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config1));
4129
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4054 4130
            rn = "Config1";
4055 4131
            break;
4056 4132
        case 2:
4057
            gen_op_mfc0_config2();
4133
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config2));
4134
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4058 4135
            rn = "Config2";
4059 4136
            break;
4060 4137
        case 3:
4061
            gen_op_mfc0_config3();
4138
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config3));
4139
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4062 4140
            rn = "Config3";
4063 4141
            break;
4064 4142
       /* 6,7 are implementation dependent */
4143
        case 6:
4144
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config6));
4145
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4146
            rn = "Config6";
4147
            break;
4148
        case 7:
4149
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Config7));
4150
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4151
            rn = "Config7";
4152
            break;
4065 4153
        default:
4066 4154
            goto die;
4067 4155
        }
......
4100 4188
        switch (sel) {
4101 4189
        case 0:
4102 4190
            check_insn(env, ctx, ISA_MIPS3);
4103
            gen_op_dmfc0_xcontext();
4191
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_XContext));
4104 4192
            rn = "XContext";
4105 4193
            break;
4106 4194
        default:
......
4111 4199
       /* Officially reserved, but sel 0 is used for R1x000 framemask */
4112 4200
        switch (sel) {
4113 4201
        case 0:
4114
            gen_op_mfc0_framemask();
4202
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Framemask));
4203
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4115 4204
            rn = "Framemask";
4116 4205
            break;
4117 4206
        default:
......
4151 4240
    case 24:
4152 4241
        switch (sel) {
4153 4242
        case 0:
4154
            gen_op_dmfc0_depc(); /* EJTAG support */
4243
            /* EJTAG support */
4244
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_DEPC));
4155 4245
            rn = "DEPC";
4156 4246
            break;
4157 4247
        default:
......
4161 4251
    case 25:
4162 4252
        switch (sel) {
4163 4253
        case 0:
4164
            gen_op_mfc0_performance0();
4254
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_Performance0));
4255
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4165 4256
            rn = "Performance0";
4166 4257
            break;
4167 4258
        case 1:
......
4215 4306
        case 2:
4216 4307
        case 4:
4217 4308
        case 6:
4218
            gen_op_mfc0_taglo();
4309
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_TagLo));
4310
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4219 4311
            rn = "TagLo";
4220 4312
            break;
4221 4313
        case 1:
4222 4314
        case 3:
4223 4315
        case 5:
4224 4316
        case 7:
4225
            gen_op_mfc0_datalo();
4317
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DataLo));
4318
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4226 4319
            rn = "DataLo";
4227 4320
            break;
4228 4321
        default:
......
4235 4328
        case 2:
4236 4329
        case 4:
4237 4330
        case 6:
4238
            gen_op_mfc0_taghi();
4331
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_TagHi));
4332
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4239 4333
            rn = "TagHi";
4240 4334
            break;
4241 4335
        case 1:
4242 4336
        case 3:
4243 4337
        case 5:
4244 4338
        case 7:
4245
            gen_op_mfc0_datahi();
4339
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DataHi));
4340
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4246 4341
            rn = "DataHi";
4247 4342
            break;
4248 4343
        default:
......
4252 4347
    case 30:
4253 4348
        switch (sel) {
4254 4349
        case 0:
4255
            gen_op_dmfc0_errorepc();
4350
            tcg_gen_ld_tl(cpu_T[0], cpu_env, offsetof(CPUState, CP0_ErrorEPC));
4256 4351
            rn = "ErrorEPC";
4257 4352
            break;
4258 4353
        default:
......
4262 4357
    case 31:
4263 4358
        switch (sel) {
4264 4359
        case 0:
4265
            gen_op_mfc0_desave(); /* EJTAG support */
4360
            /* EJTAG support */
4361
            tcg_gen_ld_i32(r_tmp, cpu_env, offsetof(CPUState, CP0_DESAVE));
4362
            tcg_gen_ext_i32_tl(cpu_T[0], r_tmp);
4266 4363
            rn = "DESAVE";
4267 4364
            break;
4268 4365
        default:
......
4500 4597
        break;
4501 4598
    case 8:
4502 4599
        /* ignored */
4503
        rn = "BadVaddr";
4600
        rn = "BadVAddr";
4504 4601
        break;
4505 4602
    case 9:
4506 4603
        switch (sel) {

Also available in: Unified diff