Commit bd928ebafe5a5e318d5ec71c1aec4400721179ae
1 parent
325e651f
Fix PowerPC 7xx definitions.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3713 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
630 additions
and
133 deletions
target-ppc/cpu.h
| ... | ... | @@ -357,6 +357,7 @@ union ppc_tlb_t { |
| 357 | 357 | /*****************************************************************************/ |
| 358 | 358 | /* Machine state register bits definition */ |
| 359 | 359 | #define MSR_SF 63 /* Sixty-four-bit mode hflags */ |
| 360 | +#define MSR_TAG 62 /* Tag-active mode (POWERx ?) */ | |
| 360 | 361 | #define MSR_ISF 61 /* Sixty-four-bit interrupt mode on 630 */ |
| 361 | 362 | #define MSR_SHV 60 /* hypervisor state hflags */ |
| 362 | 363 | #define MSR_CM 31 /* Computation mode for BookE hflags */ |
| ... | ... | @@ -1115,16 +1116,29 @@ static inline int cpu_mmu_index (CPUState *env) |
| 1115 | 1116 | #define SPR_440_CCR1 (0x378) |
| 1116 | 1117 | #define SPR_DCRIPR (0x37B) |
| 1117 | 1118 | #define SPR_PPR (0x380) |
| 1119 | +#define SPR_750_GQR0 (0x390) | |
| 1118 | 1120 | #define SPR_440_DNV0 (0x390) |
| 1121 | +#define SPR_750_GQR1 (0x391) | |
| 1119 | 1122 | #define SPR_440_DNV1 (0x391) |
| 1123 | +#define SPR_750_GQR2 (0x392) | |
| 1120 | 1124 | #define SPR_440_DNV2 (0x392) |
| 1125 | +#define SPR_750_GQR3 (0x393) | |
| 1121 | 1126 | #define SPR_440_DNV3 (0x393) |
| 1127 | +#define SPR_750_GQR4 (0x394) | |
| 1122 | 1128 | #define SPR_440_DTV0 (0x394) |
| 1129 | +#define SPR_750_GQR5 (0x395) | |
| 1123 | 1130 | #define SPR_440_DTV1 (0x395) |
| 1131 | +#define SPR_750_GQR6 (0x396) | |
| 1124 | 1132 | #define SPR_440_DTV2 (0x396) |
| 1133 | +#define SPR_750_GQR7 (0x397) | |
| 1125 | 1134 | #define SPR_440_DTV3 (0x397) |
| 1135 | +#define SPR_750_THRM4 (0x398) | |
| 1136 | +#define SPR_750CL_HID2 (0x398) | |
| 1126 | 1137 | #define SPR_440_DVLIM (0x398) |
| 1138 | +#define SPR_750_WPAR (0x399) | |
| 1127 | 1139 | #define SPR_440_IVLIM (0x399) |
| 1140 | +#define SPR_750_DMAU (0x39A) | |
| 1141 | +#define SPR_750_DMAL (0x39B) | |
| 1128 | 1142 | #define SPR_440_RSTCFG (0x39B) |
| 1129 | 1143 | #define SPR_BOOKE_DCDBTRL (0x39C) |
| 1130 | 1144 | #define SPR_BOOKE_DCDBTRH (0x39D) |
| ... | ... | @@ -1231,9 +1245,11 @@ static inline int cpu_mmu_index (CPUState *env) |
| 1231 | 1245 | #define SPR_Exxx_L1CSR0 (0x3F2) |
| 1232 | 1246 | #define SPR_ICTRL (0x3F3) |
| 1233 | 1247 | #define SPR_HID2 (0x3F3) |
| 1248 | +#define SPR_750CL_HID4 (0x3F3) | |
| 1234 | 1249 | #define SPR_Exxx_L1CSR1 (0x3F3) |
| 1235 | 1250 | #define SPR_440_DBDR (0x3F3) |
| 1236 | 1251 | #define SPR_LDSTDB (0x3F4) |
| 1252 | +#define SPR_750_TDCL (0x3F4) | |
| 1237 | 1253 | #define SPR_40x_IAC1 (0x3F4) |
| 1238 | 1254 | #define SPR_MMUCSR0 (0x3F4) |
| 1239 | 1255 | #define SPR_DABR (0x3F5) |
| ... | ... | @@ -1250,12 +1266,13 @@ static inline int cpu_mmu_index (CPUState *env) |
| 1250 | 1266 | #define SPR_MMUCFG (0x3F7) |
| 1251 | 1267 | #define SPR_LDSTCR (0x3F8) |
| 1252 | 1268 | #define SPR_L2PMCR (0x3F8) |
| 1253 | -#define SPR_750_HID2 (0x3F8) | |
| 1269 | +#define SPR_750FX_HID2 (0x3F8) | |
| 1254 | 1270 | #define SPR_620_BUSCSR (0x3F8) |
| 1255 | 1271 | #define SPR_Exxx_L1FINV0 (0x3F8) |
| 1256 | 1272 | #define SPR_L2CR (0x3F9) |
| 1257 | 1273 | #define SPR_620_L2CR (0x3F9) |
| 1258 | 1274 | #define SPR_L3CR (0x3FA) |
| 1275 | +#define SPR_750_TDCH (0x3FA) | |
| 1259 | 1276 | #define SPR_IABR2 (0x3FA) |
| 1260 | 1277 | #define SPR_40x_DCCR (0x3FA) |
| 1261 | 1278 | #define SPR_620_L2SR (0x3FA) | ... | ... |
target-ppc/translate_init.c
| ... | ... | @@ -764,12 +764,6 @@ static void gen_spr_G2_755 (CPUPPCState *env) |
| 764 | 764 | SPR_NOACCESS, SPR_NOACCESS, |
| 765 | 765 | &spr_read_generic, &spr_write_generic, |
| 766 | 766 | 0x00000000); |
| 767 | - /* External access control */ | |
| 768 | - /* XXX : not implemented */ | |
| 769 | - spr_register(env, SPR_EAR, "EAR", | |
| 770 | - SPR_NOACCESS, SPR_NOACCESS, | |
| 771 | - &spr_read_generic, &spr_write_generic, | |
| 772 | - 0x00000000); | |
| 773 | 767 | } |
| 774 | 768 | |
| 775 | 769 | /* SPR common to all 7xx PowerPC implementations */ |
| ... | ... | @@ -792,11 +786,6 @@ static void gen_spr_7xx (CPUPPCState *env) |
| 792 | 786 | SPR_NOACCESS, SPR_NOACCESS, |
| 793 | 787 | &spr_read_generic, &spr_write_generic, |
| 794 | 788 | 0x00000000); |
| 795 | - /* XXX : not implemented */ | |
| 796 | - spr_register(env, SPR_L2CR, "L2CR", | |
| 797 | - SPR_NOACCESS, SPR_NOACCESS, | |
| 798 | - &spr_read_generic, &spr_write_generic, | |
| 799 | - 0x00000000); | |
| 800 | 789 | /* Performance monitors */ |
| 801 | 790 | /* XXX : not implemented */ |
| 802 | 791 | spr_register(env, SPR_MMCR0, "MMCR0", |
| ... | ... | @@ -1185,6 +1174,11 @@ static void gen_spr_74xx (CPUPPCState *env) |
| 1185 | 1174 | &spr_read_generic, &spr_write_generic, |
| 1186 | 1175 | &spr_read_generic, &spr_write_generic, |
| 1187 | 1176 | 0x00000000); |
| 1177 | + /* XXX : not implemented */ | |
| 1178 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 1179 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 1180 | + &spr_read_generic, &spr_write_generic, | |
| 1181 | + 0x00000000); | |
| 1188 | 1182 | } |
| 1189 | 1183 | |
| 1190 | 1184 | static void gen_l3_ctrl (CPUPPCState *env) |
| ... | ... | @@ -2871,6 +2865,7 @@ static void init_excp_7x0 (CPUPPCState *env) |
| 2871 | 2865 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
| 2872 | 2866 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
| 2873 | 2867 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2868 | + env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; | |
| 2874 | 2869 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; |
| 2875 | 2870 | env->excp_prefix = 0x00000000UL; |
| 2876 | 2871 | /* Hardware reset vector */ |
| ... | ... | @@ -2878,7 +2873,7 @@ static void init_excp_7x0 (CPUPPCState *env) |
| 2878 | 2873 | #endif |
| 2879 | 2874 | } |
| 2880 | 2875 | |
| 2881 | -static void init_excp_750FX (CPUPPCState *env) | |
| 2876 | +static void init_excp_750cl (CPUPPCState *env) | |
| 2882 | 2877 | { |
| 2883 | 2878 | #if !defined(CONFIG_USER_ONLY) |
| 2884 | 2879 | env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; |
| ... | ... | @@ -2895,6 +2890,28 @@ static void init_excp_750FX (CPUPPCState *env) |
| 2895 | 2890 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
| 2896 | 2891 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2897 | 2892 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2893 | + env->excp_prefix = 0x00000000UL; | |
| 2894 | + /* Hardware reset vector */ | |
| 2895 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2896 | +#endif | |
| 2897 | +} | |
| 2898 | + | |
| 2899 | +static void init_excp_750cx (CPUPPCState *env) | |
| 2900 | +{ | |
| 2901 | +#if !defined(CONFIG_USER_ONLY) | |
| 2902 | + env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100; | |
| 2903 | + env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200; | |
| 2904 | + env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300; | |
| 2905 | + env->excp_vectors[POWERPC_EXCP_ISI] = 0x00000400; | |
| 2906 | + env->excp_vectors[POWERPC_EXCP_EXTERNAL] = 0x00000500; | |
| 2907 | + env->excp_vectors[POWERPC_EXCP_ALIGN] = 0x00000600; | |
| 2908 | + env->excp_vectors[POWERPC_EXCP_PROGRAM] = 0x00000700; | |
| 2909 | + env->excp_vectors[POWERPC_EXCP_FPU] = 0x00000800; | |
| 2910 | + env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; | |
| 2911 | + env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; | |
| 2912 | + env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; | |
| 2913 | + env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; | |
| 2914 | + env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; | |
| 2898 | 2915 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; |
| 2899 | 2916 | env->excp_prefix = 0x00000000UL; |
| 2900 | 2917 | /* Hardware reset vector */ |
| ... | ... | @@ -2917,12 +2934,13 @@ static void init_excp_7x5 (CPUPPCState *env) |
| 2917 | 2934 | env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900; |
| 2918 | 2935 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
| 2919 | 2936 | env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00; |
| 2937 | + env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; | |
| 2920 | 2938 | env->excp_vectors[POWERPC_EXCP_IFTLB] = 0x00001000; |
| 2921 | 2939 | env->excp_vectors[POWERPC_EXCP_DLTLB] = 0x00001100; |
| 2922 | 2940 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; |
| 2923 | - env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; | |
| 2924 | 2941 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2925 | 2942 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2943 | + env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; | |
| 2926 | 2944 | env->excp_prefix = 0x00000000UL; |
| 2927 | 2945 | /* Hardware reset vector */ |
| 2928 | 2946 | env->hreset_vector = 0xFFFFFFFCUL; |
| ... | ... | @@ -3196,10 +3214,6 @@ static void init_proc_403 (CPUPPCState *env) |
| 3196 | 3214 | env->icache_line_size = 32; |
| 3197 | 3215 | /* Allocate hardware IRQ controller */ |
| 3198 | 3216 | ppc40x_irq_init(env); |
| 3199 | -#if !defined(CONFIG_USER_ONLY) | |
| 3200 | - /* Hardware reset vector */ | |
| 3201 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3202 | -#endif | |
| 3203 | 3217 | } |
| 3204 | 3218 | |
| 3205 | 3219 | /* PowerPC 403 GCX */ |
| ... | ... | @@ -3834,6 +3848,12 @@ static void init_proc_G2 (CPUPPCState *env) |
| 3834 | 3848 | gen_spr_G2(env); |
| 3835 | 3849 | /* Time base */ |
| 3836 | 3850 | gen_tbl(env); |
| 3851 | + /* External access control */ | |
| 3852 | + /* XXX : not implemented */ | |
| 3853 | + spr_register(env, SPR_EAR, "EAR", | |
| 3854 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 3855 | + &spr_read_generic, &spr_write_generic, | |
| 3856 | + 0x00000000); | |
| 3837 | 3857 | /* Hardware implementation register */ |
| 3838 | 3858 | /* XXX : not implemented */ |
| 3839 | 3859 | spr_register(env, SPR_HID0, "HID0", |
| ... | ... | @@ -3885,6 +3905,12 @@ static void init_proc_G2LE (CPUPPCState *env) |
| 3885 | 3905 | gen_spr_G2(env); |
| 3886 | 3906 | /* Time base */ |
| 3887 | 3907 | gen_tbl(env); |
| 3908 | + /* External access control */ | |
| 3909 | + /* XXX : not implemented */ | |
| 3910 | + spr_register(env, SPR_EAR, "EAR", | |
| 3911 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 3912 | + &spr_read_generic, &spr_write_generic, | |
| 3913 | + 0x00000000); | |
| 3888 | 3914 | /* Hardware implementation register */ |
| 3889 | 3915 | /* XXX : not implemented */ |
| 3890 | 3916 | spr_register(env, SPR_HID0, "HID0", |
| ... | ... | @@ -4529,25 +4555,24 @@ static void init_proc_604E (CPUPPCState *env) |
| 4529 | 4555 | ppc6xx_irq_init(env); |
| 4530 | 4556 | } |
| 4531 | 4557 | |
| 4532 | -/* PowerPC 740/750 (aka G3) */ | |
| 4533 | -#define POWERPC_INSNS_7x0 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4558 | +/* PowerPC 740 */ | |
| 4559 | +#define POWERPC_INSNS_740 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4534 | 4560 | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ |
| 4535 | - PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
| 4536 | - PPC_FLOAT_STFIWX | \ | |
| 4561 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4537 | 4562 | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ |
| 4538 | 4563 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
| 4539 | 4564 | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ |
| 4540 | 4565 | PPC_SEGMENT | PPC_EXTERN) |
| 4541 | -#define POWERPC_MSRM_7x0 (0x000000000005FF77ULL) | |
| 4542 | -#define POWERPC_MMU_7x0 (POWERPC_MMU_32B) | |
| 4543 | -//#define POWERPC_EXCP_7x0 (POWERPC_EXCP_7x0) | |
| 4544 | -#define POWERPC_INPUT_7x0 (PPC_FLAGS_INPUT_6xx) | |
| 4545 | -#define POWERPC_BFDM_7x0 (bfd_mach_ppc_750) | |
| 4546 | -#define POWERPC_FLAG_7x0 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4566 | +#define POWERPC_MSRM_740 (0x000000000005FF77ULL) | |
| 4567 | +#define POWERPC_MMU_740 (POWERPC_MMU_32B) | |
| 4568 | +#define POWERPC_EXCP_740 (POWERPC_EXCP_7x0) | |
| 4569 | +#define POWERPC_INPUT_740 (PPC_FLAGS_INPUT_6xx) | |
| 4570 | +#define POWERPC_BFDM_740 (bfd_mach_ppc_750) | |
| 4571 | +#define POWERPC_FLAG_740 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4547 | 4572 | POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) |
| 4548 | -#define check_pow_7x0 check_pow_hid0 | |
| 4573 | +#define check_pow_740 check_pow_hid0 | |
| 4549 | 4574 | |
| 4550 | -static void init_proc_7x0 (CPUPPCState *env) | |
| 4575 | +static void init_proc_740 (CPUPPCState *env) | |
| 4551 | 4576 | { |
| 4552 | 4577 | gen_spr_ne_601(env); |
| 4553 | 4578 | gen_spr_7xx(env); |
| ... | ... | @@ -4575,11 +4600,296 @@ static void init_proc_7x0 (CPUPPCState *env) |
| 4575 | 4600 | ppc6xx_irq_init(env); |
| 4576 | 4601 | } |
| 4577 | 4602 | |
| 4578 | -/* PowerPC 750FX/GX */ | |
| 4603 | +/* PowerPC 750 */ | |
| 4604 | +#define POWERPC_INSNS_750 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4605 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
| 4606 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4607 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
| 4608 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
| 4609 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
| 4610 | + PPC_SEGMENT | PPC_EXTERN) | |
| 4611 | +#define POWERPC_MSRM_750 (0x000000000005FF77ULL) | |
| 4612 | +#define POWERPC_MMU_750 (POWERPC_MMU_32B) | |
| 4613 | +#define POWERPC_EXCP_750 (POWERPC_EXCP_7x0) | |
| 4614 | +#define POWERPC_INPUT_750 (PPC_FLAGS_INPUT_6xx) | |
| 4615 | +#define POWERPC_BFDM_750 (bfd_mach_ppc_750) | |
| 4616 | +#define POWERPC_FLAG_750 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4617 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
| 4618 | +#define check_pow_750 check_pow_hid0 | |
| 4619 | + | |
| 4620 | +static void init_proc_750 (CPUPPCState *env) | |
| 4621 | +{ | |
| 4622 | + gen_spr_ne_601(env); | |
| 4623 | + gen_spr_7xx(env); | |
| 4624 | + /* XXX : not implemented */ | |
| 4625 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4626 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4627 | + &spr_read_generic, &spr_write_generic, | |
| 4628 | + 0x00000000); | |
| 4629 | + /* Time base */ | |
| 4630 | + gen_tbl(env); | |
| 4631 | + /* Thermal management */ | |
| 4632 | + gen_spr_thrm(env); | |
| 4633 | + /* Hardware implementation registers */ | |
| 4634 | + /* XXX : not implemented */ | |
| 4635 | + spr_register(env, SPR_HID0, "HID0", | |
| 4636 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4637 | + &spr_read_generic, &spr_write_generic, | |
| 4638 | + 0x00000000); | |
| 4639 | + /* XXX : not implemented */ | |
| 4640 | + spr_register(env, SPR_HID1, "HID1", | |
| 4641 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4642 | + &spr_read_generic, &spr_write_generic, | |
| 4643 | + 0x00000000); | |
| 4644 | + /* Memory management */ | |
| 4645 | + gen_low_BATs(env); | |
| 4646 | + /* XXX: high BATs are also present but are known to be bugged on | |
| 4647 | + * die version 1.x | |
| 4648 | + */ | |
| 4649 | + init_excp_7x0(env); | |
| 4650 | + env->dcache_line_size = 32; | |
| 4651 | + env->icache_line_size = 32; | |
| 4652 | + /* Allocate hardware IRQ controller */ | |
| 4653 | + ppc6xx_irq_init(env); | |
| 4654 | +} | |
| 4655 | + | |
| 4656 | +/* PowerPC 750 CL */ | |
| 4657 | +/* XXX: not implemented: | |
| 4658 | + * cache lock instructions: | |
| 4659 | + * dcbz_l | |
| 4660 | + * floating point paired instructions | |
| 4661 | + * psq_lux | |
| 4662 | + * psq_lx | |
| 4663 | + * psq_stux | |
| 4664 | + * psq_stx | |
| 4665 | + * ps_abs | |
| 4666 | + * ps_add | |
| 4667 | + * ps_cmpo0 | |
| 4668 | + * ps_cmpo1 | |
| 4669 | + * ps_cmpu0 | |
| 4670 | + * ps_cmpu1 | |
| 4671 | + * ps_div | |
| 4672 | + * ps_madd | |
| 4673 | + * ps_madds0 | |
| 4674 | + * ps_madds1 | |
| 4675 | + * ps_merge00 | |
| 4676 | + * ps_merge01 | |
| 4677 | + * ps_merge10 | |
| 4678 | + * ps_merge11 | |
| 4679 | + * ps_mr | |
| 4680 | + * ps_msub | |
| 4681 | + * ps_mul | |
| 4682 | + * ps_muls0 | |
| 4683 | + * ps_muls1 | |
| 4684 | + * ps_nabs | |
| 4685 | + * ps_neg | |
| 4686 | + * ps_nmadd | |
| 4687 | + * ps_nmsub | |
| 4688 | + * ps_res | |
| 4689 | + * ps_rsqrte | |
| 4690 | + * ps_sel | |
| 4691 | + * ps_sub | |
| 4692 | + * ps_sum0 | |
| 4693 | + * ps_sum1 | |
| 4694 | + */ | |
| 4695 | +#define POWERPC_INSNS_750cl (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4696 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
| 4697 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4698 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
| 4699 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
| 4700 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
| 4701 | + PPC_SEGMENT | PPC_EXTERN) | |
| 4702 | +#define POWERPC_MSRM_750cl (0x000000000005FF77ULL) | |
| 4703 | +#define POWERPC_MMU_750cl (POWERPC_MMU_32B) | |
| 4704 | +#define POWERPC_EXCP_750cl (POWERPC_EXCP_7x0) | |
| 4705 | +#define POWERPC_INPUT_750cl (PPC_FLAGS_INPUT_6xx) | |
| 4706 | +#define POWERPC_BFDM_750cl (bfd_mach_ppc_750) | |
| 4707 | +#define POWERPC_FLAG_750cl (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4708 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
| 4709 | +#define check_pow_750cl check_pow_hid0 | |
| 4710 | + | |
| 4711 | +static void init_proc_750cl (CPUPPCState *env) | |
| 4712 | +{ | |
| 4713 | + gen_spr_ne_601(env); | |
| 4714 | + gen_spr_7xx(env); | |
| 4715 | + /* XXX : not implemented */ | |
| 4716 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4717 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4718 | + &spr_read_generic, &spr_write_generic, | |
| 4719 | + 0x00000000); | |
| 4720 | + /* Time base */ | |
| 4721 | + gen_tbl(env); | |
| 4722 | + /* Thermal management */ | |
| 4723 | + /* Those registers are fake on 750CL */ | |
| 4724 | + spr_register(env, SPR_THRM1, "THRM1", | |
| 4725 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4726 | + &spr_read_generic, &spr_write_generic, | |
| 4727 | + 0x00000000); | |
| 4728 | + spr_register(env, SPR_THRM2, "THRM2", | |
| 4729 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4730 | + &spr_read_generic, &spr_write_generic, | |
| 4731 | + 0x00000000); | |
| 4732 | + spr_register(env, SPR_THRM3, "THRM3", | |
| 4733 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4734 | + &spr_read_generic, &spr_write_generic, | |
| 4735 | + 0x00000000); | |
| 4736 | + /* XXX: not implemented */ | |
| 4737 | + spr_register(env, SPR_750_TDCL, "TDCL", | |
| 4738 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4739 | + &spr_read_generic, &spr_write_generic, | |
| 4740 | + 0x00000000); | |
| 4741 | + spr_register(env, SPR_750_TDCH, "TDCH", | |
| 4742 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4743 | + &spr_read_generic, &spr_write_generic, | |
| 4744 | + 0x00000000); | |
| 4745 | + /* DMA */ | |
| 4746 | + /* XXX : not implemented */ | |
| 4747 | + spr_register(env, SPR_750_WPAR, "WPAR", | |
| 4748 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4749 | + &spr_read_generic, &spr_write_generic, | |
| 4750 | + 0x00000000); | |
| 4751 | + spr_register(env, SPR_750_DMAL, "DMAL", | |
| 4752 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4753 | + &spr_read_generic, &spr_write_generic, | |
| 4754 | + 0x00000000); | |
| 4755 | + spr_register(env, SPR_750_DMAU, "DMAU", | |
| 4756 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4757 | + &spr_read_generic, &spr_write_generic, | |
| 4758 | + 0x00000000); | |
| 4759 | + /* Hardware implementation registers */ | |
| 4760 | + /* XXX : not implemented */ | |
| 4761 | + spr_register(env, SPR_HID0, "HID0", | |
| 4762 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4763 | + &spr_read_generic, &spr_write_generic, | |
| 4764 | + 0x00000000); | |
| 4765 | + /* XXX : not implemented */ | |
| 4766 | + spr_register(env, SPR_HID1, "HID1", | |
| 4767 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4768 | + &spr_read_generic, &spr_write_generic, | |
| 4769 | + 0x00000000); | |
| 4770 | + /* XXX : not implemented */ | |
| 4771 | + spr_register(env, SPR_750CL_HID2, "HID2", | |
| 4772 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4773 | + &spr_read_generic, &spr_write_generic, | |
| 4774 | + 0x00000000); | |
| 4775 | + /* XXX : not implemented */ | |
| 4776 | + spr_register(env, SPR_750CL_HID4, "HID4", | |
| 4777 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4778 | + &spr_read_generic, &spr_write_generic, | |
| 4779 | + 0x00000000); | |
| 4780 | + /* Quantization registers */ | |
| 4781 | + /* XXX : not implemented */ | |
| 4782 | + spr_register(env, SPR_750_GQR0, "GQR0", | |
| 4783 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4784 | + &spr_read_generic, &spr_write_generic, | |
| 4785 | + 0x00000000); | |
| 4786 | + /* XXX : not implemented */ | |
| 4787 | + spr_register(env, SPR_750_GQR1, "GQR1", | |
| 4788 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4789 | + &spr_read_generic, &spr_write_generic, | |
| 4790 | + 0x00000000); | |
| 4791 | + /* XXX : not implemented */ | |
| 4792 | + spr_register(env, SPR_750_GQR2, "GQR2", | |
| 4793 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4794 | + &spr_read_generic, &spr_write_generic, | |
| 4795 | + 0x00000000); | |
| 4796 | + /* XXX : not implemented */ | |
| 4797 | + spr_register(env, SPR_750_GQR3, "GQR3", | |
| 4798 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4799 | + &spr_read_generic, &spr_write_generic, | |
| 4800 | + 0x00000000); | |
| 4801 | + /* XXX : not implemented */ | |
| 4802 | + spr_register(env, SPR_750_GQR4, "GQR4", | |
| 4803 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4804 | + &spr_read_generic, &spr_write_generic, | |
| 4805 | + 0x00000000); | |
| 4806 | + /* XXX : not implemented */ | |
| 4807 | + spr_register(env, SPR_750_GQR5, "GQR5", | |
| 4808 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4809 | + &spr_read_generic, &spr_write_generic, | |
| 4810 | + 0x00000000); | |
| 4811 | + /* XXX : not implemented */ | |
| 4812 | + spr_register(env, SPR_750_GQR6, "GQR6", | |
| 4813 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4814 | + &spr_read_generic, &spr_write_generic, | |
| 4815 | + 0x00000000); | |
| 4816 | + /* XXX : not implemented */ | |
| 4817 | + spr_register(env, SPR_750_GQR7, "GQR7", | |
| 4818 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4819 | + &spr_read_generic, &spr_write_generic, | |
| 4820 | + 0x00000000); | |
| 4821 | + /* Memory management */ | |
| 4822 | + gen_low_BATs(env); | |
| 4823 | + /* PowerPC 750cl has 8 DBATs and 8 IBATs */ | |
| 4824 | + gen_high_BATs(env); | |
| 4825 | + init_excp_750cl(env); | |
| 4826 | + env->dcache_line_size = 32; | |
| 4827 | + env->icache_line_size = 32; | |
| 4828 | + /* Allocate hardware IRQ controller */ | |
| 4829 | + ppc6xx_irq_init(env); | |
| 4830 | +} | |
| 4831 | + | |
| 4832 | +#define POWERPC_INSNS_750cx (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4833 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
| 4834 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4835 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
| 4836 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
| 4837 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
| 4838 | + PPC_SEGMENT | PPC_EXTERN) | |
| 4839 | +#define POWERPC_MSRM_750cx (0x000000000005FF77ULL) | |
| 4840 | +#define POWERPC_MMU_750cx (POWERPC_MMU_32B) | |
| 4841 | +#define POWERPC_EXCP_750cx (POWERPC_EXCP_7x0) | |
| 4842 | +#define POWERPC_INPUT_750cx (PPC_FLAGS_INPUT_6xx) | |
| 4843 | +#define POWERPC_BFDM_750cx (bfd_mach_ppc_750) | |
| 4844 | +#define POWERPC_FLAG_750cx (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4845 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
| 4846 | +#define check_pow_750cx check_pow_hid0 | |
| 4847 | + | |
| 4848 | +static void init_proc_750cx (CPUPPCState *env) | |
| 4849 | +{ | |
| 4850 | + gen_spr_ne_601(env); | |
| 4851 | + gen_spr_7xx(env); | |
| 4852 | + /* XXX : not implemented */ | |
| 4853 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4854 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4855 | + &spr_read_generic, &spr_write_generic, | |
| 4856 | + 0x00000000); | |
| 4857 | + /* Time base */ | |
| 4858 | + gen_tbl(env); | |
| 4859 | + /* Thermal management */ | |
| 4860 | + gen_spr_thrm(env); | |
| 4861 | + /* This register is not implemented but is present for compatibility */ | |
| 4862 | + spr_register(env, SPR_SDA, "SDA", | |
| 4863 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4864 | + &spr_read_generic, &spr_write_generic, | |
| 4865 | + 0x00000000); | |
| 4866 | + /* Hardware implementation registers */ | |
| 4867 | + /* XXX : not implemented */ | |
| 4868 | + spr_register(env, SPR_HID0, "HID0", | |
| 4869 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4870 | + &spr_read_generic, &spr_write_generic, | |
| 4871 | + 0x00000000); | |
| 4872 | + /* XXX : not implemented */ | |
| 4873 | + spr_register(env, SPR_HID1, "HID1", | |
| 4874 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4875 | + &spr_read_generic, &spr_write_generic, | |
| 4876 | + 0x00000000); | |
| 4877 | + /* Memory management */ | |
| 4878 | + gen_low_BATs(env); | |
| 4879 | + /* XXX: high BATs are also present but are known to be bugged on | |
| 4880 | + * die version 1.x | |
| 4881 | + */ | |
| 4882 | + init_excp_750cx(env); | |
| 4883 | + env->dcache_line_size = 32; | |
| 4884 | + env->icache_line_size = 32; | |
| 4885 | + /* Allocate hardware IRQ controller */ | |
| 4886 | + ppc6xx_irq_init(env); | |
| 4887 | +} | |
| 4888 | + | |
| 4889 | +/* PowerPC 750FX */ | |
| 4579 | 4890 | #define POWERPC_INSNS_750fx (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ |
| 4580 | 4891 | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ |
| 4581 | - PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
| 4582 | - PPC_FLOAT_STFIWX | \ | |
| 4892 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4583 | 4893 | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ |
| 4584 | 4894 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
| 4585 | 4895 | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ |
| ... | ... | @@ -4597,10 +4907,20 @@ static void init_proc_750fx (CPUPPCState *env) |
| 4597 | 4907 | { |
| 4598 | 4908 | gen_spr_ne_601(env); |
| 4599 | 4909 | gen_spr_7xx(env); |
| 4910 | + /* XXX : not implemented */ | |
| 4911 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4912 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4913 | + &spr_read_generic, &spr_write_generic, | |
| 4914 | + 0x00000000); | |
| 4600 | 4915 | /* Time base */ |
| 4601 | 4916 | gen_tbl(env); |
| 4602 | 4917 | /* Thermal management */ |
| 4603 | 4918 | gen_spr_thrm(env); |
| 4919 | + /* XXX : not implemented */ | |
| 4920 | + spr_register(env, SPR_750_THRM4, "THRM4", | |
| 4921 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4922 | + &spr_read_generic, &spr_write_generic, | |
| 4923 | + 0x00000000); | |
| 4604 | 4924 | /* Hardware implementation registers */ |
| 4605 | 4925 | /* XXX : not implemented */ |
| 4606 | 4926 | spr_register(env, SPR_HID0, "HID0", |
| ... | ... | @@ -4613,7 +4933,7 @@ static void init_proc_750fx (CPUPPCState *env) |
| 4613 | 4933 | &spr_read_generic, &spr_write_generic, |
| 4614 | 4934 | 0x00000000); |
| 4615 | 4935 | /* XXX : not implemented */ |
| 4616 | - spr_register(env, SPR_750_HID2, "HID2", | |
| 4936 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 4617 | 4937 | SPR_NOACCESS, SPR_NOACCESS, |
| 4618 | 4938 | &spr_read_generic, &spr_write_generic, |
| 4619 | 4939 | 0x00000000); |
| ... | ... | @@ -4621,40 +4941,155 @@ static void init_proc_750fx (CPUPPCState *env) |
| 4621 | 4941 | gen_low_BATs(env); |
| 4622 | 4942 | /* PowerPC 750fx & 750gx has 8 DBATs and 8 IBATs */ |
| 4623 | 4943 | gen_high_BATs(env); |
| 4624 | - init_excp_750FX(env); | |
| 4944 | + init_excp_7x0(env); | |
| 4625 | 4945 | env->dcache_line_size = 32; |
| 4626 | 4946 | env->icache_line_size = 32; |
| 4627 | 4947 | /* Allocate hardware IRQ controller */ |
| 4628 | 4948 | ppc6xx_irq_init(env); |
| 4629 | 4949 | } |
| 4630 | 4950 | |
| 4631 | -/* PowerPC 745/755 */ | |
| 4632 | -#define POWERPC_INSNS_7x5 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4951 | +/* PowerPC 750GX */ | |
| 4952 | +#define POWERPC_INSNS_750gx (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 4633 | 4953 | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ |
| 4634 | - PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
| 4635 | - PPC_FLOAT_STFIWX | \ | |
| 4954 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4955 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
| 4956 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
| 4957 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
| 4958 | + PPC_SEGMENT | PPC_EXTERN) | |
| 4959 | +#define POWERPC_MSRM_750gx (0x000000000005FF77ULL) | |
| 4960 | +#define POWERPC_MMU_750gx (POWERPC_MMU_32B) | |
| 4961 | +#define POWERPC_EXCP_750gx (POWERPC_EXCP_7x0) | |
| 4962 | +#define POWERPC_INPUT_750gx (PPC_FLAGS_INPUT_6xx) | |
| 4963 | +#define POWERPC_BFDM_750gx (bfd_mach_ppc_750) | |
| 4964 | +#define POWERPC_FLAG_750gx (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4965 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
| 4966 | +#define check_pow_750gx check_pow_hid0 | |
| 4967 | + | |
| 4968 | +static void init_proc_750gx (CPUPPCState *env) | |
| 4969 | +{ | |
| 4970 | + gen_spr_ne_601(env); | |
| 4971 | + gen_spr_7xx(env); | |
| 4972 | + /* XXX : not implemented (XXX: different from 750fx) */ | |
| 4973 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4974 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4975 | + &spr_read_generic, &spr_write_generic, | |
| 4976 | + 0x00000000); | |
| 4977 | + /* Time base */ | |
| 4978 | + gen_tbl(env); | |
| 4979 | + /* Thermal management */ | |
| 4980 | + gen_spr_thrm(env); | |
| 4981 | + /* XXX : not implemented */ | |
| 4982 | + spr_register(env, SPR_750_THRM4, "THRM4", | |
| 4983 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4984 | + &spr_read_generic, &spr_write_generic, | |
| 4985 | + 0x00000000); | |
| 4986 | + /* Hardware implementation registers */ | |
| 4987 | + /* XXX : not implemented (XXX: different from 750fx) */ | |
| 4988 | + spr_register(env, SPR_HID0, "HID0", | |
| 4989 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4990 | + &spr_read_generic, &spr_write_generic, | |
| 4991 | + 0x00000000); | |
| 4992 | + /* XXX : not implemented */ | |
| 4993 | + spr_register(env, SPR_HID1, "HID1", | |
| 4994 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 4995 | + &spr_read_generic, &spr_write_generic, | |
| 4996 | + 0x00000000); | |
| 4997 | + /* XXX : not implemented (XXX: different from 750fx) */ | |
| 4998 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 4999 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5000 | + &spr_read_generic, &spr_write_generic, | |
| 5001 | + 0x00000000); | |
| 5002 | + /* Memory management */ | |
| 5003 | + gen_low_BATs(env); | |
| 5004 | + /* PowerPC 750fx & 750gx has 8 DBATs and 8 IBATs */ | |
| 5005 | + gen_high_BATs(env); | |
| 5006 | + init_excp_7x0(env); | |
| 5007 | + env->dcache_line_size = 32; | |
| 5008 | + env->icache_line_size = 32; | |
| 5009 | + /* Allocate hardware IRQ controller */ | |
| 5010 | + ppc6xx_irq_init(env); | |
| 5011 | +} | |
| 5012 | + | |
| 5013 | +/* PowerPC 745 */ | |
| 5014 | +#define POWERPC_INSNS_745 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 5015 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
| 5016 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 5017 | + PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ | |
| 5018 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
| 5019 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ | |
| 5020 | + PPC_SEGMENT | PPC_EXTERN) | |
| 5021 | +#define POWERPC_MSRM_745 (0x000000000005FF77ULL) | |
| 5022 | +#define POWERPC_MMU_745 (POWERPC_MMU_SOFT_6xx) | |
| 5023 | +#define POWERPC_EXCP_745 (POWERPC_EXCP_7x5) | |
| 5024 | +#define POWERPC_INPUT_745 (PPC_FLAGS_INPUT_6xx) | |
| 5025 | +#define POWERPC_BFDM_745 (bfd_mach_ppc_750) | |
| 5026 | +#define POWERPC_FLAG_745 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 5027 | + POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) | |
| 5028 | +#define check_pow_745 check_pow_hid0 | |
| 5029 | + | |
| 5030 | +static void init_proc_745 (CPUPPCState *env) | |
| 5031 | +{ | |
| 5032 | + gen_spr_ne_601(env); | |
| 5033 | + gen_spr_7xx(env); | |
| 5034 | + gen_spr_G2_755(env); | |
| 5035 | + /* Time base */ | |
| 5036 | + gen_tbl(env); | |
| 5037 | + /* Thermal management */ | |
| 5038 | + gen_spr_thrm(env); | |
| 5039 | + /* Hardware implementation registers */ | |
| 5040 | + /* XXX : not implemented */ | |
| 5041 | + spr_register(env, SPR_HID0, "HID0", | |
| 5042 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5043 | + &spr_read_generic, &spr_write_generic, | |
| 5044 | + 0x00000000); | |
| 5045 | + /* XXX : not implemented */ | |
| 5046 | + spr_register(env, SPR_HID1, "HID1", | |
| 5047 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5048 | + &spr_read_generic, &spr_write_generic, | |
| 5049 | + 0x00000000); | |
| 5050 | + /* XXX : not implemented */ | |
| 5051 | + spr_register(env, SPR_HID2, "HID2", | |
| 5052 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5053 | + &spr_read_generic, &spr_write_generic, | |
| 5054 | + 0x00000000); | |
| 5055 | + /* Memory management */ | |
| 5056 | + gen_low_BATs(env); | |
| 5057 | + gen_high_BATs(env); | |
| 5058 | + gen_6xx_7xx_soft_tlb(env, 64, 2); | |
| 5059 | + init_excp_7x5(env); | |
| 5060 | + env->dcache_line_size = 32; | |
| 5061 | + env->icache_line_size = 32; | |
| 5062 | + /* Allocate hardware IRQ controller */ | |
| 5063 | + ppc6xx_irq_init(env); | |
| 5064 | +} | |
| 5065 | + | |
| 5066 | +/* PowerPC 755 */ | |
| 5067 | +#define POWERPC_INSNS_755 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
| 5068 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
| 5069 | + PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ | |
| 4636 | 5070 | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | \ |
| 4637 | 5071 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
| 4638 | 5072 | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_6xx_TLB | \ |
| 4639 | 5073 | PPC_SEGMENT | PPC_EXTERN) |
| 4640 | -#define POWERPC_MSRM_7x5 (0x000000000005FF77ULL) | |
| 4641 | -#define POWERPC_MMU_7x5 (POWERPC_MMU_SOFT_6xx) | |
| 4642 | -//#define POWERPC_EXCP_7x5 (POWERPC_EXCP_7x5) | |
| 4643 | -#define POWERPC_INPUT_7x5 (PPC_FLAGS_INPUT_6xx) | |
| 4644 | -#define POWERPC_BFDM_7x5 (bfd_mach_ppc_750) | |
| 4645 | -#define POWERPC_FLAG_7x5 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 5074 | +#define POWERPC_MSRM_755 (0x000000000005FF77ULL) | |
| 5075 | +#define POWERPC_MMU_755 (POWERPC_MMU_SOFT_6xx) | |
| 5076 | +#define POWERPC_EXCP_755 (POWERPC_EXCP_7x5) | |
| 5077 | +#define POWERPC_INPUT_755 (PPC_FLAGS_INPUT_6xx) | |
| 5078 | +#define POWERPC_BFDM_755 (bfd_mach_ppc_750) | |
| 5079 | +#define POWERPC_FLAG_755 (POWERPC_FLAG_SE | POWERPC_FLAG_BE | \ | |
| 4646 | 5080 | POWERPC_FLAG_PMM | POWERPC_FLAG_BUS_CLK) |
| 4647 | -#define check_pow_7x5 check_pow_hid0 | |
| 5081 | +#define check_pow_755 check_pow_hid0 | |
| 4648 | 5082 | |
| 4649 | -static void init_proc_7x5 (CPUPPCState *env) | |
| 5083 | +static void init_proc_755 (CPUPPCState *env) | |
| 4650 | 5084 | { |
| 4651 | 5085 | gen_spr_ne_601(env); |
| 5086 | + gen_spr_7xx(env); | |
| 4652 | 5087 | gen_spr_G2_755(env); |
| 4653 | 5088 | /* Time base */ |
| 4654 | 5089 | gen_tbl(env); |
| 4655 | 5090 | /* L2 cache control */ |
| 4656 | 5091 | /* XXX : not implemented */ |
| 4657 | - spr_register(env, SPR_ICTC, "ICTC", | |
| 5092 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 4658 | 5093 | SPR_NOACCESS, SPR_NOACCESS, |
| 4659 | 5094 | &spr_read_generic, &spr_write_generic, |
| 4660 | 5095 | 0x00000000); |
| ... | ... | @@ -4663,6 +5098,8 @@ static void init_proc_7x5 (CPUPPCState *env) |
| 4663 | 5098 | SPR_NOACCESS, SPR_NOACCESS, |
| 4664 | 5099 | &spr_read_generic, &spr_write_generic, |
| 4665 | 5100 | 0x00000000); |
| 5101 | + /* Thermal management */ | |
| 5102 | + gen_spr_thrm(env); | |
| 4666 | 5103 | /* Hardware implementation registers */ |
| 4667 | 5104 | /* XXX : not implemented */ |
| 4668 | 5105 | spr_register(env, SPR_HID0, "HID0", |
| ... | ... | @@ -4688,10 +5125,6 @@ static void init_proc_7x5 (CPUPPCState *env) |
| 4688 | 5125 | env->icache_line_size = 32; |
| 4689 | 5126 | /* Allocate hardware IRQ controller */ |
| 4690 | 5127 | ppc6xx_irq_init(env); |
| 4691 | -#if !defined(CONFIG_USER_ONLY) | |
| 4692 | - /* Hardware reset vector */ | |
| 4693 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 4694 | -#endif | |
| 4695 | 5128 | } |
| 4696 | 5129 | |
| 4697 | 5130 | /* PowerPC 7400 (aka G4) */ |
| ... | ... | @@ -5232,7 +5665,7 @@ static void init_proc_970 (CPUPPCState *env) |
| 5232 | 5665 | &spr_read_generic, &spr_write_generic, |
| 5233 | 5666 | 0x00000000); |
| 5234 | 5667 | /* XXX : not implemented */ |
| 5235 | - spr_register(env, SPR_750_HID2, "HID2", | |
| 5668 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 5236 | 5669 | SPR_NOACCESS, SPR_NOACCESS, |
| 5237 | 5670 | &spr_read_generic, &spr_write_generic, |
| 5238 | 5671 | 0x00000000); |
| ... | ... | @@ -5241,6 +5674,11 @@ static void init_proc_970 (CPUPPCState *env) |
| 5241 | 5674 | SPR_NOACCESS, SPR_NOACCESS, |
| 5242 | 5675 | &spr_read_generic, &spr_write_generic, |
| 5243 | 5676 | POWERPC970_HID5_INIT); |
| 5677 | + /* XXX : not implemented */ | |
| 5678 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 5679 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5680 | + &spr_read_generic, &spr_write_generic, | |
| 5681 | + 0x00000000); | |
| 5244 | 5682 | /* Memory management */ |
| 5245 | 5683 | /* XXX: not correct */ |
| 5246 | 5684 | gen_low_BATs(env); |
| ... | ... | @@ -5313,7 +5751,7 @@ static void init_proc_970FX (CPUPPCState *env) |
| 5313 | 5751 | &spr_read_generic, &spr_write_generic, |
| 5314 | 5752 | 0x00000000); |
| 5315 | 5753 | /* XXX : not implemented */ |
| 5316 | - spr_register(env, SPR_750_HID2, "HID2", | |
| 5754 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 5317 | 5755 | SPR_NOACCESS, SPR_NOACCESS, |
| 5318 | 5756 | &spr_read_generic, &spr_write_generic, |
| 5319 | 5757 | 0x00000000); |
| ... | ... | @@ -5322,6 +5760,11 @@ static void init_proc_970FX (CPUPPCState *env) |
| 5322 | 5760 | SPR_NOACCESS, SPR_NOACCESS, |
| 5323 | 5761 | &spr_read_generic, &spr_write_generic, |
| 5324 | 5762 | POWERPC970_HID5_INIT); |
| 5763 | + /* XXX : not implemented */ | |
| 5764 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 5765 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5766 | + &spr_read_generic, &spr_write_generic, | |
| 5767 | + 0x00000000); | |
| 5325 | 5768 | /* Memory management */ |
| 5326 | 5769 | /* XXX: not correct */ |
| 5327 | 5770 | gen_low_BATs(env); |
| ... | ... | @@ -5394,7 +5837,7 @@ static void init_proc_970GX (CPUPPCState *env) |
| 5394 | 5837 | &spr_read_generic, &spr_write_generic, |
| 5395 | 5838 | 0x00000000); |
| 5396 | 5839 | /* XXX : not implemented */ |
| 5397 | - spr_register(env, SPR_750_HID2, "HID2", | |
| 5840 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 5398 | 5841 | SPR_NOACCESS, SPR_NOACCESS, |
| 5399 | 5842 | &spr_read_generic, &spr_write_generic, |
| 5400 | 5843 | 0x00000000); |
| ... | ... | @@ -5403,6 +5846,11 @@ static void init_proc_970GX (CPUPPCState *env) |
| 5403 | 5846 | SPR_NOACCESS, SPR_NOACCESS, |
| 5404 | 5847 | &spr_read_generic, &spr_write_generic, |
| 5405 | 5848 | POWERPC970_HID5_INIT); |
| 5849 | + /* XXX : not implemented */ | |
| 5850 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 5851 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5852 | + &spr_read_generic, &spr_write_generic, | |
| 5853 | + 0x00000000); | |
| 5406 | 5854 | /* Memory management */ |
| 5407 | 5855 | /* XXX: not correct */ |
| 5408 | 5856 | gen_low_BATs(env); |
| ... | ... | @@ -5475,7 +5923,7 @@ static void init_proc_970MP (CPUPPCState *env) |
| 5475 | 5923 | &spr_read_generic, &spr_write_generic, |
| 5476 | 5924 | 0x00000000); |
| 5477 | 5925 | /* XXX : not implemented */ |
| 5478 | - spr_register(env, SPR_750_HID2, "HID2", | |
| 5926 | + spr_register(env, SPR_750FX_HID2, "HID2", | |
| 5479 | 5927 | SPR_NOACCESS, SPR_NOACCESS, |
| 5480 | 5928 | &spr_read_generic, &spr_write_generic, |
| 5481 | 5929 | 0x00000000); |
| ... | ... | @@ -5484,6 +5932,11 @@ static void init_proc_970MP (CPUPPCState *env) |
| 5484 | 5932 | SPR_NOACCESS, SPR_NOACCESS, |
| 5485 | 5933 | &spr_read_generic, &spr_write_generic, |
| 5486 | 5934 | POWERPC970_HID5_INIT); |
| 5935 | + /* XXX : not implemented */ | |
| 5936 | + spr_register(env, SPR_L2CR, "L2CR", | |
| 5937 | + SPR_NOACCESS, SPR_NOACCESS, | |
| 5938 | + &spr_read_generic, &spr_write_generic, | |
| 5939 | + 0x00000000); | |
| 5487 | 5940 | /* Memory management */ |
| 5488 | 5941 | /* XXX: not correct */ |
| 5489 | 5942 | gen_low_BATs(env); |
| ... | ... | @@ -6092,6 +6545,7 @@ enum { |
| 6092 | 6545 | #define CPU_POWERPC_601 CPU_POWERPC_601_v2 |
| 6093 | 6546 | CPU_POWERPC_601_v0 = 0x00010001, |
| 6094 | 6547 | CPU_POWERPC_601_v1 = 0x00010001, |
| 6548 | +#define CPU_POWERPC_601v CPU_POWERPC_601_v2 | |
| 6095 | 6549 | CPU_POWERPC_601_v2 = 0x00010002, |
| 6096 | 6550 | CPU_POWERPC_602 = 0x00050100, |
| 6097 | 6551 | CPU_POWERPC_603 = 0x00030100, |
| ... | ... | @@ -6129,16 +6583,22 @@ enum { |
| 6129 | 6583 | /* PowerPC 740/750 cores (aka G3) */ |
| 6130 | 6584 | /* XXX: missing 0x00084202 */ |
| 6131 | 6585 | #define CPU_POWERPC_7x0 CPU_POWERPC_7x0_v31 |
| 6586 | + CPU_POWERPC_7x0_v10 = 0x00080100, | |
| 6132 | 6587 | CPU_POWERPC_7x0_v20 = 0x00080200, |
| 6133 | 6588 | CPU_POWERPC_7x0_v21 = 0x00080201, |
| 6134 | 6589 | CPU_POWERPC_7x0_v22 = 0x00080202, |
| 6135 | 6590 | CPU_POWERPC_7x0_v30 = 0x00080300, |
| 6136 | 6591 | CPU_POWERPC_7x0_v31 = 0x00080301, |
| 6137 | 6592 | CPU_POWERPC_740E = 0x00080100, |
| 6593 | + CPU_POWERPC_750E = 0x00080200, | |
| 6138 | 6594 | CPU_POWERPC_7x0P = 0x10080000, |
| 6139 | 6595 | /* XXX: missing 0x00087010 (CL ?) */ |
| 6140 | - CPU_POWERPC_750CL = 0x00087200, | |
| 6596 | +#define CPU_POWERPC_750CL CPU_POWERPC_750CL_v20 | |
| 6597 | + CPU_POWERPC_750CL_v10 = 0x00087200, | |
| 6598 | + CPU_POWERPC_750CL_v20 = 0x00087210, /* aka rev E */ | |
| 6141 | 6599 | #define CPU_POWERPC_750CX CPU_POWERPC_750CX_v22 |
| 6600 | + CPU_POWERPC_750CX_v10 = 0x00082100, | |
| 6601 | + CPU_POWERPC_750CX_v20 = 0x00082200, | |
| 6142 | 6602 | CPU_POWERPC_750CX_v21 = 0x00082201, |
| 6143 | 6603 | CPU_POWERPC_750CX_v22 = 0x00082202, |
| 6144 | 6604 | #define CPU_POWERPC_750CXE CPU_POWERPC_750CXE_v31b |
| ... | ... | @@ -6147,11 +6607,11 @@ enum { |
| 6147 | 6607 | CPU_POWERPC_750CXE_v23 = 0x00082213, |
| 6148 | 6608 | CPU_POWERPC_750CXE_v24 = 0x00082214, |
| 6149 | 6609 | CPU_POWERPC_750CXE_v24b = 0x00083214, |
| 6150 | - CPU_POWERPC_750CXE_v31 = 0x00083211, | |
| 6610 | + CPU_POWERPC_750CXE_v30 = 0x00082310, | |
| 6611 | + CPU_POWERPC_750CXE_v31 = 0x00082311, | |
| 6151 | 6612 | CPU_POWERPC_750CXE_v31b = 0x00083311, |
| 6152 | 6613 | CPU_POWERPC_750CXR = 0x00083410, |
| 6153 | - CPU_POWERPC_750E = 0x00080200, | |
| 6154 | - CPU_POWERPC_750FL = 0x700A0203, | |
| 6614 | + CPU_POWERPC_750FL = 0x70000203, | |
| 6155 | 6615 | #define CPU_POWERPC_750FX CPU_POWERPC_750FX_v23 |
| 6156 | 6616 | CPU_POWERPC_750FX_v10 = 0x70000100, |
| 6157 | 6617 | CPU_POWERPC_750FX_v20 = 0x70000200, |
| ... | ... | @@ -6164,6 +6624,8 @@ enum { |
| 6164 | 6624 | CPU_POWERPC_750GX_v11 = 0x70020101, |
| 6165 | 6625 | CPU_POWERPC_750GX_v12 = 0x70020102, |
| 6166 | 6626 | #define CPU_POWERPC_750L CPU_POWERPC_750L_v32 /* Aka LoneStar */ |
| 6627 | + CPU_POWERPC_750L_v20 = 0x00088200, | |
| 6628 | + CPU_POWERPC_750L_v21 = 0x00088201, | |
| 6167 | 6629 | CPU_POWERPC_750L_v22 = 0x00088202, |
| 6168 | 6630 | CPU_POWERPC_750L_v30 = 0x00088300, |
| 6169 | 6631 | CPU_POWERPC_750L_v32 = 0x00088302, |
| ... | ... | @@ -7577,13 +8039,13 @@ static const ppc_def_t ppc_defs[] = { |
| 7577 | 8039 | /* 32 bits "classic" PowerPC */ |
| 7578 | 8040 | /* PowerPC 6xx family */ |
| 7579 | 8041 | /* PowerPC 601 */ |
| 7580 | - POWERPC_DEF("601", CPU_POWERPC_601, 601), | |
| 8042 | + POWERPC_DEF("601", CPU_POWERPC_601, 601v), | |
| 7581 | 8043 | /* PowerPC 601v0 */ |
| 7582 | 8044 | POWERPC_DEF("601_v0", CPU_POWERPC_601_v0, 601), |
| 7583 | 8045 | /* PowerPC 601v1 */ |
| 7584 | 8046 | POWERPC_DEF("601_v1", CPU_POWERPC_601_v1, 601), |
| 7585 | 8047 | /* PowerPC 601v */ |
| 7586 | - POWERPC_DEF("601v", CPU_POWERPC_601, 601v), | |
| 8048 | + POWERPC_DEF("601v", CPU_POWERPC_601v, 601v), | |
| 7587 | 8049 | /* PowerPC 601v2 */ |
| 7588 | 8050 | POWERPC_DEF("601_v2", CPU_POWERPC_601_v2, 601v), |
| 7589 | 8051 | /* PowerPC 602 */ |
| ... | ... | @@ -7652,71 +8114,85 @@ static const ppc_def_t ppc_defs[] = { |
| 7652 | 8114 | #endif |
| 7653 | 8115 | /* PowerPC 7xx family */ |
| 7654 | 8116 | /* Generic PowerPC 740 (G3) */ |
| 7655 | - POWERPC_DEF("740", CPU_POWERPC_7x0, 7x0), | |
| 8117 | + POWERPC_DEF("740", CPU_POWERPC_7x0, 740), | |
| 7656 | 8118 | /* Code name for PowerPC 740 */ |
| 7657 | - POWERPC_DEF("Arthur", CPU_POWERPC_7x0, 7x0), | |
| 8119 | + POWERPC_DEF("Arthur", CPU_POWERPC_7x0, 740), | |
| 7658 | 8120 | /* Generic PowerPC 750 (G3) */ |
| 7659 | - POWERPC_DEF("750", CPU_POWERPC_7x0, 7x0), | |
| 8121 | + POWERPC_DEF("750", CPU_POWERPC_7x0, 750), | |
| 7660 | 8122 | /* Code name for PowerPC 750 */ |
| 7661 | - POWERPC_DEF("Typhoon", CPU_POWERPC_7x0, 7x0), | |
| 8123 | + POWERPC_DEF("Typhoon", CPU_POWERPC_7x0, 750), | |
| 7662 | 8124 | /* PowerPC 740/750 is also known as G3 */ |
| 7663 | - POWERPC_DEF("G3", CPU_POWERPC_7x0, 7x0), | |
| 8125 | + POWERPC_DEF("G3", CPU_POWERPC_7x0, 750), | |
| 8126 | + /* PowerPC 740 v1.0 (G3) */ | |
| 8127 | + POWERPC_DEF("740_v1.0", CPU_POWERPC_7x0_v10, 740), | |
| 8128 | + /* PowerPC 750 v1.0 (G3) */ | |
| 8129 | + POWERPC_DEF("750_v1.0", CPU_POWERPC_7x0_v10, 750), | |
| 7664 | 8130 | /* PowerPC 740 v2.0 (G3) */ |
| 7665 | - POWERPC_DEF("740_v2.0", CPU_POWERPC_7x0_v20, 7x0), | |
| 8131 | + POWERPC_DEF("740_v2.0", CPU_POWERPC_7x0_v20, 740), | |
| 7666 | 8132 | /* PowerPC 750 v2.0 (G3) */ |
| 7667 | - POWERPC_DEF("750_v2.0", CPU_POWERPC_7x0_v20, 7x0), | |
| 8133 | + POWERPC_DEF("750_v2.0", CPU_POWERPC_7x0_v20, 750), | |
| 7668 | 8134 | /* PowerPC 740 v2.1 (G3) */ |
| 7669 | - POWERPC_DEF("740_v2.1", CPU_POWERPC_7x0_v21, 7x0), | |
| 8135 | + POWERPC_DEF("740_v2.1", CPU_POWERPC_7x0_v21, 740), | |
| 7670 | 8136 | /* PowerPC 750 v2.1 (G3) */ |
| 7671 | - POWERPC_DEF("750_v2.1", CPU_POWERPC_7x0_v21, 7x0), | |
| 8137 | + POWERPC_DEF("750_v2.1", CPU_POWERPC_7x0_v21, 750), | |
| 7672 | 8138 | /* PowerPC 740 v2.2 (G3) */ |
| 7673 | - POWERPC_DEF("740_v2.2", CPU_POWERPC_7x0_v22, 7x0), | |
| 8139 | + POWERPC_DEF("740_v2.2", CPU_POWERPC_7x0_v22, 740), | |
| 7674 | 8140 | /* PowerPC 750 v2.2 (G3) */ |
| 7675 | - POWERPC_DEF("750_v2.2", CPU_POWERPC_7x0_v22, 7x0), | |
| 8141 | + POWERPC_DEF("750_v2.2", CPU_POWERPC_7x0_v22, 750), | |
| 7676 | 8142 | /* PowerPC 740 v3.0 (G3) */ |
| 7677 | - POWERPC_DEF("740_v3.0", CPU_POWERPC_7x0_v30, 7x0), | |
| 8143 | + POWERPC_DEF("740_v3.0", CPU_POWERPC_7x0_v30, 740), | |
| 7678 | 8144 | /* PowerPC 750 v3.0 (G3) */ |
| 7679 | - POWERPC_DEF("750_v3.0", CPU_POWERPC_7x0_v30, 7x0), | |
| 8145 | + POWERPC_DEF("750_v3.0", CPU_POWERPC_7x0_v30, 750), | |
| 7680 | 8146 | /* PowerPC 740 v3.1 (G3) */ |
| 7681 | - POWERPC_DEF("740_v3.1", CPU_POWERPC_7x0_v31, 7x0), | |
| 8147 | + POWERPC_DEF("740_v3.1", CPU_POWERPC_7x0_v31, 740), | |
| 7682 | 8148 | /* PowerPC 750 v3.1 (G3) */ |
| 7683 | - POWERPC_DEF("750_v3.1", CPU_POWERPC_7x0_v31, 7x0), | |
| 8149 | + POWERPC_DEF("750_v3.1", CPU_POWERPC_7x0_v31, 750), | |
| 7684 | 8150 | /* PowerPC 740E (G3) */ |
| 7685 | - POWERPC_DEF("740e", CPU_POWERPC_740E, 7x0), | |
| 8151 | + POWERPC_DEF("740e", CPU_POWERPC_740E, 740), | |
| 8152 | + /* PowerPC 750E (G3) */ | |
| 8153 | + POWERPC_DEF("750e", CPU_POWERPC_750E, 750), | |
| 7686 | 8154 | /* PowerPC 740P (G3) */ |
| 7687 | - POWERPC_DEF("740p", CPU_POWERPC_7x0P, 7x0), | |
| 8155 | + POWERPC_DEF("740p", CPU_POWERPC_7x0P, 740), | |
| 7688 | 8156 | /* PowerPC 750P (G3) */ |
| 7689 | - POWERPC_DEF("750p", CPU_POWERPC_7x0P, 7x0), | |
| 8157 | + POWERPC_DEF("750p", CPU_POWERPC_7x0P, 750), | |
| 7690 | 8158 | /* Code name for PowerPC 740P/750P (G3) */ |
| 7691 | - POWERPC_DEF("Conan/Doyle", CPU_POWERPC_7x0P, 7x0), | |
| 8159 | + POWERPC_DEF("Conan/Doyle", CPU_POWERPC_7x0P, 750), | |
| 7692 | 8160 | /* PowerPC 750CL (G3 embedded) */ |
| 7693 | - POWERPC_DEF("750cl", CPU_POWERPC_750CL, 7x0), | |
| 8161 | + POWERPC_DEF("750cl", CPU_POWERPC_750CL, 750cl), | |
| 8162 | + /* PowerPC 750CL v1.0 */ | |
| 8163 | + POWERPC_DEF("750cl_v1.0", CPU_POWERPC_750CL_v10, 750cl), | |
| 8164 | + /* PowerPC 750CL v2.0 */ | |
| 8165 | + POWERPC_DEF("750cl_v2.0", CPU_POWERPC_750CL_v20, 750cl), | |
| 7694 | 8166 | /* PowerPC 750CX (G3 embedded) */ |
| 7695 | - POWERPC_DEF("750cx", CPU_POWERPC_750CX, 7x0), | |
| 8167 | + POWERPC_DEF("750cx", CPU_POWERPC_750CX, 750cx), | |
| 8168 | + /* PowerPC 750CX v1.0 (G3 embedded) */ | |
| 8169 | + POWERPC_DEF("750cx_v1.0", CPU_POWERPC_750CX_v10, 750cx), | |
| 8170 | + /* PowerPC 750CX v2.1 (G3 embedded) */ | |
| 8171 | + POWERPC_DEF("750cx_v2.0", CPU_POWERPC_750CX_v20, 750cx), | |
| 7696 | 8172 | /* PowerPC 750CX v2.1 (G3 embedded) */ |
| 7697 | - POWERPC_DEF("750cx_v2.1", CPU_POWERPC_750CX_v21, 7x0), | |
| 8173 | + POWERPC_DEF("750cx_v2.1", CPU_POWERPC_750CX_v21, 750cx), | |
| 7698 | 8174 | /* PowerPC 750CX v2.2 (G3 embedded) */ |
| 7699 | - POWERPC_DEF("750cx_v2.2", CPU_POWERPC_750CX_v22, 7x0), | |
| 8175 | + POWERPC_DEF("750cx_v2.2", CPU_POWERPC_750CX_v22, 750cx), | |
| 7700 | 8176 | /* PowerPC 750CXe (G3 embedded) */ |
| 7701 | - POWERPC_DEF("750cxe", CPU_POWERPC_750CXE, 7x0), | |
| 8177 | + POWERPC_DEF("750cxe", CPU_POWERPC_750CXE, 750cx), | |
| 7702 | 8178 | /* PowerPC 750CXe v2.1 (G3 embedded) */ |
| 7703 | - POWERPC_DEF("750cxe_v2.1", CPU_POWERPC_750CXE_v21, 7x0), | |
| 8179 | + POWERPC_DEF("750cxe_v2.1", CPU_POWERPC_750CXE_v21, 750cx), | |
| 7704 | 8180 | /* PowerPC 750CXe v2.2 (G3 embedded) */ |
| 7705 | - POWERPC_DEF("750cxe_v2.2", CPU_POWERPC_750CXE_v22, 7x0), | |
| 8181 | + POWERPC_DEF("750cxe_v2.2", CPU_POWERPC_750CXE_v22, 750cx), | |
| 7706 | 8182 | /* PowerPC 750CXe v2.3 (G3 embedded) */ |
| 7707 | - POWERPC_DEF("750cxe_v2.3", CPU_POWERPC_750CXE_v23, 7x0), | |
| 8183 | + POWERPC_DEF("750cxe_v2.3", CPU_POWERPC_750CXE_v23, 750cx), | |
| 7708 | 8184 | /* PowerPC 750CXe v2.4 (G3 embedded) */ |
| 7709 | - POWERPC_DEF("750cxe_v2.4", CPU_POWERPC_750CXE_v24, 7x0), | |
| 8185 | + POWERPC_DEF("750cxe_v2.4", CPU_POWERPC_750CXE_v24, 750cx), | |
| 7710 | 8186 | /* PowerPC 750CXe v2.4b (G3 embedded) */ |
| 7711 | - POWERPC_DEF("750cxe_v2.4b", CPU_POWERPC_750CXE_v24b, 7x0), | |
| 8187 | + POWERPC_DEF("750cxe_v2.4b", CPU_POWERPC_750CXE_v24b, 750cx), | |
| 8188 | + /* PowerPC 750CXe v3.0 (G3 embedded) */ | |
| 8189 | + POWERPC_DEF("750cxe_v3.0", CPU_POWERPC_750CXE_v30, 750cx), | |
| 7712 | 8190 | /* PowerPC 750CXe v3.1 (G3 embedded) */ |
| 7713 | - POWERPC_DEF("750cxe_v3.1", CPU_POWERPC_750CXE_v31, 7x0), | |
| 8191 | + POWERPC_DEF("750cxe_v3.1", CPU_POWERPC_750CXE_v31, 750cx), | |
| 7714 | 8192 | /* PowerPC 750CXe v3.1b (G3 embedded) */ |
| 7715 | - POWERPC_DEF("750cxe_v3.1b", CPU_POWERPC_750CXE_v31b, 7x0), | |
| 8193 | + POWERPC_DEF("750cxe_v3.1b", CPU_POWERPC_750CXE_v31b, 750cx), | |
| 7716 | 8194 | /* PowerPC 750CXr (G3 embedded) */ |
| 7717 | - POWERPC_DEF("750cxr", CPU_POWERPC_750CXR, 7x0), | |
| 7718 | - /* PowerPC 750E (G3) */ | |
| 7719 | - POWERPC_DEF("750e", CPU_POWERPC_750E, 7x0), | |
| 8195 | + POWERPC_DEF("750cxr", CPU_POWERPC_750CXR, 750cx), | |
| 7720 | 8196 | /* PowerPC 750FL (G3 embedded) */ |
| 7721 | 8197 | POWERPC_DEF("750fl", CPU_POWERPC_750FL, 750fx), |
| 7722 | 8198 | /* PowerPC 750FX (G3 embedded) */ |
| ... | ... | @@ -7732,80 +8208,84 @@ static const ppc_def_t ppc_defs[] = { |
| 7732 | 8208 | /* PowerPC 750FX v2.3 (G3 embedded) */ |
| 7733 | 8209 | POWERPC_DEF("750fx_v2.3", CPU_POWERPC_750FX_v23, 750fx), |
| 7734 | 8210 | /* PowerPC 750GL (G3 embedded) */ |
| 7735 | - POWERPC_DEF("750gl", CPU_POWERPC_750GL, 750fx), | |
| 8211 | + POWERPC_DEF("750gl", CPU_POWERPC_750GL, 750gx), | |
| 7736 | 8212 | /* PowerPC 750GX (G3 embedded) */ |
| 7737 | - POWERPC_DEF("750gx", CPU_POWERPC_750GX, 750fx), | |
| 8213 | + POWERPC_DEF("750gx", CPU_POWERPC_750GX, 750gx), | |
| 7738 | 8214 | /* PowerPC 750GX v1.0 (G3 embedded) */ |
| 7739 | - POWERPC_DEF("750gx_v1.0", CPU_POWERPC_750GX_v10, 750fx), | |
| 8215 | + POWERPC_DEF("750gx_v1.0", CPU_POWERPC_750GX_v10, 750gx), | |
| 7740 | 8216 | /* PowerPC 750GX v1.1 (G3 embedded) */ |
| 7741 | - POWERPC_DEF("750gx_v1.1", CPU_POWERPC_750GX_v11, 750fx), | |
| 8217 | + POWERPC_DEF("750gx_v1.1", CPU_POWERPC_750GX_v11, 750gx), | |
| 7742 | 8218 | /* PowerPC 750GX v1.2 (G3 embedded) */ |
| 7743 | - POWERPC_DEF("750gx_v1.2", CPU_POWERPC_750GX_v12, 750fx), | |
| 8219 | + POWERPC_DEF("750gx_v1.2", CPU_POWERPC_750GX_v12, 750gx), | |
| 7744 | 8220 | /* PowerPC 750L (G3 embedded) */ |
| 7745 | - POWERPC_DEF("750l", CPU_POWERPC_750L, 7x0), | |
| 8221 | + POWERPC_DEF("750l", CPU_POWERPC_750L, 750), | |
| 7746 | 8222 | /* Code name for PowerPC 750L (G3 embedded) */ |
| 7747 | - POWERPC_DEF("LoneStar", CPU_POWERPC_750L, 7x0), | |
| 8223 | + POWERPC_DEF("LoneStar", CPU_POWERPC_750L, 750), | |
| 8224 | + /* PowerPC 750L v2.0 (G3 embedded) */ | |
| 8225 | + POWERPC_DEF("750l_v2.0", CPU_POWERPC_750L_v20, 750), | |
| 8226 | + /* PowerPC 750L v2.1 (G3 embedded) */ | |
| 8227 | + POWERPC_DEF("750l_v2.1", CPU_POWERPC_750L_v21, 750), | |
| 7748 | 8228 | /* PowerPC 750L v2.2 (G3 embedded) */ |
| 7749 | - POWERPC_DEF("750l_v2.2", CPU_POWERPC_750L_v22, 7x0), | |
| 8229 | + POWERPC_DEF("750l_v2.2", CPU_POWERPC_750L_v22, 750), | |
| 7750 | 8230 | /* PowerPC 750L v3.0 (G3 embedded) */ |
| 7751 | - POWERPC_DEF("750l_v3.0", CPU_POWERPC_750L_v30, 7x0), | |
| 8231 | + POWERPC_DEF("750l_v3.0", CPU_POWERPC_750L_v30, 750), | |
| 7752 | 8232 | /* PowerPC 750L v3.2 (G3 embedded) */ |
| 7753 | - POWERPC_DEF("750l_v3.2", CPU_POWERPC_750L_v32, 7x0), | |
| 8233 | + POWERPC_DEF("750l_v3.2", CPU_POWERPC_750L_v32, 750), | |
| 7754 | 8234 | /* Generic PowerPC 745 */ |
| 7755 | - POWERPC_DEF("745", CPU_POWERPC_7x5, 7x5), | |
| 8235 | + POWERPC_DEF("745", CPU_POWERPC_7x5, 745), | |
| 7756 | 8236 | /* Generic PowerPC 755 */ |
| 7757 | - POWERPC_DEF("755", CPU_POWERPC_7x5, 7x5), | |
| 8237 | + POWERPC_DEF("755", CPU_POWERPC_7x5, 755), | |
| 7758 | 8238 | /* Code name for PowerPC 745/755 */ |
| 7759 | - POWERPC_DEF("Goldfinger", CPU_POWERPC_7x5, 7x5), | |
| 8239 | + POWERPC_DEF("Goldfinger", CPU_POWERPC_7x5, 755), | |
| 7760 | 8240 | /* PowerPC 745 v1.0 */ |
| 7761 | - POWERPC_DEF("745_v1.0", CPU_POWERPC_7x5_v10, 7x5), | |
| 8241 | + POWERPC_DEF("745_v1.0", CPU_POWERPC_7x5_v10, 745), | |
| 7762 | 8242 | /* PowerPC 755 v1.0 */ |
| 7763 | - POWERPC_DEF("755_v1.0", CPU_POWERPC_7x5_v10, 7x5), | |
| 8243 | + POWERPC_DEF("755_v1.0", CPU_POWERPC_7x5_v10, 755), | |
| 7764 | 8244 | /* PowerPC 745 v1.1 */ |
| 7765 | - POWERPC_DEF("745_v1.1", CPU_POWERPC_7x5_v11, 7x5), | |
| 8245 | + POWERPC_DEF("745_v1.1", CPU_POWERPC_7x5_v11, 745), | |
| 7766 | 8246 | /* PowerPC 755 v1.1 */ |
| 7767 | - POWERPC_DEF("755_v1.1", CPU_POWERPC_7x5_v11, 7x5), | |
| 8247 | + POWERPC_DEF("755_v1.1", CPU_POWERPC_7x5_v11, 755), | |
| 7768 | 8248 | /* PowerPC 745 v2.0 */ |
| 7769 | - POWERPC_DEF("745_v2.0", CPU_POWERPC_7x5_v20, 7x5), | |
| 8249 | + POWERPC_DEF("745_v2.0", CPU_POWERPC_7x5_v20, 745), | |
| 7770 | 8250 | /* PowerPC 755 v2.0 */ |
| 7771 | - POWERPC_DEF("755_v2.0", CPU_POWERPC_7x5_v20, 7x5), | |
| 8251 | + POWERPC_DEF("755_v2.0", CPU_POWERPC_7x5_v20, 755), | |
| 7772 | 8252 | /* PowerPC 745 v2.1 */ |
| 7773 | - POWERPC_DEF("745_v2.1", CPU_POWERPC_7x5_v21, 7x5), | |
| 8253 | + POWERPC_DEF("745_v2.1", CPU_POWERPC_7x5_v21, 745), | |
| 7774 | 8254 | /* PowerPC 755 v2.1 */ |
| 7775 | - POWERPC_DEF("755_v2.1", CPU_POWERPC_7x5_v21, 7x5), | |
| 8255 | + POWERPC_DEF("755_v2.1", CPU_POWERPC_7x5_v21, 755), | |
| 7776 | 8256 | /* PowerPC 745 v2.2 */ |
| 7777 | - POWERPC_DEF("745_v2.2", CPU_POWERPC_7x5_v22, 7x5), | |
| 8257 | + POWERPC_DEF("745_v2.2", CPU_POWERPC_7x5_v22, 745), | |
| 7778 | 8258 | /* PowerPC 755 v2.2 */ |
| 7779 | - POWERPC_DEF("755_v2.2", CPU_POWERPC_7x5_v22, 7x5), | |
| 8259 | + POWERPC_DEF("755_v2.2", CPU_POWERPC_7x5_v22, 755), | |
| 7780 | 8260 | /* PowerPC 745 v2.3 */ |
| 7781 | - POWERPC_DEF("745_v2.3", CPU_POWERPC_7x5_v23, 7x5), | |
| 8261 | + POWERPC_DEF("745_v2.3", CPU_POWERPC_7x5_v23, 745), | |
| 7782 | 8262 | /* PowerPC 755 v2.3 */ |
| 7783 | - POWERPC_DEF("755_v2.3", CPU_POWERPC_7x5_v23, 7x5), | |
| 8263 | + POWERPC_DEF("755_v2.3", CPU_POWERPC_7x5_v23, 755), | |
| 7784 | 8264 | /* PowerPC 745 v2.4 */ |
| 7785 | - POWERPC_DEF("745_v2.4", CPU_POWERPC_7x5_v24, 7x5), | |
| 8265 | + POWERPC_DEF("745_v2.4", CPU_POWERPC_7x5_v24, 745), | |
| 7786 | 8266 | /* PowerPC 755 v2.4 */ |
| 7787 | - POWERPC_DEF("755_v2.4", CPU_POWERPC_7x5_v24, 7x5), | |
| 8267 | + POWERPC_DEF("755_v2.4", CPU_POWERPC_7x5_v24, 755), | |
| 7788 | 8268 | /* PowerPC 745 v2.5 */ |
| 7789 | - POWERPC_DEF("745_v2.5", CPU_POWERPC_7x5_v25, 7x5), | |
| 8269 | + POWERPC_DEF("745_v2.5", CPU_POWERPC_7x5_v25, 745), | |
| 7790 | 8270 | /* PowerPC 755 v2.5 */ |
| 7791 | - POWERPC_DEF("755_v2.5", CPU_POWERPC_7x5_v25, 7x5), | |
| 8271 | + POWERPC_DEF("755_v2.5", CPU_POWERPC_7x5_v25, 755), | |
| 7792 | 8272 | /* PowerPC 745 v2.6 */ |
| 7793 | - POWERPC_DEF("745_v2.6", CPU_POWERPC_7x5_v26, 7x5), | |
| 8273 | + POWERPC_DEF("745_v2.6", CPU_POWERPC_7x5_v26, 745), | |
| 7794 | 8274 | /* PowerPC 755 v2.6 */ |
| 7795 | - POWERPC_DEF("755_v2.6", CPU_POWERPC_7x5_v26, 7x5), | |
| 8275 | + POWERPC_DEF("755_v2.6", CPU_POWERPC_7x5_v26, 755), | |
| 7796 | 8276 | /* PowerPC 745 v2.7 */ |
| 7797 | - POWERPC_DEF("745_v2.7", CPU_POWERPC_7x5_v27, 7x5), | |
| 8277 | + POWERPC_DEF("745_v2.7", CPU_POWERPC_7x5_v27, 745), | |
| 7798 | 8278 | /* PowerPC 755 v2.7 */ |
| 7799 | - POWERPC_DEF("755_v2.7", CPU_POWERPC_7x5_v27, 7x5), | |
| 8279 | + POWERPC_DEF("755_v2.7", CPU_POWERPC_7x5_v27, 755), | |
| 7800 | 8280 | /* PowerPC 745 v2.8 */ |
| 7801 | - POWERPC_DEF("745_v2.8", CPU_POWERPC_7x5_v28, 7x5), | |
| 8281 | + POWERPC_DEF("745_v2.8", CPU_POWERPC_7x5_v28, 745), | |
| 7802 | 8282 | /* PowerPC 755 v2.8 */ |
| 7803 | - POWERPC_DEF("755_v2.8", CPU_POWERPC_7x5_v28, 7x5), | |
| 8283 | + POWERPC_DEF("755_v2.8", CPU_POWERPC_7x5_v28, 755), | |
| 7804 | 8284 | #if defined (TODO) |
| 7805 | 8285 | /* PowerPC 745P (G3) */ |
| 7806 | - POWERPC_DEF("745p", CPU_POWERPC_7x5P, 7x5), | |
| 8286 | + POWERPC_DEF("745p", CPU_POWERPC_7x5P, 745), | |
| 7807 | 8287 | /* PowerPC 755P (G3) */ |
| 7808 | - POWERPC_DEF("755p", CPU_POWERPC_7x5P, 7x5), | |
| 8288 | + POWERPC_DEF("755p", CPU_POWERPC_7x5P, 755), | |
| 7809 | 8289 | #endif |
| 7810 | 8290 | /* PowerPC 74xx family */ |
| 7811 | 8291 | /* PowerPC 7400 (G4) */ | ... | ... |