Commit 3a6078548d3abf01ea24df75eae794d078194481

Authored by j_mayer
1 parent c55e9aef

Cleanup and add more PowerPC core definitions.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2684 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 1120 additions and 1116 deletions
target-ppc/translate_init.c
... ... @@ -1875,7 +1875,7 @@ static void init_ppc_proc (CPUPPCState *env, ppc_def_t *def)
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,1174 +2715,1178 @@ int cpu_ppc_register (CPUPPCState *env, ppc_def_t *def)
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",
  3351 + .pvr = CPU_PPC_74x,
  3352 + .pvr_mask = 0xFFFFFFFF,
  3353 + .insns_flags = PPC_INSNS_7x0,
  3354 + .flags = PPC_FLAGS_7x0,
  3355 + .msr_mask = 0x000000000007FF77,
  3356 + },
  3357 + {
  3358 + .name = "Arthur",
  3359 + .pvr = CPU_PPC_74x,
  3360 + .pvr_mask = 0xFFFFFFFF,
  3361 + .insns_flags = PPC_INSNS_7x0,
  3362 + .flags = PPC_FLAGS_7x0,
  3363 + .msr_mask = 0x000000000007FF77,
  3364 + },
  3365 +#if defined (TODO)
  3366 + /* MPC745 (G3) */
  3367 + {
  3368 + .name = "745",
  3369 + .pvr = CPU_PPC_74x,
  3370 + .pvr_mask = 0xFFFFF000,
  3371 + .insns_flags = PPC_INSNS_7x5,
  3372 + .flags = PPC_FLAGS_7x5,
  3373 + .msr_mask = 0x000000000007FF77,
  3374 + },
  3375 + {
  3376 + .name = "Goldfinger",
  3377 + .pvr = CPU_PPC_74x,
  3378 + .pvr_mask = 0xFFFFF000,
  3379 + .insns_flags = PPC_INSNS_7x5,
  3380 + .flags = PPC_FLAGS_7x5,
  3381 + .msr_mask = 0x000000000007FF77,
  3382 + },
  3383 +#endif
  3384 + /* MPC750 (G3) */
  3385 + {
  3386 + .name = "750",
  3387 + .pvr = CPU_PPC_74x,
  3388 + .pvr_mask = 0xFFFFFFFF,
  3389 + .insns_flags = PPC_INSNS_7x0,
  3390 + .flags = PPC_FLAGS_7x0,
  3391 + .msr_mask = 0x000000000007FF77,
  3392 + },
  3393 +#if defined (TODO)
  3394 + /* MPC755 (G3) */
  3395 + {
  3396 + .name = "755",
  3397 + .pvr = CPU_PPC_755,
  3398 + .pvr_mask = 0xFFFFF000,
  3399 + .insns_flags = PPC_INSNS_7x5,
  3400 + .flags = PPC_FLAGS_7x5,
  3401 + .msr_mask = 0x000000000007FF77,
  3402 + },
  3403 +#endif
  3404 + /* MPC740P (G3) */
  3405 + {
  3406 + .name = "740p",
  3407 + .pvr = CPU_PPC_74xP,
  3408 + .pvr_mask = 0xFFFFFFFF,
  3409 + .insns_flags = PPC_INSNS_7x0,
  3410 + .flags = PPC_FLAGS_7x0,
  3411 + .msr_mask = 0x000000000007FF77,
  3412 + },
  3413 + {
  3414 + .name = "Conan/Doyle",
  3415 + .pvr = CPU_PPC_74xP,
  3416 + .pvr_mask = 0xFFFFFFFF,
  3417 + .insns_flags = PPC_INSNS_7x0,
  3418 + .flags = PPC_FLAGS_7x0,
  3419 + .msr_mask = 0x000000000007FF77,
  3420 + },
  3421 +#if defined (TODO)
  3422 + /* MPC745P (G3) */
  3423 + {
  3424 + .name = "745p",
  3425 + .pvr = CPU_PPC_74xP,
  3426 + .pvr_mask = 0xFFFFF000,
  3427 + .insns_flags = PPC_INSNS_7x5,
  3428 + .flags = PPC_FLAGS_7x5,
  3429 + .msr_mask = 0x000000000007FF77,
  3430 + },
  3431 +#endif
  3432 + /* MPC750P (G3) */
  3433 + {
  3434 + .name = "750p",
  3435 + .pvr = CPU_PPC_74xP,
  3436 + .pvr_mask = 0xFFFFFFFF,
  3437 + .insns_flags = PPC_INSNS_7x0,
  3438 + .flags = PPC_FLAGS_7x0,
  3439 + .msr_mask = 0x000000000007FF77,
  3440 + },
  3441 +#if defined (TODO)
  3442 + /* MPC755P (G3) */
  3443 + {
  3444 + .name = "755p",
  3445 + .pvr = CPU_PPC_74xP,
  3446 + .pvr_mask = 0xFFFFF000,
  3447 + .insns_flags = PPC_INSNS_7x5,
  3448 + .flags = PPC_FLAGS_7x5,
  3449 + .msr_mask = 0x000000000007FF77,
  3450 + },
  3451 +#endif
  3452 + /* IBM 750CXe (G3 embedded) */
  3453 + {
  3454 + .name = "750cxe",
  3455 + .pvr = CPU_PPC_750CXE,
  3456 + .pvr_mask = 0xFFFFFFFF,
  3457 + .insns_flags = PPC_INSNS_7x0,
  3458 + .flags = PPC_FLAGS_7x0,
  3459 + .msr_mask = 0x000000000007FF77,
  3460 + },
  3461 + /* IBM 750FX (G3 embedded) */
  3462 + {
  3463 + .name = "750fx",
  3464 + .pvr = CPU_PPC_750FX,
  3465 + .pvr_mask = 0xFFFFFFFF,
  3466 + .insns_flags = PPC_INSNS_7x0,
  3467 + .flags = PPC_FLAGS_7x0,
  3468 + .msr_mask = 0x000000000007FF77,
  3469 + },
  3470 + /* IBM 750GX (G3 embedded) */
  3471 + {
  3472 + .name = "750gx",
  3473 + .pvr = CPU_PPC_750GX,
  3474 + .pvr_mask = 0xFFFFFFFF,
  3475 + .insns_flags = PPC_INSNS_7x0,
  3476 + .flags = PPC_FLAGS_7x0,
  3477 + .msr_mask = 0x000000000007FF77,
  3478 + },
  3479 +#if defined (TODO)
  3480 + /* generic G4 */
  3481 + {
  3482 + .name = "G4",
  3483 + .pvr = CPU_PPC_7400,
  3484 + .pvr_mask = 0xFFFF0000,
  3485 + .insns_flags = PPC_INSNS_74xx,
  3486 + .flags = PPC_FLAGS_74xx,
  3487 + .msr_mask = 0x000000000205FF77,
  3488 + },
  3489 +#endif
  3490 +#if defined (TODO)
  3491 + /* PowerPC 7400 (G4) */
  3492 + {
  3493 + .name = "7400",
  3494 + .pvr = CPU_PPC_7400,
  3495 + .pvr_mask = 0xFFFF0000,
  3496 + .insns_flags = PPC_INSNS_74xx,
  3497 + .flags = PPC_FLAGS_74xx,
  3498 + .msr_mask = 0x000000000205FF77,
  3499 + },
  3500 + {
  3501 + .name = "Max",
  3502 + .pvr = CPU_PPC_7400,
  3503 + .pvr_mask = 0xFFFF0000,
  3504 + .insns_flags = PPC_INSNS_74xx,
  3505 + .flags = PPC_FLAGS_74xx,
  3506 + .msr_mask = 0x000000000205FF77,
  3507 + },
  3508 +#endif
  3509 +#if defined (TODO)
  3510 + /* PowerPC 7410 (G4) */
  3511 + {
  3512 + .name = "7410",
  3513 + .pvr = CPU_PPC_7410,
  3514 + .pvr_mask = 0xFFFF0000,
  3515 + .insns_flags = PPC_INSNS_74xx,
  3516 + .flags = PPC_FLAGS_74xx,
  3517 + .msr_mask = 0x000000000205FF77,
  3518 + },
  3519 + {
  3520 + .name = "Nitro",
  3521 + .pvr = CPU_PPC_7410,
  3522 + .pvr_mask = 0xFFFF0000,
  3523 + .insns_flags = PPC_INSNS_74xx,
  3524 + .flags = PPC_FLAGS_74xx,
  3525 + .msr_mask = 0x000000000205FF77,
  3526 + },
  3527 +#endif
  3528 + /* XXX: 7441 */
  3529 + /* XXX: 7445 */
  3530 + /* XXX: 7447 */
  3531 + /* XXX: 7447A */
  3532 +#if defined (TODO)
  3533 + /* PowerPC 7450 (G4) */
  3534 + {
  3535 + .name = "7450",
  3536 + .pvr = CPU_PPC_7450,
  3537 + .pvr_mask = 0xFFFF0000,
  3538 + .insns_flags = PPC_INSNS_74xx,
  3539 + .flags = PPC_FLAGS_74xx,
  3540 + .msr_mask = 0x000000000205FF77,
  3541 + },
  3542 + {
  3543 + .name = "Vger",
  3544 + .pvr = CPU_PPC_7450,
  3545 + .pvr_mask = 0xFFFF0000,
  3546 + .insns_flags = PPC_INSNS_74xx,
  3547 + .flags = PPC_FLAGS_74xx,
  3548 + .msr_mask = 0x000000000205FF77,
  3549 + },
  3550 +#endif
  3551 + /* XXX: 7451 */
  3552 +#if defined (TODO)
  3553 + /* PowerPC 7455 (G4) */
  3554 + {
  3555 + .name = "7455",
  3556 + .pvr = CPU_PPC_7455,
  3557 + .pvr_mask = 0xFFFF0000,
  3558 + .insns_flags = PPC_INSNS_74xx,
  3559 + .flags = PPC_FLAGS_74xx,
  3560 + .msr_mask = 0x000000000205FF77,
  3561 + },
  3562 + {
  3563 + .name = "Apollo 6",
  3564 + .pvr = CPU_PPC_7455,
  3565 + .pvr_mask = 0xFFFF0000,
  3566 + .insns_flags = PPC_INSNS_74xx,
  3567 + .flags = PPC_FLAGS_74xx,
  3568 + .msr_mask = 0x000000000205FF77,
  3569 + },
  3570 +#endif
  3571 +#if defined (TODO)
  3572 + /* PowerPC 7457 (G4) */
  3573 + {
  3574 + .name = "7457",
  3575 + .pvr = CPU_PPC_7457,
  3576 + .pvr_mask = 0xFFFF0000,
  3577 + .insns_flags = PPC_INSNS_74xx,
  3578 + .flags = PPC_FLAGS_74xx,
  3579 + .msr_mask = 0x000000000205FF77,
  3580 + },
  3581 + {
  3582 + .name = "Apollo 7",
  3583 + .pvr = CPU_PPC_7457,
  3584 + .pvr_mask = 0xFFFF0000,
  3585 + .insns_flags = PPC_INSNS_74xx,
  3586 + .flags = PPC_FLAGS_74xx,
  3587 + .msr_mask = 0x000000000205FF77,
  3588 + },
  3589 +#endif
  3590 +#if defined (TODO)
  3591 + /* PowerPC 7457A (G4) */
  3592 + {
  3593 + .name = "7457A",
  3594 + .pvr = CPU_PPC_7457A,
  3595 + .pvr_mask = 0xFFFF0000,
  3596 + .insns_flags = PPC_INSNS_74xx,
  3597 + .flags = PPC_FLAGS_74xx,
  3598 + .msr_mask = 0x000000000205FF77,
  3599 + },
  3600 + {
  3601 + .name = "Apollo 7 PM",
  3602 + .pvr = CPU_PPC_7457A,
  3603 + .pvr_mask = 0xFFFF0000,
  3604 + .insns_flags = PPC_INSNS_74xx,
  3605 + .flags = PPC_FLAGS_74xx,
  3606 + .msr_mask = 0x000000000205FF77,
  3607 + },
  3608 +#endif
  3609 + /* 64 bits PowerPC */
3606 3610 #if defined (TARGET_PPC64)
3607 3611 #if defined (TODO)
3608   - /* PowerPC 620 */
3609   - {
3610   - .name = "620",
3611   - .pvr = CPU_PPC_620,
3612   - .pvr_mask = 0xFFFF0000,
3613   - .insns_flags = PPC_INSNS_620,
3614   - .flags = PPC_FLAGS_620,
3615   - .msr_mask = 0x800000000005FF73,
3616   - },
3617   -#endif
3618   -#if defined (TODO)
3619   - /* PowerPC 630 (POWER3) */
3620   - {
3621   - .name = "630",
3622   - .pvr = CPU_PPC_630,
3623   - .pvr_mask = 0xFFFF0000,
3624   - .insns_flags = PPC_INSNS_630,
3625   - .flags = PPC_FLAGS_630,
3626   - .msr_mask = xxx,
3627   - }
3628   - {
3629   - .name = "POWER3",
3630   - .pvr = CPU_PPC_630,
3631   - .pvr_mask = 0xFFFF0000,
3632   - .insns_flags = PPC_INSNS_630,
3633   - .flags = PPC_FLAGS_630,
3634   - .msr_mask = xxx,
3635   - }
  3612 + /* PowerPC 620 */
  3613 + {
  3614 + .name = "620",
  3615 + .pvr = CPU_PPC_620,
  3616 + .pvr_mask = 0xFFFF0000,
  3617 + .insns_flags = PPC_INSNS_620,
  3618 + .flags = PPC_FLAGS_620,
  3619 + .msr_mask = 0x800000000005FF73,
  3620 + },
3636 3621 #endif
3637 3622 #if defined (TODO)
3638   - /* PowerPC 631 (Power 3+)*/
3639   - {
3640   - .name = "631",
3641   - .pvr = CPU_PPC_631,
3642   - .pvr_mask = 0xFFFF0000,
3643   - .insns_flags = PPC_INSNS_631,
3644   - .flags = PPC_FLAGS_631,
3645   - .msr_mask = xxx,
3646   - },
3647   - {
3648   - .name = "POWER3+",
3649   - .pvr = CPU_PPC_631,
3650   - .pvr_mask = 0xFFFF0000,
3651   - .insns_flags = PPC_INSNS_631,
3652   - .flags = PPC_FLAGS_631,
3653   - .msr_mask = xxx,
3654   - },
3655   -#endif
3656   -#if defined (TODO)
3657   - /* POWER4 */
3658   - {
3659   - .name = "POWER4",
3660   - .pvr = CPU_PPC_POWER4,
3661   - .pvr_mask = 0xFFFF0000,
3662   - .insns_flags = PPC_INSNS_POWER4,
3663   - .flags = PPC_FLAGS_POWER4,
3664   - .msr_mask = xxx,
3665   - },
3666   -#endif
3667   -#if defined (TODO)
3668   - /* POWER4p */
3669   - {
3670   - .name = "POWER4+",
3671   - .pvr = CPU_PPC_POWER4P,
3672   - .pvr_mask = 0xFFFF0000,
3673   - .insns_flags = PPC_INSNS_POWER4,
3674   - .flags = PPC_FLAGS_POWER4,
3675   - .msr_mask = xxx,
3676   - },
3677   -#endif
3678   -#if defined (TODO)
3679   - /* POWER5 */
3680   - {
3681   - .name = "POWER5",
3682   - .pvr = CPU_PPC_POWER5,
3683   - .pvr_mask = 0xFFFF0000,
3684   - .insns_flags = PPC_INSNS_POWER5,
3685   - .flags = PPC_FLAGS_POWER5,
3686   - .msr_mask = xxx,
3687   - },
3688   -#endif
3689   -#if defined (TODO)
3690   - /* POWER5+ */
3691   - {
3692   - .name = "POWER5+",
3693   - .pvr = CPU_PPC_POWER5P,
3694   - .pvr_mask = 0xFFFF0000,
3695   - .insns_flags = PPC_INSNS_POWER5,
3696   - .flags = PPC_FLAGS_POWER5,
3697   - .msr_mask = xxx,
3698   - },
3699   -#endif
3700   -#if defined (TODO)
3701   - /* PowerPC 970 */
3702   - {
3703   - .name = "970",
3704   - .pvr = CPU_PPC_970,
3705   - .pvr_mask = 0xFFFF0000,
3706   - .insns_flags = PPC_INSNS_970,
3707   - .flags = PPC_FLAGS_970,
3708   - .msr_mask = 0x900000000204FF36,
3709   - },
3710   -#endif
3711   -#if defined (TODO)
3712   - /* PowerPC 970FX (G5) */
3713   - {
3714   - .name = "970fx",
3715   - .pvr = CPU_PPC_970FX,
3716   - .pvr_mask = 0xFFFF0000,
3717   - .insns_flags = PPC_INSNS_970FX,
3718   - .flags = PPC_FLAGS_970FX,
3719   - .msr_mask = 0x800000000204FF36,
3720   - },
3721   -#endif
3722   -#if defined (TODO)
3723   - /* RS64 (Apache/A35) */
3724   - /* This one seems to support the whole POWER2 instruction set
3725   - * and the PowerPC 64 one.
3726   - */
3727   - {
3728   - .name = "RS64",
3729   - .pvr = CPU_PPC_RS64,
3730   - .pvr_mask = 0xFFFF0000,
3731   - .insns_flags = PPC_INSNS_RS64,
3732   - .flags = PPC_FLAGS_RS64,
3733   - .msr_mask = xxx,
3734   - },
3735   - {
3736   - .name = "Apache",
3737   - .pvr = CPU_PPC_RS64,
3738   - .pvr_mask = 0xFFFF0000,
3739   - .insns_flags = PPC_INSNS_RS64,
3740   - .flags = PPC_FLAGS_RS64,
3741   - .msr_mask = xxx,
3742   - },
3743   - {
3744   - .name = "A35",
3745   - .pvr = CPU_PPC_RS64,
3746   - .pvr_mask = 0xFFFF0000,
3747   - .insns_flags = PPC_INSNS_RS64,
3748   - .flags = PPC_FLAGS_RS64,
3749   - .msr_mask = xxx,
3750   - },
3751   -#endif
3752   -#if defined (TODO)
3753   - /* RS64-II (NorthStar/A50) */
3754   - {
3755   - .name = "RS64-II",
3756   - .pvr = CPU_PPC_RS64II,
3757   - .pvr_mask = 0xFFFF0000,
3758   - .insns_flags = PPC_INSNS_RS64,
3759   - .flags = PPC_FLAGS_RS64,
3760   - .msr_mask = xxx,
3761   - },
3762   - {
3763   - .name = "NortStar",
3764   - .pvr = CPU_PPC_RS64II,
3765   - .pvr_mask = 0xFFFF0000,
3766   - .insns_flags = PPC_INSNS_RS64,
3767   - .flags = PPC_FLAGS_RS64,
3768   - .msr_mask = xxx,
3769   - },
3770   - {
3771   - .name = "A50",
3772   - .pvr = CPU_PPC_RS64II,
3773   - .pvr_mask = 0xFFFF0000,
3774   - .insns_flags = PPC_INSNS_RS64,
3775   - .flags = PPC_FLAGS_RS64,
3776   - .msr_mask = xxx,
3777   - },
3778   -#endif
3779   -#if defined (TODO)
3780   - /* RS64-III (Pulsar) */
3781   - {
3782   - .name = "RS64-III",
3783   - .pvr = CPU_PPC_RS64III,
3784   - .pvr_mask = 0xFFFF0000,
3785   - .insns_flags = PPC_INSNS_RS64,
3786   - .flags = PPC_FLAGS_RS64,
3787   - .msr_mask = xxx,
3788   - },
3789   - {
3790   - .name = "Pulsar",
3791   - .pvr = CPU_PPC_RS64III,
3792   - .pvr_mask = 0xFFFF0000,
3793   - .insns_flags = PPC_INSNS_RS64,
3794   - .flags = PPC_FLAGS_RS64,
3795   - .msr_mask = xxx,
3796   - },
3797   -#endif
3798   -#if defined (TODO)
3799   - /* RS64-IV (IceStar/IStar/SStar) */
3800   - {
3801   - .name = "RS64-IV",
3802   - .pvr = CPU_PPC_RS64IV,
3803   - .pvr_mask = 0xFFFF0000,
3804   - .insns_flags = PPC_INSNS_RS64,
3805   - .flags = PPC_FLAGS_RS64,
3806   - .msr_mask = xxx,
3807   - },
3808   - {
3809   - .name = "IceStar",
3810   - .pvr = CPU_PPC_RS64IV,
3811   - .pvr_mask = 0xFFFF0000,
3812   - .insns_flags = PPC_INSNS_RS64,
3813   - .flags = PPC_FLAGS_RS64,
3814   - .msr_mask = xxx,
3815   - },
3816   - {
3817   - .name = "IStar",
3818   - .pvr = CPU_PPC_RS64IV,
3819   - .pvr_mask = 0xFFFF0000,
3820   - .insns_flags = PPC_INSNS_RS64,
3821   - .flags = PPC_FLAGS_RS64,
3822   - .msr_mask = xxx,
3823   - },
3824   - {
3825   - .name = "SStar",
3826   - .pvr = CPU_PPC_RS64IV,
3827   - .pvr_mask = 0xFFFF0000,
3828   - .insns_flags = PPC_INSNS_RS64,
3829   - .flags = PPC_FLAGS_RS64,
3830   - .msr_mask = xxx,
3831   - },
3832   -#endif
3833   - /* POWER */
3834   -#if defined (TODO)
3835   - /* Original POWER */
3836   - {
3837   - .name = "POWER",
3838   - .pvr = CPU_POWER,
3839   - .pvr_mask = 0xFFFF0000,
3840   - .insns_flags = PPC_INSNS_POWER,
3841   - .flags = PPC_FLAGS_POWER,
3842   - .msr_mask = xxx,
3843   - },
  3623 + /* PowerPC 630 (POWER3) */
  3624 + {
  3625 + .name = "630",
  3626 + .pvr = CPU_PPC_630,
  3627 + .pvr_mask = 0xFFFF0000,
  3628 + .insns_flags = PPC_INSNS_630,
  3629 + .flags = PPC_FLAGS_630,
  3630 + .msr_mask = xxx,
  3631 + }
  3632 + {
  3633 + .name = "POWER3",
  3634 + .pvr = CPU_PPC_630,
  3635 + .pvr_mask = 0xFFFF0000,
  3636 + .insns_flags = PPC_INSNS_630,
  3637 + .flags = PPC_FLAGS_630,
  3638 + .msr_mask = xxx,
  3639 + }
  3640 +#endif
  3641 +#if defined (TODO)
  3642 + /* PowerPC 631 (Power 3+)*/
  3643 + {
  3644 + .name = "631",
  3645 + .pvr = CPU_PPC_631,
  3646 + .pvr_mask = 0xFFFF0000,
  3647 + .insns_flags = PPC_INSNS_631,
  3648 + .flags = PPC_FLAGS_631,
  3649 + .msr_mask = xxx,
  3650 + },
  3651 + {
  3652 + .name = "POWER3+",
  3653 + .pvr = CPU_PPC_631,
  3654 + .pvr_mask = 0xFFFF0000,
  3655 + .insns_flags = PPC_INSNS_631,
  3656 + .flags = PPC_FLAGS_631,
  3657 + .msr_mask = xxx,
  3658 + },
  3659 +#endif
  3660 +#if defined (TODO)
  3661 + /* POWER4 */
  3662 + {
  3663 + .name = "POWER4",
  3664 + .pvr = CPU_PPC_POWER4,
  3665 + .pvr_mask = 0xFFFF0000,
  3666 + .insns_flags = PPC_INSNS_POWER4,
  3667 + .flags = PPC_FLAGS_POWER4,
  3668 + .msr_mask = xxx,
  3669 + },
  3670 +#endif
  3671 +#if defined (TODO)
  3672 + /* POWER4p */
  3673 + {
  3674 + .name = "POWER4+",
  3675 + .pvr = CPU_PPC_POWER4P,
  3676 + .pvr_mask = 0xFFFF0000,
  3677 + .insns_flags = PPC_INSNS_POWER4,
  3678 + .flags = PPC_FLAGS_POWER4,
  3679 + .msr_mask = xxx,
  3680 + },
  3681 +#endif
  3682 +#if defined (TODO)
  3683 + /* POWER5 */
  3684 + {
  3685 + .name = "POWER5",
  3686 + .pvr = CPU_PPC_POWER5,
  3687 + .pvr_mask = 0xFFFF0000,
  3688 + .insns_flags = PPC_INSNS_POWER5,
  3689 + .flags = PPC_FLAGS_POWER5,
  3690 + .msr_mask = xxx,
  3691 + },
  3692 +#endif
  3693 +#if defined (TODO)
  3694 + /* POWER5+ */
  3695 + {
  3696 + .name = "POWER5+",
  3697 + .pvr = CPU_PPC_POWER5P,
  3698 + .pvr_mask = 0xFFFF0000,
  3699 + .insns_flags = PPC_INSNS_POWER5,
  3700 + .flags = PPC_FLAGS_POWER5,
  3701 + .msr_mask = xxx,
  3702 + },
  3703 +#endif
  3704 +#if defined (TODO) || 1
  3705 + /* PowerPC 970 */
  3706 + {
  3707 + .name = "970",
  3708 + .pvr = CPU_PPC_970,
  3709 + .pvr_mask = 0xFFFF0000,
  3710 + .insns_flags = PPC_INSNS_970,
  3711 + .flags = PPC_FLAGS_970,
  3712 + .msr_mask = 0x900000000204FF36,
  3713 + },
  3714 +#endif
  3715 +#if defined (TODO)
  3716 + /* PowerPC 970FX (G5) */
  3717 + {
  3718 + .name = "970fx",
  3719 + .pvr = CPU_PPC_970FX,
  3720 + .pvr_mask = 0xFFFF0000,
  3721 + .insns_flags = PPC_INSNS_970FX,
  3722 + .flags = PPC_FLAGS_970FX,
  3723 + .msr_mask = 0x800000000204FF36,
  3724 + },
  3725 +#endif
  3726 +#if defined (TODO)
  3727 + /* RS64 (Apache/A35) */
  3728 + /* This one seems to support the whole POWER2 instruction set
  3729 + * and the PowerPC 64 one.
  3730 + */
  3731 + {
  3732 + .name = "RS64",
  3733 + .pvr = CPU_PPC_RS64,
  3734 + .pvr_mask = 0xFFFF0000,
  3735 + .insns_flags = PPC_INSNS_RS64,
  3736 + .flags = PPC_FLAGS_RS64,
  3737 + .msr_mask = xxx,
  3738 + },
  3739 + {
  3740 + .name = "Apache",
  3741 + .pvr = CPU_PPC_RS64,
  3742 + .pvr_mask = 0xFFFF0000,
  3743 + .insns_flags = PPC_INSNS_RS64,
  3744 + .flags = PPC_FLAGS_RS64,
  3745 + .msr_mask = xxx,
  3746 + },
  3747 + {
  3748 + .name = "A35",
  3749 + .pvr = CPU_PPC_RS64,
  3750 + .pvr_mask = 0xFFFF0000,
  3751 + .insns_flags = PPC_INSNS_RS64,
  3752 + .flags = PPC_FLAGS_RS64,
  3753 + .msr_mask = xxx,
  3754 + },
  3755 +#endif
  3756 +#if defined (TODO)
  3757 + /* RS64-II (NorthStar/A50) */
  3758 + {
  3759 + .name = "RS64-II",
  3760 + .pvr = CPU_PPC_RS64II,
  3761 + .pvr_mask = 0xFFFF0000,
  3762 + .insns_flags = PPC_INSNS_RS64,
  3763 + .flags = PPC_FLAGS_RS64,
  3764 + .msr_mask = xxx,
  3765 + },
  3766 + {
  3767 + .name = "NortStar",
  3768 + .pvr = CPU_PPC_RS64II,
  3769 + .pvr_mask = 0xFFFF0000,
  3770 + .insns_flags = PPC_INSNS_RS64,
  3771 + .flags = PPC_FLAGS_RS64,
  3772 + .msr_mask = xxx,
  3773 + },
  3774 + {
  3775 + .name = "A50",
  3776 + .pvr = CPU_PPC_RS64II,
  3777 + .pvr_mask = 0xFFFF0000,
  3778 + .insns_flags = PPC_INSNS_RS64,
  3779 + .flags = PPC_FLAGS_RS64,
  3780 + .msr_mask = xxx,
  3781 + },
  3782 +#endif
  3783 +#if defined (TODO)
  3784 + /* RS64-III (Pulsar) */
  3785 + {
  3786 + .name = "RS64-III",
  3787 + .pvr = CPU_PPC_RS64III,
  3788 + .pvr_mask = 0xFFFF0000,
  3789 + .insns_flags = PPC_INSNS_RS64,
  3790 + .flags = PPC_FLAGS_RS64,
  3791 + .msr_mask = xxx,
  3792 + },
  3793 + {
  3794 + .name = "Pulsar",
  3795 + .pvr = CPU_PPC_RS64III,
  3796 + .pvr_mask = 0xFFFF0000,
  3797 + .insns_flags = PPC_INSNS_RS64,
  3798 + .flags = PPC_FLAGS_RS64,
  3799 + .msr_mask = xxx,
  3800 + },
  3801 +#endif
  3802 +#if defined (TODO)
  3803 + /* RS64-IV (IceStar/IStar/SStar) */
  3804 + {
  3805 + .name = "RS64-IV",
  3806 + .pvr = CPU_PPC_RS64IV,
  3807 + .pvr_mask = 0xFFFF0000,
  3808 + .insns_flags = PPC_INSNS_RS64,
  3809 + .flags = PPC_FLAGS_RS64,
  3810 + .msr_mask = xxx,
  3811 + },
  3812 + {
  3813 + .name = "IceStar",
  3814 + .pvr = CPU_PPC_RS64IV,
  3815 + .pvr_mask = 0xFFFF0000,
  3816 + .insns_flags = PPC_INSNS_RS64,
  3817 + .flags = PPC_FLAGS_RS64,
  3818 + .msr_mask = xxx,
  3819 + },
  3820 + {
  3821 + .name = "IStar",
  3822 + .pvr = CPU_PPC_RS64IV,
  3823 + .pvr_mask = 0xFFFF0000,
  3824 + .insns_flags = PPC_INSNS_RS64,
  3825 + .flags = PPC_FLAGS_RS64,
  3826 + .msr_mask = xxx,
  3827 + },
  3828 + {
  3829 + .name = "SStar",
  3830 + .pvr = CPU_PPC_RS64IV,
  3831 + .pvr_mask = 0xFFFF0000,
  3832 + .insns_flags = PPC_INSNS_RS64,
  3833 + .flags = PPC_FLAGS_RS64,
  3834 + .msr_mask = xxx,
  3835 + },
  3836 +#endif
  3837 + /* POWER */
  3838 +#if defined (TODO)
  3839 + /* Original POWER */
  3840 + {
  3841 + .name = "POWER",
  3842 + .pvr = CPU_POWER,
  3843 + .pvr_mask = 0xFFFF0000,
  3844 + .insns_flags = PPC_INSNS_POWER,
  3845 + .flags = PPC_FLAGS_POWER,
  3846 + .msr_mask = xxx,
  3847 + },
3844 3848 #endif
3845 3849 #endif /* defined (TARGET_PPC64) */
3846 3850 #if defined (TODO)
3847   - /* POWER2 */
3848   - {
3849   - .name = "POWER2",
3850   - .pvr = CPU_POWER2,
3851   - .pvr_mask = 0xFFFF0000,
3852   - .insns_flags = PPC_INSNS_POWER,
3853   - .flags = PPC_FLAGS_POWER,
3854   - .msr_mask = xxx,
3855   - },
3856   -#endif
3857   - /* Generic PowerPCs */
3858   -#if defined (TODO)
3859   - {
3860   - .name = "ppc64",
3861   - .pvr = CPU_PPC_970,
3862   - .pvr_mask = 0xFFFF0000,
3863   - .insns_flags = PPC_INSNS_PPC64,
3864   - .flags = PPC_FLAGS_PPC64,
3865   - .msr_mask = 0xA00000000204FF36,
3866   - },
3867   -#endif
3868   - {
3869   - .name = "ppc32",
3870   - .pvr = CPU_PPC_604,
3871   - .pvr_mask = 0xFFFFFFFF,
3872   - .insns_flags = PPC_INSNS_PPC32,
3873   - .flags = PPC_FLAGS_PPC32,
3874   - .msr_mask = 0x000000000005FF77,
3875   - },
3876   - /* Fallback */
3877   - {
3878   - .name = "ppc",
3879   - .pvr = CPU_PPC_604,
3880   - .pvr_mask = 0xFFFFFFFF,
3881   - .insns_flags = PPC_INSNS_PPC32,
3882   - .flags = PPC_FLAGS_PPC32,
3883   - .msr_mask = 0x000000000005FF77,
3884   - },
3885   - };
  3851 + /* POWER2 */
  3852 + {
  3853 + .name = "POWER2",
  3854 + .pvr = CPU_POWER2,
  3855 + .pvr_mask = 0xFFFF0000,
  3856 + .insns_flags = PPC_INSNS_POWER,
  3857 + .flags = PPC_FLAGS_POWER,
  3858 + .msr_mask = xxx,
  3859 + },
  3860 +#endif
  3861 + /* Generic PowerPCs */
  3862 +#if defined (TODO) || 1
  3863 + {
  3864 + .name = "ppc64",
  3865 + .pvr = CPU_PPC_970,
  3866 + .pvr_mask = 0xFFFF0000,
  3867 + .insns_flags = PPC_INSNS_PPC64,
  3868 + .flags = PPC_FLAGS_PPC64,
  3869 + .msr_mask = 0xA00000000204FF36,
  3870 + },
  3871 +#endif
  3872 + {
  3873 + .name = "ppc32",
  3874 + .pvr = CPU_PPC_604,
  3875 + .pvr_mask = 0xFFFFFFFF,
  3876 + .insns_flags = PPC_INSNS_PPC32,
  3877 + .flags = PPC_FLAGS_PPC32,
  3878 + .msr_mask = 0x000000000005FF77,
  3879 + },
  3880 + /* Fallback */
  3881 + {
  3882 + .name = "ppc",
  3883 + .pvr = CPU_PPC_604,
  3884 + .pvr_mask = 0xFFFFFFFF,
  3885 + .insns_flags = PPC_INSNS_PPC32,
  3886 + .flags = PPC_FLAGS_PPC32,
  3887 + .msr_mask = 0x000000000005FF77,
  3888 + },
  3889 +};
3886 3890  
3887 3891 int ppc_find_by_name (const unsigned char *name, ppc_def_t **def)
3888 3892 {
... ...