Commit 4e7774427dcc596225dbb6dc720a4bf637aba8d8
1 parent
8ccc2ace
Fix PowerPC 74xx definitions.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3798 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
228 additions
and
49 deletions
target-ppc/cpu.h
... | ... | @@ -1235,7 +1235,7 @@ static inline int cpu_mmu_index (CPUState *env) |
1235 | 1235 | #define SPR_40x_EVPR (0x3D6) |
1236 | 1236 | #define SPR_L3PM (0x3D7) |
1237 | 1237 | #define SPR_403_CDBCR (0x3D7) |
1238 | -#define SPR_L3OHCR (0x3D8) | |
1238 | +#define SPR_L3ITCR0 (0x3D8) | |
1239 | 1239 | #define SPR_TCR (0x3D8) |
1240 | 1240 | #define SPR_40x_TSR (0x3D8) |
1241 | 1241 | #define SPR_IBR (0x3DA) |
... | ... | @@ -1248,7 +1248,7 @@ static inline int cpu_mmu_index (CPUState *env) |
1248 | 1248 | #define SPR_40x_SRR2 (0x3DE) |
1249 | 1249 | #define SPR_SER (0x3DF) |
1250 | 1250 | #define SPR_40x_SRR3 (0x3DF) |
1251 | -#define SPR_L3ITCR0 (0x3E8) | |
1251 | +#define SPR_L3OHCR (0x3E8) | |
1252 | 1252 | #define SPR_L3ITCR1 (0x3E9) |
1253 | 1253 | #define SPR_L3ITCR2 (0x3EA) |
1254 | 1254 | #define SPR_L3ITCR3 (0x3EB) |
... | ... | @@ -1277,6 +1277,7 @@ static inline int cpu_mmu_index (CPUState *env) |
1277 | 1277 | #define SPR_MSSCR0 (0x3F6) |
1278 | 1278 | #define SPR_970_HID5 (0x3F6) |
1279 | 1279 | #define SPR_MSSSR0 (0x3F7) |
1280 | +#define SPR_MSSCR1 (0x3F7) | |
1280 | 1281 | #define SPR_DABRX (0x3F7) |
1281 | 1282 | #define SPR_40x_DAC2 (0x3F7) |
1282 | 1283 | #define SPR_MMUCFG (0x3F7) | ... | ... |
target-ppc/translate_init.c
... | ... | @@ -1149,11 +1149,6 @@ static void gen_spr_74xx (CPUPPCState *env) |
1149 | 1149 | &spr_read_generic, &spr_write_generic, |
1150 | 1150 | 0x00000000); |
1151 | 1151 | /* XXX : not implemented */ |
1152 | - spr_register(env, SPR_UBAMR, "UBAMR", | |
1153 | - &spr_read_ureg, SPR_NOACCESS, | |
1154 | - &spr_read_ureg, SPR_NOACCESS, | |
1155 | - 0x00000000); | |
1156 | - /* XXX : not implemented */ | |
1157 | 1152 | spr_register(env, SPR_MSSCR0, "MSSCR0", |
1158 | 1153 | SPR_NOACCESS, SPR_NOACCESS, |
1159 | 1154 | &spr_read_generic, &spr_write_generic, |
... | ... | @@ -1195,30 +1190,6 @@ static void gen_l3_ctrl (CPUPPCState *env) |
1195 | 1190 | SPR_NOACCESS, SPR_NOACCESS, |
1196 | 1191 | &spr_read_generic, &spr_write_generic, |
1197 | 1192 | 0x00000000); |
1198 | - /* L3ITCR1 */ | |
1199 | - /* XXX : not implemented */ | |
1200 | - spr_register(env, SPR_L3ITCR1, "L3ITCR1", | |
1201 | - SPR_NOACCESS, SPR_NOACCESS, | |
1202 | - &spr_read_generic, &spr_write_generic, | |
1203 | - 0x00000000); | |
1204 | - /* L3ITCR2 */ | |
1205 | - /* XXX : not implemented */ | |
1206 | - spr_register(env, SPR_L3ITCR2, "L3ITCR2", | |
1207 | - SPR_NOACCESS, SPR_NOACCESS, | |
1208 | - &spr_read_generic, &spr_write_generic, | |
1209 | - 0x00000000); | |
1210 | - /* L3ITCR3 */ | |
1211 | - /* XXX : not implemented */ | |
1212 | - spr_register(env, SPR_L3ITCR3, "L3ITCR3", | |
1213 | - SPR_NOACCESS, SPR_NOACCESS, | |
1214 | - &spr_read_generic, &spr_write_generic, | |
1215 | - 0x00000000); | |
1216 | - /* L3OHCR */ | |
1217 | - /* XXX : not implemented */ | |
1218 | - spr_register(env, SPR_L3OHCR, "L3OHCR", | |
1219 | - SPR_NOACCESS, SPR_NOACCESS, | |
1220 | - &spr_read_generic, &spr_write_generic, | |
1221 | - 0x00000000); | |
1222 | 1193 | /* L3PM */ |
1223 | 1194 | /* XXX : not implemented */ |
1224 | 1195 | spr_register(env, SPR_L3PM, "L3PM", |
... | ... | @@ -3052,6 +3023,14 @@ static int check_pow_hid0 (CPUPPCState *env) |
3052 | 3023 | return 0; |
3053 | 3024 | } |
3054 | 3025 | |
3026 | +static int check_pow_hid0_74xx (CPUPPCState *env) | |
3027 | +{ | |
3028 | + if (env->spr[SPR_HID0] & 0x00600000) | |
3029 | + return 1; | |
3030 | + | |
3031 | + return 0; | |
3032 | +} | |
3033 | + | |
3055 | 3034 | /*****************************************************************************/ |
3056 | 3035 | /* PowerPC implementations definitions */ |
3057 | 3036 | |
... | ... | @@ -4829,6 +4808,7 @@ static void init_proc_750cl (CPUPPCState *env) |
4829 | 4808 | ppc6xx_irq_init(env); |
4830 | 4809 | } |
4831 | 4810 | |
4811 | +/* PowerPC 750CX */ | |
4832 | 4812 | #define POWERPC_INSNS_750cx (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ |
4833 | 4813 | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ |
4834 | 4814 | PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | \ |
... | ... | @@ -4876,9 +4856,8 @@ static void init_proc_750cx (CPUPPCState *env) |
4876 | 4856 | 0x00000000); |
4877 | 4857 | /* Memory management */ |
4878 | 4858 | gen_low_BATs(env); |
4879 | - /* XXX: high BATs are also present but are known to be bugged on | |
4880 | - * die version 1.x | |
4881 | - */ | |
4859 | + /* PowerPC 750cx has 8 DBATs and 8 IBATs */ | |
4860 | + gen_high_BATs(env); | |
4882 | 4861 | init_excp_750cx(env); |
4883 | 4862 | env->dcache_line_size = 32; |
4884 | 4863 | env->icache_line_size = 32; |
... | ... | @@ -5147,7 +5126,7 @@ static void init_proc_755 (CPUPPCState *env) |
5147 | 5126 | #define POWERPC_FLAG_7400 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5148 | 5127 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5149 | 5128 | POWERPC_FLAG_BUS_CLK) |
5150 | -#define check_pow_7400 check_pow_hid0 | |
5129 | +#define check_pow_7400 check_pow_hid0_74xx | |
5151 | 5130 | |
5152 | 5131 | static void init_proc_7400 (CPUPPCState *env) |
5153 | 5132 | { |
... | ... | @@ -5157,6 +5136,17 @@ static void init_proc_7400 (CPUPPCState *env) |
5157 | 5136 | gen_tbl(env); |
5158 | 5137 | /* 74xx specific SPR */ |
5159 | 5138 | gen_spr_74xx(env); |
5139 | + /* XXX : not implemented */ | |
5140 | + spr_register(env, SPR_UBAMR, "UBAMR", | |
5141 | + &spr_read_ureg, SPR_NOACCESS, | |
5142 | + &spr_read_ureg, SPR_NOACCESS, | |
5143 | + 0x00000000); | |
5144 | + /* XXX: this seems not implemented on all revisions. */ | |
5145 | + /* XXX : not implemented */ | |
5146 | + spr_register(env, SPR_MSSCR1, "MSSCR1", | |
5147 | + SPR_NOACCESS, SPR_NOACCESS, | |
5148 | + &spr_read_generic, &spr_write_generic, | |
5149 | + 0x00000000); | |
5160 | 5150 | /* Thermal management */ |
5161 | 5151 | gen_spr_thrm(env); |
5162 | 5152 | /* Memory management */ |
... | ... | @@ -5188,7 +5178,7 @@ static void init_proc_7400 (CPUPPCState *env) |
5188 | 5178 | #define POWERPC_FLAG_7410 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5189 | 5179 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5190 | 5180 | POWERPC_FLAG_BUS_CLK) |
5191 | -#define check_pow_7410 check_pow_hid0 | |
5181 | +#define check_pow_7410 check_pow_hid0_74xx | |
5192 | 5182 | |
5193 | 5183 | static void init_proc_7410 (CPUPPCState *env) |
5194 | 5184 | { |
... | ... | @@ -5198,6 +5188,11 @@ static void init_proc_7410 (CPUPPCState *env) |
5198 | 5188 | gen_tbl(env); |
5199 | 5189 | /* 74xx specific SPR */ |
5200 | 5190 | gen_spr_74xx(env); |
5191 | + /* XXX : not implemented */ | |
5192 | + spr_register(env, SPR_UBAMR, "UBAMR", | |
5193 | + &spr_read_ureg, SPR_NOACCESS, | |
5194 | + &spr_read_ureg, SPR_NOACCESS, | |
5195 | + 0x00000000); | |
5201 | 5196 | /* Thermal management */ |
5202 | 5197 | gen_spr_thrm(env); |
5203 | 5198 | /* L2PMCR */ |
... | ... | @@ -5241,7 +5236,7 @@ static void init_proc_7410 (CPUPPCState *env) |
5241 | 5236 | #define POWERPC_FLAG_7440 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5242 | 5237 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5243 | 5238 | POWERPC_FLAG_BUS_CLK) |
5244 | -#define check_pow_7440 check_pow_hid0 | |
5239 | +#define check_pow_7440 check_pow_hid0_74xx | |
5245 | 5240 | |
5246 | 5241 | __attribute__ (( unused )) |
5247 | 5242 | static void init_proc_7440 (CPUPPCState *env) |
... | ... | @@ -5252,6 +5247,11 @@ static void init_proc_7440 (CPUPPCState *env) |
5252 | 5247 | gen_tbl(env); |
5253 | 5248 | /* 74xx specific SPR */ |
5254 | 5249 | gen_spr_74xx(env); |
5250 | + /* XXX : not implemented */ | |
5251 | + spr_register(env, SPR_UBAMR, "UBAMR", | |
5252 | + &spr_read_ureg, SPR_NOACCESS, | |
5253 | + &spr_read_ureg, SPR_NOACCESS, | |
5254 | + 0x00000000); | |
5255 | 5255 | /* LDSTCR */ |
5256 | 5256 | /* XXX : not implemented */ |
5257 | 5257 | spr_register(env, SPR_LDSTCR, "LDSTCR", |
... | ... | @@ -5321,7 +5321,7 @@ static void init_proc_7440 (CPUPPCState *env) |
5321 | 5321 | #define POWERPC_FLAG_7450 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5322 | 5322 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5323 | 5323 | POWERPC_FLAG_BUS_CLK) |
5324 | -#define check_pow_7450 check_pow_hid0 | |
5324 | +#define check_pow_7450 check_pow_hid0_74xx | |
5325 | 5325 | |
5326 | 5326 | __attribute__ (( unused )) |
5327 | 5327 | static void init_proc_7450 (CPUPPCState *env) |
... | ... | @@ -5334,6 +5334,35 @@ static void init_proc_7450 (CPUPPCState *env) |
5334 | 5334 | gen_spr_74xx(env); |
5335 | 5335 | /* Level 3 cache control */ |
5336 | 5336 | gen_l3_ctrl(env); |
5337 | + /* L3ITCR1 */ | |
5338 | + /* XXX : not implemented */ | |
5339 | + spr_register(env, SPR_L3ITCR1, "L3ITCR1", | |
5340 | + SPR_NOACCESS, SPR_NOACCESS, | |
5341 | + &spr_read_generic, &spr_write_generic, | |
5342 | + 0x00000000); | |
5343 | + /* L3ITCR2 */ | |
5344 | + /* XXX : not implemented */ | |
5345 | + spr_register(env, SPR_L3ITCR2, "L3ITCR2", | |
5346 | + SPR_NOACCESS, SPR_NOACCESS, | |
5347 | + &spr_read_generic, &spr_write_generic, | |
5348 | + 0x00000000); | |
5349 | + /* L3ITCR3 */ | |
5350 | + /* XXX : not implemented */ | |
5351 | + spr_register(env, SPR_L3ITCR3, "L3ITCR3", | |
5352 | + SPR_NOACCESS, SPR_NOACCESS, | |
5353 | + &spr_read_generic, &spr_write_generic, | |
5354 | + 0x00000000); | |
5355 | + /* L3OHCR */ | |
5356 | + /* XXX : not implemented */ | |
5357 | + spr_register(env, SPR_L3OHCR, "L3OHCR", | |
5358 | + SPR_NOACCESS, SPR_NOACCESS, | |
5359 | + &spr_read_generic, &spr_write_generic, | |
5360 | + 0x00000000); | |
5361 | + /* XXX : not implemented */ | |
5362 | + spr_register(env, SPR_UBAMR, "UBAMR", | |
5363 | + &spr_read_ureg, SPR_NOACCESS, | |
5364 | + &spr_read_ureg, SPR_NOACCESS, | |
5365 | + 0x00000000); | |
5337 | 5366 | /* LDSTCR */ |
5338 | 5367 | /* XXX : not implemented */ |
5339 | 5368 | spr_register(env, SPR_LDSTCR, "LDSTCR", |
... | ... | @@ -5403,7 +5432,7 @@ static void init_proc_7450 (CPUPPCState *env) |
5403 | 5432 | #define POWERPC_FLAG_7445 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5404 | 5433 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5405 | 5434 | POWERPC_FLAG_BUS_CLK) |
5406 | -#define check_pow_7445 check_pow_hid0 | |
5435 | +#define check_pow_7445 check_pow_hid0_74xx | |
5407 | 5436 | |
5408 | 5437 | __attribute__ (( unused )) |
5409 | 5438 | static void init_proc_7445 (CPUPPCState *env) |
... | ... | @@ -5517,7 +5546,7 @@ static void init_proc_7445 (CPUPPCState *env) |
5517 | 5546 | #define POWERPC_FLAG_7455 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ |
5518 | 5547 | POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ |
5519 | 5548 | POWERPC_FLAG_BUS_CLK) |
5520 | -#define check_pow_7455 check_pow_hid0 | |
5549 | +#define check_pow_7455 check_pow_hid0_74xx | |
5521 | 5550 | |
5522 | 5551 | __attribute__ (( unused )) |
5523 | 5552 | static void init_proc_7455 (CPUPPCState *env) |
... | ... | @@ -5613,6 +5642,146 @@ static void init_proc_7455 (CPUPPCState *env) |
5613 | 5642 | ppc6xx_irq_init(env); |
5614 | 5643 | } |
5615 | 5644 | |
5645 | +/* PowerPC 7457 (aka G4) */ | |
5646 | +#define POWERPC_INSNS_7457 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ | |
5647 | + PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | \ | |
5648 | + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | \ | |
5649 | + PPC_FLOAT_STFIWX | \ | |
5650 | + PPC_CACHE | PPC_CACHE_ICBI | \ | |
5651 | + PPC_CACHE_DCBA | PPC_CACHE_DCBZ | \ | |
5652 | + PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | |
5653 | + PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | \ | |
5654 | + PPC_MEM_TLBIA | PPC_74xx_TLB | \ | |
5655 | + PPC_SEGMENT | PPC_EXTERN | \ | |
5656 | + PPC_ALTIVEC) | |
5657 | +#define POWERPC_MSRM_7457 (0x000000000205FF77ULL) | |
5658 | +#define POWERPC_MMU_7457 (POWERPC_MMU_SOFT_74xx) | |
5659 | +#define POWERPC_EXCP_7457 (POWERPC_EXCP_74xx) | |
5660 | +#define POWERPC_INPUT_7457 (PPC_FLAGS_INPUT_6xx) | |
5661 | +#define POWERPC_BFDM_7457 (bfd_mach_ppc_7400) | |
5662 | +#define POWERPC_FLAG_7457 (POWERPC_FLAG_VRE | POWERPC_FLAG_SE | \ | |
5663 | + POWERPC_FLAG_BE | POWERPC_FLAG_PMM | \ | |
5664 | + POWERPC_FLAG_BUS_CLK) | |
5665 | +#define check_pow_7457 check_pow_hid0_74xx | |
5666 | + | |
5667 | +__attribute__ (( unused )) | |
5668 | +static void init_proc_7457 (CPUPPCState *env) | |
5669 | +{ | |
5670 | + gen_spr_ne_601(env); | |
5671 | + gen_spr_7xx(env); | |
5672 | + /* Time base */ | |
5673 | + gen_tbl(env); | |
5674 | + /* 74xx specific SPR */ | |
5675 | + gen_spr_74xx(env); | |
5676 | + /* Level 3 cache control */ | |
5677 | + gen_l3_ctrl(env); | |
5678 | + /* L3ITCR1 */ | |
5679 | + /* XXX : not implemented */ | |
5680 | + spr_register(env, SPR_L3ITCR1, "L3ITCR1", | |
5681 | + SPR_NOACCESS, SPR_NOACCESS, | |
5682 | + &spr_read_generic, &spr_write_generic, | |
5683 | + 0x00000000); | |
5684 | + /* L3ITCR2 */ | |
5685 | + /* XXX : not implemented */ | |
5686 | + spr_register(env, SPR_L3ITCR2, "L3ITCR2", | |
5687 | + SPR_NOACCESS, SPR_NOACCESS, | |
5688 | + &spr_read_generic, &spr_write_generic, | |
5689 | + 0x00000000); | |
5690 | + /* L3ITCR3 */ | |
5691 | + /* XXX : not implemented */ | |
5692 | + spr_register(env, SPR_L3ITCR3, "L3ITCR3", | |
5693 | + SPR_NOACCESS, SPR_NOACCESS, | |
5694 | + &spr_read_generic, &spr_write_generic, | |
5695 | + 0x00000000); | |
5696 | + /* L3OHCR */ | |
5697 | + /* XXX : not implemented */ | |
5698 | + spr_register(env, SPR_L3OHCR, "L3OHCR", | |
5699 | + SPR_NOACCESS, SPR_NOACCESS, | |
5700 | + &spr_read_generic, &spr_write_generic, | |
5701 | + 0x00000000); | |
5702 | + /* LDSTCR */ | |
5703 | + /* XXX : not implemented */ | |
5704 | + spr_register(env, SPR_LDSTCR, "LDSTCR", | |
5705 | + SPR_NOACCESS, SPR_NOACCESS, | |
5706 | + &spr_read_generic, &spr_write_generic, | |
5707 | + 0x00000000); | |
5708 | + /* ICTRL */ | |
5709 | + /* XXX : not implemented */ | |
5710 | + spr_register(env, SPR_ICTRL, "ICTRL", | |
5711 | + SPR_NOACCESS, SPR_NOACCESS, | |
5712 | + &spr_read_generic, &spr_write_generic, | |
5713 | + 0x00000000); | |
5714 | + /* MSSSR0 */ | |
5715 | + /* XXX : not implemented */ | |
5716 | + spr_register(env, SPR_MSSSR0, "MSSSR0", | |
5717 | + SPR_NOACCESS, SPR_NOACCESS, | |
5718 | + &spr_read_generic, &spr_write_generic, | |
5719 | + 0x00000000); | |
5720 | + /* PMC */ | |
5721 | + /* XXX : not implemented */ | |
5722 | + spr_register(env, SPR_PMC5, "PMC5", | |
5723 | + SPR_NOACCESS, SPR_NOACCESS, | |
5724 | + &spr_read_generic, &spr_write_generic, | |
5725 | + 0x00000000); | |
5726 | + /* XXX : not implemented */ | |
5727 | + spr_register(env, SPR_UPMC5, "UPMC5", | |
5728 | + &spr_read_ureg, SPR_NOACCESS, | |
5729 | + &spr_read_ureg, SPR_NOACCESS, | |
5730 | + 0x00000000); | |
5731 | + /* XXX : not implemented */ | |
5732 | + spr_register(env, SPR_PMC6, "PMC6", | |
5733 | + SPR_NOACCESS, SPR_NOACCESS, | |
5734 | + &spr_read_generic, &spr_write_generic, | |
5735 | + 0x00000000); | |
5736 | + /* XXX : not implemented */ | |
5737 | + spr_register(env, SPR_UPMC6, "UPMC6", | |
5738 | + &spr_read_ureg, SPR_NOACCESS, | |
5739 | + &spr_read_ureg, SPR_NOACCESS, | |
5740 | + 0x00000000); | |
5741 | + /* SPRGs */ | |
5742 | + spr_register(env, SPR_SPRG4, "SPRG4", | |
5743 | + SPR_NOACCESS, SPR_NOACCESS, | |
5744 | + &spr_read_generic, &spr_write_generic, | |
5745 | + 0x00000000); | |
5746 | + spr_register(env, SPR_USPRG4, "USPRG4", | |
5747 | + &spr_read_ureg, SPR_NOACCESS, | |
5748 | + &spr_read_ureg, SPR_NOACCESS, | |
5749 | + 0x00000000); | |
5750 | + spr_register(env, SPR_SPRG5, "SPRG5", | |
5751 | + SPR_NOACCESS, SPR_NOACCESS, | |
5752 | + &spr_read_generic, &spr_write_generic, | |
5753 | + 0x00000000); | |
5754 | + spr_register(env, SPR_USPRG5, "USPRG5", | |
5755 | + &spr_read_ureg, SPR_NOACCESS, | |
5756 | + &spr_read_ureg, SPR_NOACCESS, | |
5757 | + 0x00000000); | |
5758 | + spr_register(env, SPR_SPRG6, "SPRG6", | |
5759 | + SPR_NOACCESS, SPR_NOACCESS, | |
5760 | + &spr_read_generic, &spr_write_generic, | |
5761 | + 0x00000000); | |
5762 | + spr_register(env, SPR_USPRG6, "USPRG6", | |
5763 | + &spr_read_ureg, SPR_NOACCESS, | |
5764 | + &spr_read_ureg, SPR_NOACCESS, | |
5765 | + 0x00000000); | |
5766 | + spr_register(env, SPR_SPRG7, "SPRG7", | |
5767 | + SPR_NOACCESS, SPR_NOACCESS, | |
5768 | + &spr_read_generic, &spr_write_generic, | |
5769 | + 0x00000000); | |
5770 | + spr_register(env, SPR_USPRG7, "USPRG7", | |
5771 | + &spr_read_ureg, SPR_NOACCESS, | |
5772 | + &spr_read_ureg, SPR_NOACCESS, | |
5773 | + 0x00000000); | |
5774 | + /* Memory management */ | |
5775 | + gen_low_BATs(env); | |
5776 | + gen_high_BATs(env); | |
5777 | + gen_74xx_soft_tlb(env, 128, 2); | |
5778 | + init_excp_7450(env); | |
5779 | + env->dcache_line_size = 32; | |
5780 | + env->icache_line_size = 32; | |
5781 | + /* Allocate hardware IRQ controller */ | |
5782 | + ppc6xx_irq_init(env); | |
5783 | +} | |
5784 | + | |
5616 | 5785 | #if defined (TARGET_PPC64) |
5617 | 5786 | /* PowerPC 970 */ |
5618 | 5787 | #define POWERPC_INSNS_970 (PPC_INSNS_BASE | PPC_STRING | PPC_MFTB | \ |
... | ... | @@ -6651,6 +6820,7 @@ enum { |
6651 | 6820 | CPU_POWERPC_7400_v10 = 0x000C0100, |
6652 | 6821 | CPU_POWERPC_7400_v11 = 0x000C0101, |
6653 | 6822 | CPU_POWERPC_7400_v20 = 0x000C0200, |
6823 | + CPU_POWERPC_7400_v21 = 0x000C0201, | |
6654 | 6824 | CPU_POWERPC_7400_v22 = 0x000C0202, |
6655 | 6825 | CPU_POWERPC_7400_v26 = 0x000C0206, |
6656 | 6826 | CPU_POWERPC_7400_v27 = 0x000C0207, |
... | ... | @@ -6671,10 +6841,12 @@ enum { |
6671 | 6841 | CPU_POWERPC_7450_v10 = 0x80000100, |
6672 | 6842 | CPU_POWERPC_7450_v11 = 0x80000101, |
6673 | 6843 | CPU_POWERPC_7450_v12 = 0x80000102, |
6674 | - CPU_POWERPC_7450_v20 = 0x80000200, /* aka D: 2.04 */ | |
6844 | + CPU_POWERPC_7450_v20 = 0x80000200, /* aka A, B, C, D: 2.04 */ | |
6675 | 6845 | CPU_POWERPC_7450_v21 = 0x80000201, /* aka E */ |
6676 | - CPU_POWERPC_74x1 = 0x80000203, | |
6677 | - CPU_POWERPC_74x1G = 0x80000210, /* aka G: 2.3 */ | |
6846 | +#define CPU_POWERPC_74x1 CPU_POWERPC_74x1_v23 | |
6847 | + CPU_POWERPC_74x1_v23 = 0x80000203, /* aka G: 2.3 */ | |
6848 | + /* XXX: this entry might be a bug in some documentation */ | |
6849 | + CPU_POWERPC_74x1_v210 = 0x80000210, /* aka G: 2.3 ? */ | |
6678 | 6850 | #define CPU_POWERPC_74x5 CPU_POWERPC_74x5_v32 |
6679 | 6851 | CPU_POWERPC_74x5_v10 = 0x80010100, |
6680 | 6852 | /* XXX: missing 0x80010200 */ |
... | ... | @@ -8300,6 +8472,8 @@ static const ppc_def_t ppc_defs[] = { |
8300 | 8472 | POWERPC_DEF("7400_v1.1", CPU_POWERPC_7400_v11, 7400), |
8301 | 8473 | /* PowerPC 7400 v2.0 (G4) */ |
8302 | 8474 | POWERPC_DEF("7400_v2.0", CPU_POWERPC_7400_v20, 7400), |
8475 | + /* PowerPC 7400 v2.1 (G4) */ | |
8476 | + POWERPC_DEF("7400_v2.1", CPU_POWERPC_7400_v21, 7400), | |
8303 | 8477 | /* PowerPC 7400 v2.2 (G4) */ |
8304 | 8478 | POWERPC_DEF("7400_v2.2", CPU_POWERPC_7400_v22, 7400), |
8305 | 8479 | /* PowerPC 7400 v2.6 (G4) */ |
... | ... | @@ -8352,10 +8526,16 @@ static const ppc_def_t ppc_defs[] = { |
8352 | 8526 | POWERPC_DEF("7441", CPU_POWERPC_74x1, 7440), |
8353 | 8527 | /* PowerPC 7451 (G4) */ |
8354 | 8528 | POWERPC_DEF("7451", CPU_POWERPC_74x1, 7450), |
8355 | - /* PowerPC 7441g (G4) */ | |
8356 | - POWERPC_DEF("7441g", CPU_POWERPC_74x1G, 7440), | |
8357 | - /* PowerPC 7451g (G4) */ | |
8358 | - POWERPC_DEF("7451g", CPU_POWERPC_74x1G, 7450), | |
8529 | + /* PowerPC 7441 v2.1 (G4) */ | |
8530 | + POWERPC_DEF("7441_v2.1", CPU_POWERPC_7450_v21, 7440), | |
8531 | + /* PowerPC 7441 v2.3 (G4) */ | |
8532 | + POWERPC_DEF("7441_v2.3", CPU_POWERPC_74x1_v23, 7440), | |
8533 | + /* PowerPC 7451 v2.3 (G4) */ | |
8534 | + POWERPC_DEF("7451_v2.3", CPU_POWERPC_74x1_v23, 7450), | |
8535 | + /* PowerPC 7441 v2.10 (G4) */ | |
8536 | + POWERPC_DEF("7441_v2.10", CPU_POWERPC_74x1_v210, 7440), | |
8537 | + /* PowerPC 7451 v2.10 (G4) */ | |
8538 | + POWERPC_DEF("7451_v2.10", CPU_POWERPC_74x1_v210, 7450), | |
8359 | 8539 | /* PowerPC 7445 (G4) */ |
8360 | 8540 | POWERPC_DEF("7445", CPU_POWERPC_74x5, 7445), |
8361 | 8541 | /* PowerPC 7455 (G4) */ |
... | ... | @@ -8396,8 +8576,6 @@ static const ppc_def_t ppc_defs[] = { |
8396 | 8576 | POWERPC_DEF("7447_v1.1", CPU_POWERPC_74x7_v11, 7445), |
8397 | 8577 | /* PowerPC 7457 v1.1 (G4) */ |
8398 | 8578 | POWERPC_DEF("7457_v1.1", CPU_POWERPC_74x7_v11, 7455), |
8399 | - /* PowerPC 7447 v1.2 (G4) */ | |
8400 | - POWERPC_DEF("7447_v1.2", CPU_POWERPC_74x7_v12, 7445), | |
8401 | 8579 | /* PowerPC 7457 v1.2 (G4) */ |
8402 | 8580 | POWERPC_DEF("7457_v1.2", CPU_POWERPC_74x7_v12, 7455), |
8403 | 8581 | /* PowerPC 7447A (G4) */ | ... | ... |