Commit 082c6681b6c4af0035d9dad34a4a784be8c21dbe
1 parent
add78955
Remove shared macro used to define PowerPC implementations instructions sets:
tend more to propagate bugged definition than simplify the code. Check and fix PowerPC 6xx implementations definitions. Misc fixes in PowerPC CPU list. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3707 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
489 additions
and
174 deletions
target-ppc/cpu.h
... | ... | @@ -1040,9 +1040,11 @@ static inline int cpu_mmu_index (CPUState *env) |
1040 | 1040 | #define SPR_RCPU_MI_RBA2 (0x302) |
1041 | 1041 | #define SPR_MPC_MI_AP (0x302) |
1042 | 1042 | #define SPR_PERF3 (0x303) |
1043 | +#define SPR_620_PMC1R (0x303) | |
1043 | 1044 | #define SPR_RCPU_MI_RBA3 (0x303) |
1044 | 1045 | #define SPR_MPC_MI_EPN (0x303) |
1045 | 1046 | #define SPR_PERF4 (0x304) |
1047 | +#define SPR_620_PMC2R (0x304) | |
1046 | 1048 | #define SPR_PERF5 (0x305) |
1047 | 1049 | #define SPR_MPC_MI_TWC (0x305) |
1048 | 1050 | #define SPR_PERF6 (0x306) |
... | ... | @@ -1058,6 +1060,7 @@ static inline int cpu_mmu_index (CPUState *env) |
1058 | 1060 | #define SPR_RCPU_L2U_RBA2 (0x30A) |
1059 | 1061 | #define SPR_MPC_MD_AP (0x30A) |
1060 | 1062 | #define SPR_PERFB (0x30B) |
1063 | +#define SPR_620_MMCR0R (0x30B) | |
1061 | 1064 | #define SPR_RCPU_L2U_RBA3 (0x30B) |
1062 | 1065 | #define SPR_MPC_MD_EPN (0x30B) |
1063 | 1066 | #define SPR_PERFC (0x30C) |
... | ... | @@ -1072,7 +1075,9 @@ static inline int cpu_mmu_index (CPUState *env) |
1072 | 1075 | #define SPR_UPERF1 (0x311) |
1073 | 1076 | #define SPR_UPERF2 (0x312) |
1074 | 1077 | #define SPR_UPERF3 (0x313) |
1078 | +#define SPR_620_PMC1W (0x313) | |
1075 | 1079 | #define SPR_UPERF4 (0x314) |
1080 | +#define SPR_620_PMC2W (0x314) | |
1076 | 1081 | #define SPR_UPERF5 (0x315) |
1077 | 1082 | #define SPR_UPERF6 (0x316) |
1078 | 1083 | #define SPR_UPERF7 (0x317) |
... | ... | @@ -1080,6 +1085,7 @@ static inline int cpu_mmu_index (CPUState *env) |
1080 | 1085 | #define SPR_UPERF9 (0x319) |
1081 | 1086 | #define SPR_UPERFA (0x31A) |
1082 | 1087 | #define SPR_UPERFB (0x31B) |
1088 | +#define SPR_620_MMCR0W (0x31B) | |
1083 | 1089 | #define SPR_UPERFC (0x31C) |
1084 | 1090 | #define SPR_UPERFD (0x31D) |
1085 | 1091 | #define SPR_UPERFE (0x31E) |
... | ... | @@ -1245,13 +1251,14 @@ static inline int cpu_mmu_index (CPUState *env) |
1245 | 1251 | #define SPR_LDSTCR (0x3F8) |
1246 | 1252 | #define SPR_L2PMCR (0x3F8) |
1247 | 1253 | #define SPR_750_HID2 (0x3F8) |
1248 | -#define SPR_620_HID8 (0x3F8) | |
1254 | +#define SPR_620_BUSCSR (0x3F8) | |
1249 | 1255 | #define SPR_Exxx_L1FINV0 (0x3F8) |
1250 | 1256 | #define SPR_L2CR (0x3F9) |
1251 | -#define SPR_620_HID9 (0x3F9) | |
1257 | +#define SPR_620_L2CR (0x3F9) | |
1252 | 1258 | #define SPR_L3CR (0x3FA) |
1253 | 1259 | #define SPR_IABR2 (0x3FA) |
1254 | 1260 | #define SPR_40x_DCCR (0x3FA) |
1261 | +#define SPR_620_L2SR (0x3FA) | |
1255 | 1262 | #define SPR_ICTC (0x3FB) |
1256 | 1263 | #define SPR_40x_ICCR (0x3FB) |
1257 | 1264 | #define SPR_THRM1 (0x3FC) | ... | ... |
target-ppc/translate_init.c
... | ... | @@ -281,13 +281,11 @@ static void spr_write_sdr1 (void *opaque, int sprn) |
281 | 281 | /* 64 bits PowerPC specific SPRs */ |
282 | 282 | /* ASR */ |
283 | 283 | #if defined(TARGET_PPC64) |
284 | -__attribute__ (( unused )) | |
285 | 284 | static void spr_read_asr (void *opaque, int sprn) |
286 | 285 | { |
287 | 286 | gen_op_load_asr(); |
288 | 287 | } |
289 | 288 | |
290 | -__attribute__ (( unused )) | |
291 | 289 | static void spr_write_asr (void *opaque, int sprn) |
292 | 290 | { |
293 | 291 | gen_op_store_asr(); |
... | ... | @@ -924,11 +922,6 @@ static void gen_spr_604 (CPUPPCState *env) |
924 | 922 | &spr_read_generic, &spr_write_generic, |
925 | 923 | 0x00000000); |
926 | 924 | /* XXX : not implemented */ |
927 | - spr_register(env, SPR_MMCR1, "MMCR1", | |
928 | - SPR_NOACCESS, SPR_NOACCESS, | |
929 | - &spr_read_generic, &spr_write_generic, | |
930 | - 0x00000000); | |
931 | - /* XXX : not implemented */ | |
932 | 925 | spr_register(env, SPR_PMC1, "PMC1", |
933 | 926 | SPR_NOACCESS, SPR_NOACCESS, |
934 | 927 | &spr_read_generic, &spr_write_generic, |
... | ... | @@ -939,16 +932,6 @@ static void gen_spr_604 (CPUPPCState *env) |
939 | 932 | &spr_read_generic, &spr_write_generic, |
940 | 933 | 0x00000000); |
941 | 934 | /* XXX : not implemented */ |
942 | - spr_register(env, SPR_PMC3, "PMC3", | |
943 | - SPR_NOACCESS, SPR_NOACCESS, | |
944 | - &spr_read_generic, &spr_write_generic, | |
945 | - 0x00000000); | |
946 | - /* XXX : not implemented */ | |
947 | - spr_register(env, SPR_PMC4, "PMC4", | |
948 | - SPR_NOACCESS, SPR_NOACCESS, | |
949 | - &spr_read_generic, &spr_write_generic, | |
950 | - 0x00000000); | |
951 | - /* XXX : not implemented */ | |
952 | 935 | spr_register(env, SPR_SIAR, "SIAR", |
953 | 936 | SPR_NOACCESS, SPR_NOACCESS, |
954 | 937 | &spr_read_generic, SPR_NOACCESS, |
... | ... | @@ -2008,6 +1991,70 @@ static void gen_spr_compress (CPUPPCState *env) |
2008 | 1991 | /* SPR specific to PowerPC 620 */ |
2009 | 1992 | static void gen_spr_620 (CPUPPCState *env) |
2010 | 1993 | { |
1994 | + /* Processor identification */ | |
1995 | + spr_register(env, SPR_PIR, "PIR", | |
1996 | + SPR_NOACCESS, SPR_NOACCESS, | |
1997 | + &spr_read_generic, &spr_write_pir, | |
1998 | + 0x00000000); | |
1999 | + spr_register(env, SPR_ASR, "ASR", | |
2000 | + SPR_NOACCESS, SPR_NOACCESS, | |
2001 | + &spr_read_asr, &spr_write_asr, | |
2002 | + 0x00000000); | |
2003 | + /* Breakpoints */ | |
2004 | + /* XXX : not implemented */ | |
2005 | + spr_register(env, SPR_IABR, "IABR", | |
2006 | + SPR_NOACCESS, SPR_NOACCESS, | |
2007 | + &spr_read_generic, &spr_write_generic, | |
2008 | + 0x00000000); | |
2009 | + /* XXX : not implemented */ | |
2010 | + spr_register(env, SPR_DABR, "DABR", | |
2011 | + SPR_NOACCESS, SPR_NOACCESS, | |
2012 | + &spr_read_generic, &spr_write_generic, | |
2013 | + 0x00000000); | |
2014 | + /* XXX : not implemented */ | |
2015 | + spr_register(env, SPR_SIAR, "SIAR", | |
2016 | + SPR_NOACCESS, SPR_NOACCESS, | |
2017 | + &spr_read_generic, SPR_NOACCESS, | |
2018 | + 0x00000000); | |
2019 | + /* XXX : not implemented */ | |
2020 | + spr_register(env, SPR_SDA, "SDA", | |
2021 | + SPR_NOACCESS, SPR_NOACCESS, | |
2022 | + &spr_read_generic, SPR_NOACCESS, | |
2023 | + 0x00000000); | |
2024 | + /* XXX : not implemented */ | |
2025 | + spr_register(env, SPR_620_PMC1R, "PMC1", | |
2026 | + SPR_NOACCESS, SPR_NOACCESS, | |
2027 | + &spr_read_generic, SPR_NOACCESS, | |
2028 | + 0x00000000); | |
2029 | + spr_register(env, SPR_620_PMC1W, "PMC1", | |
2030 | + SPR_NOACCESS, SPR_NOACCESS, | |
2031 | + SPR_NOACCESS, &spr_write_generic, | |
2032 | + 0x00000000); | |
2033 | + /* XXX : not implemented */ | |
2034 | + spr_register(env, SPR_620_PMC2R, "PMC2", | |
2035 | + SPR_NOACCESS, SPR_NOACCESS, | |
2036 | + &spr_read_generic, SPR_NOACCESS, | |
2037 | + 0x00000000); | |
2038 | + spr_register(env, SPR_620_PMC2W, "PMC2", | |
2039 | + SPR_NOACCESS, SPR_NOACCESS, | |
2040 | + SPR_NOACCESS, &spr_write_generic, | |
2041 | + 0x00000000); | |
2042 | + /* XXX : not implemented */ | |
2043 | + spr_register(env, SPR_620_MMCR0R, "MMCR0", | |
2044 | + SPR_NOACCESS, SPR_NOACCESS, | |
2045 | + &spr_read_generic, SPR_NOACCESS, | |
2046 | + 0x00000000); | |
2047 | + spr_register(env, SPR_620_MMCR0W, "MMCR0", | |
2048 | + SPR_NOACCESS, SPR_NOACCESS, | |
2049 | + SPR_NOACCESS, &spr_write_generic, | |
2050 | + 0x00000000); | |
2051 | + /* External access control */ | |
2052 | + /* XXX : not implemented */ | |
2053 | + spr_register(env, SPR_EAR, "EAR", | |
2054 | + SPR_NOACCESS, SPR_NOACCESS, | |
2055 | + &spr_read_generic, &spr_write_generic, | |
2056 | + 0x00000000); | |
2057 | +#if 0 // XXX: check this | |
2011 | 2058 | /* XXX : not implemented */ |
2012 | 2059 | spr_register(env, SPR_620_PMR0, "PMR0", |
2013 | 2060 | SPR_NOACCESS, SPR_NOACCESS, |
... | ... | @@ -2088,13 +2135,19 @@ static void gen_spr_620 (CPUPPCState *env) |
2088 | 2135 | SPR_NOACCESS, SPR_NOACCESS, |
2089 | 2136 | &spr_read_generic, &spr_write_generic, |
2090 | 2137 | 0x00000000); |
2138 | +#endif | |
2091 | 2139 | /* XXX : not implemented */ |
2092 | - spr_register(env, SPR_620_HID8, "HID8", | |
2140 | + spr_register(env, SPR_620_BUSCSR, "BUSCSR", | |
2093 | 2141 | SPR_NOACCESS, SPR_NOACCESS, |
2094 | 2142 | &spr_read_generic, &spr_write_generic, |
2095 | 2143 | 0x00000000); |
2096 | 2144 | /* XXX : not implemented */ |
2097 | - spr_register(env, SPR_620_HID9, "HID9", | |
2145 | + spr_register(env, SPR_620_L2CR, "L2CR", | |
2146 | + SPR_NOACCESS, SPR_NOACCESS, | |
2147 | + &spr_read_generic, &spr_write_generic, | |
2148 | + 0x00000000); | |
2149 | + /* XXX : not implemented */ | |
2150 | + spr_register(env, SPR_620_L2SR, "L2SR", | |
2098 | 2151 | SPR_NOACCESS, SPR_NOACCESS, |
2099 | 2152 | &spr_read_generic, &spr_write_generic, |
2100 | 2153 | 0x00000000); |
... | ... | @@ -2704,6 +2757,7 @@ static void init_excp_601 (CPUPPCState *env) |
2704 | 2757 | static void init_excp_602 (CPUPPCState *env) |
2705 | 2758 | { |
2706 | 2759 | #if !defined(CONFIG_USER_ONLY) |
2760 | + /* XXX: exception prefix has a special behavior on 602 */ | |
2707 | 2761 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; |
2708 | 2762 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; |
2709 | 2763 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; |
... | ... | @@ -2715,7 +2769,6 @@ static void init_excp_602 (CPUPPCState *env) |
2715 | 2769 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; |
2716 | 2770 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
2717 | 2771 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
2718 | - env->excp_vectors[POWERPC_EXCP_FPA] = 0x00000E00; | |
2719 | 2772 | env->excp_vectors[POWERPC_EXCP_IFTLB] = 0x00001000; |
2720 | 2773 | env->excp_vectors[POWERPC_EXCP_DLTLB] = 0x00001100; |
2721 | 2774 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; |
... | ... | @@ -2784,9 +2837,7 @@ static void init_excp_620 (CPUPPCState *env) |
2784 | 2837 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; |
2785 | 2838 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; |
2786 | 2839 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; |
2787 | - env->excp_vectors[POWERPC_EXCP_DSEG] = 0x00000380; | |
2788 | 2840 | env->excp_vectors[POWERPC_EXCP_ISI] = 0x00000400; |
2789 | - env->excp_vectors[POWERPC_EXCP_ISEG] = 0x00000480; | |
2790 | 2841 | env->excp_vectors[POWERPC_EXCP_EXTERNAL] = 0x00000500; |
2791 | 2842 | env->excp_vectors[POWERPC_EXCP_ALIGN] = 0x00000600; |
2792 | 2843 | env->excp_vectors[POWERPC_EXCP_PROGRAM] = 0x00000700; |
... | ... | @@ -2794,7 +2845,6 @@ static void init_excp_620 (CPUPPCState *env) |
2794 | 2845 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; |
2795 | 2846 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
2796 | 2847 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
2797 | - env->excp_vectors[POWERPC_EXCP_FPA] = 0x00000E00; | |
2798 | 2848 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
2799 | 2849 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
2800 | 2850 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
... | ... | @@ -2987,14 +3037,13 @@ static int check_pow_hid0 (CPUPPCState *env) |
2987 | 3037 | /*****************************************************************************/ |
2988 | 3038 | /* PowerPC implementations definitions */ |
2989 | 3039 | |
2990 | -/* PowerPC 40x instruction set */ | |
2991 | -#define POWERPC_INSNS_EMB (PPC_INSNS_BASE | PPC_WRTEE | \ | |
2992 | - PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ) | |
2993 | - | |
2994 | 3040 | /* PowerPC 401 */ |
2995 | -#define POWERPC_INSNS_401 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3041 | +#define POWERPC_INSNS_401 (PPC_INSNS_BASE | PPC_STRING | \ | |
3042 | + PPC_WRTEE | PPC_DCR | \ | |
3043 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3044 | + PPC_CACHE_DCBZ | \ | |
2996 | 3045 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
2997 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3046 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
2998 | 3047 | #define POWERPC_MSRM_401 (0x00000000000FD201ULL) |
2999 | 3048 | #define POWERPC_MMU_401 (POWERPC_MMU_REAL) |
3000 | 3049 | #define POWERPC_EXCP_401 (POWERPC_EXCP_40x) |
... | ... | @@ -3017,11 +3066,13 @@ static void init_proc_401 (CPUPPCState *env) |
3017 | 3066 | } |
3018 | 3067 | |
3019 | 3068 | /* PowerPC 401x2 */ |
3020 | -#define POWERPC_INSNS_401x2 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3069 | +#define POWERPC_INSNS_401x2 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
3070 | + PPC_DCR | PPC_WRTEE | \ | |
3071 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3072 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3021 | 3073 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3022 | 3074 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
3023 | - PPC_CACHE_DCBA | PPC_MFTB | \ | |
3024 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3075 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
3025 | 3076 | #define POWERPC_MSRM_401x2 (0x00000000001FD231ULL) |
3026 | 3077 | #define POWERPC_MMU_401x2 (POWERPC_MMU_SOFT_4xx_Z) |
3027 | 3078 | #define POWERPC_EXCP_401x2 (POWERPC_EXCP_40x) |
... | ... | @@ -3051,11 +3102,13 @@ static void init_proc_401x2 (CPUPPCState *env) |
3051 | 3102 | } |
3052 | 3103 | |
3053 | 3104 | /* PowerPC 401x3 */ |
3054 | -#define POWERPC_INSNS_401x3 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3105 | +#define POWERPC_INSNS_401x3 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
3106 | + PPC_DCR | PPC_WRTEE | \ | |
3107 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3108 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3055 | 3109 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3056 | 3110 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
3057 | - PPC_CACHE_DCBA | PPC_MFTB | \ | |
3058 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3111 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
3059 | 3112 | #define POWERPC_MSRM_401x3 (0x00000000001FD631ULL) |
3060 | 3113 | #define POWERPC_MMU_401x3 (POWERPC_MMU_SOFT_4xx_Z) |
3061 | 3114 | #define POWERPC_EXCP_401x3 (POWERPC_EXCP_40x) |
... | ... | @@ -3081,11 +3134,13 @@ static void init_proc_401x3 (CPUPPCState *env) |
3081 | 3134 | } |
3082 | 3135 | |
3083 | 3136 | /* IOP480 */ |
3084 | -#define POWERPC_INSNS_IOP480 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3137 | +#define POWERPC_INSNS_IOP480 (PPC_INSNS_BASE | PPC_STRING | \ | |
3138 | + PPC_DCR | PPC_WRTEE | \ | |
3139 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3140 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3085 | 3141 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3086 | 3142 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
3087 | - PPC_CACHE_DCBA | \ | |
3088 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3143 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
3089 | 3144 | #define POWERPC_MSRM_IOP480 (0x00000000001FD231ULL) |
3090 | 3145 | #define POWERPC_MMU_IOP480 (POWERPC_MMU_SOFT_4xx_Z) |
3091 | 3146 | #define POWERPC_EXCP_IOP480 (POWERPC_EXCP_40x) |
... | ... | @@ -3115,9 +3170,12 @@ static void init_proc_IOP480 (CPUPPCState *env) |
3115 | 3170 | } |
3116 | 3171 | |
3117 | 3172 | /* PowerPC 403 */ |
3118 | -#define POWERPC_INSNS_403 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3173 | +#define POWERPC_INSNS_403 (PPC_INSNS_BASE | PPC_STRING | \ | |
3174 | + PPC_DCR | PPC_WRTEE | \ | |
3175 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3176 | + PPC_CACHE_DCBZ | \ | |
3119 | 3177 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3120 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3178 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
3121 | 3179 | #define POWERPC_MSRM_403 (0x000000000007D00DULL) |
3122 | 3180 | #define POWERPC_MMU_403 (POWERPC_MMU_REAL) |
3123 | 3181 | #define POWERPC_EXCP_403 (POWERPC_EXCP_40x) |
... | ... | @@ -3145,10 +3203,13 @@ static void init_proc_403 (CPUPPCState *env) |
3145 | 3203 | } |
3146 | 3204 | |
3147 | 3205 | /* PowerPC 403 GCX */ |
3148 | -#define POWERPC_INSNS_403GCX (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3206 | +#define POWERPC_INSNS_403GCX (PPC_INSNS_BASE | PPC_STRING | \ | |
3207 | + PPC_DCR | PPC_WRTEE | \ | |
3208 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3209 | + PPC_CACHE_DCBZ | \ | |
3149 | 3210 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3150 | 3211 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
3151 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT) | |
3212 | + PPC_4xx_COMMON | PPC_40x_EXCP) | |
3152 | 3213 | #define POWERPC_MSRM_403GCX (0x000000000007D00DULL) |
3153 | 3214 | #define POWERPC_MMU_403GCX (POWERPC_MMU_SOFT_4xx_Z) |
3154 | 3215 | #define POWERPC_EXCP_403GCX (POWERPC_EXCP_40x) |
... | ... | @@ -3190,12 +3251,13 @@ static void init_proc_403GCX (CPUPPCState *env) |
3190 | 3251 | } |
3191 | 3252 | |
3192 | 3253 | /* PowerPC 405 */ |
3193 | -#define POWERPC_INSNS_405 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3194 | - PPC_MFTB | \ | |
3195 | - PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_CACHE_DCBA | \ | |
3254 | +#define POWERPC_INSNS_405 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
3255 | + PPC_DCR | PPC_WRTEE | \ | |
3256 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_40x_ICBT | \ | |
3257 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3258 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
3196 | 3259 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
3197 | - PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT | \ | |
3198 | - PPC_405_MAC) | |
3260 | + PPC_4xx_COMMON | PPC_405_MAC | PPC_40x_EXCP) | |
3199 | 3261 | #define POWERPC_MSRM_405 (0x000000000006E630ULL) |
3200 | 3262 | #define POWERPC_MMU_405 (POWERPC_MMU_SOFT_4xx) |
3201 | 3263 | #define POWERPC_EXCP_405 (POWERPC_EXCP_40x) |
... | ... | @@ -3236,10 +3298,13 @@ static void init_proc_405 (CPUPPCState *env) |
3236 | 3298 | } |
3237 | 3299 | |
3238 | 3300 | /* PowerPC 440 EP */ |
3239 | -#define POWERPC_INSNS_440EP (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3240 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3301 | +#define POWERPC_INSNS_440EP (PPC_INSNS_BASE | PPC_STRING | \ | |
3302 | + PPC_DCR | PPC_WRTEE | PPC_RFMCI | \ | |
3303 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3304 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3305 | + PPC_MEM_TLBSYNC | \ | |
3241 | 3306 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3242 | - PPC_440_SPEC | PPC_RFMCI) | |
3307 | + PPC_440_SPEC) | |
3243 | 3308 | #define POWERPC_MSRM_440EP (0x000000000006D630ULL) |
3244 | 3309 | #define POWERPC_MMU_440EP (POWERPC_MMU_BOOKE) |
3245 | 3310 | #define POWERPC_EXCP_440EP (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3313,11 +3378,13 @@ static void init_proc_440EP (CPUPPCState *env) |
3313 | 3378 | } |
3314 | 3379 | |
3315 | 3380 | /* PowerPC 440 GP */ |
3316 | -#define POWERPC_INSNS_440GP (POWERPC_INSNS_EMB | PPC_STRING | \ | |
3317 | - PPC_DCR | PPC_DCRX | \ | |
3318 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3319 | - PPC_BOOKE | PPC_MFAPIDI | PPC_TLBIVA | \ | |
3320 | - PPC_4xx_COMMON | PPC_405_MAC | PPC_440_SPEC) | |
3381 | +#define POWERPC_INSNS_440GP (PPC_INSNS_BASE | PPC_STRING | \ | |
3382 | + PPC_DCR | PPC_DCRX | PPC_WRTEE | PPC_MFAPIDI | \ | |
3383 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3384 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3385 | + PPC_MEM_TLBSYNC | PPC_TLBIVA | \ | |
3386 | + PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | |
3387 | + PPC_440_SPEC) | |
3321 | 3388 | #define POWERPC_MSRM_440GP (0x000000000006FF30ULL) |
3322 | 3389 | #define POWERPC_MMU_440GP (POWERPC_MMU_BOOKE) |
3323 | 3390 | #define POWERPC_EXCP_440GP (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3373,8 +3440,11 @@ static void init_proc_440GP (CPUPPCState *env) |
3373 | 3440 | } |
3374 | 3441 | |
3375 | 3442 | /* PowerPC 440x4 */ |
3376 | -#define POWERPC_INSNS_440x4 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3377 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3443 | +#define POWERPC_INSNS_440x4 (PPC_INSNS_BASE | PPC_STRING | \ | |
3444 | + PPC_DCR | PPC_WRTEE | \ | |
3445 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3446 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3447 | + PPC_MEM_TLBSYNC | \ | |
3378 | 3448 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3379 | 3449 | PPC_440_SPEC) |
3380 | 3450 | #define POWERPC_MSRM_440x4 (0x000000000006FF30ULL) |
... | ... | @@ -3432,10 +3502,13 @@ static void init_proc_440x4 (CPUPPCState *env) |
3432 | 3502 | } |
3433 | 3503 | |
3434 | 3504 | /* PowerPC 440x5 */ |
3435 | -#define POWERPC_INSNS_440x5 (POWERPC_INSNS_EMB | PPC_STRING | PPC_DCR | \ | |
3436 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3505 | +#define POWERPC_INSNS_440x5 (PPC_INSNS_BASE | PPC_STRING | \ | |
3506 | + PPC_DCR | PPC_WRTEE | PPC_RFMCI | \ | |
3507 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3508 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3509 | + PPC_MEM_TLBSYNC | \ | |
3437 | 3510 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3438 | - PPC_440_SPEC | PPC_RFMCI) | |
3511 | + PPC_440_SPEC) | |
3439 | 3512 | #define POWERPC_MSRM_440x5 (0x000000000006FF30ULL) |
3440 | 3513 | #define POWERPC_MMU_440x5 (POWERPC_MMU_BOOKE) |
3441 | 3514 | #define POWERPC_EXCP_440x5 (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3509,11 +3582,14 @@ static void init_proc_440x5 (CPUPPCState *env) |
3509 | 3582 | } |
3510 | 3583 | |
3511 | 3584 | /* PowerPC 460 (guessed) */ |
3512 | -#define POWERPC_INSNS_460 (POWERPC_INSNS_EMB | PPC_STRING | \ | |
3585 | +#define POWERPC_INSNS_460 (PPC_INSNS_BASE | PPC_STRING | \ | |
3513 | 3586 | PPC_DCR | PPC_DCRX | PPC_DCRUX | \ |
3514 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3515 | - PPC_BOOKE | PPC_MFAPIDI | PPC_TLBIVA | \ | |
3516 | - PPC_4xx_COMMON | PPC_405_MAC | PPC_440_SPEC) | |
3587 | + PPC_WRTEE | PPC_MFAPIDI | \ | |
3588 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3589 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3590 | + PPC_MEM_TLBSYNC | PPC_TLBIVA | \ | |
3591 | + PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | |
3592 | + PPC_440_SPEC) | |
3517 | 3593 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) |
3518 | 3594 | #define POWERPC_MMU_460 (POWERPC_MMU_BOOKE) |
3519 | 3595 | #define POWERPC_EXCP_460 (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3592,14 +3668,17 @@ static void init_proc_460 (CPUPPCState *env) |
3592 | 3668 | } |
3593 | 3669 | |
3594 | 3670 | /* PowerPC 460F (guessed) */ |
3595 | -#define POWERPC_INSNS_460F (POWERPC_INSNS_EMB | PPC_STRING | \ | |
3596 | - PPC_DCR | PPC_DCRX | PPC_DCRUX | \ | |
3597 | - PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | |
3598 | - PPC_FLOAT | PPC_FLOAT_FSQRT | PPC_FLOAT_FRES | \ | |
3599 | - PPC_FLOAT_FRSQRTE | PPC_FLOAT_FSEL | \ | |
3671 | +#define POWERPC_INSNS_460F (PPC_INSNS_BASE | PPC_STRING | \ | |
3672 | + PPC_FLOAT | PPC_FLOAT_FRES | PPC_FLOAT_FSEL | \ | |
3673 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
3600 | 3674 | PPC_FLOAT_STFIWX | \ |
3601 | - PPC_BOOKE | PPC_MFAPIDI | PPC_TLBIVA | \ | |
3602 | - PPC_4xx_COMMON | PPC_405_MAC | PPC_440_SPEC) | |
3675 | + PPC_DCR | PPC_DCRX | PPC_DCRUX | \ | |
3676 | + PPC_WRTEE | PPC_MFAPIDI | \ | |
3677 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
3678 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3679 | + PPC_MEM_TLBSYNC | PPC_TLBIVA | \ | |
3680 | + PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | |
3681 | + PPC_440_SPEC) | |
3603 | 3682 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) |
3604 | 3683 | #define POWERPC_MMU_460F (POWERPC_MMU_BOOKE) |
3605 | 3684 | #define POWERPC_EXCP_460F (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3732,7 +3811,13 @@ static void init_proc_MPC8xx (CPUPPCState *env) |
3732 | 3811 | |
3733 | 3812 | /* Freescale 82xx cores (aka PowerQUICC-II) */ |
3734 | 3813 | /* PowerPC G2 */ |
3735 | -#define POWERPC_INSNS_G2 (POWERPC_INSNS_WORKS | PPC_6xx_TLB | PPC_EXTERN) | |
3814 | +#define POWERPC_INSNS_G2 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
3815 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
3816 | + PPC_FLOAT_STFIWX | \ | |
3817 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
3818 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
3819 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
3820 | + PPC_SEGMENT | PPC_EXTERN) | |
3736 | 3821 | #define POWERPC_MSRM_G2 (0x000000000006FFF2ULL) |
3737 | 3822 | #define POWERPC_MMU_G2 (POWERPC_MMU_SOFT_6xx) |
3738 | 3823 | //#define POWERPC_EXCP_G2 (POWERPC_EXCP_G2) |
... | ... | @@ -3777,7 +3862,13 @@ static void init_proc_G2 (CPUPPCState *env) |
3777 | 3862 | } |
3778 | 3863 | |
3779 | 3864 | /* PowerPC G2LE */ |
3780 | -#define POWERPC_INSNS_G2LE (POWERPC_INSNS_WORKS | PPC_6xx_TLB | PPC_EXTERN) | |
3865 | +#define POWERPC_INSNS_G2LE (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
3866 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
3867 | + PPC_FLOAT_STFIWX | \ | |
3868 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
3869 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
3870 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
3871 | + PPC_SEGMENT | PPC_EXTERN) | |
3781 | 3872 | #define POWERPC_MSRM_G2LE (0x000000000007FFF3ULL) |
3782 | 3873 | #define POWERPC_MMU_G2LE (POWERPC_MMU_SOFT_6xx) |
3783 | 3874 | #define POWERPC_EXCP_G2LE (POWERPC_EXCP_G2) |
... | ... | @@ -3831,11 +3922,13 @@ static void init_proc_G2LE (CPUPPCState *env) |
3831 | 3922 | * tlbivax |
3832 | 3923 | * all SPE multiply-accumulate instructions |
3833 | 3924 | */ |
3834 | -#define POWERPC_INSNS_e200 (POWERPC_INSNS_EMB | PPC_ISEL | \ | |
3925 | +#define POWERPC_INSNS_e200 (PPC_INSNS_BASE | PPC_ISEL | \ | |
3835 | 3926 | PPC_SPE | PPC_SPEFPU | \ |
3927 | + PPC_WRTEE | PPC_RFDI | \ | |
3928 | + PPC_CACHE | PPC_CACHE_LOCK | PPC_CACHE_ICBI | \ | |
3929 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3836 | 3930 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ |
3837 | - PPC_CACHE_DCBA | PPC_CACHE_LOCK | \ | |
3838 | - PPC_BOOKE | PPC_RFDI) | |
3931 | + PPC_BOOKE) | |
3839 | 3932 | #define POWERPC_MSRM_e200 (0x000000000606FF30ULL) |
3840 | 3933 | #define POWERPC_MMU_e200 (POWERPC_MMU_BOOKE_FSL) |
3841 | 3934 | #define POWERPC_EXCP_e200 (POWERPC_EXCP_BOOKE) |
... | ... | @@ -3949,7 +4042,13 @@ static void init_proc_e200 (CPUPPCState *env) |
3949 | 4042 | } |
3950 | 4043 | |
3951 | 4044 | /* e300 core */ |
3952 | -#define POWERPC_INSNS_e300 (POWERPC_INSNS_WORKS | PPC_6xx_TLB | PPC_EXTERN) | |
4045 | +#define POWERPC_INSNS_e300 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4046 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4047 | + PPC_FLOAT_STFIWX | \ | |
4048 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4049 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4050 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
4051 | + PPC_SEGMENT | PPC_EXTERN) | |
3953 | 4052 | #define POWERPC_MSRM_e300 (0x000000000007FFF3ULL) |
3954 | 4053 | #define POWERPC_MMU_e300 (POWERPC_MMU_SOFT_6xx) |
3955 | 4054 | #define POWERPC_EXCP_e300 (POWERPC_EXCP_603) |
... | ... | @@ -3988,11 +4087,13 @@ static void init_proc_e300 (CPUPPCState *env) |
3988 | 4087 | } |
3989 | 4088 | |
3990 | 4089 | /* e500 core */ |
3991 | -#define POWERPC_INSNS_e500 (POWERPC_INSNS_EMB | PPC_ISEL | \ | |
4090 | +#define POWERPC_INSNS_e500 (PPC_INSNS_BASE | PPC_ISEL | \ | |
3992 | 4091 | PPC_SPE | PPC_SPEFPU | \ |
4092 | + PPC_WRTEE | PPC_RFDI | \ | |
4093 | + PPC_CACHE | PPC_CACHE_LOCK | PPC_CACHE_ICBI | \ | |
4094 | + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | \ | |
3993 | 4095 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ |
3994 | - PPC_CACHE_DCBA | PPC_CACHE_LOCK | \ | |
3995 | - PPC_BOOKE | PPC_RFDI) | |
4096 | + PPC_BOOKE) | |
3996 | 4097 | #define POWERPC_MSRM_e500 (0x000000000606FF30ULL) |
3997 | 4098 | #define POWERPC_MMU_e500 (POWERPC_MMU_BOOKE_FSL) |
3998 | 4099 | #define POWERPC_EXCP_e500 (POWERPC_EXCP_BOOKE) |
... | ... | @@ -4109,16 +4210,6 @@ static void init_proc_e500 (CPUPPCState *env) |
4109 | 4210 | } |
4110 | 4211 | |
4111 | 4212 | /* Non-embedded PowerPC */ |
4112 | -/* Base instructions set for all 6xx/7xx/74xx/970 PowerPC */ | |
4113 | -#define POWERPC_INSNS_6xx (PPC_INSNS_BASE | PPC_STRING | PPC_FLOAT | \ | |
4114 | - PPC_CACHE | PPC_CACHE_ICBI | \ | |
4115 | - PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE) | |
4116 | -/* Instructions common to all 6xx/7xx/74xx/970 PowerPC except 601 & 602 */ | |
4117 | -#define POWERPC_INSNS_WORKS (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT | \ | |
4118 | - PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ | |
4119 | - PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ | |
4120 | - PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ | PPC_MFTB | \ | |
4121 | - PPC_SEGMENT) | |
4122 | 4213 | |
4123 | 4214 | /* POWER : same as 601, without mfmsr, mfsr */ |
4124 | 4215 | #if defined(TODO) |
... | ... | @@ -4128,9 +4219,13 @@ static void init_proc_e500 (CPUPPCState *env) |
4128 | 4219 | #endif /* TODO */ |
4129 | 4220 | |
4130 | 4221 | /* PowerPC 601 */ |
4131 | -#define POWERPC_INSNS_601 (POWERPC_INSNS_6xx | PPC_CACHE_DCBZ | \ | |
4132 | - PPC_SEGMENT | PPC_EXTERN | PPC_POWER_BR) | |
4222 | +#define POWERPC_INSNS_601 (PPC_INSNS_BASE | PPC_STRING | PPC_POWER_BR | \ | |
4223 | + PPC_FLOAT | \ | |
4224 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4225 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE | \ | |
4226 | + PPC_SEGMENT | PPC_EXTERN) | |
4133 | 4227 | #define POWERPC_MSRM_601 (0x000000000000FD70ULL) |
4228 | +#define POWERPC_MSRR_601 (0x0000000000001040ULL) | |
4134 | 4229 | //#define POWERPC_MMU_601 (POWERPC_MMU_601) |
4135 | 4230 | //#define POWERPC_EXCP_601 (POWERPC_EXCP_601) |
4136 | 4231 | #define POWERPC_INPUT_601 (PPC_FLAGS_INPUT_6xx) |
... | ... | @@ -4163,31 +4258,53 @@ static void init_proc_601 (CPUPPCState *env) |
4163 | 4258 | SPR_NOACCESS, SPR_NOACCESS, |
4164 | 4259 | &spr_read_generic, &spr_write_generic, |
4165 | 4260 | 0x00000000); |
4166 | - /* XXX : not implemented */ | |
4167 | - spr_register(env, SPR_601_HID15, "HID15", | |
4168 | - SPR_NOACCESS, SPR_NOACCESS, | |
4169 | - &spr_read_generic, &spr_write_generic, | |
4170 | - 0x00000000); | |
4171 | 4261 | /* Memory management */ |
4172 | -#if !defined(CONFIG_USER_ONLY) | |
4173 | - env->nb_tlb = 64; | |
4174 | - env->nb_ways = 2; | |
4175 | - env->id_tlbs = 0; | |
4176 | -#endif | |
4177 | 4262 | init_excp_601(env); |
4178 | - env->dcache_line_size = 64; | |
4263 | + /* XXX: beware that dcache line size is 64 | |
4264 | + * but dcbz uses 32 bytes "sectors" | |
4265 | + * XXX: this breaks clcs instruction ! | |
4266 | + */ | |
4267 | + env->dcache_line_size = 32; | |
4179 | 4268 | env->icache_line_size = 64; |
4180 | 4269 | /* Allocate hardware IRQ controller */ |
4181 | 4270 | ppc6xx_irq_init(env); |
4182 | 4271 | } |
4183 | 4272 | |
4273 | +/* PowerPC 601v */ | |
4274 | +#define POWERPC_INSNS_601v (PPC_INSNS_BASE | PPC_STRING | PPC_POWER_BR | \ | |
4275 | + PPC_FLOAT | \ | |
4276 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4277 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE | \ | |
4278 | + PPC_SEGMENT | PPC_EXTERN) | |
4279 | +#define POWERPC_MSRM_601v (0x000000000000FD70ULL) | |
4280 | +#define POWERPC_MSRR_601v (0x0000000000001040ULL) | |
4281 | +#define POWERPC_MMU_601v (POWERPC_MMU_601) | |
4282 | +#define POWERPC_EXCP_601v (POWERPC_EXCP_601) | |
4283 | +#define POWERPC_INPUT_601v (PPC_FLAGS_INPUT_6xx) | |
4284 | +#define POWERPC_BFDM_601v (bfd_mach_ppc_601) | |
4285 | +#define POWERPC_FLAG_601v (POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK) | |
4286 | +#define check_pow_601v check_pow_none | |
4287 | + | |
4288 | +static void init_proc_601v (CPUPPCState *env) | |
4289 | +{ | |
4290 | + init_proc_601(env); | |
4291 | + /* XXX : not implemented */ | |
4292 | + spr_register(env, SPR_601_HID15, "HID15", | |
4293 | + SPR_NOACCESS, SPR_NOACCESS, | |
4294 | + &spr_read_generic, &spr_write_generic, | |
4295 | + 0x00000000); | |
4296 | +} | |
4297 | + | |
4184 | 4298 | /* PowerPC 602 */ |
4185 | -#define POWERPC_INSNS_602 (POWERPC_INSNS_6xx | PPC_MFTB | \ | |
4186 | - PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ | |
4187 | - PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ | |
4188 | - PPC_6xx_TLB | PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ |\ | |
4299 | +#define POWERPC_INSNS_602 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4300 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4301 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
4302 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4303 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4304 | + PPC_MEM_TLBIE | PPC_6xx_TLB | PPC_MEM_TLBSYNC | \ | |
4189 | 4305 | PPC_SEGMENT | PPC_602_SPEC) |
4190 | -#define POWERPC_MSRM_602 (0x000000000033FF73ULL) | |
4306 | +#define POWERPC_MSRM_602 (0x0000000000C7FF73ULL) | |
4307 | +/* XXX: 602 MMU is quite specific. Should add a special case */ | |
4191 | 4308 | #define POWERPC_MMU_602 (POWERPC_MMU_SOFT_6xx) |
4192 | 4309 | //#define POWERPC_EXCP_602 (POWERPC_EXCP_602) |
4193 | 4310 | #define POWERPC_INPUT_602 (PPC_FLAGS_INPUT_6xx) |
... | ... | @@ -4224,7 +4341,13 @@ static void init_proc_602 (CPUPPCState *env) |
4224 | 4341 | } |
4225 | 4342 | |
4226 | 4343 | /* PowerPC 603 */ |
4227 | -#define POWERPC_INSNS_603 (POWERPC_INSNS_WORKS | PPC_6xx_TLB | PPC_EXTERN) | |
4344 | +#define POWERPC_INSNS_603 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4345 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4346 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
4347 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4348 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4349 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
4350 | + PPC_SEGMENT | PPC_EXTERN) | |
4228 | 4351 | #define POWERPC_MSRM_603 (0x000000000007FF73ULL) |
4229 | 4352 | #define POWERPC_MMU_603 (POWERPC_MMU_SOFT_6xx) |
4230 | 4353 | //#define POWERPC_EXCP_603 (POWERPC_EXCP_603) |
... | ... | @@ -4262,7 +4385,13 @@ static void init_proc_603 (CPUPPCState *env) |
4262 | 4385 | } |
4263 | 4386 | |
4264 | 4387 | /* PowerPC 603e */ |
4265 | -#define POWERPC_INSNS_603E (POWERPC_INSNS_WORKS | PPC_6xx_TLB | PPC_EXTERN) | |
4388 | +#define POWERPC_INSNS_603E (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4389 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4390 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
4391 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4392 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4393 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
4394 | + PPC_SEGMENT | PPC_EXTERN) | |
4266 | 4395 | #define POWERPC_MSRM_603E (0x000000000007FF73ULL) |
4267 | 4396 | #define POWERPC_MMU_603E (POWERPC_MMU_SOFT_6xx) |
4268 | 4397 | //#define POWERPC_EXCP_603E (POWERPC_EXCP_603E) |
... | ... | @@ -4305,7 +4434,13 @@ static void init_proc_603E (CPUPPCState *env) |
4305 | 4434 | } |
4306 | 4435 | |
4307 | 4436 | /* PowerPC 604 */ |
4308 | -#define POWERPC_INSNS_604 (POWERPC_INSNS_WORKS | PPC_EXTERN) | |
4437 | +#define POWERPC_INSNS_604 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4438 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4439 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
4440 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4441 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4442 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4443 | + PPC_SEGMENT | PPC_EXTERN) | |
4309 | 4444 | #define POWERPC_MSRM_604 (0x000000000005FF77ULL) |
4310 | 4445 | #define POWERPC_MMU_604 (POWERPC_MMU_32B) |
4311 | 4446 | //#define POWERPC_EXCP_604 (POWERPC_EXCP_604) |
... | ... | @@ -4327,6 +4462,59 @@ static void init_proc_604 (CPUPPCState *env) |
4327 | 4462 | SPR_NOACCESS, SPR_NOACCESS, |
4328 | 4463 | &spr_read_generic, &spr_write_generic, |
4329 | 4464 | 0x00000000); |
4465 | + /* Memory management */ | |
4466 | + gen_low_BATs(env); | |
4467 | + init_excp_604(env); | |
4468 | + env->dcache_line_size = 32; | |
4469 | + env->icache_line_size = 32; | |
4470 | + /* Allocate hardware IRQ controller */ | |
4471 | + ppc6xx_irq_init(env); | |
4472 | +} | |
4473 | + | |
4474 | +/* PowerPC 604E */ | |
4475 | +#define POWERPC_INSNS_604E (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4476 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4477 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
4478 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4479 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4480 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4481 | + PPC_SEGMENT | PPC_EXTERN) | |
4482 | +#define POWERPC_MSRM_604E (0x000000000005FF77ULL) | |
4483 | +#define POWERPC_MMU_604E (POWERPC_MMU_32B) | |
4484 | +#define POWERPC_EXCP_604E (POWERPC_EXCP_604) | |
4485 | +#define POWERPC_INPUT_604E (PPC_FLAGS_INPUT_6xx) | |
4486 | +#define POWERPC_BFDM_604E (bfd_mach_ppc_604) | |
4487 | +#define POWERPC_FLAG_604E (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
4488 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
4489 | +#define check_pow_604E check_pow_nocheck | |
4490 | + | |
4491 | +static void init_proc_604E (CPUPPCState *env) | |
4492 | +{ | |
4493 | + gen_spr_ne_601(env); | |
4494 | + gen_spr_604(env); | |
4495 | + /* XXX : not implemented */ | |
4496 | + spr_register(env, SPR_MMCR1, "MMCR1", | |
4497 | + SPR_NOACCESS, SPR_NOACCESS, | |
4498 | + &spr_read_generic, &spr_write_generic, | |
4499 | + 0x00000000); | |
4500 | + /* XXX : not implemented */ | |
4501 | + spr_register(env, SPR_PMC3, "PMC3", | |
4502 | + SPR_NOACCESS, SPR_NOACCESS, | |
4503 | + &spr_read_generic, &spr_write_generic, | |
4504 | + 0x00000000); | |
4505 | + /* XXX : not implemented */ | |
4506 | + spr_register(env, SPR_PMC4, "PMC4", | |
4507 | + SPR_NOACCESS, SPR_NOACCESS, | |
4508 | + &spr_read_generic, &spr_write_generic, | |
4509 | + 0x00000000); | |
4510 | + /* Time base */ | |
4511 | + gen_tbl(env); | |
4512 | + /* Hardware implementation registers */ | |
4513 | + /* XXX : not implemented */ | |
4514 | + spr_register(env, SPR_HID0, "HID0", | |
4515 | + SPR_NOACCESS, SPR_NOACCESS, | |
4516 | + &spr_read_generic, &spr_write_generic, | |
4517 | + 0x00000000); | |
4330 | 4518 | /* XXX : not implemented */ |
4331 | 4519 | spr_register(env, SPR_HID1, "HID1", |
4332 | 4520 | SPR_NOACCESS, SPR_NOACCESS, |
... | ... | @@ -4342,7 +4530,14 @@ static void init_proc_604 (CPUPPCState *env) |
4342 | 4530 | } |
4343 | 4531 | |
4344 | 4532 | /* PowerPC 740/750 (aka G3) */ |
4345 | -#define POWERPC_INSNS_7x0 (POWERPC_INSNS_WORKS | PPC_EXTERN) | |
4533 | +#define POWERPC_INSNS_7x0 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4534 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4535 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4536 | + PPC_FLOAT_STFIWX | \ | |
4537 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4538 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4539 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4540 | + PPC_SEGMENT | PPC_EXTERN) | |
4346 | 4541 | #define POWERPC_MSRM_7x0 (0x000000000005FF77ULL) |
4347 | 4542 | #define POWERPC_MMU_7x0 (POWERPC_MMU_32B) |
4348 | 4543 | //#define POWERPC_EXCP_7x0 (POWERPC_EXCP_7x0) |
... | ... | @@ -4381,7 +4576,14 @@ static void init_proc_7x0 (CPUPPCState *env) |
4381 | 4576 | } |
4382 | 4577 | |
4383 | 4578 | /* PowerPC 750FX/GX */ |
4384 | -#define POWERPC_INSNS_750fx (POWERPC_INSNS_WORKS | PPC_EXTERN) | |
4579 | +#define POWERPC_INSNS_750fx (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4580 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4581 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4582 | + PPC_FLOAT_STFIWX | \ | |
4583 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4584 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4585 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4586 | + PPC_SEGMENT | PPC_EXTERN) | |
4385 | 4587 | #define POWERPC_MSRM_750fx (0x000000000005FF77ULL) |
4386 | 4588 | #define POWERPC_MMU_750fx (POWERPC_MMU_32B) |
4387 | 4589 | #define POWERPC_EXCP_750fx (POWERPC_EXCP_7x0) |
... | ... | @@ -4427,7 +4629,14 @@ static void init_proc_750fx (CPUPPCState *env) |
4427 | 4629 | } |
4428 | 4630 | |
4429 | 4631 | /* PowerPC 745/755 */ |
4430 | -#define POWERPC_INSNS_7x5 (POWERPC_INSNS_WORKS | PPC_EXTERN | PPC_6xx_TLB) | |
4632 | +#define POWERPC_INSNS_7x5 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4633 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4634 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4635 | + PPC_FLOAT_STFIWX | \ | |
4636 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
4637 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4638 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
4639 | + PPC_SEGMENT | PPC_EXTERN) | |
4431 | 4640 | #define POWERPC_MSRM_7x5 (0x000000000005FF77ULL) |
4432 | 4641 | #define POWERPC_MMU_7x5 (POWERPC_MMU_SOFT_6xx) |
4433 | 4642 | //#define POWERPC_EXCP_7x5 (POWERPC_EXCP_7x5) |
... | ... | @@ -4486,8 +4695,16 @@ static void init_proc_7x5 (CPUPPCState *env) |
4486 | 4695 | } |
4487 | 4696 | |
4488 | 4697 | /* PowerPC 7400 (aka G4) */ |
4489 | -#define POWERPC_INSNS_7400 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4490 | - PPC_EXTERN | PPC_MEM_TLBIA | \ | |
4698 | +#define POWERPC_INSNS_7400 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4699 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4700 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4701 | + PPC_FLOAT_STFIWX | \ | |
4702 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
4703 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
4704 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4705 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4706 | + PPC_MEM_TLBIA | \ | |
4707 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4491 | 4708 | PPC_ALTIVEC) |
4492 | 4709 | #define POWERPC_MSRM_7400 (0x000000000205FF77ULL) |
4493 | 4710 | #define POWERPC_MMU_7400 (POWERPC_MMU_32B) |
... | ... | @@ -4519,8 +4736,16 @@ static void init_proc_7400 (CPUPPCState *env) |
4519 | 4736 | } |
4520 | 4737 | |
4521 | 4738 | /* PowerPC 7410 (aka G4) */ |
4522 | -#define POWERPC_INSNS_7410 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4523 | - PPC_EXTERN | PPC_MEM_TLBIA | \ | |
4739 | +#define POWERPC_INSNS_7410 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4740 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4741 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4742 | + PPC_FLOAT_STFIWX | \ | |
4743 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
4744 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
4745 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4746 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4747 | + PPC_MEM_TLBIA | \ | |
4748 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4524 | 4749 | PPC_ALTIVEC) |
4525 | 4750 | #define POWERPC_MSRM_7410 (0x000000000205FF77ULL) |
4526 | 4751 | #define POWERPC_MMU_7410 (POWERPC_MMU_32B) |
... | ... | @@ -4564,8 +4789,16 @@ static void init_proc_7410 (CPUPPCState *env) |
4564 | 4789 | } |
4565 | 4790 | |
4566 | 4791 | /* PowerPC 7440 (aka G4) */ |
4567 | -#define POWERPC_INSNS_7440 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4568 | - PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | |
4792 | +#define POWERPC_INSNS_7440 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4793 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4794 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4795 | + PPC_FLOAT_STFIWX | \ | |
4796 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
4797 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
4798 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4799 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4800 | + PPC_MEM_TLBIA | PPC_74xx_TLB | \ | |
4801 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4569 | 4802 | PPC_ALTIVEC) |
4570 | 4803 | #define POWERPC_MSRM_7440 (0x000000000205FF77ULL) |
4571 | 4804 | #define POWERPC_MMU_7440 (POWERPC_MMU_SOFT_74xx) |
... | ... | @@ -4636,8 +4869,16 @@ static void init_proc_7440 (CPUPPCState *env) |
4636 | 4869 | } |
4637 | 4870 | |
4638 | 4871 | /* PowerPC 7450 (aka G4) */ |
4639 | -#define POWERPC_INSNS_7450 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4640 | - PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | |
4872 | +#define POWERPC_INSNS_7450 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4873 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4874 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4875 | + PPC_FLOAT_STFIWX | \ | |
4876 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
4877 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
4878 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4879 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4880 | + PPC_MEM_TLBIA | PPC_74xx_TLB | \ | |
4881 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4641 | 4882 | PPC_ALTIVEC) |
4642 | 4883 | #define POWERPC_MSRM_7450 (0x000000000205FF77ULL) |
4643 | 4884 | #define POWERPC_MMU_7450 (POWERPC_MMU_SOFT_74xx) |
... | ... | @@ -4710,8 +4951,16 @@ static void init_proc_7450 (CPUPPCState *env) |
4710 | 4951 | } |
4711 | 4952 | |
4712 | 4953 | /* PowerPC 7445 (aka G4) */ |
4713 | -#define POWERPC_INSNS_7445 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4714 | - PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | |
4954 | +#define POWERPC_INSNS_7445 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
4955 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
4956 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
4957 | + PPC_FLOAT_STFIWX | \ | |
4958 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
4959 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
4960 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
4961 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4962 | + PPC_MEM_TLBIA | PPC_74xx_TLB | \ | |
4963 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4715 | 4964 | PPC_ALTIVEC) |
4716 | 4965 | #define POWERPC_MSRM_7445 (0x000000000205FF77ULL) |
4717 | 4966 | #define POWERPC_MMU_7445 (POWERPC_MMU_SOFT_74xx) |
... | ... | @@ -4816,8 +5065,16 @@ static void init_proc_7445 (CPUPPCState *env) |
4816 | 5065 | } |
4817 | 5066 | |
4818 | 5067 | /* PowerPC 7455 (aka G4) */ |
4819 | -#define POWERPC_INSNS_7455 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | |
4820 | - PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | |
5068 | +#define POWERPC_INSNS_7455 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5069 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5070 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5071 | + PPC_FLOAT_STFIWX | \ | |
5072 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
5073 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
5074 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5075 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5076 | + PPC_MEM_TLBIA | PPC_74xx_TLB | \ | |
5077 | + PPC_SEGMENT | PPC_EXTERN | \ | |
4821 | 5078 | PPC_ALTIVEC) |
4822 | 5079 | #define POWERPC_MSRM_7455 (0x000000000205FF77ULL) |
4823 | 5080 | #define POWERPC_MMU_7455 (POWERPC_MMU_SOFT_74xx) |
... | ... | @@ -4924,12 +5181,14 @@ static void init_proc_7455 (CPUPPCState *env) |
4924 | 5181 | } |
4925 | 5182 | |
4926 | 5183 | #if defined (TARGET_PPC64) |
4927 | -#define POWERPC_INSNS_WORK64 (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT | \ | |
4928 | - PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ | |
4929 | - PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ | |
4930 | - PPC_MEM_TLBSYNC | PPC_CACHE_DCBZT | PPC_MFTB) | |
4931 | 5184 | /* PowerPC 970 */ |
4932 | -#define POWERPC_INSNS_970 (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \ | |
5185 | +#define POWERPC_INSNS_970 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5186 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5187 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5188 | + PPC_FLOAT_STFIWX | \ | |
5189 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZT | \ | |
5190 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5191 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
4933 | 5192 | PPC_64B | PPC_ALTIVEC | \ |
4934 | 5193 | PPC_SEGMENT_64B | PPC_SLBI) |
4935 | 5194 | #define POWERPC_MSRM_970 (0x900000000204FF36ULL) |
... | ... | @@ -5010,7 +5269,13 @@ static void init_proc_970 (CPUPPCState *env) |
5010 | 5269 | } |
5011 | 5270 | |
5012 | 5271 | /* PowerPC 970FX (aka G5) */ |
5013 | -#define POWERPC_INSNS_970FX (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \ | |
5272 | +#define POWERPC_INSNS_970FX (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5273 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5274 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5275 | + PPC_FLOAT_STFIWX | \ | |
5276 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZT | \ | |
5277 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5278 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5014 | 5279 | PPC_64B | PPC_ALTIVEC | \ |
5015 | 5280 | PPC_SEGMENT_64B | PPC_SLBI) |
5016 | 5281 | #define POWERPC_MSRM_970FX (0x800000000204FF36ULL) |
... | ... | @@ -5085,7 +5350,13 @@ static void init_proc_970FX (CPUPPCState *env) |
5085 | 5350 | } |
5086 | 5351 | |
5087 | 5352 | /* PowerPC 970 GX */ |
5088 | -#define POWERPC_INSNS_970GX (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \ | |
5353 | +#define POWERPC_INSNS_970GX (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5354 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5355 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5356 | + PPC_FLOAT_STFIWX | \ | |
5357 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZT | \ | |
5358 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5359 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5089 | 5360 | PPC_64B | PPC_ALTIVEC | \ |
5090 | 5361 | PPC_SEGMENT_64B | PPC_SLBI) |
5091 | 5362 | #define POWERPC_MSRM_970GX (0x800000000204FF36ULL) |
... | ... | @@ -5160,7 +5431,13 @@ static void init_proc_970GX (CPUPPCState *env) |
5160 | 5431 | } |
5161 | 5432 | |
5162 | 5433 | /* PowerPC 970 MP */ |
5163 | -#define POWERPC_INSNS_970MP (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \ | |
5434 | +#define POWERPC_INSNS_970MP (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5435 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5436 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5437 | + PPC_FLOAT_STFIWX | \ | |
5438 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZT | \ | |
5439 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5440 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5164 | 5441 | PPC_64B | PPC_ALTIVEC | \ |
5165 | 5442 | PPC_SEGMENT_64B | PPC_SLBI) |
5166 | 5443 | #define POWERPC_MSRM_970MP (0x900000000204FF36ULL) |
... | ... | @@ -5235,7 +5512,14 @@ static void init_proc_970MP (CPUPPCState *env) |
5235 | 5512 | } |
5236 | 5513 | |
5237 | 5514 | /* PowerPC 620 */ |
5238 | -#define POWERPC_INSNS_620 (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ | |
5515 | +#define POWERPC_INSNS_620 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5516 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5517 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5518 | + PPC_FLOAT_STFIWX | \ | |
5519 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
5520 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5521 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5522 | + PPC_SEGMENT | PPC_EXTERN | \ | |
5239 | 5523 | PPC_64B | PPC_SLBI) |
5240 | 5524 | #define POWERPC_MSRM_620 (0x800000000005FF77ULL) |
5241 | 5525 | //#define POWERPC_MMU_620 (POWERPC_MMU_620) |
... | ... | @@ -5261,7 +5545,6 @@ static void init_proc_620 (CPUPPCState *env) |
5261 | 5545 | 0x00000000); |
5262 | 5546 | /* Memory management */ |
5263 | 5547 | gen_low_BATs(env); |
5264 | - gen_high_BATs(env); | |
5265 | 5548 | init_excp_620(env); |
5266 | 5549 | env->dcache_line_size = 64; |
5267 | 5550 | env->icache_line_size = 64; |
... | ... | @@ -5938,12 +6221,13 @@ enum { |
5938 | 6221 | CPU_POWERPC_74x5_v33 = 0x80010303, /* aka F: 3.3 */ |
5939 | 6222 | CPU_POWERPC_74x5_v34 = 0x80010304, /* aka G: 3.4 */ |
5940 | 6223 | #define CPU_POWERPC_74x7 CPU_POWERPC_74x7_v12 |
5941 | - /* XXX: is 0x8002xxxx 7447 and 0x8003xxxx 7457 ? */ | |
5942 | - /* XXX: missing 0x80030102 */ | |
5943 | - /* XXX: missing 0x80020101 */ | |
5944 | 6224 | CPU_POWERPC_74x7_v10 = 0x80020100, /* aka A: 1.0 */ |
5945 | - CPU_POWERPC_74x7_v11 = 0x80030101, /* aka B: 1.1 */ | |
6225 | + CPU_POWERPC_74x7_v11 = 0x80020101, /* aka B: 1.1 */ | |
5946 | 6226 | CPU_POWERPC_74x7_v12 = 0x80020102, /* aka C: 1.2 */ |
6227 | +#define CPU_POWERPC_74x7A CPU_POWERPC_74x7A_v12 | |
6228 | + CPU_POWERPC_74x7A_v10 = 0x80030100, /* aka A: 1.0 */ | |
6229 | + CPU_POWERPC_74x7A_v11 = 0x80030101, /* aka B: 1.1 */ | |
6230 | + CPU_POWERPC_74x7A_v12 = 0x80030102, /* aka C: 1.2 */ | |
5947 | 6231 | /* 64 bits PowerPC */ |
5948 | 6232 | #if defined(TARGET_PPC64) |
5949 | 6233 | CPU_POWERPC_620 = 0x00140000, |
... | ... | @@ -6714,7 +6998,7 @@ static const ppc_def_t ppc_defs[] = { |
6714 | 6998 | /* MPC8240 */ |
6715 | 6999 | POWERPC_DEF("MPC8240", CPU_POWERPC_MPC8240, 603E), |
6716 | 7000 | /* PowerPC G2 microcontrollers */ |
6717 | -#if 0 | |
7001 | +#if defined(TODO) | |
6718 | 7002 | /* MPC5121 */ |
6719 | 7003 | POWERPC_DEF_SVR("MPC5121", |
6720 | 7004 | CPU_POWERPC_MPC5121, POWERPC_SVR_5121, G2LE), |
... | ... | @@ -7295,18 +7579,20 @@ static const ppc_def_t ppc_defs[] = { |
7295 | 7579 | /* PowerPC 601 */ |
7296 | 7580 | POWERPC_DEF("601", CPU_POWERPC_601, 601), |
7297 | 7581 | /* PowerPC 601v0 */ |
7298 | - POWERPC_DEF("601v0", CPU_POWERPC_601_v0, 601), | |
7582 | + POWERPC_DEF("601_v0", CPU_POWERPC_601_v0, 601), | |
7299 | 7583 | /* PowerPC 601v1 */ |
7300 | - POWERPC_DEF("601v1", CPU_POWERPC_601_v1, 601), | |
7584 | + POWERPC_DEF("601_v1", CPU_POWERPC_601_v1, 601), | |
7585 | + /* PowerPC 601v */ | |
7586 | + POWERPC_DEF("601v", CPU_POWERPC_601, 601v), | |
7301 | 7587 | /* PowerPC 601v2 */ |
7302 | - POWERPC_DEF("601v2", CPU_POWERPC_601_v2, 601), | |
7588 | + POWERPC_DEF("601_v2", CPU_POWERPC_601_v2, 601v), | |
7303 | 7589 | /* PowerPC 602 */ |
7304 | 7590 | POWERPC_DEF("602", CPU_POWERPC_602, 602), |
7305 | 7591 | /* PowerPC 603 */ |
7306 | 7592 | POWERPC_DEF("603", CPU_POWERPC_603, 603), |
7307 | 7593 | /* Code name for PowerPC 603 */ |
7308 | 7594 | POWERPC_DEF("Vanilla", CPU_POWERPC_603, 603), |
7309 | - /* PowerPC 603e */ | |
7595 | + /* PowerPC 603e (aka PID6) */ | |
7310 | 7596 | POWERPC_DEF("603e", CPU_POWERPC_603E, 603E), |
7311 | 7597 | /* Code name for PowerPC 603e */ |
7312 | 7598 | POWERPC_DEF("Stretch", CPU_POWERPC_603E, 603E), |
... | ... | @@ -7326,7 +7612,7 @@ static const ppc_def_t ppc_defs[] = { |
7326 | 7612 | POWERPC_DEF("603e_v4", CPU_POWERPC_603E_v4, 603E), |
7327 | 7613 | /* PowerPC 603e v4.1 */ |
7328 | 7614 | POWERPC_DEF("603e_v4.1", CPU_POWERPC_603E_v41, 603E), |
7329 | - /* PowerPC 603e */ | |
7615 | + /* PowerPC 603e (aka PID7) */ | |
7330 | 7616 | POWERPC_DEF("603e7", CPU_POWERPC_603E7, 603E), |
7331 | 7617 | /* PowerPC 603e7t */ |
7332 | 7618 | POWERPC_DEF("603e7t", CPU_POWERPC_603E7t, 603E), |
... | ... | @@ -7338,38 +7624,41 @@ static const ppc_def_t ppc_defs[] = { |
7338 | 7624 | POWERPC_DEF("603e7v1", CPU_POWERPC_603E7v1, 603E), |
7339 | 7625 | /* PowerPC 603e7v2 */ |
7340 | 7626 | POWERPC_DEF("603e7v2", CPU_POWERPC_603E7v2, 603E), |
7341 | - /* PowerPC 603p */ | |
7342 | - /* to be checked */ | |
7343 | - POWERPC_DEF("603p", CPU_POWERPC_603P, 603), | |
7344 | - /* PowerPC 603r */ | |
7627 | + /* PowerPC 603p (aka PID7v) */ | |
7628 | + POWERPC_DEF("603p", CPU_POWERPC_603P, 603E), | |
7629 | + /* PowerPC 603r (aka PID7t) */ | |
7345 | 7630 | POWERPC_DEF("603r", CPU_POWERPC_603R, 603E), |
7346 | 7631 | /* Code name for PowerPC 603r */ |
7347 | 7632 | POWERPC_DEF("Goldeneye", CPU_POWERPC_603R, 603E), |
7348 | 7633 | /* PowerPC 604 */ |
7349 | 7634 | POWERPC_DEF("604", CPU_POWERPC_604, 604), |
7350 | - /* PowerPC 604e */ | |
7351 | - /* XXX: code names "Sirocco" "Mach 5" */ | |
7352 | - POWERPC_DEF("604e", CPU_POWERPC_604E, 604), | |
7635 | + /* PowerPC 604e (aka PID9) */ | |
7636 | + POWERPC_DEF("604e", CPU_POWERPC_604E, 604E), | |
7637 | + /* Code name for PowerPC 604e */ | |
7638 | + POWERPC_DEF("Sirocco", CPU_POWERPC_604E, 604E), | |
7353 | 7639 | /* PowerPC 604e v1.0 */ |
7354 | - POWERPC_DEF("604e_v1.0", CPU_POWERPC_604E_v10, 604), | |
7640 | + POWERPC_DEF("604e_v1.0", CPU_POWERPC_604E_v10, 604E), | |
7355 | 7641 | /* PowerPC 604e v2.2 */ |
7356 | - POWERPC_DEF("604e_v2.2", CPU_POWERPC_604E_v22, 604), | |
7642 | + POWERPC_DEF("604e_v2.2", CPU_POWERPC_604E_v22, 604E), | |
7357 | 7643 | /* PowerPC 604e v2.4 */ |
7358 | - POWERPC_DEF("604e_v2.4", CPU_POWERPC_604E_v24, 604), | |
7359 | - /* PowerPC 604r */ | |
7360 | - POWERPC_DEF("604r", CPU_POWERPC_604R, 604), | |
7644 | + POWERPC_DEF("604e_v2.4", CPU_POWERPC_604E_v24, 604E), | |
7645 | + /* PowerPC 604r (aka PIDA) */ | |
7646 | + POWERPC_DEF("604r", CPU_POWERPC_604R, 604E), | |
7647 | + /* Code name for PowerPC 604r */ | |
7648 | + POWERPC_DEF("Mach5", CPU_POWERPC_604R, 604E), | |
7361 | 7649 | #if defined(TODO) |
7362 | 7650 | /* PowerPC 604ev */ |
7363 | - POWERPC_DEF("604ev", CPU_POWERPC_604EV, 604), | |
7651 | + POWERPC_DEF("604ev", CPU_POWERPC_604EV, 604E), | |
7364 | 7652 | #endif |
7365 | 7653 | /* PowerPC 7xx family */ |
7366 | 7654 | /* Generic PowerPC 740 (G3) */ |
7367 | 7655 | POWERPC_DEF("740", CPU_POWERPC_7x0, 7x0), |
7656 | + /* Code name for PowerPC 740 */ | |
7657 | + POWERPC_DEF("Arthur", CPU_POWERPC_7x0, 7x0), | |
7368 | 7658 | /* Generic PowerPC 750 (G3) */ |
7369 | 7659 | POWERPC_DEF("750", CPU_POWERPC_7x0, 7x0), |
7370 | - /* Code name for generic PowerPC 740/750 (G3) */ | |
7371 | - POWERPC_DEF("Arthur", CPU_POWERPC_7x0, 7x0), | |
7372 | - /* XXX: 750 codename "Typhoon" */ | |
7660 | + /* Code name for PowerPC 750 */ | |
7661 | + POWERPC_DEF("Typhoon", CPU_POWERPC_7x0, 7x0), | |
7373 | 7662 | /* PowerPC 740/750 is also known as G3 */ |
7374 | 7663 | POWERPC_DEF("G3", CPU_POWERPC_7x0, 7x0), |
7375 | 7664 | /* PowerPC 740 v2.0 (G3) */ |
... | ... | @@ -7411,17 +7700,17 @@ static const ppc_def_t ppc_defs[] = { |
7411 | 7700 | /* PowerPC 750CXe (G3 embedded) */ |
7412 | 7701 | POWERPC_DEF("750cxe", CPU_POWERPC_750CXE, 7x0), |
7413 | 7702 | /* PowerPC 750CXe v2.1 (G3 embedded) */ |
7414 | - POWERPC_DEF("750cxe_v21", CPU_POWERPC_750CXE_v21, 7x0), | |
7703 | + POWERPC_DEF("750cxe_v2.1", CPU_POWERPC_750CXE_v21, 7x0), | |
7415 | 7704 | /* PowerPC 750CXe v2.2 (G3 embedded) */ |
7416 | - POWERPC_DEF("750cxe_v22", CPU_POWERPC_750CXE_v22, 7x0), | |
7705 | + POWERPC_DEF("750cxe_v2.2", CPU_POWERPC_750CXE_v22, 7x0), | |
7417 | 7706 | /* PowerPC 750CXe v2.3 (G3 embedded) */ |
7418 | - POWERPC_DEF("750cxe_v23", CPU_POWERPC_750CXE_v23, 7x0), | |
7707 | + POWERPC_DEF("750cxe_v2.3", CPU_POWERPC_750CXE_v23, 7x0), | |
7419 | 7708 | /* PowerPC 750CXe v2.4 (G3 embedded) */ |
7420 | - POWERPC_DEF("750cxe_v24", CPU_POWERPC_750CXE_v24, 7x0), | |
7709 | + POWERPC_DEF("750cxe_v2.4", CPU_POWERPC_750CXE_v24, 7x0), | |
7421 | 7710 | /* PowerPC 750CXe v2.4b (G3 embedded) */ |
7422 | - POWERPC_DEF("750cxe_v24b", CPU_POWERPC_750CXE_v24b, 7x0), | |
7711 | + POWERPC_DEF("750cxe_v2.4b", CPU_POWERPC_750CXE_v24b, 7x0), | |
7423 | 7712 | /* PowerPC 750CXe v3.1 (G3 embedded) */ |
7424 | - POWERPC_DEF("750cxe_v31", CPU_POWERPC_750CXE_v31, 7x0), | |
7713 | + POWERPC_DEF("750cxe_v3.1", CPU_POWERPC_750CXE_v31, 7x0), | |
7425 | 7714 | /* PowerPC 750CXe v3.1b (G3 embedded) */ |
7426 | 7715 | POWERPC_DEF("750cxe_v3.1b", CPU_POWERPC_750CXE_v31b, 7x0), |
7427 | 7716 | /* PowerPC 750CXr (G3 embedded) */ |
... | ... | @@ -7623,8 +7912,6 @@ static const ppc_def_t ppc_defs[] = { |
7623 | 7912 | POWERPC_DEF("7447_v1.0", CPU_POWERPC_74x7_v10, 7445), |
7624 | 7913 | /* PowerPC 7457 v1.0 (G4) */ |
7625 | 7914 | POWERPC_DEF("7457_v1.0", CPU_POWERPC_74x7_v10, 7455), |
7626 | - /* Code name for PowerPC 7447A/7457A */ | |
7627 | - POWERPC_DEF("Apollo7PM", CPU_POWERPC_74x7_v10, 7455), | |
7628 | 7915 | /* PowerPC 7447 v1.1 (G4) */ |
7629 | 7916 | POWERPC_DEF("7447_v1.1", CPU_POWERPC_74x7_v11, 7445), |
7630 | 7917 | /* PowerPC 7457 v1.1 (G4) */ |
... | ... | @@ -7633,16 +7920,37 @@ static const ppc_def_t ppc_defs[] = { |
7633 | 7920 | POWERPC_DEF("7447_v1.2", CPU_POWERPC_74x7_v12, 7445), |
7634 | 7921 | /* PowerPC 7457 v1.2 (G4) */ |
7635 | 7922 | POWERPC_DEF("7457_v1.2", CPU_POWERPC_74x7_v12, 7455), |
7923 | + /* PowerPC 7447A (G4) */ | |
7924 | + POWERPC_DEF("7447A", CPU_POWERPC_74x7A, 7445), | |
7925 | + /* PowerPC 7457A (G4) */ | |
7926 | + POWERPC_DEF("7457A", CPU_POWERPC_74x7A, 7455), | |
7927 | + /* PowerPC 7447A v1.0 (G4) */ | |
7928 | + POWERPC_DEF("7447A_v1.0", CPU_POWERPC_74x7A_v10, 7445), | |
7929 | + /* PowerPC 7457A v1.0 (G4) */ | |
7930 | + POWERPC_DEF("7457A_v1.0", CPU_POWERPC_74x7A_v10, 7455), | |
7931 | + /* Code name for PowerPC 7447A/7457A */ | |
7932 | + POWERPC_DEF("Apollo7PM", CPU_POWERPC_74x7A_v10, 7455), | |
7933 | + /* PowerPC 7447A v1.1 (G4) */ | |
7934 | + POWERPC_DEF("7447A_v1.1", CPU_POWERPC_74x7A_v11, 7445), | |
7935 | + /* PowerPC 7457A v1.1 (G4) */ | |
7936 | + POWERPC_DEF("7457A_v1.1", CPU_POWERPC_74x7A_v11, 7455), | |
7937 | + /* PowerPC 7447A v1.2 (G4) */ | |
7938 | + POWERPC_DEF("7447A_v1.2", CPU_POWERPC_74x7A_v12, 7445), | |
7939 | + /* PowerPC 7457A v1.2 (G4) */ | |
7940 | + POWERPC_DEF("7457A_v1.2", CPU_POWERPC_74x7A_v12, 7455), | |
7636 | 7941 | /* 64 bits PowerPC */ |
7637 | 7942 | #if defined (TARGET_PPC64) |
7638 | 7943 | /* PowerPC 620 */ |
7639 | - /* XXX: code name "Trident" */ | |
7640 | 7944 | POWERPC_DEF("620", CPU_POWERPC_620, 620), |
7945 | + /* Code name for PowerPC 620 */ | |
7946 | + POWERPC_DEF("Trident", CPU_POWERPC_620, 620), | |
7641 | 7947 | #if defined (TODO) |
7642 | 7948 | /* PowerPC 630 (POWER3) */ |
7643 | - /* XXX: code names: "Boxer" "Dino" */ | |
7644 | 7949 | POWERPC_DEF("630", CPU_POWERPC_630, 630), |
7645 | 7950 | POWERPC_DEF("POWER3", CPU_POWERPC_630, 630), |
7951 | + /* Code names for POWER3 */ | |
7952 | + POWERPC_DEF("Boxer", CPU_POWERPC_630, 630), | |
7953 | + POWERPC_DEF("Dino", CPU_POWERPC_630, 630), | |
7646 | 7954 | #endif |
7647 | 7955 | #if defined (TODO) |
7648 | 7956 | /* PowerPC 631 (Power 3+) */ | ... | ... |