Revision 3a607854 target-ppc/translate_init.c

b/target-ppc/translate_init.c
1875 1875
                 def->pvr);
1876 1876
    printf("%s: PVR %08x mask %08x => %08x\n", __func__,
1877 1877
           def->pvr, def->pvr_mask, def->pvr & def->pvr_mask);
1878
    switch (def->pvr & def->pvr_mask) {
1878
    switch (def->pvr) {
1879 1879
    /* Embedded PowerPC from IBM                           */
1880 1880
    case CPU_PPC_401A1:   /* 401 A1 family                 */
1881 1881
    case CPU_PPC_401B2:   /* 401 B2 family                 */
......
2715 2715

  
2716 2716
/*****************************************************************************/
2717 2717
/* PowerPC CPU definitions */
2718
static ppc_def_t ppc_defs[] =
2719
    {
2720
        /* Embedded PowerPC */
2721
#if defined (TODO)
2722
        /* PowerPC 401 */
2723
        {
2724
            .name        = "401",
2725
            .pvr         = CPU_PPC_401,
2726
            .pvr_mask    = 0xFFFF0000,
2727
            .insns_flags = PPC_INSNS_401,
2728
            .flags       = PPC_FLAGS_401,
2729
            .msr_mask    = xxx,
2730
        },
2731
#endif
2732
#if defined (TODO)
2733
        /* IOP480 (401 microcontroler) */
2734
        {
2735
            .name        = "iop480",
2736
            .pvr         = CPU_PPC_IOP480,
2737
            .pvr_mask    = 0xFFFF0000,
2738
            .insns_flags = PPC_INSNS_401,
2739
            .flags       = PPC_FLAGS_401,
2740
            .msr_mask    = xxx,
2741
        },
2742
#endif
2743
#if defined (TODO)
2744
        /* IBM Processor for Network Resources */
2745
        {
2746
            .name        = "Cobra",
2747
            .pvr         = CPU_PPC_COBRA,
2748
            .pvr_mask    = 0xFFFF0000,
2749
            .insns_flags = PPC_INSNS_401,
2750
            .flags       = PPC_FLAGS_401,
2751
            .msr_mask    = xxx,
2752
        },
2753
#endif
2754
#if defined (TODO)
2755
        /* Generic PowerPC 403 */
2756
        {
2757
            .name        = "403",
2758
            .pvr         = CPU_PPC_403,
2759
            .pvr_mask    = 0xFFFFFF00,
2760
            .insns_flags = PPC_INSNS_403,
2761
            .flags       = PPC_FLAGS_403,
2762
            .msr_mask    = 0x000000000007D23D,
2763
        },
2764
#endif
2765
#if defined (TODO)
2766
        /* PowerPC 403 GA */
2767
        {
2768
            .name        = "403ga",
2769
            .pvr         = CPU_PPC_403GA,
2770
            .pvr_mask    = 0xFFFFFF00,
2771
            .insns_flags = PPC_INSNS_403,
2772
            .flags       = PPC_FLAGS_403,
2773
            .msr_mask    = 0x000000000007D23D,
2774
        },
2775
#endif
2776
#if defined (TODO)
2777
        /* PowerPC 403 GB */
2778
        {
2779
            .name        = "403gb",
2780
            .pvr         = CPU_PPC_403GB,
2781
            .pvr_mask    = 0xFFFFFF00,
2782
            .insns_flags = PPC_INSNS_403,
2783
            .flags       = PPC_FLAGS_403,
2784
            .msr_mask    = 0x000000000007D23D,
2785
        },
2786
#endif
2787
#if defined (TODO)
2788
        /* PowerPC 403 GC */
2789
        {
2790
            .name        = "403gc",
2791
            .pvr         = CPU_PPC_403GC,
2792
            .pvr_mask    = 0xFFFFFF00,
2793
            .insns_flags = PPC_INSNS_403,
2794
            .flags       = PPC_FLAGS_403,
2795
            .msr_mask    = 0x000000000007D23D,
2796
        },
2797
#endif
2798
#if defined (TODO)
2799
        /* PowerPC 403 GCX */
2800
        {
2801
            .name        = "403gcx",
2802
            .pvr         = CPU_PPC_403GCX,
2803
            .pvr_mask    = 0xFFFFFF00,
2804
            .insns_flags = PPC_INSNS_403,
2805
            .flags       = PPC_FLAGS_403,
2806
            .msr_mask    = 0x000000000007D23D,
2807
        },
2808
#endif
2809
#if defined (TODO)
2810
        /* Generic PowerPC 405 */
2811
        {
2812
            .name        = "405",
2813
            .pvr         = CPU_PPC_405,
2814
            .pvr_mask    = 0xFFFF0000,
2815
            .insns_flags = PPC_INSNS_405,
2816
            .flags       = PPC_FLAGS_405,
2817
            .msr_mask    = 0x00000000020EFF30,
2818
        },
2718
static ppc_def_t ppc_defs[] = {
2719
    /* Embedded PowerPC */
2720
#if defined (TODO)
2721
    /* PowerPC 401 */
2722
    {
2723
        .name        = "401",
2724
        .pvr         = CPU_PPC_401,
2725
        .pvr_mask    = 0xFFFF0000,
2726
        .insns_flags = PPC_INSNS_401,
2727
        .flags       = PPC_FLAGS_401,
2728
        .msr_mask    = xxx,
2729
    },
2819 2730
#endif
2820 2731
#if defined (TODO)
2821
        /* PowerPC 405 CR */
2822
        {
2823
            .name        = "405cr",
2824
            .pvr         = CPU_PPC_405,
2825
            .pvr_mask    = 0xFFFF0000,
2826
            .insns_flags = PPC_INSNS_405,
2827
            .flags       = PPC_FLAGS_405,
2828
            .msr_mask    = 0x00000000020EFF30,
2829
        },
2732
    /* IOP480 (401 microcontroler) */
2733
    {
2734
        .name        = "iop480",
2735
        .pvr         = CPU_PPC_IOP480,
2736
        .pvr_mask    = 0xFFFF0000,
2737
        .insns_flags = PPC_INSNS_401,
2738
        .flags       = PPC_FLAGS_401,
2739
        .msr_mask    = xxx,
2740
    },
2830 2741
#endif
2831 2742
#if defined (TODO)
2832
        /* PowerPC 405 GP */
2833
        {
2834
            .name        = "405gp",
2835
            .pvr         = CPU_PPC_405,
2836
            .pvr_mask    = 0xFFFF0000,
2837
            .insns_flags = PPC_INSNS_405,
2838
            .flags       = PPC_FLAGS_405,
2839
            .msr_mask    = 0x00000000020EFF30,
2840
        },
2743
    /* IBM Processor for Network Resources */
2744
    {
2745
        .name        = "Cobra",
2746
        .pvr         = CPU_PPC_COBRA,
2747
        .pvr_mask    = 0xFFFF0000,
2748
        .insns_flags = PPC_INSNS_401,
2749
        .flags       = PPC_FLAGS_401,
2750
        .msr_mask    = xxx,
2751
    },
2841 2752
#endif
2842 2753
#if defined (TODO)
2843
        /* PowerPC 405 EP */
2844
        {
2845
            .name        = "405ep",
2846
            .pvr         = CPU_PPC_405EP,
2847
            .pvr_mask    = 0xFFFF0000,
2848
            .insns_flags = PPC_INSNS_405,
2849
            .flags       = PPC_FLAGS_405,
2850
            .msr_mask    = 0x00000000020EFF30,
2851
        },
2754
    /* Generic PowerPC 403 */
2755
    {
2756
        .name        = "403",
2757
        .pvr         = CPU_PPC_403,
2758
        .pvr_mask    = 0xFFFFFF00,
2759
        .insns_flags = PPC_INSNS_403,
2760
        .flags       = PPC_FLAGS_403,
2761
        .msr_mask    = 0x000000000007D23D,
2762
    },
2852 2763
#endif
2853 2764
#if defined (TODO)
2854
        /* PowerPC 405 GPR */
2855
        {
2856
            .name        = "405gpr",
2857
            .pvr         = CPU_PPC_405GPR,
2858
            .pvr_mask    = 0xFFFF0000,
2859
            .insns_flags = PPC_INSNS_405,
2860
            .flags       = PPC_FLAGS_405,
2861
            .msr_mask    = 0x00000000020EFF30,
2862
        },
2765
    /* PowerPC 403 GA */
2766
    {
2767
        .name        = "403ga",
2768
        .pvr         = CPU_PPC_403GA,
2769
        .pvr_mask    = 0xFFFFFF00,
2770
        .insns_flags = PPC_INSNS_403,
2771
        .flags       = PPC_FLAGS_403,
2772
        .msr_mask    = 0x000000000007D23D,
2773
    },
2863 2774
#endif
2864 2775
#if defined (TODO)
2865
        /* PowerPC 405 D2 */
2866
        {
2867
            .name        = "405d2",
2868
            .pvr         = CPU_PPC_405D2,
2869
            .pvr_mask    = 0xFFFF0000,
2870
            .insns_flags = PPC_INSNS_405,
2871
            .flags       = PPC_FLAGS_405,
2872
            .msr_mask    = 0x00000000020EFF30,
2873
        },
2776
    /* PowerPC 403 GB */
2777
    {
2778
        .name        = "403gb",
2779
        .pvr         = CPU_PPC_403GB,
2780
        .pvr_mask    = 0xFFFFFF00,
2781
        .insns_flags = PPC_INSNS_403,
2782
        .flags       = PPC_FLAGS_403,
2783
        .msr_mask    = 0x000000000007D23D,
2784
    },
2874 2785
#endif
2875 2786
#if defined (TODO)
2876
        /* PowerPC 405 D4 */
2877
        {
2878
            .name        = "405d4",
2879
            .pvr         = CPU_PPC_405D4,
2880
            .pvr_mask    = 0xFFFF0000,
2881
            .insns_flags = PPC_INSNS_405,
2882
            .flags       = PPC_FLAGS_405,
2883
            .msr_mask    = 0x00000000020EFF30,
2884
        },
2787
    /* PowerPC 403 GC */
2788
    {
2789
        .name        = "403gc",
2790
        .pvr         = CPU_PPC_403GC,
2791
        .pvr_mask    = 0xFFFFFF00,
2792
        .insns_flags = PPC_INSNS_403,
2793
        .flags       = PPC_FLAGS_403,
2794
        .msr_mask    = 0x000000000007D23D,
2795
    },
2885 2796
#endif
2886 2797
#if defined (TODO)
2887
        /* Npe405 H */
2888
        {
2889
            .name        = "Npe405H",
2890
            .pvr         = CPU_PPC_NPE405H,
2891
            .pvr_mask    = 0xFFFF0000,
2892
            .insns_flags = PPC_INSNS_405,
2893
            .flags       = PPC_FLAGS_405,
2894
            .msr_mask    = 0x00000000020EFF30,
2895
        },
2798
    /* PowerPC 403 GCX */
2799
    {
2800
        .name        = "403gcx",
2801
        .pvr         = CPU_PPC_403GCX,
2802
        .pvr_mask    = 0xFFFFFF00,
2803
        .insns_flags = PPC_INSNS_403,
2804
        .flags       = PPC_FLAGS_403,
2805
        .msr_mask    = 0x000000000007D23D,
2806
    },
2807
#endif
2808
    /* Generic PowerPC 405 */
2809
    {
2810
        .name        = "405",
2811
        .pvr         = CPU_PPC_405,
2812
        .pvr_mask    = 0xFFFF0000,
2813
        .insns_flags = PPC_INSNS_405,
2814
        .flags       = PPC_FLAGS_405,
2815
        .msr_mask    = 0x00000000020EFF30,
2816
    },
2817
    /* PowerPC 405 CR */
2818
    {
2819
        .name        = "405cr",
2820
        .pvr         = CPU_PPC_405,
2821
        .pvr_mask    = 0xFFFFFFFF,
2822
        .insns_flags = PPC_INSNS_405,
2823
        .flags       = PPC_FLAGS_405,
2824
        .msr_mask    = 0x00000000020EFF30,
2825
    },
2826
#if defined (TODO)
2827
    /* PowerPC 405 GP */
2828
    {
2829
        .name        = "405gp",
2830
        .pvr         = CPU_PPC_405,
2831
        .pvr_mask    = 0xFFFFFFFF,
2832
        .insns_flags = PPC_INSNS_405,
2833
        .flags       = PPC_FLAGS_405,
2834
        .msr_mask    = 0x00000000020EFF30,
2835
    },
2836
#endif
2837
    /* PowerPC 405 EP */
2838
    {
2839
        .name        = "405ep",
2840
        .pvr         = CPU_PPC_405EP,
2841
        .pvr_mask    = 0xFFFFFFFF,
2842
        .insns_flags = PPC_INSNS_405,
2843
        .flags       = PPC_FLAGS_405,
2844
        .msr_mask    = 0x00000000020EFF30,
2845
    },
2846
#if defined (TODO)
2847
    /* PowerPC 405 EZ */
2848
    {
2849
        .name        = "405ez",
2850
        .pvr         = CPU_PPC_405EZ,
2851
        .pvr_mask    = 0xFFFFFFFF,
2852
        .insns_flags = PPC_INSNS_405,
2853
        .flags       = PPC_FLAGS_405,
2854
        .msr_mask    = 0x00000000020EFF30,
2855
    },
2896 2856
#endif
2897 2857
#if defined (TODO)
2898
        /* Npe405 L */
2899
        {
2900
            .name        = "Npe405L",
2901
            .pvr         = CPU_PPC_NPE405L,
2902
            .pvr_mask    = 0xFFFF0000,
2903
            .insns_flags = PPC_INSNS_405,
2904
            .flags       = PPC_FLAGS_405,
2905
            .msr_mask    = 0x00000000020EFF30,
2906
        },
2858
    /* PowerPC 405 GPR */
2859
    {
2860
        .name        = "405gpr",
2861
        .pvr         = CPU_PPC_405GPR,
2862
        .pvr_mask    = 0xFFFFFFFF,
2863
        .insns_flags = PPC_INSNS_405,
2864
        .flags       = PPC_FLAGS_405,
2865
        .msr_mask    = 0x00000000020EFF30,
2866
    },
2907 2867
#endif
2908 2868
#if defined (TODO)
2909
        /* STB010000 */
2910
        {
2911
            .name        = "STB01000",
2912
            .pvr         = CPU_PPC_STB01000,
2913
            .pvr_mask    = 0xFFFF0000,
2914
            .insns_flags = PPC_INSNS_405,
2915
            .flags       = PPC_FLAGS_405,
2916
            .msr_mask    = 0x00000000020EFF30,
2917
        },
2869
    /* PowerPC 405 D2 */
2870
    {
2871
        .name        = "405d2",
2872
        .pvr         = CPU_PPC_405D2,
2873
        .pvr_mask    = 0xFFFFFFFF,
2874
        .insns_flags = PPC_INSNS_405,
2875
        .flags       = PPC_FLAGS_405,
2876
        .msr_mask    = 0x00000000020EFF30,
2877
    },
2918 2878
#endif
2919 2879
#if defined (TODO)
2920
        /* STB01010 */
2921
        {
2922
            .name        = "STB01010",
2923
            .pvr         = CPU_PPC_STB01010,
2924
            .pvr_mask    = 0xFFFF0000,
2925
            .insns_flags = PPC_INSNS_405,
2926
            .flags       = PPC_FLAGS_405,
2927
            .msr_mask    = 0x00000000020EFF30,
2928
        },
2880
    /* PowerPC 405 D4 */
2881
    {
2882
        .name        = "405d4",
2883
        .pvr         = CPU_PPC_405D4,
2884
        .pvr_mask    = 0xFFFFFFFF,
2885
        .insns_flags = PPC_INSNS_405,
2886
        .flags       = PPC_FLAGS_405,
2887
        .msr_mask    = 0x00000000020EFF30,
2888
    },
2929 2889
#endif
2930 2890
#if defined (TODO)
2931
        /* STB0210 */
2932
        {
2933
            .name        = "STB0210",
2934
            .pvr         = CPU_PPC_STB0210,
2935
            .pvr_mask    = 0xFFFF0000,
2891
    /* Npe405 H */
2892
    {
2893
        .name        = "Npe405H",
2894
        .pvr         = CPU_PPC_NPE405H,
2895
        .pvr_mask    = 0xFFFFFFFF,
2936 2896
            .insns_flags = PPC_INSNS_405,
2937
            .flags       = PPC_FLAGS_405,
2938
            .msr_mask    = 0x00000000020EFF30,
2939
        },
2897
        .flags       = PPC_FLAGS_405,
2898
        .msr_mask    = 0x00000000020EFF30,
2899
    },
2940 2900
#endif
2941 2901
#if defined (TODO)
2942
        /* STB03xx */
2943
        {
2944
            .name        = "STB03",
2945
            .pvr         = CPU_PPC_STB03,
2946
            .pvr_mask    = 0xFFFF0000,
2947
            .insns_flags = PPC_INSNS_405,
2948
            .flags       = PPC_FLAGS_405,
2949
            .msr_mask    = 0x00000000020EFF30,
2950
        },
2902
    /* Npe405 L */
2903
    {
2904
        .name        = "Npe405L",
2905
        .pvr         = CPU_PPC_NPE405L,
2906
        .pvr_mask    = 0xFFFFFFFF,
2907
        .insns_flags = PPC_INSNS_405,
2908
        .flags       = PPC_FLAGS_405,
2909
        .msr_mask    = 0x00000000020EFF30,
2910
    },
2951 2911
#endif
2952 2912
#if defined (TODO)
2953
        /* STB043x */
2954
        {
2955
            .name        = "STB043",
2956
            .pvr         = CPU_PPC_STB043,
2957
            .pvr_mask    = 0xFFFF0000,
2958
            .insns_flags = PPC_INSNS_405,
2959
            .flags       = PPC_FLAGS_405,
2960
            .msr_mask    = 0x00000000020EFF30,
2961
        },
2913
    /* STB010000 */
2914
    {
2915
        .name        = "STB01000",
2916
        .pvr         = CPU_PPC_STB01000,
2917
        .pvr_mask    = 0xFFFFFFFF,
2918
        .insns_flags = PPC_INSNS_405,
2919
        .flags       = PPC_FLAGS_405,
2920
        .msr_mask    = 0x00000000020EFF30,
2921
    },
2962 2922
#endif
2963 2923
#if defined (TODO)
2964
        /* STB045x */
2965
        {
2966
            .name        = "STB045",
2967
            .pvr         = CPU_PPC_STB045,
2968
            .pvr_mask    = 0xFFFF0000,
2969
            .insns_flags = PPC_INSNS_405,
2970
            .flags       = PPC_FLAGS_405,
2971
            .msr_mask    = 0x00000000020EFF30,
2972
        },
2924
    /* STB01010 */
2925
    {
2926
        .name        = "STB01010",
2927
        .pvr         = CPU_PPC_STB01010,
2928
        .pvr_mask    = 0xFFFFFFFF,
2929
        .insns_flags = PPC_INSNS_405,
2930
        .flags       = PPC_FLAGS_405,
2931
        .msr_mask    = 0x00000000020EFF30,
2932
    },
2973 2933
#endif
2974 2934
#if defined (TODO)
2975
        /* STB25xx */
2976
        {
2977
            .name        = "STB25",
2978
            .pvr         = CPU_PPC_STB25,
2979
            .pvr_mask    = 0xFFFF0000,
2980
            .insns_flags = PPC_INSNS_405,
2981
            .flags       = PPC_FLAGS_405,
2982
            .msr_mask    = 0x00000000020EFF30,
2983
        },
2935
    /* STB0210 */
2936
    {
2937
        .name        = "STB0210",
2938
        .pvr         = CPU_PPC_STB0210,
2939
        .pvr_mask    = 0xFFFFFFFF,
2940
        .insns_flags = PPC_INSNS_405,
2941
        .flags       = PPC_FLAGS_405,
2942
        .msr_mask    = 0x00000000020EFF30,
2943
    },
2944
#endif
2945
#if defined (TODO) || 1
2946
    /* STB03xx */
2947
    {
2948
        .name        = "STB03",
2949
        .pvr         = CPU_PPC_STB03,
2950
        .pvr_mask    = 0xFFFFFFFF,
2951
        .insns_flags = PPC_INSNS_405,
2952
        .flags       = PPC_FLAGS_405,
2953
        .msr_mask    = 0x00000000020EFF30,
2954
    },
2984 2955
#endif
2985 2956
#if defined (TODO)
2986
        /* STB130 */
2987
        {
2988
            .name        = "STB130",
2989
            .pvr         = CPU_PPC_STB130,
2990
            .pvr_mask    = 0xFFFF0000,
2991
            .insns_flags = PPC_INSNS_405,
2992
            .flags       = PPC_FLAGS_405,
2993
            .msr_mask    = 0x00000000020EFF30,
2994
        },
2957
    /* STB043x */
2958
    {
2959
        .name        = "STB043",
2960
        .pvr         = CPU_PPC_STB043,
2961
        .pvr_mask    = 0xFFFFFFFF,
2962
        .insns_flags = PPC_INSNS_405,
2963
        .flags       = PPC_FLAGS_405,
2964
        .msr_mask    = 0x00000000020EFF30,
2965
    },
2966
#endif
2967
#if defined (TODO)
2968
    /* STB045x */
2969
    {
2970
        .name        = "STB045",
2971
        .pvr         = CPU_PPC_STB045,
2972
        .pvr_mask    = 0xFFFFFFFF,
2973
        .insns_flags = PPC_INSNS_405,
2974
        .flags       = PPC_FLAGS_405,
2975
        .msr_mask    = 0x00000000020EFF30,
2976
    },
2977
#endif
2978
#if defined (TODO) || 1
2979
    /* STB25xx */
2980
    {
2981
        .name        = "STB25",
2982
        .pvr         = CPU_PPC_STB25,
2983
        .pvr_mask    = 0xFFFFFFFF,
2984
        .insns_flags = PPC_INSNS_405,
2985
        .flags       = PPC_FLAGS_405,
2986
        .msr_mask    = 0x00000000020EFF30,
2987
    },
2988
#endif
2989
#if defined (TODO)
2990
    /* STB130 */
2991
    {
2992
        .name        = "STB130",
2993
        .pvr         = CPU_PPC_STB130,
2994
        .pvr_mask    = 0xFFFFFFFF,
2995
        .insns_flags = PPC_INSNS_405,
2996
        .flags       = PPC_FLAGS_405,
2997
        .msr_mask    = 0x00000000020EFF30,
2998
    },
2995 2999
#endif
2996 3000
        /* Xilinx PowerPC 405 cores */
2997 3001
#if defined (TODO)
2998
        {
2999
            .name        = "x2vp4",
3000
            .pvr         = CPU_PPC_X2VP4,
3001
            .pvr_mask    = 0xFFFF0000,
3002
            .insns_flags = PPC_INSNS_405,
3003
            .flags       = PPC_FLAGS_405,
3004
            .msr_mask    = 0x00000000020EFF30,
3005
        },
3006
        {
3007
            .name        = "x2vp7",
3008
            .pvr         = CPU_PPC_X2VP7,
3009
            .pvr_mask    = 0xFFFF0000,
3010
            .insns_flags = PPC_INSNS_405,
3011
            .flags       = PPC_FLAGS_405,
3012
            .msr_mask    = 0x00000000020EFF30,
3013
        },
3014
        {
3015
            .name        = "x2vp20",
3016
            .pvr         = CPU_PPC_X2VP20,
3017
            .pvr_mask    = 0xFFFF0000,
3018
            .insns_flags = PPC_INSNS_405,
3019
            .flags       = PPC_FLAGS_405,
3020
            .msr_mask    = 0x00000000020EFF30,
3021
        },
3022
        {
3023
            .name        = "x2vp50",
3024
            .pvr         = CPU_PPC_X2VP50,
3025
            .pvr_mask    = 0xFFFF0000,
3026
            .insns_flags = PPC_INSNS_405,
3027
            .flags       = PPC_FLAGS_405,
3028
            .msr_mask    = 0x00000000020EFF30,
3029
        },
3030
#endif
3031
#if defined (TODO)
3032
        /* PowerPC 440 EP */
3033
        {
3034
            .name        = "440ep",
3035
            .pvr         = CPU_PPC_440EP,
3036
            .pvr_mask    = 0xFFFF0000,
3037
            .insns_flags = PPC_INSNS_440,
3038
            .flags       = PPC_FLAGS_440,
3039
            .msr_mask    = 0x000000000006D630,
3040
        },
3041
#endif
3042
#if defined (TODO)
3043
        /* PowerPC 440 GR */
3044
        {
3045
            .name        = "440gr",
3046
            .pvr         = CPU_PPC_440GR,
3047
            .pvr_mask    = 0xFFFF0000,
3048
            .insns_flags = PPC_INSNS_440,
3049
            .flags       = PPC_FLAGS_440,
3050
            .msr_mask    = 0x000000000006D630,
3051
        },
3052
#endif
3053
#if defined (TODO)
3054
        /* PowerPC 440 GP */
3055
        {
3056
            .name        = "440gp",
3057
            .pvr         = CPU_PPC_440GP,
3058
            .pvr_mask    = 0xFFFFFF00,
3059
            .insns_flags = PPC_INSNS_440,
3060
            .flags       = PPC_FLAGS_440,
3061
            .msr_mask    = 0x000000000006D630,
3062
        },
3063
#endif
3064
#if defined (TODO)
3065
        /* PowerPC 440 GX */
3066
        {
3067
            .name        = "440gx",
3068
            .pvr         = CPU_PPC_440GX,
3069
            .pvr_mask    = 0xFFFF0000,
3070
            .insns_flags = PPC_INSNS_405,
3071
            .flags       = PPC_FLAGS_440,
3072
            .msr_mask    = 0x000000000006D630,
3073
        },
3002
    {
3003
        .name        = "x2vp4",
3004
        .pvr         = CPU_PPC_X2VP4,
3005
        .pvr_mask    = 0xFFFFFFFF,
3006
        .insns_flags = PPC_INSNS_405,
3007
        .flags       = PPC_FLAGS_405,
3008
        .msr_mask    = 0x00000000020EFF30,
3009
    },
3010
    {
3011
        .name        = "x2vp7",
3012
        .pvr         = CPU_PPC_X2VP7,
3013
        .pvr_mask    = 0xFFFFFFFF,
3014
        .insns_flags = PPC_INSNS_405,
3015
        .flags       = PPC_FLAGS_405,
3016
        .msr_mask    = 0x00000000020EFF30,
3017
    },
3018
    {
3019
        .name        = "x2vp20",
3020
        .pvr         = CPU_PPC_X2VP20,
3021
        .pvr_mask    = 0xFFFFFFFF,
3022
        .insns_flags = PPC_INSNS_405,
3023
        .flags       = PPC_FLAGS_405,
3024
        .msr_mask    = 0x00000000020EFF30,
3025
    },
3026
    {
3027
        .name        = "x2vp50",
3028
        .pvr         = CPU_PPC_X2VP50,
3029
        .pvr_mask    = 0xFFFFFFFF,
3030
        .insns_flags = PPC_INSNS_405,
3031
        .flags       = PPC_FLAGS_405,
3032
        .msr_mask    = 0x00000000020EFF30,
3033
    },
3074 3034
#endif
3075 3035
#if defined (TODO)
3076
        /* PowerPC 440 GXc */
3077
        {
3078
            .name        = "440gxc",
3079
            .pvr         = CPU_PPC_440GXC,
3080
            .pvr_mask    = 0xFFFF0000,
3081
            .insns_flags = PPC_INSNS_405,
3082
            .flags       = PPC_FLAGS_440,
3083
            .msr_mask    = 0x000000000006D630,
3084
        },
3036
    /* PowerPC 440 EP */
3037
    {
3038
        .name        = "440ep",
3039
        .pvr         = CPU_PPC_440EP,
3040
        .pvr_mask    = 0xFFFF0000,
3041
        .insns_flags = PPC_INSNS_440,
3042
        .flags       = PPC_FLAGS_440,
3043
        .msr_mask    = 0x000000000006D630,
3044
    },
3085 3045
#endif
3086 3046
#if defined (TODO)
3087
        /* PowerPC 440 GXf */
3088
        {
3089
            .name        = "440gxf",
3090
            .pvr         = CPU_PPC_440GXF,
3091
            .pvr_mask    = 0xFFFF0000,
3092
            .insns_flags = PPC_INSNS_405,
3093
            .flags       = PPC_FLAGS_440,
3094
            .msr_mask    = 0x000000000006D630,
3095
        },
3047
    /* PowerPC 440 GR */
3048
    {
3049
        .name        = "440gr",
3050
        .pvr         = CPU_PPC_440GR,
3051
        .pvr_mask    = 0xFFFF0000,
3052
        .insns_flags = PPC_INSNS_440,
3053
        .flags       = PPC_FLAGS_440,
3054
        .msr_mask    = 0x000000000006D630,
3055
    },
3096 3056
#endif
3097 3057
#if defined (TODO)
3098
        /* PowerPC 440 SP */
3099
        {
3100
            .name        = "440sp",
3101
            .pvr         = CPU_PPC_440SP,
3102
            .pvr_mask    = 0xFFFF0000,
3103
            .insns_flags = PPC_INSNS_405,
3104
            .flags       = PPC_FLAGS_440,
3105
            .msr_mask    = 0x000000000006D630,
3106
        },
3058
    /* PowerPC 440 GP */
3059
    {
3060
        .name        = "440gp",
3061
        .pvr         = CPU_PPC_440GP,
3062
        .pvr_mask    = 0xFFFFFF00,
3063
        .insns_flags = PPC_INSNS_440,
3064
        .flags       = PPC_FLAGS_440,
3065
        .msr_mask    = 0x000000000006D630,
3066
    },
3107 3067
#endif
3108 3068
#if defined (TODO)
3109
        /* PowerPC 440 SP2 */
3110
        {
3111
            .name        = "440sp2",
3112
            .pvr         = CPU_PPC_440SP2,
3113
            .pvr_mask    = 0xFFFF0000,
3114
            .insns_flags = PPC_INSNS_405,
3115
            .flags       = PPC_FLAGS_440,
3116
            .msr_mask    = 0x000000000006D630,
3117
        },
3069
    /* PowerPC 440 GX */
3070
    {
3071
        .name        = "440gx",
3072
        .pvr         = CPU_PPC_440GX,
3073
        .pvr_mask    = 0xFFFF0000,
3074
        .insns_flags = PPC_INSNS_405,
3075
        .flags       = PPC_FLAGS_440,
3076
        .msr_mask    = 0x000000000006D630,
3077
    },
3118 3078
#endif
3119 3079
#if defined (TODO)
3120
        /* PowerPC 440 SPE */
3121
        {
3122
            .name        = "440spe",
3123
            .pvr         = CPU_PPC_440SPE,
3124
            .pvr_mask    = 0xFFFF0000,
3125
            .insns_flags = PPC_INSNS_405,
3126
            .flags       = PPC_FLAGS_440,
3127
            .msr_mask    = 0x000000000006D630,
3128
        },
3129
#endif
3130
        /* Fake generic BookE PowerPC */
3131
        {
3132
            .name        = "BookE",
3133
            .pvr         = CPU_PPC_e500,
3134
            .pvr_mask    = 0xFFFFFFFF,
3135
            .insns_flags = PPC_INSNS_BOOKE,
3136
            .flags       = PPC_FLAGS_BOOKE,
3137
            .msr_mask    = 0x000000000006D630,
3138
        },
3139
        /* PowerPC 460 cores - TODO */
3140
        /* PowerPC MPC 5xx cores - TODO */
3141
        /* PowerPC MPC 8xx cores - TODO */
3142
        /* PowerPC MPC 8xxx cores - TODO */
3143
        /* e200 cores - TODO */
3144
        /* e500 cores - TODO */
3145
        /* e600 cores - TODO */
3146

  
3147
        /* 32 bits "classic" PowerPC */
3148
#if defined (TODO)
3149
        /* PowerPC 601 */
3150
        {
3151
            .name        = "601",
3152
            .pvr         = CPU_PPC_601,
3153
            .pvr_mask    = 0xFFFF0000,
3154
            .insns_flags = PPC_INSNS_601,
3155
            .flags       = PPC_FLAGS_601,
3156
            .msr_mask    = 0x000000000000FD70,
3157
        },
3158
#endif
3159
#if defined (TODO)
3160
        /* PowerPC 602 */
3161
        {
3162
            .name        = "602",
3163
            .pvr         = CPU_PPC_602,
3164
            .pvr_mask    = 0xFFFF0000,
3165
            .insns_flags = PPC_INSNS_602,
3166
            .flags       = PPC_FLAGS_602,
3167
            .msr_mask    = 0x0000000000C7FF73,
3168
        },
3169
#endif
3170
        /* PowerPC 603 */
3171
        {
3172
            .name        = "603",
3173
            .pvr         = CPU_PPC_603,
3174
            .pvr_mask    = 0xFFFFFFFF,
3175
            .insns_flags = PPC_INSNS_603,
3176
            .flags       = PPC_FLAGS_603,
3177
            .msr_mask    = 0x000000000007FF73,
3178
        },
3179
        /* PowerPC 603e */
3180
        {
3181
            .name        = "603e",
3182
            .pvr         = CPU_PPC_603E,
3183
            .pvr_mask    = 0xFFFFFFFF,
3184
            .insns_flags = PPC_INSNS_603,
3185
            .flags       = PPC_FLAGS_603,
3186
            .msr_mask    = 0x000000000007FF73,
3187
        },
3188
        {
3189
            .name        = "Stretch",
3190
            .pvr         = CPU_PPC_603E,
3191
            .pvr_mask    = 0xFFFFFFFF,
3192
            .insns_flags = PPC_INSNS_603,
3193
            .flags       = PPC_FLAGS_603,
3194
            .msr_mask    = 0x000000000007FF73,
3195
        },
3196
        /* PowerPC 603p */
3197
        {
3198
            .name        = "603p",
3199
            .pvr         = CPU_PPC_603P,
3200
            .pvr_mask    = 0xFFFFFFFF,
3201
            .insns_flags = PPC_INSNS_603,
3202
            .flags       = PPC_FLAGS_603,
3203
            .msr_mask    = 0x000000000007FF73,
3204
        },
3205
        /* PowerPC 603e7 */
3206
        {
3207
            .name        = "603e7",
3208
            .pvr         = CPU_PPC_603E7,
3209
            .pvr_mask    = 0xFFFFFFFF,
3210
            .insns_flags = PPC_INSNS_603,
3211
            .flags       = PPC_FLAGS_603,
3212
            .msr_mask    = 0x000000000007FF73,
3213
        },
3214
        /* PowerPC 603e7v */
3215
        {
3216
            .name        = "603e7v",
3217
            .pvr         = CPU_PPC_603E7v,
3218
            .pvr_mask    = 0xFFFFFFFF,
3219
            .insns_flags = PPC_INSNS_603,
3220
            .flags       = PPC_FLAGS_603,
3221
            .msr_mask    = 0x000000000007FF73,
3222
        },
3223
        /* PowerPC 603e7v2 */
3224
        {
3225
            .name        = "603e7v2",
3226
            .pvr         = CPU_PPC_603E7v2,
3227
            .pvr_mask    = 0xFFFFFFFF,
3228
            .insns_flags = PPC_INSNS_603,
3229
            .flags       = PPC_FLAGS_603,
3230
            .msr_mask    = 0x000000000007FF73,
3231
        },
3232
        /* PowerPC 603r */
3233
        {
3234
            .name        = "603r",
3235
            .pvr         = CPU_PPC_603R,
3236
            .pvr_mask    = 0xFFFFFFFF,
3237
            .insns_flags = PPC_INSNS_603,
3238
            .flags       = PPC_FLAGS_603,
3239
            .msr_mask    = 0x000000000007FF73,
3240
        },
3241
        {
3242
            .name        = "Goldeneye",
3243
            .pvr         = CPU_PPC_603R,
3244
            .pvr_mask    = 0xFFFFFFFF,
3245
            .insns_flags = PPC_INSNS_603,
3246
            .flags       = PPC_FLAGS_603,
3247
            .msr_mask    = 0x000000000007FF73,
3248
        },
3249
#if defined (TODO)
3250
        /* XXX: TODO: according to Motorola UM, this is a derivative to 603e */
3251
        {
3252
            .name        = "G2",
3253
            .pvr         = CPU_PPC_G2,
3254
            .pvr_mask    = 0xFFFF0000,
3255
            .insns_flags = PPC_INSNS_G2,
3256
            .flags       = PPC_FLAGS_G2,
3257
            .msr_mask    = 0x000000000006FFF2,
3258
        },
3259
        {
3260
            .name        = "G2h4",
3261
            .pvr         = CPU_PPC_G2H4,
3262
            .pvr_mask    = 0xFFFF0000,
3263
            .insns_flags = PPC_INSNS_G2,
3264
            .flags       = PPC_FLAGS_G2,
3265
            .msr_mask    = 0x000000000006FFF2,
3266
        },
3267
        {
3268
            .name        = "G2gp",
3269
            .pvr         = CPU_PPC_G2gp,
3270
            .pvr_mask    = 0xFFFF0000,
3271
            .insns_flags = PPC_INSNS_G2,
3272
            .flags       = PPC_FLAGS_G2,
3273
            .msr_mask    = 0x000000000006FFF2,
3274
        },
3275
        {
3276
            .name        = "G2ls",
3277
            .pvr         = CPU_PPC_G2ls,
3278
            .pvr_mask    = 0xFFFF0000,
3279
            .insns_flags = PPC_INSNS_G2,
3280
            .flags       = PPC_FLAGS_G2,
3281
            .msr_mask    = 0x000000000006FFF2,
3282
        },
3283
        { /* Same as G2, with LE mode support */
3284
            .name        = "G2le",
3285
            .pvr         = CPU_PPC_G2LE,
3286
            .pvr_mask    = 0xFFFF0000,
3287
            .insns_flags = PPC_INSNS_G2,
3288
            .flags       = PPC_FLAGS_G2,
3289
            .msr_mask    = 0x000000000007FFF3,
3290
        },
3291
        {
3292
            .name        = "G2legp",
3293
            .pvr         = CPU_PPC_G2LEgp,
3294
            .pvr_mask    = 0xFFFF0000,
3295
            .insns_flags = PPC_INSNS_G2,
3296
            .flags       = PPC_FLAGS_G2,
3297
            .msr_mask    = 0x000000000007FFF3,
3298
        },
3299
        {
3300
            .name        = "G2lels",
3301
            .pvr         = CPU_PPC_G2LEls,
3302
            .pvr_mask    = 0xFFFF0000,
3303
            .insns_flags = PPC_INSNS_G2,
3304
            .flags       = PPC_FLAGS_G2,
3305
            .msr_mask    = 0x000000000007FFF3,
3306
        },
3307
#endif
3308
        /* PowerPC 604 */
3309
        {
3310
            .name        = "604",
3311
            .pvr         = CPU_PPC_604,
3312
            .pvr_mask    = 0xFFFFFFFF,
3313
            .insns_flags = PPC_INSNS_604,
3314
            .flags       = PPC_FLAGS_604,
3315
            .msr_mask    = 0x000000000005FF77,
3316
        },
3317
        /* PowerPC 604e */
3318
        {
3319
            .name        = "604e",
3320
            .pvr         = CPU_PPC_604E,
3321
            .pvr_mask    = 0xFFFFFFFF,
3322
            .insns_flags = PPC_INSNS_604,
3323
            .flags       = PPC_FLAGS_604,
3324
            .msr_mask    = 0x000000000005FF77,
3325
        },
3326
        /* PowerPC 604r */
3327
        {
3328
            .name        = "604r",
3329
            .pvr         = CPU_PPC_604R,
3330
            .pvr_mask    = 0xFFFFFFFF,
3331
            .insns_flags = PPC_INSNS_604,
3332
            .flags       = PPC_FLAGS_604,
3333
            .msr_mask    = 0x000000000005FF77,
3334
        },
3335
        /* generic G3 */
3336
        {
3337
            .name        = "G3",
3338
            .pvr         = CPU_PPC_74x,
3339
            .pvr_mask    = 0xFFFFFFFF,
3340
            .insns_flags = PPC_INSNS_7x0,
3341
            .flags       = PPC_FLAGS_7x0,
3342
            .msr_mask    = 0x000000000007FF77,
3343
        },
3344
        /* MPC740 (G3) */
3345
        {
3346
            .name        = "740",
3347
            .pvr         = CPU_PPC_74x,
3348
            .pvr_mask    = 0xFFFFFFFF,
3349
            .insns_flags = PPC_INSNS_7x0,
3350
            .flags       = PPC_FLAGS_7x0,
3351
            .msr_mask    = 0x000000000007FF77,
3352
        },
3353
        {
3354
            .name        = "Arthur",
3355
            .pvr         = CPU_PPC_74x,
3356
            .pvr_mask    = 0xFFFFFFFF,
3357
            .insns_flags = PPC_INSNS_7x0,
3358
            .flags       = PPC_FLAGS_7x0,
3359
            .msr_mask    = 0x000000000007FF77,
3360
        },
3361
#if defined (TODO)
3362
        /* MPC745 (G3) */
3363
        {
3364
            .name        = "745",
3365
            .pvr         = CPU_PPC_74x,
3366
            .pvr_mask    = 0xFFFFF000,
3367
            .insns_flags = PPC_INSNS_7x5,
3368
            .flags       = PPC_FLAGS_7x5,
3369
            .msr_mask    = 0x000000000007FF77,
3370
        },
3371
        {
3372
            .name        = "Goldfinger",
3373
            .pvr         = CPU_PPC_74x,
3374
            .pvr_mask    = 0xFFFFF000,
3375
            .insns_flags = PPC_INSNS_7x5,
3376
            .flags       = PPC_FLAGS_7x5,
3377
            .msr_mask    = 0x000000000007FF77,
3378
        },
3379
#endif
3380
        /* MPC750 (G3) */
3381
        {
3382
            .name        = "750",
3383
            .pvr         = CPU_PPC_74x,
3384
            .pvr_mask    = 0xFFFFFFFF,
3385
            .insns_flags = PPC_INSNS_7x0,
3386
            .flags       = PPC_FLAGS_7x0,
3387
            .msr_mask    = 0x000000000007FF77,
3388
        },
3389
#if defined (TODO)
3390
        /* MPC755 (G3) */
3391
        {
3392
            .name        = "755",
3393
            .pvr         = CPU_PPC_755,
3394
            .pvr_mask    = 0xFFFFF000,
3395
            .insns_flags = PPC_INSNS_7x5,
3396
            .flags       = PPC_FLAGS_7x5,
3397
            .msr_mask    = 0x000000000007FF77,
3398
        },
3399
#endif
3400
        /* MPC740P (G3) */
3401
        {
3402
            .name        = "740p",
3403
            .pvr         = CPU_PPC_74xP,
3404
            .pvr_mask    = 0xFFFFFFFF,
3405
            .insns_flags = PPC_INSNS_7x0,
3406
            .flags       = PPC_FLAGS_7x0,
3407
            .msr_mask    = 0x000000000007FF77,
3408
        },
3409
        {
3410
            .name        = "Conan/Doyle",
3411
            .pvr         = CPU_PPC_74xP,
3412
            .pvr_mask    = 0xFFFFFFFF,
3413
            .insns_flags = PPC_INSNS_7x0,
3414
            .flags       = PPC_FLAGS_7x0,
3415
            .msr_mask    = 0x000000000007FF77,
3416
        },
3417
#if defined (TODO)
3418
        /* MPC745P (G3) */
3419
        {
3420
            .name        = "745p",
3421
            .pvr         = CPU_PPC_74xP,
3422
            .pvr_mask    = 0xFFFFF000,
3423
            .insns_flags = PPC_INSNS_7x5,
3424
            .flags       = PPC_FLAGS_7x5,
3425
            .msr_mask    = 0x000000000007FF77,
3426
        },
3427
#endif
3428
        /* MPC750P (G3) */
3429
        {
3430
            .name        = "750p",
3431
            .pvr         = CPU_PPC_74xP,
3432
            .pvr_mask    = 0xFFFFFFFF,
3433
            .insns_flags = PPC_INSNS_7x0,
3434
            .flags       = PPC_FLAGS_7x0,
3435
            .msr_mask    = 0x000000000007FF77,
3436
        },
3437
#if defined (TODO)
3438
        /* MPC755P (G3) */
3439
        {
3440
            .name        = "755p",
3441
            .pvr         = CPU_PPC_74xP,
3442
            .pvr_mask    = 0xFFFFF000,
3443
            .insns_flags = PPC_INSNS_7x5,
3444
            .flags       = PPC_FLAGS_7x5,
3445
            .msr_mask    = 0x000000000007FF77,
3446
        },
3447
#endif
3448
        /* IBM 750CXe (G3 embedded) */
3449
        {
3450
            .name        = "750cxe",
3451
            .pvr         = CPU_PPC_750CXE,
3452
            .pvr_mask    = 0xFFFFFFFF,
3453
            .insns_flags = PPC_INSNS_7x0,
3454
            .flags       = PPC_FLAGS_7x0,
3455
            .msr_mask    = 0x000000000007FF77,
3456
        },
3457
        /* IBM 750FX (G3 embedded) */
3458
        {
3459
            .name        = "750fx",
3460
            .pvr         = CPU_PPC_750FX,
3461
            .pvr_mask    = 0xFFFFFFFF,
3462
            .insns_flags = PPC_INSNS_7x0,
3463
            .flags       = PPC_FLAGS_7x0,
3464
            .msr_mask    = 0x000000000007FF77,
3465
        },
3466
        /* IBM 750GX (G3 embedded) */
3467
        {
3468
            .name        = "750gx",
3469
            .pvr         = CPU_PPC_750GX,
3470
            .pvr_mask    = 0xFFFFFFFF,
3471
            .insns_flags = PPC_INSNS_7x0,
3472
            .flags       = PPC_FLAGS_7x0,
3473
            .msr_mask    = 0x000000000007FF77,
3474
        },
3475
#if defined (TODO)
3476
        /* generic G4 */
3477
        {
3478
            .name        = "G4",
3479
            .pvr         = CPU_PPC_7400,
3480
            .pvr_mask    = 0xFFFF0000,
3481
            .insns_flags = PPC_INSNS_74xx,
3482
            .flags       = PPC_FLAGS_74xx,
3483
            .msr_mask    = 0x000000000205FF77,
3484
        },
3485
#endif
3486
#if defined (TODO)
3487
        /* PowerPC 7400 (G4) */
3488
        {
3489
            .name        = "7400",
3490
            .pvr         = CPU_PPC_7400,
3491
            .pvr_mask    = 0xFFFF0000,
3492
            .insns_flags = PPC_INSNS_74xx,
3493
            .flags       = PPC_FLAGS_74xx,
3494
            .msr_mask    = 0x000000000205FF77,
3495
        },
3496
        {
3497
            .name        = "Max",
3498
            .pvr         = CPU_PPC_7400,
3499
            .pvr_mask    = 0xFFFF0000,
3500
            .insns_flags = PPC_INSNS_74xx,
3501
            .flags       = PPC_FLAGS_74xx,
3502
            .msr_mask    = 0x000000000205FF77,
3503
        },
3504
#endif
3505
#if defined (TODO)
3506
        /* PowerPC 7410 (G4) */
3507
        {
3508
            .name        = "7410",
3509
            .pvr         = CPU_PPC_7410,
3510
            .pvr_mask    = 0xFFFF0000,
3511
            .insns_flags = PPC_INSNS_74xx,
3512
            .flags       = PPC_FLAGS_74xx,
3513
            .msr_mask    = 0x000000000205FF77,
3514
        },
3515
        {
3516
            .name        = "Nitro",
3517
            .pvr         = CPU_PPC_7410,
3518
            .pvr_mask    = 0xFFFF0000,
3519
            .insns_flags = PPC_INSNS_74xx,
3520
            .flags       = PPC_FLAGS_74xx,
3521
            .msr_mask    = 0x000000000205FF77,
3522
        },
3523
#endif
3524
        /* XXX: 7441 */
3525
        /* XXX: 7445 */
3526
        /* XXX: 7447 */
3527
        /* XXX: 7447A */
3528
#if defined (TODO)
3529
        /* PowerPC 7450 (G4) */
3530
        {
3531
            .name        = "7450",
3532
            .pvr         = CPU_PPC_7450,
3533
            .pvr_mask    = 0xFFFF0000,
3534
            .insns_flags = PPC_INSNS_74xx,
3535
            .flags       = PPC_FLAGS_74xx,
3536
            .msr_mask    = 0x000000000205FF77,
3537
        },
3538
        {
3539
            .name        = "Vger",
3540
            .pvr         = CPU_PPC_7450,
3541
            .pvr_mask    = 0xFFFF0000,
3542
            .insns_flags = PPC_INSNS_74xx,
3543
            .flags       = PPC_FLAGS_74xx,
3544
            .msr_mask    = 0x000000000205FF77,
3545
        },
3546
#endif
3547
        /* XXX: 7451 */
3548
#if defined (TODO)
3549
        /* PowerPC 7455 (G4) */
3550
        {
3551
            .name        = "7455",
3552
            .pvr         = CPU_PPC_7455,
3553
            .pvr_mask    = 0xFFFF0000,
3554
            .insns_flags = PPC_INSNS_74xx,
3555
            .flags       = PPC_FLAGS_74xx,
3556
            .msr_mask    = 0x000000000205FF77,
3557
        },
3558
        {
3559
            .name        = "Apollo 6",
3560
            .pvr         = CPU_PPC_7455,
3561
            .pvr_mask    = 0xFFFF0000,
3562
            .insns_flags = PPC_INSNS_74xx,
3563
            .flags       = PPC_FLAGS_74xx,
3564
            .msr_mask    = 0x000000000205FF77,
3565
        },
3566
#endif
3567
#if defined (TODO)
3568
        /* PowerPC 7457 (G4) */
3569
        {
3570
            .name        = "7457",
3571
            .pvr         = CPU_PPC_7457,
3572
            .pvr_mask    = 0xFFFF0000,
3573
            .insns_flags = PPC_INSNS_74xx,
3574
            .flags       = PPC_FLAGS_74xx,
3575
            .msr_mask    = 0x000000000205FF77,
3576
        },
3577
        {
3578
            .name        = "Apollo 7",
3579
            .pvr         = CPU_PPC_7457,
3580
            .pvr_mask    = 0xFFFF0000,
3581
            .insns_flags = PPC_INSNS_74xx,
3582
            .flags       = PPC_FLAGS_74xx,
3583
            .msr_mask    = 0x000000000205FF77,
3584
        },
3585
#endif
3586
#if defined (TODO)
3587
        /* PowerPC 7457A (G4) */
3588
        {
3589
            .name        = "7457A",
3590
            .pvr         = CPU_PPC_7457A,
3591
            .pvr_mask    = 0xFFFF0000,
3592
            .insns_flags = PPC_INSNS_74xx,
3593
            .flags       = PPC_FLAGS_74xx,
3594
            .msr_mask    = 0x000000000205FF77,
3595
        },
3596
        {
3597
            .name        = "Apollo 7 PM",
3598
            .pvr         = CPU_PPC_7457A,
3599
            .pvr_mask    = 0xFFFF0000,
3600
            .insns_flags = PPC_INSNS_74xx,
3601
            .flags       = PPC_FLAGS_74xx,
3602
            .msr_mask    = 0x000000000205FF77,
3603
        },
3604
#endif
3605
        /* 64 bits PowerPC */
3080
    /* PowerPC 440 GXc */
3081
    {
3082
        .name        = "440gxc",
3083
        .pvr         = CPU_PPC_440GXC,
3084
        .pvr_mask    = 0xFFFF0000,
3085
        .insns_flags = PPC_INSNS_405,
3086
        .flags       = PPC_FLAGS_440,
3087
        .msr_mask    = 0x000000000006D630,
3088
    },
3089
#endif
3090
#if defined (TODO)
3091
    /* PowerPC 440 GXf */
3092
    {
3093
        .name        = "440gxf",
3094
        .pvr         = CPU_PPC_440GXF,
3095
        .pvr_mask    = 0xFFFF0000,
3096
        .insns_flags = PPC_INSNS_405,
3097
        .flags       = PPC_FLAGS_440,
3098
        .msr_mask    = 0x000000000006D630,
3099
    },
3100
#endif
3101
#if defined (TODO)
3102
    /* PowerPC 440 SP */
3103
    {
3104
        .name        = "440sp",
3105
        .pvr         = CPU_PPC_440SP,
3106
        .pvr_mask    = 0xFFFF0000,
3107
        .insns_flags = PPC_INSNS_405,
3108
        .flags       = PPC_FLAGS_440,
3109
        .msr_mask    = 0x000000000006D630,
3110
    },
3111
#endif
3112
#if defined (TODO)
3113
    /* PowerPC 440 SP2 */
3114
    {
3115
        .name        = "440sp2",
3116
        .pvr         = CPU_PPC_440SP2,
3117
        .pvr_mask    = 0xFFFF0000,
3118
        .insns_flags = PPC_INSNS_405,
3119
        .flags       = PPC_FLAGS_440,
3120
        .msr_mask    = 0x000000000006D630,
3121
    },
3122
#endif
3123
#if defined (TODO)
3124
    /* PowerPC 440 SPE */
3125
    {
3126
        .name        = "440spe",
3127
        .pvr         = CPU_PPC_440SPE,
3128
        .pvr_mask    = 0xFFFF0000,
3129
        .insns_flags = PPC_INSNS_405,
3130
        .flags       = PPC_FLAGS_440,
3131
        .msr_mask    = 0x000000000006D630,
3132
    },
3133
#endif
3134
    /* Fake generic BookE PowerPC */
3135
    {
3136
        .name        = "BookE",
3137
        .pvr         = CPU_PPC_e500,
3138
        .pvr_mask    = 0xFFFFFFFF,
3139
        .insns_flags = PPC_INSNS_BOOKE,
3140
        .flags       = PPC_FLAGS_BOOKE,
3141
        .msr_mask    = 0x000000000006D630,
3142
    },
3143
    /* PowerPC 460 cores - TODO */
3144
    /* PowerPC MPC 5xx cores - TODO */
3145
    /* PowerPC MPC 8xx cores - TODO */
3146
    /* PowerPC MPC 8xxx cores - TODO */
3147
    /* e200 cores - TODO */
3148
    /* e500 cores - TODO */
3149
    /* e600 cores - TODO */
3150

  
3151
    /* 32 bits "classic" PowerPC */
3152
#if defined (TODO)
3153
    /* PowerPC 601 */
3154
    {
3155
        .name        = "601",
3156
        .pvr         = CPU_PPC_601,
3157
        .pvr_mask    = 0xFFFF0000,
3158
        .insns_flags = PPC_INSNS_601,
3159
        .flags       = PPC_FLAGS_601,
3160
        .msr_mask    = 0x000000000000FD70,
3161
    },
3162
#endif
3163
#if defined (TODO)
3164
    /* PowerPC 602 */
3165
    {
3166
        .name        = "602",
3167
        .pvr         = CPU_PPC_602,
3168
        .pvr_mask    = 0xFFFF0000,
3169
        .insns_flags = PPC_INSNS_602,
3170
        .flags       = PPC_FLAGS_602,
3171
        .msr_mask    = 0x0000000000C7FF73,
3172
    },
3173
#endif
3174
    /* PowerPC 603 */
3175
    {
3176
        .name        = "603",
3177
        .pvr         = CPU_PPC_603,
3178
        .pvr_mask    = 0xFFFFFFFF,
3179
        .insns_flags = PPC_INSNS_603,
3180
        .flags       = PPC_FLAGS_603,
3181
        .msr_mask    = 0x000000000007FF73,
3182
    },
3183
    /* PowerPC 603e */
3184
    {
3185
        .name        = "603e",
3186
        .pvr         = CPU_PPC_603E,
3187
        .pvr_mask    = 0xFFFFFFFF,
3188
        .insns_flags = PPC_INSNS_603,
3189
        .flags       = PPC_FLAGS_603,
3190
        .msr_mask    = 0x000000000007FF73,
3191
    },
3192
    {
3193
        .name        = "Stretch",
3194
        .pvr         = CPU_PPC_603E,
3195
        .pvr_mask    = 0xFFFFFFFF,
3196
        .insns_flags = PPC_INSNS_603,
3197
        .flags       = PPC_FLAGS_603,
3198
        .msr_mask    = 0x000000000007FF73,
3199
    },
3200
    /* PowerPC 603p */
3201
    {
3202
        .name        = "603p",
3203
        .pvr         = CPU_PPC_603P,
3204
        .pvr_mask    = 0xFFFFFFFF,
3205
        .insns_flags = PPC_INSNS_603,
3206
        .flags       = PPC_FLAGS_603,
3207
        .msr_mask    = 0x000000000007FF73,
3208
    },
3209
    /* PowerPC 603e7 */
3210
    {
3211
        .name        = "603e7",
3212
        .pvr         = CPU_PPC_603E7,
3213
        .pvr_mask    = 0xFFFFFFFF,
3214
        .insns_flags = PPC_INSNS_603,
3215
        .flags       = PPC_FLAGS_603,
3216
        .msr_mask    = 0x000000000007FF73,
3217
    },
3218
    /* PowerPC 603e7v */
3219
    {
3220
        .name        = "603e7v",
3221
        .pvr         = CPU_PPC_603E7v,
3222
        .pvr_mask    = 0xFFFFFFFF,
3223
        .insns_flags = PPC_INSNS_603,
3224
        .flags       = PPC_FLAGS_603,
3225
        .msr_mask    = 0x000000000007FF73,
3226
    },
3227
    /* PowerPC 603e7v2 */
3228
    {
3229
        .name        = "603e7v2",
3230
        .pvr         = CPU_PPC_603E7v2,
3231
        .pvr_mask    = 0xFFFFFFFF,
3232
        .insns_flags = PPC_INSNS_603,
3233
        .flags       = PPC_FLAGS_603,
3234
        .msr_mask    = 0x000000000007FF73,
3235
    },
3236
    /* PowerPC 603r */
3237
    {
3238
        .name        = "603r",
3239
        .pvr         = CPU_PPC_603R,
3240
        .pvr_mask    = 0xFFFFFFFF,
3241
        .insns_flags = PPC_INSNS_603,
3242
        .flags       = PPC_FLAGS_603,
3243
        .msr_mask    = 0x000000000007FF73,
3244
    },
3245
    {
3246
        .name        = "Goldeneye",
3247
        .pvr         = CPU_PPC_603R,
3248
        .pvr_mask    = 0xFFFFFFFF,
3249
        .insns_flags = PPC_INSNS_603,
3250
        .flags       = PPC_FLAGS_603,
3251
        .msr_mask    = 0x000000000007FF73,
3252
    },
3253
#if defined (TODO)
3254
    /* XXX: TODO: according to Motorola UM, this is a derivative to 603e */
3255
    {
3256
        .name        = "G2",
3257
        .pvr         = CPU_PPC_G2,
3258
        .pvr_mask    = 0xFFFF0000,
3259
        .insns_flags = PPC_INSNS_G2,
3260
        .flags       = PPC_FLAGS_G2,
3261
        .msr_mask    = 0x000000000006FFF2,
3262
    },
3263
    {
3264
        .name        = "G2h4",
3265
        .pvr         = CPU_PPC_G2H4,
3266
        .pvr_mask    = 0xFFFF0000,
3267
        .insns_flags = PPC_INSNS_G2,
3268
        .flags       = PPC_FLAGS_G2,
3269
        .msr_mask    = 0x000000000006FFF2,
3270
    },
3271
    {
3272
        .name        = "G2gp",
3273
        .pvr         = CPU_PPC_G2gp,
3274
        .pvr_mask    = 0xFFFF0000,
3275
        .insns_flags = PPC_INSNS_G2,
3276
        .flags       = PPC_FLAGS_G2,
3277
        .msr_mask    = 0x000000000006FFF2,
3278
    },
3279
    {
3280
        .name        = "G2ls",
3281
        .pvr         = CPU_PPC_G2ls,
3282
        .pvr_mask    = 0xFFFF0000,
3283
        .insns_flags = PPC_INSNS_G2,
3284
        .flags       = PPC_FLAGS_G2,
3285
        .msr_mask    = 0x000000000006FFF2,
3286
    },
3287
    { /* Same as G2, with LE mode support */
3288
        .name        = "G2le",
3289
        .pvr         = CPU_PPC_G2LE,
3290
        .pvr_mask    = 0xFFFF0000,
3291
        .insns_flags = PPC_INSNS_G2,
3292
        .flags       = PPC_FLAGS_G2,
3293
        .msr_mask    = 0x000000000007FFF3,
3294
    },
3295
    {
3296
        .name        = "G2legp",
3297
        .pvr         = CPU_PPC_G2LEgp,
3298
        .pvr_mask    = 0xFFFF0000,
3299
        .insns_flags = PPC_INSNS_G2,
3300
        .flags       = PPC_FLAGS_G2,
3301
        .msr_mask    = 0x000000000007FFF3,
3302
    },
3303
    {
3304
        .name        = "G2lels",
3305
        .pvr         = CPU_PPC_G2LEls,
3306
        .pvr_mask    = 0xFFFF0000,
3307
        .insns_flags = PPC_INSNS_G2,
3308
        .flags       = PPC_FLAGS_G2,
3309
        .msr_mask    = 0x000000000007FFF3,
3310
    },
3311
#endif
3312
    /* PowerPC 604 */
3313
    {
3314
        .name        = "604",
3315
        .pvr         = CPU_PPC_604,
3316
        .pvr_mask    = 0xFFFFFFFF,
3317
        .insns_flags = PPC_INSNS_604,
3318
        .flags       = PPC_FLAGS_604,
3319
        .msr_mask    = 0x000000000005FF77,
3320
    },
3321
    /* PowerPC 604e */
3322
    {
3323
        .name        = "604e",
3324
        .pvr         = CPU_PPC_604E,
3325
        .pvr_mask    = 0xFFFFFFFF,
3326
        .insns_flags = PPC_INSNS_604,
3327
        .flags       = PPC_FLAGS_604,
3328
        .msr_mask    = 0x000000000005FF77,
3329
    },
3330
    /* PowerPC 604r */
3331
    {
3332
        .name        = "604r",
3333
        .pvr         = CPU_PPC_604R,
3334
        .pvr_mask    = 0xFFFFFFFF,
3335
        .insns_flags = PPC_INSNS_604,
3336
        .flags       = PPC_FLAGS_604,
3337
        .msr_mask    = 0x000000000005FF77,
3338
    },
3339
    /* generic G3 */
3340
    {
3341
        .name        = "G3",
3342
        .pvr         = CPU_PPC_74x,
3343
        .pvr_mask    = 0xFFFFFFFF,
3344
        .insns_flags = PPC_INSNS_7x0,
3345
        .flags       = PPC_FLAGS_7x0,
3346
        .msr_mask    = 0x000000000007FF77,
3347
    },
3348
    /* MPC740 (G3) */
3349
    {
3350
        .name        = "740",
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff