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,9 +1040,11 @@ static inline int cpu_mmu_index (CPUState *env) | ||
1040 | #define SPR_RCPU_MI_RBA2 (0x302) | 1040 | #define SPR_RCPU_MI_RBA2 (0x302) |
1041 | #define SPR_MPC_MI_AP (0x302) | 1041 | #define SPR_MPC_MI_AP (0x302) |
1042 | #define SPR_PERF3 (0x303) | 1042 | #define SPR_PERF3 (0x303) |
1043 | +#define SPR_620_PMC1R (0x303) | ||
1043 | #define SPR_RCPU_MI_RBA3 (0x303) | 1044 | #define SPR_RCPU_MI_RBA3 (0x303) |
1044 | #define SPR_MPC_MI_EPN (0x303) | 1045 | #define SPR_MPC_MI_EPN (0x303) |
1045 | #define SPR_PERF4 (0x304) | 1046 | #define SPR_PERF4 (0x304) |
1047 | +#define SPR_620_PMC2R (0x304) | ||
1046 | #define SPR_PERF5 (0x305) | 1048 | #define SPR_PERF5 (0x305) |
1047 | #define SPR_MPC_MI_TWC (0x305) | 1049 | #define SPR_MPC_MI_TWC (0x305) |
1048 | #define SPR_PERF6 (0x306) | 1050 | #define SPR_PERF6 (0x306) |
@@ -1058,6 +1060,7 @@ static inline int cpu_mmu_index (CPUState *env) | @@ -1058,6 +1060,7 @@ static inline int cpu_mmu_index (CPUState *env) | ||
1058 | #define SPR_RCPU_L2U_RBA2 (0x30A) | 1060 | #define SPR_RCPU_L2U_RBA2 (0x30A) |
1059 | #define SPR_MPC_MD_AP (0x30A) | 1061 | #define SPR_MPC_MD_AP (0x30A) |
1060 | #define SPR_PERFB (0x30B) | 1062 | #define SPR_PERFB (0x30B) |
1063 | +#define SPR_620_MMCR0R (0x30B) | ||
1061 | #define SPR_RCPU_L2U_RBA3 (0x30B) | 1064 | #define SPR_RCPU_L2U_RBA3 (0x30B) |
1062 | #define SPR_MPC_MD_EPN (0x30B) | 1065 | #define SPR_MPC_MD_EPN (0x30B) |
1063 | #define SPR_PERFC (0x30C) | 1066 | #define SPR_PERFC (0x30C) |
@@ -1072,7 +1075,9 @@ static inline int cpu_mmu_index (CPUState *env) | @@ -1072,7 +1075,9 @@ static inline int cpu_mmu_index (CPUState *env) | ||
1072 | #define SPR_UPERF1 (0x311) | 1075 | #define SPR_UPERF1 (0x311) |
1073 | #define SPR_UPERF2 (0x312) | 1076 | #define SPR_UPERF2 (0x312) |
1074 | #define SPR_UPERF3 (0x313) | 1077 | #define SPR_UPERF3 (0x313) |
1078 | +#define SPR_620_PMC1W (0x313) | ||
1075 | #define SPR_UPERF4 (0x314) | 1079 | #define SPR_UPERF4 (0x314) |
1080 | +#define SPR_620_PMC2W (0x314) | ||
1076 | #define SPR_UPERF5 (0x315) | 1081 | #define SPR_UPERF5 (0x315) |
1077 | #define SPR_UPERF6 (0x316) | 1082 | #define SPR_UPERF6 (0x316) |
1078 | #define SPR_UPERF7 (0x317) | 1083 | #define SPR_UPERF7 (0x317) |
@@ -1080,6 +1085,7 @@ static inline int cpu_mmu_index (CPUState *env) | @@ -1080,6 +1085,7 @@ static inline int cpu_mmu_index (CPUState *env) | ||
1080 | #define SPR_UPERF9 (0x319) | 1085 | #define SPR_UPERF9 (0x319) |
1081 | #define SPR_UPERFA (0x31A) | 1086 | #define SPR_UPERFA (0x31A) |
1082 | #define SPR_UPERFB (0x31B) | 1087 | #define SPR_UPERFB (0x31B) |
1088 | +#define SPR_620_MMCR0W (0x31B) | ||
1083 | #define SPR_UPERFC (0x31C) | 1089 | #define SPR_UPERFC (0x31C) |
1084 | #define SPR_UPERFD (0x31D) | 1090 | #define SPR_UPERFD (0x31D) |
1085 | #define SPR_UPERFE (0x31E) | 1091 | #define SPR_UPERFE (0x31E) |
@@ -1245,13 +1251,14 @@ static inline int cpu_mmu_index (CPUState *env) | @@ -1245,13 +1251,14 @@ static inline int cpu_mmu_index (CPUState *env) | ||
1245 | #define SPR_LDSTCR (0x3F8) | 1251 | #define SPR_LDSTCR (0x3F8) |
1246 | #define SPR_L2PMCR (0x3F8) | 1252 | #define SPR_L2PMCR (0x3F8) |
1247 | #define SPR_750_HID2 (0x3F8) | 1253 | #define SPR_750_HID2 (0x3F8) |
1248 | -#define SPR_620_HID8 (0x3F8) | 1254 | +#define SPR_620_BUSCSR (0x3F8) |
1249 | #define SPR_Exxx_L1FINV0 (0x3F8) | 1255 | #define SPR_Exxx_L1FINV0 (0x3F8) |
1250 | #define SPR_L2CR (0x3F9) | 1256 | #define SPR_L2CR (0x3F9) |
1251 | -#define SPR_620_HID9 (0x3F9) | 1257 | +#define SPR_620_L2CR (0x3F9) |
1252 | #define SPR_L3CR (0x3FA) | 1258 | #define SPR_L3CR (0x3FA) |
1253 | #define SPR_IABR2 (0x3FA) | 1259 | #define SPR_IABR2 (0x3FA) |
1254 | #define SPR_40x_DCCR (0x3FA) | 1260 | #define SPR_40x_DCCR (0x3FA) |
1261 | +#define SPR_620_L2SR (0x3FA) | ||
1255 | #define SPR_ICTC (0x3FB) | 1262 | #define SPR_ICTC (0x3FB) |
1256 | #define SPR_40x_ICCR (0x3FB) | 1263 | #define SPR_40x_ICCR (0x3FB) |
1257 | #define SPR_THRM1 (0x3FC) | 1264 | #define SPR_THRM1 (0x3FC) |
target-ppc/translate_init.c
@@ -281,13 +281,11 @@ static void spr_write_sdr1 (void *opaque, int sprn) | @@ -281,13 +281,11 @@ static void spr_write_sdr1 (void *opaque, int sprn) | ||
281 | /* 64 bits PowerPC specific SPRs */ | 281 | /* 64 bits PowerPC specific SPRs */ |
282 | /* ASR */ | 282 | /* ASR */ |
283 | #if defined(TARGET_PPC64) | 283 | #if defined(TARGET_PPC64) |
284 | -__attribute__ (( unused )) | ||
285 | static void spr_read_asr (void *opaque, int sprn) | 284 | static void spr_read_asr (void *opaque, int sprn) |
286 | { | 285 | { |
287 | gen_op_load_asr(); | 286 | gen_op_load_asr(); |
288 | } | 287 | } |
289 | 288 | ||
290 | -__attribute__ (( unused )) | ||
291 | static void spr_write_asr (void *opaque, int sprn) | 289 | static void spr_write_asr (void *opaque, int sprn) |
292 | { | 290 | { |
293 | gen_op_store_asr(); | 291 | gen_op_store_asr(); |
@@ -924,11 +922,6 @@ static void gen_spr_604 (CPUPPCState *env) | @@ -924,11 +922,6 @@ static void gen_spr_604 (CPUPPCState *env) | ||
924 | &spr_read_generic, &spr_write_generic, | 922 | &spr_read_generic, &spr_write_generic, |
925 | 0x00000000); | 923 | 0x00000000); |
926 | /* XXX : not implemented */ | 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 | spr_register(env, SPR_PMC1, "PMC1", | 925 | spr_register(env, SPR_PMC1, "PMC1", |
933 | SPR_NOACCESS, SPR_NOACCESS, | 926 | SPR_NOACCESS, SPR_NOACCESS, |
934 | &spr_read_generic, &spr_write_generic, | 927 | &spr_read_generic, &spr_write_generic, |
@@ -939,16 +932,6 @@ static void gen_spr_604 (CPUPPCState *env) | @@ -939,16 +932,6 @@ static void gen_spr_604 (CPUPPCState *env) | ||
939 | &spr_read_generic, &spr_write_generic, | 932 | &spr_read_generic, &spr_write_generic, |
940 | 0x00000000); | 933 | 0x00000000); |
941 | /* XXX : not implemented */ | 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 | spr_register(env, SPR_SIAR, "SIAR", | 935 | spr_register(env, SPR_SIAR, "SIAR", |
953 | SPR_NOACCESS, SPR_NOACCESS, | 936 | SPR_NOACCESS, SPR_NOACCESS, |
954 | &spr_read_generic, SPR_NOACCESS, | 937 | &spr_read_generic, SPR_NOACCESS, |
@@ -2008,6 +1991,70 @@ static void gen_spr_compress (CPUPPCState *env) | @@ -2008,6 +1991,70 @@ static void gen_spr_compress (CPUPPCState *env) | ||
2008 | /* SPR specific to PowerPC 620 */ | 1991 | /* SPR specific to PowerPC 620 */ |
2009 | static void gen_spr_620 (CPUPPCState *env) | 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 | /* XXX : not implemented */ | 2058 | /* XXX : not implemented */ |
2012 | spr_register(env, SPR_620_PMR0, "PMR0", | 2059 | spr_register(env, SPR_620_PMR0, "PMR0", |
2013 | SPR_NOACCESS, SPR_NOACCESS, | 2060 | SPR_NOACCESS, SPR_NOACCESS, |
@@ -2088,13 +2135,19 @@ static void gen_spr_620 (CPUPPCState *env) | @@ -2088,13 +2135,19 @@ static void gen_spr_620 (CPUPPCState *env) | ||
2088 | SPR_NOACCESS, SPR_NOACCESS, | 2135 | SPR_NOACCESS, SPR_NOACCESS, |
2089 | &spr_read_generic, &spr_write_generic, | 2136 | &spr_read_generic, &spr_write_generic, |
2090 | 0x00000000); | 2137 | 0x00000000); |
2138 | +#endif | ||
2091 | /* XXX : not implemented */ | 2139 | /* XXX : not implemented */ |
2092 | - spr_register(env, SPR_620_HID8, "HID8", | 2140 | + spr_register(env, SPR_620_BUSCSR, "BUSCSR", |
2093 | SPR_NOACCESS, SPR_NOACCESS, | 2141 | SPR_NOACCESS, SPR_NOACCESS, |
2094 | &spr_read_generic, &spr_write_generic, | 2142 | &spr_read_generic, &spr_write_generic, |
2095 | 0x00000000); | 2143 | 0x00000000); |
2096 | /* XXX : not implemented */ | 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 | SPR_NOACCESS, SPR_NOACCESS, | 2151 | SPR_NOACCESS, SPR_NOACCESS, |
2099 | &spr_read_generic, &spr_write_generic, | 2152 | &spr_read_generic, &spr_write_generic, |
2100 | 0x00000000); | 2153 | 0x00000000); |
@@ -2704,6 +2757,7 @@ static void init_excp_601 (CPUPPCState *env) | @@ -2704,6 +2757,7 @@ static void init_excp_601 (CPUPPCState *env) | ||
2704 | static void init_excp_602 (CPUPPCState *env) | 2757 | static void init_excp_602 (CPUPPCState *env) |
2705 | { | 2758 | { |
2706 | #if !defined(CONFIG_USER_ONLY) | 2759 | #if !defined(CONFIG_USER_ONLY) |
2760 | + /* XXX: exception prefix has a special behavior on 602 */ | ||
2707 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; | 2761 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; |
2708 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; | 2762 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; |
2709 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; | 2763 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; |
@@ -2715,7 +2769,6 @@ static void init_excp_602 (CPUPPCState *env) | @@ -2715,7 +2769,6 @@ static void init_excp_602 (CPUPPCState *env) | ||
2715 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; | 2769 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; |
2716 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; | 2770 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
2717 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; | 2771 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
2718 | - env->excp_vectors[POWERPC_EXCP_FPA] = 0x00000E00; | ||
2719 | env->excp_vectors[POWERPC_EXCP_IFTLB] = 0x00001000; | 2772 | env->excp_vectors[POWERPC_EXCP_IFTLB] = 0x00001000; |
2720 | env->excp_vectors[POWERPC_EXCP_DLTLB] = 0x00001100; | 2773 | env->excp_vectors[POWERPC_EXCP_DLTLB] = 0x00001100; |
2721 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; | 2774 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; |
@@ -2784,9 +2837,7 @@ static void init_excp_620 (CPUPPCState *env) | @@ -2784,9 +2837,7 @@ static void init_excp_620 (CPUPPCState *env) | ||
2784 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; | 2837 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; |
2785 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; | 2838 | env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; |
2786 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; | 2839 | env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; |
2787 | - env->excp_vectors[POWERPC_EXCP_DSEG] = 0x00000380; | ||
2788 | env->excp_vectors[POWERPC_EXCP_ISI] = 0x00000400; | 2840 | env->excp_vectors[POWERPC_EXCP_ISI] = 0x00000400; |
2789 | - env->excp_vectors[POWERPC_EXCP_ISEG] = 0x00000480; | ||
2790 | env->excp_vectors[POWERPC_EXCP_EXTERNAL] = 0x00000500; | 2841 | env->excp_vectors[POWERPC_EXCP_EXTERNAL] = 0x00000500; |
2791 | env->excp_vectors[POWERPC_EXCP_ALIGN] = 0x00000600; | 2842 | env->excp_vectors[POWERPC_EXCP_ALIGN] = 0x00000600; |
2792 | env->excp_vectors[POWERPC_EXCP_PROGRAM] = 0x00000700; | 2843 | env->excp_vectors[POWERPC_EXCP_PROGRAM] = 0x00000700; |
@@ -2794,7 +2845,6 @@ static void init_excp_620 (CPUPPCState *env) | @@ -2794,7 +2845,6 @@ static void init_excp_620 (CPUPPCState *env) | ||
2794 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; | 2845 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; |
2795 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; | 2846 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
2796 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; | 2847 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
2797 | - env->excp_vectors[POWERPC_EXCP_FPA] = 0x00000E00; | ||
2798 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; | 2848 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
2799 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; | 2849 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
2800 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; | 2850 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
@@ -2987,14 +3037,13 @@ static int check_pow_hid0 (CPUPPCState *env) | @@ -2987,14 +3037,13 @@ static int check_pow_hid0 (CPUPPCState *env) | ||
2987 | /*****************************************************************************/ | 3037 | /*****************************************************************************/ |
2988 | /* PowerPC implementations definitions */ | 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 | /* PowerPC 401 */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 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 | #define POWERPC_MSRM_401 (0x00000000000FD201ULL) | 3047 | #define POWERPC_MSRM_401 (0x00000000000FD201ULL) |
2999 | #define POWERPC_MMU_401 (POWERPC_MMU_REAL) | 3048 | #define POWERPC_MMU_401 (POWERPC_MMU_REAL) |
3000 | #define POWERPC_EXCP_401 (POWERPC_EXCP_40x) | 3049 | #define POWERPC_EXCP_401 (POWERPC_EXCP_40x) |
@@ -3017,11 +3066,13 @@ static void init_proc_401 (CPUPPCState *env) | @@ -3017,11 +3066,13 @@ static void init_proc_401 (CPUPPCState *env) | ||
3017 | } | 3066 | } |
3018 | 3067 | ||
3019 | /* PowerPC 401x2 */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 3073 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3022 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 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 | #define POWERPC_MSRM_401x2 (0x00000000001FD231ULL) | 3076 | #define POWERPC_MSRM_401x2 (0x00000000001FD231ULL) |
3026 | #define POWERPC_MMU_401x2 (POWERPC_MMU_SOFT_4xx_Z) | 3077 | #define POWERPC_MMU_401x2 (POWERPC_MMU_SOFT_4xx_Z) |
3027 | #define POWERPC_EXCP_401x2 (POWERPC_EXCP_40x) | 3078 | #define POWERPC_EXCP_401x2 (POWERPC_EXCP_40x) |
@@ -3051,11 +3102,13 @@ static void init_proc_401x2 (CPUPPCState *env) | @@ -3051,11 +3102,13 @@ static void init_proc_401x2 (CPUPPCState *env) | ||
3051 | } | 3102 | } |
3052 | 3103 | ||
3053 | /* PowerPC 401x3 */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 3109 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3056 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 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 | #define POWERPC_MSRM_401x3 (0x00000000001FD631ULL) | 3112 | #define POWERPC_MSRM_401x3 (0x00000000001FD631ULL) |
3060 | #define POWERPC_MMU_401x3 (POWERPC_MMU_SOFT_4xx_Z) | 3113 | #define POWERPC_MMU_401x3 (POWERPC_MMU_SOFT_4xx_Z) |
3061 | #define POWERPC_EXCP_401x3 (POWERPC_EXCP_40x) | 3114 | #define POWERPC_EXCP_401x3 (POWERPC_EXCP_40x) |
@@ -3081,11 +3134,13 @@ static void init_proc_401x3 (CPUPPCState *env) | @@ -3081,11 +3134,13 @@ static void init_proc_401x3 (CPUPPCState *env) | ||
3081 | } | 3134 | } |
3082 | 3135 | ||
3083 | /* IOP480 */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 3141 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3086 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 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 | #define POWERPC_MSRM_IOP480 (0x00000000001FD231ULL) | 3144 | #define POWERPC_MSRM_IOP480 (0x00000000001FD231ULL) |
3090 | #define POWERPC_MMU_IOP480 (POWERPC_MMU_SOFT_4xx_Z) | 3145 | #define POWERPC_MMU_IOP480 (POWERPC_MMU_SOFT_4xx_Z) |
3091 | #define POWERPC_EXCP_IOP480 (POWERPC_EXCP_40x) | 3146 | #define POWERPC_EXCP_IOP480 (POWERPC_EXCP_40x) |
@@ -3115,9 +3170,12 @@ static void init_proc_IOP480 (CPUPPCState *env) | @@ -3115,9 +3170,12 @@ static void init_proc_IOP480 (CPUPPCState *env) | ||
3115 | } | 3170 | } |
3116 | 3171 | ||
3117 | /* PowerPC 403 */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 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 | #define POWERPC_MSRM_403 (0x000000000007D00DULL) | 3179 | #define POWERPC_MSRM_403 (0x000000000007D00DULL) |
3122 | #define POWERPC_MMU_403 (POWERPC_MMU_REAL) | 3180 | #define POWERPC_MMU_403 (POWERPC_MMU_REAL) |
3123 | #define POWERPC_EXCP_403 (POWERPC_EXCP_40x) | 3181 | #define POWERPC_EXCP_403 (POWERPC_EXCP_40x) |
@@ -3145,10 +3203,13 @@ static void init_proc_403 (CPUPPCState *env) | @@ -3145,10 +3203,13 @@ static void init_proc_403 (CPUPPCState *env) | ||
3145 | } | 3203 | } |
3146 | 3204 | ||
3147 | /* PowerPC 403 GCX */ | 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 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 3210 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
3150 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 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 | #define POWERPC_MSRM_403GCX (0x000000000007D00DULL) | 3213 | #define POWERPC_MSRM_403GCX (0x000000000007D00DULL) |
3153 | #define POWERPC_MMU_403GCX (POWERPC_MMU_SOFT_4xx_Z) | 3214 | #define POWERPC_MMU_403GCX (POWERPC_MMU_SOFT_4xx_Z) |
3154 | #define POWERPC_EXCP_403GCX (POWERPC_EXCP_40x) | 3215 | #define POWERPC_EXCP_403GCX (POWERPC_EXCP_40x) |
@@ -3190,12 +3251,13 @@ static void init_proc_403GCX (CPUPPCState *env) | @@ -3190,12 +3251,13 @@ static void init_proc_403GCX (CPUPPCState *env) | ||
3190 | } | 3251 | } |
3191 | 3252 | ||
3192 | /* PowerPC 405 */ | 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 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 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 | #define POWERPC_MSRM_405 (0x000000000006E630ULL) | 3261 | #define POWERPC_MSRM_405 (0x000000000006E630ULL) |
3200 | #define POWERPC_MMU_405 (POWERPC_MMU_SOFT_4xx) | 3262 | #define POWERPC_MMU_405 (POWERPC_MMU_SOFT_4xx) |
3201 | #define POWERPC_EXCP_405 (POWERPC_EXCP_40x) | 3263 | #define POWERPC_EXCP_405 (POWERPC_EXCP_40x) |
@@ -3236,10 +3298,13 @@ static void init_proc_405 (CPUPPCState *env) | @@ -3236,10 +3298,13 @@ static void init_proc_405 (CPUPPCState *env) | ||
3236 | } | 3298 | } |
3237 | 3299 | ||
3238 | /* PowerPC 440 EP */ | 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 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | 3306 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3242 | - PPC_440_SPEC | PPC_RFMCI) | 3307 | + PPC_440_SPEC) |
3243 | #define POWERPC_MSRM_440EP (0x000000000006D630ULL) | 3308 | #define POWERPC_MSRM_440EP (0x000000000006D630ULL) |
3244 | #define POWERPC_MMU_440EP (POWERPC_MMU_BOOKE) | 3309 | #define POWERPC_MMU_440EP (POWERPC_MMU_BOOKE) |
3245 | #define POWERPC_EXCP_440EP (POWERPC_EXCP_BOOKE) | 3310 | #define POWERPC_EXCP_440EP (POWERPC_EXCP_BOOKE) |
@@ -3313,11 +3378,13 @@ static void init_proc_440EP (CPUPPCState *env) | @@ -3313,11 +3378,13 @@ static void init_proc_440EP (CPUPPCState *env) | ||
3313 | } | 3378 | } |
3314 | 3379 | ||
3315 | /* PowerPC 440 GP */ | 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 | #define POWERPC_MSRM_440GP (0x000000000006FF30ULL) | 3388 | #define POWERPC_MSRM_440GP (0x000000000006FF30ULL) |
3322 | #define POWERPC_MMU_440GP (POWERPC_MMU_BOOKE) | 3389 | #define POWERPC_MMU_440GP (POWERPC_MMU_BOOKE) |
3323 | #define POWERPC_EXCP_440GP (POWERPC_EXCP_BOOKE) | 3390 | #define POWERPC_EXCP_440GP (POWERPC_EXCP_BOOKE) |
@@ -3373,8 +3440,11 @@ static void init_proc_440GP (CPUPPCState *env) | @@ -3373,8 +3440,11 @@ static void init_proc_440GP (CPUPPCState *env) | ||
3373 | } | 3440 | } |
3374 | 3441 | ||
3375 | /* PowerPC 440x4 */ | 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 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | 3448 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3379 | PPC_440_SPEC) | 3449 | PPC_440_SPEC) |
3380 | #define POWERPC_MSRM_440x4 (0x000000000006FF30ULL) | 3450 | #define POWERPC_MSRM_440x4 (0x000000000006FF30ULL) |
@@ -3432,10 +3502,13 @@ static void init_proc_440x4 (CPUPPCState *env) | @@ -3432,10 +3502,13 @@ static void init_proc_440x4 (CPUPPCState *env) | ||
3432 | } | 3502 | } |
3433 | 3503 | ||
3434 | /* PowerPC 440x5 */ | 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 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | 3510 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
3438 | - PPC_440_SPEC | PPC_RFMCI) | 3511 | + PPC_440_SPEC) |
3439 | #define POWERPC_MSRM_440x5 (0x000000000006FF30ULL) | 3512 | #define POWERPC_MSRM_440x5 (0x000000000006FF30ULL) |
3440 | #define POWERPC_MMU_440x5 (POWERPC_MMU_BOOKE) | 3513 | #define POWERPC_MMU_440x5 (POWERPC_MMU_BOOKE) |
3441 | #define POWERPC_EXCP_440x5 (POWERPC_EXCP_BOOKE) | 3514 | #define POWERPC_EXCP_440x5 (POWERPC_EXCP_BOOKE) |
@@ -3509,11 +3582,14 @@ static void init_proc_440x5 (CPUPPCState *env) | @@ -3509,11 +3582,14 @@ static void init_proc_440x5 (CPUPPCState *env) | ||
3509 | } | 3582 | } |
3510 | 3583 | ||
3511 | /* PowerPC 460 (guessed) */ | 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 | PPC_DCR | PPC_DCRX | PPC_DCRUX | \ | 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 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) | 3593 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) |
3518 | #define POWERPC_MMU_460 (POWERPC_MMU_BOOKE) | 3594 | #define POWERPC_MMU_460 (POWERPC_MMU_BOOKE) |
3519 | #define POWERPC_EXCP_460 (POWERPC_EXCP_BOOKE) | 3595 | #define POWERPC_EXCP_460 (POWERPC_EXCP_BOOKE) |
@@ -3592,14 +3668,17 @@ static void init_proc_460 (CPUPPCState *env) | @@ -3592,14 +3668,17 @@ static void init_proc_460 (CPUPPCState *env) | ||
3592 | } | 3668 | } |
3593 | 3669 | ||
3594 | /* PowerPC 460F (guessed) */ | 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 | PPC_FLOAT_STFIWX | \ | 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 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) | 3682 | #define POWERPC_MSRM_460 (0x000000000006FF30ULL) |
3604 | #define POWERPC_MMU_460F (POWERPC_MMU_BOOKE) | 3683 | #define POWERPC_MMU_460F (POWERPC_MMU_BOOKE) |
3605 | #define POWERPC_EXCP_460F (POWERPC_EXCP_BOOKE) | 3684 | #define POWERPC_EXCP_460F (POWERPC_EXCP_BOOKE) |
@@ -3732,7 +3811,13 @@ static void init_proc_MPC8xx (CPUPPCState *env) | @@ -3732,7 +3811,13 @@ static void init_proc_MPC8xx (CPUPPCState *env) | ||
3732 | 3811 | ||
3733 | /* Freescale 82xx cores (aka PowerQUICC-II) */ | 3812 | /* Freescale 82xx cores (aka PowerQUICC-II) */ |
3734 | /* PowerPC G2 */ | 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 | #define POWERPC_MSRM_G2 (0x000000000006FFF2ULL) | 3821 | #define POWERPC_MSRM_G2 (0x000000000006FFF2ULL) |
3737 | #define POWERPC_MMU_G2 (POWERPC_MMU_SOFT_6xx) | 3822 | #define POWERPC_MMU_G2 (POWERPC_MMU_SOFT_6xx) |
3738 | //#define POWERPC_EXCP_G2 (POWERPC_EXCP_G2) | 3823 | //#define POWERPC_EXCP_G2 (POWERPC_EXCP_G2) |
@@ -3777,7 +3862,13 @@ static void init_proc_G2 (CPUPPCState *env) | @@ -3777,7 +3862,13 @@ static void init_proc_G2 (CPUPPCState *env) | ||
3777 | } | 3862 | } |
3778 | 3863 | ||
3779 | /* PowerPC G2LE */ | 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 | #define POWERPC_MSRM_G2LE (0x000000000007FFF3ULL) | 3872 | #define POWERPC_MSRM_G2LE (0x000000000007FFF3ULL) |
3782 | #define POWERPC_MMU_G2LE (POWERPC_MMU_SOFT_6xx) | 3873 | #define POWERPC_MMU_G2LE (POWERPC_MMU_SOFT_6xx) |
3783 | #define POWERPC_EXCP_G2LE (POWERPC_EXCP_G2) | 3874 | #define POWERPC_EXCP_G2LE (POWERPC_EXCP_G2) |
@@ -3831,11 +3922,13 @@ static void init_proc_G2LE (CPUPPCState *env) | @@ -3831,11 +3922,13 @@ static void init_proc_G2LE (CPUPPCState *env) | ||
3831 | * tlbivax | 3922 | * tlbivax |
3832 | * all SPE multiply-accumulate instructions | 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 | PPC_SPE | PPC_SPEFPU | \ | 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 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ | 3930 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ |
3837 | - PPC_CACHE_DCBA | PPC_CACHE_LOCK | \ | ||
3838 | - PPC_BOOKE | PPC_RFDI) | 3931 | + PPC_BOOKE) |
3839 | #define POWERPC_MSRM_e200 (0x000000000606FF30ULL) | 3932 | #define POWERPC_MSRM_e200 (0x000000000606FF30ULL) |
3840 | #define POWERPC_MMU_e200 (POWERPC_MMU_BOOKE_FSL) | 3933 | #define POWERPC_MMU_e200 (POWERPC_MMU_BOOKE_FSL) |
3841 | #define POWERPC_EXCP_e200 (POWERPC_EXCP_BOOKE) | 3934 | #define POWERPC_EXCP_e200 (POWERPC_EXCP_BOOKE) |
@@ -3949,7 +4042,13 @@ static void init_proc_e200 (CPUPPCState *env) | @@ -3949,7 +4042,13 @@ static void init_proc_e200 (CPUPPCState *env) | ||
3949 | } | 4042 | } |
3950 | 4043 | ||
3951 | /* e300 core */ | 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 | #define POWERPC_MSRM_e300 (0x000000000007FFF3ULL) | 4052 | #define POWERPC_MSRM_e300 (0x000000000007FFF3ULL) |
3954 | #define POWERPC_MMU_e300 (POWERPC_MMU_SOFT_6xx) | 4053 | #define POWERPC_MMU_e300 (POWERPC_MMU_SOFT_6xx) |
3955 | #define POWERPC_EXCP_e300 (POWERPC_EXCP_603) | 4054 | #define POWERPC_EXCP_e300 (POWERPC_EXCP_603) |
@@ -3988,11 +4087,13 @@ static void init_proc_e300 (CPUPPCState *env) | @@ -3988,11 +4087,13 @@ static void init_proc_e300 (CPUPPCState *env) | ||
3988 | } | 4087 | } |
3989 | 4088 | ||
3990 | /* e500 core */ | 4089 | /* e500 core */ |
3991 | -#define POWERPC_INSNS_e500 (POWERPC_INSNS_EMB | PPC_ISEL | \ | 4090 | +#define POWERPC_INSNS_e500 (PPC_INSNS_BASE | PPC_ISEL | \ |
3992 | PPC_SPE | PPC_SPEFPU | \ | 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 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ | 4095 | PPC_MEM_TLBSYNC | PPC_TLBIVAX | \ |
3994 | - PPC_CACHE_DCBA | PPC_CACHE_LOCK | \ | ||
3995 | - PPC_BOOKE | PPC_RFDI) | 4096 | + PPC_BOOKE) |
3996 | #define POWERPC_MSRM_e500 (0x000000000606FF30ULL) | 4097 | #define POWERPC_MSRM_e500 (0x000000000606FF30ULL) |
3997 | #define POWERPC_MMU_e500 (POWERPC_MMU_BOOKE_FSL) | 4098 | #define POWERPC_MMU_e500 (POWERPC_MMU_BOOKE_FSL) |
3998 | #define POWERPC_EXCP_e500 (POWERPC_EXCP_BOOKE) | 4099 | #define POWERPC_EXCP_e500 (POWERPC_EXCP_BOOKE) |
@@ -4109,16 +4210,6 @@ static void init_proc_e500 (CPUPPCState *env) | @@ -4109,16 +4210,6 @@ static void init_proc_e500 (CPUPPCState *env) | ||
4109 | } | 4210 | } |
4110 | 4211 | ||
4111 | /* Non-embedded PowerPC */ | 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 | /* POWER : same as 601, without mfmsr, mfsr */ | 4214 | /* POWER : same as 601, without mfmsr, mfsr */ |
4124 | #if defined(TODO) | 4215 | #if defined(TODO) |
@@ -4128,9 +4219,13 @@ static void init_proc_e500 (CPUPPCState *env) | @@ -4128,9 +4219,13 @@ static void init_proc_e500 (CPUPPCState *env) | ||
4128 | #endif /* TODO */ | 4219 | #endif /* TODO */ |
4129 | 4220 | ||
4130 | /* PowerPC 601 */ | 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 | #define POWERPC_MSRM_601 (0x000000000000FD70ULL) | 4227 | #define POWERPC_MSRM_601 (0x000000000000FD70ULL) |
4228 | +#define POWERPC_MSRR_601 (0x0000000000001040ULL) | ||
4134 | //#define POWERPC_MMU_601 (POWERPC_MMU_601) | 4229 | //#define POWERPC_MMU_601 (POWERPC_MMU_601) |
4135 | //#define POWERPC_EXCP_601 (POWERPC_EXCP_601) | 4230 | //#define POWERPC_EXCP_601 (POWERPC_EXCP_601) |
4136 | #define POWERPC_INPUT_601 (PPC_FLAGS_INPUT_6xx) | 4231 | #define POWERPC_INPUT_601 (PPC_FLAGS_INPUT_6xx) |
@@ -4163,31 +4258,53 @@ static void init_proc_601 (CPUPPCState *env) | @@ -4163,31 +4258,53 @@ static void init_proc_601 (CPUPPCState *env) | ||
4163 | SPR_NOACCESS, SPR_NOACCESS, | 4258 | SPR_NOACCESS, SPR_NOACCESS, |
4164 | &spr_read_generic, &spr_write_generic, | 4259 | &spr_read_generic, &spr_write_generic, |
4165 | 0x00000000); | 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 | /* Memory management */ | 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 | init_excp_601(env); | 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 | env->icache_line_size = 64; | 4268 | env->icache_line_size = 64; |
4180 | /* Allocate hardware IRQ controller */ | 4269 | /* Allocate hardware IRQ controller */ |
4181 | ppc6xx_irq_init(env); | 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 | /* PowerPC 602 */ | 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 | PPC_SEGMENT | PPC_602_SPEC) | 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 | #define POWERPC_MMU_602 (POWERPC_MMU_SOFT_6xx) | 4308 | #define POWERPC_MMU_602 (POWERPC_MMU_SOFT_6xx) |
4192 | //#define POWERPC_EXCP_602 (POWERPC_EXCP_602) | 4309 | //#define POWERPC_EXCP_602 (POWERPC_EXCP_602) |
4193 | #define POWERPC_INPUT_602 (PPC_FLAGS_INPUT_6xx) | 4310 | #define POWERPC_INPUT_602 (PPC_FLAGS_INPUT_6xx) |
@@ -4224,7 +4341,13 @@ static void init_proc_602 (CPUPPCState *env) | @@ -4224,7 +4341,13 @@ static void init_proc_602 (CPUPPCState *env) | ||
4224 | } | 4341 | } |
4225 | 4342 | ||
4226 | /* PowerPC 603 */ | 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 | #define POWERPC_MSRM_603 (0x000000000007FF73ULL) | 4351 | #define POWERPC_MSRM_603 (0x000000000007FF73ULL) |
4229 | #define POWERPC_MMU_603 (POWERPC_MMU_SOFT_6xx) | 4352 | #define POWERPC_MMU_603 (POWERPC_MMU_SOFT_6xx) |
4230 | //#define POWERPC_EXCP_603 (POWERPC_EXCP_603) | 4353 | //#define POWERPC_EXCP_603 (POWERPC_EXCP_603) |
@@ -4262,7 +4385,13 @@ static void init_proc_603 (CPUPPCState *env) | @@ -4262,7 +4385,13 @@ static void init_proc_603 (CPUPPCState *env) | ||
4262 | } | 4385 | } |
4263 | 4386 | ||
4264 | /* PowerPC 603e */ | 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 | #define POWERPC_MSRM_603E (0x000000000007FF73ULL) | 4395 | #define POWERPC_MSRM_603E (0x000000000007FF73ULL) |
4267 | #define POWERPC_MMU_603E (POWERPC_MMU_SOFT_6xx) | 4396 | #define POWERPC_MMU_603E (POWERPC_MMU_SOFT_6xx) |
4268 | //#define POWERPC_EXCP_603E (POWERPC_EXCP_603E) | 4397 | //#define POWERPC_EXCP_603E (POWERPC_EXCP_603E) |
@@ -4305,7 +4434,13 @@ static void init_proc_603E (CPUPPCState *env) | @@ -4305,7 +4434,13 @@ static void init_proc_603E (CPUPPCState *env) | ||
4305 | } | 4434 | } |
4306 | 4435 | ||
4307 | /* PowerPC 604 */ | 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 | #define POWERPC_MSRM_604 (0x000000000005FF77ULL) | 4444 | #define POWERPC_MSRM_604 (0x000000000005FF77ULL) |
4310 | #define POWERPC_MMU_604 (POWERPC_MMU_32B) | 4445 | #define POWERPC_MMU_604 (POWERPC_MMU_32B) |
4311 | //#define POWERPC_EXCP_604 (POWERPC_EXCP_604) | 4446 | //#define POWERPC_EXCP_604 (POWERPC_EXCP_604) |
@@ -4327,6 +4462,59 @@ static void init_proc_604 (CPUPPCState *env) | @@ -4327,6 +4462,59 @@ static void init_proc_604 (CPUPPCState *env) | ||
4327 | SPR_NOACCESS, SPR_NOACCESS, | 4462 | SPR_NOACCESS, SPR_NOACCESS, |
4328 | &spr_read_generic, &spr_write_generic, | 4463 | &spr_read_generic, &spr_write_generic, |
4329 | 0x00000000); | 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 | /* XXX : not implemented */ | 4518 | /* XXX : not implemented */ |
4331 | spr_register(env, SPR_HID1, "HID1", | 4519 | spr_register(env, SPR_HID1, "HID1", |
4332 | SPR_NOACCESS, SPR_NOACCESS, | 4520 | SPR_NOACCESS, SPR_NOACCESS, |
@@ -4342,7 +4530,14 @@ static void init_proc_604 (CPUPPCState *env) | @@ -4342,7 +4530,14 @@ static void init_proc_604 (CPUPPCState *env) | ||
4342 | } | 4530 | } |
4343 | 4531 | ||
4344 | /* PowerPC 740/750 (aka G3) */ | 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 | #define POWERPC_MSRM_7x0 (0x000000000005FF77ULL) | 4541 | #define POWERPC_MSRM_7x0 (0x000000000005FF77ULL) |
4347 | #define POWERPC_MMU_7x0 (POWERPC_MMU_32B) | 4542 | #define POWERPC_MMU_7x0 (POWERPC_MMU_32B) |
4348 | //#define POWERPC_EXCP_7x0 (POWERPC_EXCP_7x0) | 4543 | //#define POWERPC_EXCP_7x0 (POWERPC_EXCP_7x0) |
@@ -4381,7 +4576,14 @@ static void init_proc_7x0 (CPUPPCState *env) | @@ -4381,7 +4576,14 @@ static void init_proc_7x0 (CPUPPCState *env) | ||
4381 | } | 4576 | } |
4382 | 4577 | ||
4383 | /* PowerPC 750FX/GX */ | 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 | #define POWERPC_MSRM_750fx (0x000000000005FF77ULL) | 4587 | #define POWERPC_MSRM_750fx (0x000000000005FF77ULL) |
4386 | #define POWERPC_MMU_750fx (POWERPC_MMU_32B) | 4588 | #define POWERPC_MMU_750fx (POWERPC_MMU_32B) |
4387 | #define POWERPC_EXCP_750fx (POWERPC_EXCP_7x0) | 4589 | #define POWERPC_EXCP_750fx (POWERPC_EXCP_7x0) |
@@ -4427,7 +4629,14 @@ static void init_proc_750fx (CPUPPCState *env) | @@ -4427,7 +4629,14 @@ static void init_proc_750fx (CPUPPCState *env) | ||
4427 | } | 4629 | } |
4428 | 4630 | ||
4429 | /* PowerPC 745/755 */ | 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 | #define POWERPC_MSRM_7x5 (0x000000000005FF77ULL) | 4640 | #define POWERPC_MSRM_7x5 (0x000000000005FF77ULL) |
4432 | #define POWERPC_MMU_7x5 (POWERPC_MMU_SOFT_6xx) | 4641 | #define POWERPC_MMU_7x5 (POWERPC_MMU_SOFT_6xx) |
4433 | //#define POWERPC_EXCP_7x5 (POWERPC_EXCP_7x5) | 4642 | //#define POWERPC_EXCP_7x5 (POWERPC_EXCP_7x5) |
@@ -4486,8 +4695,16 @@ static void init_proc_7x5 (CPUPPCState *env) | @@ -4486,8 +4695,16 @@ static void init_proc_7x5 (CPUPPCState *env) | ||
4486 | } | 4695 | } |
4487 | 4696 | ||
4488 | /* PowerPC 7400 (aka G4) */ | 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 | PPC_ALTIVEC) | 4708 | PPC_ALTIVEC) |
4492 | #define POWERPC_MSRM_7400 (0x000000000205FF77ULL) | 4709 | #define POWERPC_MSRM_7400 (0x000000000205FF77ULL) |
4493 | #define POWERPC_MMU_7400 (POWERPC_MMU_32B) | 4710 | #define POWERPC_MMU_7400 (POWERPC_MMU_32B) |
@@ -4519,8 +4736,16 @@ static void init_proc_7400 (CPUPPCState *env) | @@ -4519,8 +4736,16 @@ static void init_proc_7400 (CPUPPCState *env) | ||
4519 | } | 4736 | } |
4520 | 4737 | ||
4521 | /* PowerPC 7410 (aka G4) */ | 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 | PPC_ALTIVEC) | 4749 | PPC_ALTIVEC) |
4525 | #define POWERPC_MSRM_7410 (0x000000000205FF77ULL) | 4750 | #define POWERPC_MSRM_7410 (0x000000000205FF77ULL) |
4526 | #define POWERPC_MMU_7410 (POWERPC_MMU_32B) | 4751 | #define POWERPC_MMU_7410 (POWERPC_MMU_32B) |
@@ -4564,8 +4789,16 @@ static void init_proc_7410 (CPUPPCState *env) | @@ -4564,8 +4789,16 @@ static void init_proc_7410 (CPUPPCState *env) | ||
4564 | } | 4789 | } |
4565 | 4790 | ||
4566 | /* PowerPC 7440 (aka G4) */ | 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 | PPC_ALTIVEC) | 4802 | PPC_ALTIVEC) |
4570 | #define POWERPC_MSRM_7440 (0x000000000205FF77ULL) | 4803 | #define POWERPC_MSRM_7440 (0x000000000205FF77ULL) |
4571 | #define POWERPC_MMU_7440 (POWERPC_MMU_SOFT_74xx) | 4804 | #define POWERPC_MMU_7440 (POWERPC_MMU_SOFT_74xx) |
@@ -4636,8 +4869,16 @@ static void init_proc_7440 (CPUPPCState *env) | @@ -4636,8 +4869,16 @@ static void init_proc_7440 (CPUPPCState *env) | ||
4636 | } | 4869 | } |
4637 | 4870 | ||
4638 | /* PowerPC 7450 (aka G4) */ | 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 | PPC_ALTIVEC) | 4882 | PPC_ALTIVEC) |
4642 | #define POWERPC_MSRM_7450 (0x000000000205FF77ULL) | 4883 | #define POWERPC_MSRM_7450 (0x000000000205FF77ULL) |
4643 | #define POWERPC_MMU_7450 (POWERPC_MMU_SOFT_74xx) | 4884 | #define POWERPC_MMU_7450 (POWERPC_MMU_SOFT_74xx) |
@@ -4710,8 +4951,16 @@ static void init_proc_7450 (CPUPPCState *env) | @@ -4710,8 +4951,16 @@ static void init_proc_7450 (CPUPPCState *env) | ||
4710 | } | 4951 | } |
4711 | 4952 | ||
4712 | /* PowerPC 7445 (aka G4) */ | 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 | PPC_ALTIVEC) | 4964 | PPC_ALTIVEC) |
4716 | #define POWERPC_MSRM_7445 (0x000000000205FF77ULL) | 4965 | #define POWERPC_MSRM_7445 (0x000000000205FF77ULL) |
4717 | #define POWERPC_MMU_7445 (POWERPC_MMU_SOFT_74xx) | 4966 | #define POWERPC_MMU_7445 (POWERPC_MMU_SOFT_74xx) |
@@ -4816,8 +5065,16 @@ static void init_proc_7445 (CPUPPCState *env) | @@ -4816,8 +5065,16 @@ static void init_proc_7445 (CPUPPCState *env) | ||
4816 | } | 5065 | } |
4817 | 5066 | ||
4818 | /* PowerPC 7455 (aka G4) */ | 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 | PPC_ALTIVEC) | 5078 | PPC_ALTIVEC) |
4822 | #define POWERPC_MSRM_7455 (0x000000000205FF77ULL) | 5079 | #define POWERPC_MSRM_7455 (0x000000000205FF77ULL) |
4823 | #define POWERPC_MMU_7455 (POWERPC_MMU_SOFT_74xx) | 5080 | #define POWERPC_MMU_7455 (POWERPC_MMU_SOFT_74xx) |
@@ -4924,12 +5181,14 @@ static void init_proc_7455 (CPUPPCState *env) | @@ -4924,12 +5181,14 @@ static void init_proc_7455 (CPUPPCState *env) | ||
4924 | } | 5181 | } |
4925 | 5182 | ||
4926 | #if defined (TARGET_PPC64) | 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 | /* PowerPC 970 */ | 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 | PPC_64B | PPC_ALTIVEC | \ | 5192 | PPC_64B | PPC_ALTIVEC | \ |
4934 | PPC_SEGMENT_64B | PPC_SLBI) | 5193 | PPC_SEGMENT_64B | PPC_SLBI) |
4935 | #define POWERPC_MSRM_970 (0x900000000204FF36ULL) | 5194 | #define POWERPC_MSRM_970 (0x900000000204FF36ULL) |
@@ -5010,7 +5269,13 @@ static void init_proc_970 (CPUPPCState *env) | @@ -5010,7 +5269,13 @@ static void init_proc_970 (CPUPPCState *env) | ||
5010 | } | 5269 | } |
5011 | 5270 | ||
5012 | /* PowerPC 970FX (aka G5) */ | 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 | PPC_64B | PPC_ALTIVEC | \ | 5279 | PPC_64B | PPC_ALTIVEC | \ |
5015 | PPC_SEGMENT_64B | PPC_SLBI) | 5280 | PPC_SEGMENT_64B | PPC_SLBI) |
5016 | #define POWERPC_MSRM_970FX (0x800000000204FF36ULL) | 5281 | #define POWERPC_MSRM_970FX (0x800000000204FF36ULL) |
@@ -5085,7 +5350,13 @@ static void init_proc_970FX (CPUPPCState *env) | @@ -5085,7 +5350,13 @@ static void init_proc_970FX (CPUPPCState *env) | ||
5085 | } | 5350 | } |
5086 | 5351 | ||
5087 | /* PowerPC 970 GX */ | 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 | PPC_64B | PPC_ALTIVEC | \ | 5360 | PPC_64B | PPC_ALTIVEC | \ |
5090 | PPC_SEGMENT_64B | PPC_SLBI) | 5361 | PPC_SEGMENT_64B | PPC_SLBI) |
5091 | #define POWERPC_MSRM_970GX (0x800000000204FF36ULL) | 5362 | #define POWERPC_MSRM_970GX (0x800000000204FF36ULL) |
@@ -5160,7 +5431,13 @@ static void init_proc_970GX (CPUPPCState *env) | @@ -5160,7 +5431,13 @@ static void init_proc_970GX (CPUPPCState *env) | ||
5160 | } | 5431 | } |
5161 | 5432 | ||
5162 | /* PowerPC 970 MP */ | 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 | PPC_64B | PPC_ALTIVEC | \ | 5441 | PPC_64B | PPC_ALTIVEC | \ |
5165 | PPC_SEGMENT_64B | PPC_SLBI) | 5442 | PPC_SEGMENT_64B | PPC_SLBI) |
5166 | #define POWERPC_MSRM_970MP (0x900000000204FF36ULL) | 5443 | #define POWERPC_MSRM_970MP (0x900000000204FF36ULL) |
@@ -5235,7 +5512,14 @@ static void init_proc_970MP (CPUPPCState *env) | @@ -5235,7 +5512,14 @@ static void init_proc_970MP (CPUPPCState *env) | ||
5235 | } | 5512 | } |
5236 | 5513 | ||
5237 | /* PowerPC 620 */ | 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 | PPC_64B | PPC_SLBI) | 5523 | PPC_64B | PPC_SLBI) |
5240 | #define POWERPC_MSRM_620 (0x800000000005FF77ULL) | 5524 | #define POWERPC_MSRM_620 (0x800000000005FF77ULL) |
5241 | //#define POWERPC_MMU_620 (POWERPC_MMU_620) | 5525 | //#define POWERPC_MMU_620 (POWERPC_MMU_620) |
@@ -5261,7 +5545,6 @@ static void init_proc_620 (CPUPPCState *env) | @@ -5261,7 +5545,6 @@ static void init_proc_620 (CPUPPCState *env) | ||
5261 | 0x00000000); | 5545 | 0x00000000); |
5262 | /* Memory management */ | 5546 | /* Memory management */ |
5263 | gen_low_BATs(env); | 5547 | gen_low_BATs(env); |
5264 | - gen_high_BATs(env); | ||
5265 | init_excp_620(env); | 5548 | init_excp_620(env); |
5266 | env->dcache_line_size = 64; | 5549 | env->dcache_line_size = 64; |
5267 | env->icache_line_size = 64; | 5550 | env->icache_line_size = 64; |
@@ -5938,12 +6221,13 @@ enum { | @@ -5938,12 +6221,13 @@ enum { | ||
5938 | CPU_POWERPC_74x5_v33 = 0x80010303, /* aka F: 3.3 */ | 6221 | CPU_POWERPC_74x5_v33 = 0x80010303, /* aka F: 3.3 */ |
5939 | CPU_POWERPC_74x5_v34 = 0x80010304, /* aka G: 3.4 */ | 6222 | CPU_POWERPC_74x5_v34 = 0x80010304, /* aka G: 3.4 */ |
5940 | #define CPU_POWERPC_74x7 CPU_POWERPC_74x7_v12 | 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 | CPU_POWERPC_74x7_v10 = 0x80020100, /* aka A: 1.0 */ | 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 | CPU_POWERPC_74x7_v12 = 0x80020102, /* aka C: 1.2 */ | 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 | /* 64 bits PowerPC */ | 6231 | /* 64 bits PowerPC */ |
5948 | #if defined(TARGET_PPC64) | 6232 | #if defined(TARGET_PPC64) |
5949 | CPU_POWERPC_620 = 0x00140000, | 6233 | CPU_POWERPC_620 = 0x00140000, |
@@ -6714,7 +6998,7 @@ static const ppc_def_t ppc_defs[] = { | @@ -6714,7 +6998,7 @@ static const ppc_def_t ppc_defs[] = { | ||
6714 | /* MPC8240 */ | 6998 | /* MPC8240 */ |
6715 | POWERPC_DEF("MPC8240", CPU_POWERPC_MPC8240, 603E), | 6999 | POWERPC_DEF("MPC8240", CPU_POWERPC_MPC8240, 603E), |
6716 | /* PowerPC G2 microcontrollers */ | 7000 | /* PowerPC G2 microcontrollers */ |
6717 | -#if 0 | 7001 | +#if defined(TODO) |
6718 | /* MPC5121 */ | 7002 | /* MPC5121 */ |
6719 | POWERPC_DEF_SVR("MPC5121", | 7003 | POWERPC_DEF_SVR("MPC5121", |
6720 | CPU_POWERPC_MPC5121, POWERPC_SVR_5121, G2LE), | 7004 | CPU_POWERPC_MPC5121, POWERPC_SVR_5121, G2LE), |
@@ -7295,18 +7579,20 @@ static const ppc_def_t ppc_defs[] = { | @@ -7295,18 +7579,20 @@ static const ppc_def_t ppc_defs[] = { | ||
7295 | /* PowerPC 601 */ | 7579 | /* PowerPC 601 */ |
7296 | POWERPC_DEF("601", CPU_POWERPC_601, 601), | 7580 | POWERPC_DEF("601", CPU_POWERPC_601, 601), |
7297 | /* PowerPC 601v0 */ | 7581 | /* PowerPC 601v0 */ |
7298 | - POWERPC_DEF("601v0", CPU_POWERPC_601_v0, 601), | 7582 | + POWERPC_DEF("601_v0", CPU_POWERPC_601_v0, 601), |
7299 | /* PowerPC 601v1 */ | 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 | /* PowerPC 601v2 */ | 7587 | /* PowerPC 601v2 */ |
7302 | - POWERPC_DEF("601v2", CPU_POWERPC_601_v2, 601), | 7588 | + POWERPC_DEF("601_v2", CPU_POWERPC_601_v2, 601v), |
7303 | /* PowerPC 602 */ | 7589 | /* PowerPC 602 */ |
7304 | POWERPC_DEF("602", CPU_POWERPC_602, 602), | 7590 | POWERPC_DEF("602", CPU_POWERPC_602, 602), |
7305 | /* PowerPC 603 */ | 7591 | /* PowerPC 603 */ |
7306 | POWERPC_DEF("603", CPU_POWERPC_603, 603), | 7592 | POWERPC_DEF("603", CPU_POWERPC_603, 603), |
7307 | /* Code name for PowerPC 603 */ | 7593 | /* Code name for PowerPC 603 */ |
7308 | POWERPC_DEF("Vanilla", CPU_POWERPC_603, 603), | 7594 | POWERPC_DEF("Vanilla", CPU_POWERPC_603, 603), |
7309 | - /* PowerPC 603e */ | 7595 | + /* PowerPC 603e (aka PID6) */ |
7310 | POWERPC_DEF("603e", CPU_POWERPC_603E, 603E), | 7596 | POWERPC_DEF("603e", CPU_POWERPC_603E, 603E), |
7311 | /* Code name for PowerPC 603e */ | 7597 | /* Code name for PowerPC 603e */ |
7312 | POWERPC_DEF("Stretch", CPU_POWERPC_603E, 603E), | 7598 | POWERPC_DEF("Stretch", CPU_POWERPC_603E, 603E), |
@@ -7326,7 +7612,7 @@ static const ppc_def_t ppc_defs[] = { | @@ -7326,7 +7612,7 @@ static const ppc_def_t ppc_defs[] = { | ||
7326 | POWERPC_DEF("603e_v4", CPU_POWERPC_603E_v4, 603E), | 7612 | POWERPC_DEF("603e_v4", CPU_POWERPC_603E_v4, 603E), |
7327 | /* PowerPC 603e v4.1 */ | 7613 | /* PowerPC 603e v4.1 */ |
7328 | POWERPC_DEF("603e_v4.1", CPU_POWERPC_603E_v41, 603E), | 7614 | POWERPC_DEF("603e_v4.1", CPU_POWERPC_603E_v41, 603E), |
7329 | - /* PowerPC 603e */ | 7615 | + /* PowerPC 603e (aka PID7) */ |
7330 | POWERPC_DEF("603e7", CPU_POWERPC_603E7, 603E), | 7616 | POWERPC_DEF("603e7", CPU_POWERPC_603E7, 603E), |
7331 | /* PowerPC 603e7t */ | 7617 | /* PowerPC 603e7t */ |
7332 | POWERPC_DEF("603e7t", CPU_POWERPC_603E7t, 603E), | 7618 | POWERPC_DEF("603e7t", CPU_POWERPC_603E7t, 603E), |
@@ -7338,38 +7624,41 @@ static const ppc_def_t ppc_defs[] = { | @@ -7338,38 +7624,41 @@ static const ppc_def_t ppc_defs[] = { | ||
7338 | POWERPC_DEF("603e7v1", CPU_POWERPC_603E7v1, 603E), | 7624 | POWERPC_DEF("603e7v1", CPU_POWERPC_603E7v1, 603E), |
7339 | /* PowerPC 603e7v2 */ | 7625 | /* PowerPC 603e7v2 */ |
7340 | POWERPC_DEF("603e7v2", CPU_POWERPC_603E7v2, 603E), | 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 | POWERPC_DEF("603r", CPU_POWERPC_603R, 603E), | 7630 | POWERPC_DEF("603r", CPU_POWERPC_603R, 603E), |
7346 | /* Code name for PowerPC 603r */ | 7631 | /* Code name for PowerPC 603r */ |
7347 | POWERPC_DEF("Goldeneye", CPU_POWERPC_603R, 603E), | 7632 | POWERPC_DEF("Goldeneye", CPU_POWERPC_603R, 603E), |
7348 | /* PowerPC 604 */ | 7633 | /* PowerPC 604 */ |
7349 | POWERPC_DEF("604", CPU_POWERPC_604, 604), | 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 | /* PowerPC 604e v1.0 */ | 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 | /* PowerPC 604e v2.2 */ | 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 | /* PowerPC 604e v2.4 */ | 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 | #if defined(TODO) | 7649 | #if defined(TODO) |
7362 | /* PowerPC 604ev */ | 7650 | /* PowerPC 604ev */ |
7363 | - POWERPC_DEF("604ev", CPU_POWERPC_604EV, 604), | 7651 | + POWERPC_DEF("604ev", CPU_POWERPC_604EV, 604E), |
7364 | #endif | 7652 | #endif |
7365 | /* PowerPC 7xx family */ | 7653 | /* PowerPC 7xx family */ |
7366 | /* Generic PowerPC 740 (G3) */ | 7654 | /* Generic PowerPC 740 (G3) */ |
7367 | POWERPC_DEF("740", CPU_POWERPC_7x0, 7x0), | 7655 | POWERPC_DEF("740", CPU_POWERPC_7x0, 7x0), |
7656 | + /* Code name for PowerPC 740 */ | ||
7657 | + POWERPC_DEF("Arthur", CPU_POWERPC_7x0, 7x0), | ||
7368 | /* Generic PowerPC 750 (G3) */ | 7658 | /* Generic PowerPC 750 (G3) */ |
7369 | POWERPC_DEF("750", CPU_POWERPC_7x0, 7x0), | 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 | /* PowerPC 740/750 is also known as G3 */ | 7662 | /* PowerPC 740/750 is also known as G3 */ |
7374 | POWERPC_DEF("G3", CPU_POWERPC_7x0, 7x0), | 7663 | POWERPC_DEF("G3", CPU_POWERPC_7x0, 7x0), |
7375 | /* PowerPC 740 v2.0 (G3) */ | 7664 | /* PowerPC 740 v2.0 (G3) */ |
@@ -7411,17 +7700,17 @@ static const ppc_def_t ppc_defs[] = { | @@ -7411,17 +7700,17 @@ static const ppc_def_t ppc_defs[] = { | ||
7411 | /* PowerPC 750CXe (G3 embedded) */ | 7700 | /* PowerPC 750CXe (G3 embedded) */ |
7412 | POWERPC_DEF("750cxe", CPU_POWERPC_750CXE, 7x0), | 7701 | POWERPC_DEF("750cxe", CPU_POWERPC_750CXE, 7x0), |
7413 | /* PowerPC 750CXe v2.1 (G3 embedded) */ | 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 | /* PowerPC 750CXe v2.2 (G3 embedded) */ | 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 | /* PowerPC 750CXe v2.3 (G3 embedded) */ | 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 | /* PowerPC 750CXe v2.4 (G3 embedded) */ | 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 | /* PowerPC 750CXe v2.4b (G3 embedded) */ | 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 | /* PowerPC 750CXe v3.1 (G3 embedded) */ | 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 | /* PowerPC 750CXe v3.1b (G3 embedded) */ | 7714 | /* PowerPC 750CXe v3.1b (G3 embedded) */ |
7426 | POWERPC_DEF("750cxe_v3.1b", CPU_POWERPC_750CXE_v31b, 7x0), | 7715 | POWERPC_DEF("750cxe_v3.1b", CPU_POWERPC_750CXE_v31b, 7x0), |
7427 | /* PowerPC 750CXr (G3 embedded) */ | 7716 | /* PowerPC 750CXr (G3 embedded) */ |
@@ -7623,8 +7912,6 @@ static const ppc_def_t ppc_defs[] = { | @@ -7623,8 +7912,6 @@ static const ppc_def_t ppc_defs[] = { | ||
7623 | POWERPC_DEF("7447_v1.0", CPU_POWERPC_74x7_v10, 7445), | 7912 | POWERPC_DEF("7447_v1.0", CPU_POWERPC_74x7_v10, 7445), |
7624 | /* PowerPC 7457 v1.0 (G4) */ | 7913 | /* PowerPC 7457 v1.0 (G4) */ |
7625 | POWERPC_DEF("7457_v1.0", CPU_POWERPC_74x7_v10, 7455), | 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 | /* PowerPC 7447 v1.1 (G4) */ | 7915 | /* PowerPC 7447 v1.1 (G4) */ |
7629 | POWERPC_DEF("7447_v1.1", CPU_POWERPC_74x7_v11, 7445), | 7916 | POWERPC_DEF("7447_v1.1", CPU_POWERPC_74x7_v11, 7445), |
7630 | /* PowerPC 7457 v1.1 (G4) */ | 7917 | /* PowerPC 7457 v1.1 (G4) */ |
@@ -7633,16 +7920,37 @@ static const ppc_def_t ppc_defs[] = { | @@ -7633,16 +7920,37 @@ static const ppc_def_t ppc_defs[] = { | ||
7633 | POWERPC_DEF("7447_v1.2", CPU_POWERPC_74x7_v12, 7445), | 7920 | POWERPC_DEF("7447_v1.2", CPU_POWERPC_74x7_v12, 7445), |
7634 | /* PowerPC 7457 v1.2 (G4) */ | 7921 | /* PowerPC 7457 v1.2 (G4) */ |
7635 | POWERPC_DEF("7457_v1.2", CPU_POWERPC_74x7_v12, 7455), | 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 | /* 64 bits PowerPC */ | 7941 | /* 64 bits PowerPC */ |
7637 | #if defined (TARGET_PPC64) | 7942 | #if defined (TARGET_PPC64) |
7638 | /* PowerPC 620 */ | 7943 | /* PowerPC 620 */ |
7639 | - /* XXX: code name "Trident" */ | ||
7640 | POWERPC_DEF("620", CPU_POWERPC_620, 620), | 7944 | POWERPC_DEF("620", CPU_POWERPC_620, 620), |
7945 | + /* Code name for PowerPC 620 */ | ||
7946 | + POWERPC_DEF("Trident", CPU_POWERPC_620, 620), | ||
7641 | #if defined (TODO) | 7947 | #if defined (TODO) |
7642 | /* PowerPC 630 (POWER3) */ | 7948 | /* PowerPC 630 (POWER3) */ |
7643 | - /* XXX: code names: "Boxer" "Dino" */ | ||
7644 | POWERPC_DEF("630", CPU_POWERPC_630, 630), | 7949 | POWERPC_DEF("630", CPU_POWERPC_630, 630), |
7645 | POWERPC_DEF("POWER3", CPU_POWERPC_630, 630), | 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 | #endif | 7954 | #endif |
7647 | #if defined (TODO) | 7955 | #if defined (TODO) |
7648 | /* PowerPC 631 (Power 3+) */ | 7956 | /* PowerPC 631 (Power 3+) */ |