Commit 578bb25230229307c0b6ff62ae03ac0fbda27b18
1 parent
056b05f8
More comments about unimplemented SPRs.
Tag unused functions with unused attribute instead of using #ifdef (TODO) to ease tests: just have to enable the implementation in the cpu_defs table. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3306 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
110 additions
and
56 deletions
target-ppc/translate_init.c
| @@ -275,17 +275,16 @@ static void spr_write_sdr1 (void *opaque, int sprn) | @@ -275,17 +275,16 @@ static void spr_write_sdr1 (void *opaque, int sprn) | ||
| 275 | 275 | ||
| 276 | /* 64 bits PowerPC specific SPRs */ | 276 | /* 64 bits PowerPC specific SPRs */ |
| 277 | /* ASR */ | 277 | /* ASR */ |
| 278 | -/* Currently unused */ | ||
| 279 | -#if 0 && defined(TARGET_PPC64) | 278 | +#if defined(TARGET_PPC64) |
| 279 | +__attribute__ (( unused )) | ||
| 280 | static void spr_read_asr (void *opaque, int sprn) | 280 | static void spr_read_asr (void *opaque, int sprn) |
| 281 | { | 281 | { |
| 282 | gen_op_load_asr(); | 282 | gen_op_load_asr(); |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | +__attribute__ (( unused )) | ||
| 285 | static void spr_write_asr (void *opaque, int sprn) | 286 | static void spr_write_asr (void *opaque, int sprn) |
| 286 | { | 287 | { |
| 287 | - DisasContext *ctx = opaque; | ||
| 288 | - | ||
| 289 | gen_op_store_asr(); | 288 | gen_op_store_asr(); |
| 290 | } | 289 | } |
| 291 | #endif | 290 | #endif |
| @@ -816,30 +815,37 @@ static void gen_spr_7xx (CPUPPCState *env) | @@ -816,30 +815,37 @@ static void gen_spr_7xx (CPUPPCState *env) | ||
| 816 | SPR_NOACCESS, SPR_NOACCESS, | 815 | SPR_NOACCESS, SPR_NOACCESS, |
| 817 | &spr_read_generic, SPR_NOACCESS, | 816 | &spr_read_generic, SPR_NOACCESS, |
| 818 | 0x00000000); | 817 | 0x00000000); |
| 818 | + /* XXX : not implemented */ | ||
| 819 | spr_register(env, SPR_UMMCR0, "UMMCR0", | 819 | spr_register(env, SPR_UMMCR0, "UMMCR0", |
| 820 | &spr_read_ureg, SPR_NOACCESS, | 820 | &spr_read_ureg, SPR_NOACCESS, |
| 821 | &spr_read_ureg, SPR_NOACCESS, | 821 | &spr_read_ureg, SPR_NOACCESS, |
| 822 | 0x00000000); | 822 | 0x00000000); |
| 823 | + /* XXX : not implemented */ | ||
| 823 | spr_register(env, SPR_UMMCR1, "UMMCR1", | 824 | spr_register(env, SPR_UMMCR1, "UMMCR1", |
| 824 | &spr_read_ureg, SPR_NOACCESS, | 825 | &spr_read_ureg, SPR_NOACCESS, |
| 825 | &spr_read_ureg, SPR_NOACCESS, | 826 | &spr_read_ureg, SPR_NOACCESS, |
| 826 | 0x00000000); | 827 | 0x00000000); |
| 828 | + /* XXX : not implemented */ | ||
| 827 | spr_register(env, SPR_UPMC1, "UPMC1", | 829 | spr_register(env, SPR_UPMC1, "UPMC1", |
| 828 | &spr_read_ureg, SPR_NOACCESS, | 830 | &spr_read_ureg, SPR_NOACCESS, |
| 829 | &spr_read_ureg, SPR_NOACCESS, | 831 | &spr_read_ureg, SPR_NOACCESS, |
| 830 | 0x00000000); | 832 | 0x00000000); |
| 833 | + /* XXX : not implemented */ | ||
| 831 | spr_register(env, SPR_UPMC2, "UPMC2", | 834 | spr_register(env, SPR_UPMC2, "UPMC2", |
| 832 | &spr_read_ureg, SPR_NOACCESS, | 835 | &spr_read_ureg, SPR_NOACCESS, |
| 833 | &spr_read_ureg, SPR_NOACCESS, | 836 | &spr_read_ureg, SPR_NOACCESS, |
| 834 | 0x00000000); | 837 | 0x00000000); |
| 838 | + /* XXX : not implemented */ | ||
| 835 | spr_register(env, SPR_UPMC3, "UPMC3", | 839 | spr_register(env, SPR_UPMC3, "UPMC3", |
| 836 | &spr_read_ureg, SPR_NOACCESS, | 840 | &spr_read_ureg, SPR_NOACCESS, |
| 837 | &spr_read_ureg, SPR_NOACCESS, | 841 | &spr_read_ureg, SPR_NOACCESS, |
| 838 | 0x00000000); | 842 | 0x00000000); |
| 843 | + /* XXX : not implemented */ | ||
| 839 | spr_register(env, SPR_UPMC4, "UPMC4", | 844 | spr_register(env, SPR_UPMC4, "UPMC4", |
| 840 | &spr_read_ureg, SPR_NOACCESS, | 845 | &spr_read_ureg, SPR_NOACCESS, |
| 841 | &spr_read_ureg, SPR_NOACCESS, | 846 | &spr_read_ureg, SPR_NOACCESS, |
| 842 | 0x00000000); | 847 | 0x00000000); |
| 848 | + /* XXX : not implemented */ | ||
| 843 | spr_register(env, SPR_USIAR, "USIAR", | 849 | spr_register(env, SPR_USIAR, "USIAR", |
| 844 | &spr_read_ureg, SPR_NOACCESS, | 850 | &spr_read_ureg, SPR_NOACCESS, |
| 845 | &spr_read_ureg, SPR_NOACCESS, | 851 | &spr_read_ureg, SPR_NOACCESS, |
| @@ -956,12 +962,14 @@ static void gen_spr_G2 (CPUPPCState *env) | @@ -956,12 +962,14 @@ static void gen_spr_G2 (CPUPPCState *env) | ||
| 956 | { | 962 | { |
| 957 | /* Memory base address */ | 963 | /* Memory base address */ |
| 958 | /* MBAR */ | 964 | /* MBAR */ |
| 965 | + /* XXX : not implemented */ | ||
| 959 | spr_register(env, SPR_MBAR, "MBAR", | 966 | spr_register(env, SPR_MBAR, "MBAR", |
| 960 | SPR_NOACCESS, SPR_NOACCESS, | 967 | SPR_NOACCESS, SPR_NOACCESS, |
| 961 | &spr_read_generic, &spr_write_generic, | 968 | &spr_read_generic, &spr_write_generic, |
| 962 | 0x00000000); | 969 | 0x00000000); |
| 963 | /* System version register */ | 970 | /* System version register */ |
| 964 | /* SVR */ | 971 | /* SVR */ |
| 972 | + /* XXX : TODO: initialize it to an appropriate value */ | ||
| 965 | spr_register(env, SPR_SVR, "SVR", | 973 | spr_register(env, SPR_SVR, "SVR", |
| 966 | SPR_NOACCESS, SPR_NOACCESS, | 974 | SPR_NOACCESS, SPR_NOACCESS, |
| 967 | &spr_read_generic, SPR_NOACCESS, | 975 | &spr_read_generic, SPR_NOACCESS, |
| @@ -1143,6 +1151,7 @@ static void gen_spr_74xx (CPUPPCState *env) | @@ -1143,6 +1151,7 @@ static void gen_spr_74xx (CPUPPCState *env) | ||
| 1143 | SPR_NOACCESS, SPR_NOACCESS, | 1151 | SPR_NOACCESS, SPR_NOACCESS, |
| 1144 | &spr_read_generic, &spr_write_generic, | 1152 | &spr_read_generic, &spr_write_generic, |
| 1145 | 0x00000000); | 1153 | 0x00000000); |
| 1154 | + /* XXX : not implemented */ | ||
| 1146 | spr_register(env, SPR_UMMCR2, "UMMCR2", | 1155 | spr_register(env, SPR_UMMCR2, "UMMCR2", |
| 1147 | &spr_read_ureg, SPR_NOACCESS, | 1156 | &spr_read_ureg, SPR_NOACCESS, |
| 1148 | &spr_read_ureg, SPR_NOACCESS, | 1157 | &spr_read_ureg, SPR_NOACCESS, |
| @@ -1152,10 +1161,12 @@ static void gen_spr_74xx (CPUPPCState *env) | @@ -1152,10 +1161,12 @@ static void gen_spr_74xx (CPUPPCState *env) | ||
| 1152 | SPR_NOACCESS, SPR_NOACCESS, | 1161 | SPR_NOACCESS, SPR_NOACCESS, |
| 1153 | &spr_read_generic, &spr_write_generic, | 1162 | &spr_read_generic, &spr_write_generic, |
| 1154 | 0x00000000); | 1163 | 0x00000000); |
| 1164 | + /* XXX : not implemented */ | ||
| 1155 | spr_register(env, SPR_UBAMR, "UBAMR", | 1165 | spr_register(env, SPR_UBAMR, "UBAMR", |
| 1156 | &spr_read_ureg, SPR_NOACCESS, | 1166 | &spr_read_ureg, SPR_NOACCESS, |
| 1157 | &spr_read_ureg, SPR_NOACCESS, | 1167 | &spr_read_ureg, SPR_NOACCESS, |
| 1158 | 0x00000000); | 1168 | 0x00000000); |
| 1169 | + /* XXX : not implemented */ | ||
| 1159 | spr_register(env, SPR_MSSCR0, "MSSCR0", | 1170 | spr_register(env, SPR_MSSCR0, "MSSCR0", |
| 1160 | SPR_NOACCESS, SPR_NOACCESS, | 1171 | SPR_NOACCESS, SPR_NOACCESS, |
| 1161 | &spr_read_generic, &spr_write_generic, | 1172 | &spr_read_generic, &spr_write_generic, |
| @@ -1178,7 +1189,6 @@ static void gen_spr_74xx (CPUPPCState *env) | @@ -1178,7 +1189,6 @@ static void gen_spr_74xx (CPUPPCState *env) | ||
| 1178 | 0x00000000); | 1189 | 0x00000000); |
| 1179 | } | 1190 | } |
| 1180 | 1191 | ||
| 1181 | -#if defined (TODO) | ||
| 1182 | static void gen_l3_ctrl (CPUPPCState *env) | 1192 | static void gen_l3_ctrl (CPUPPCState *env) |
| 1183 | { | 1193 | { |
| 1184 | /* L3CR */ | 1194 | /* L3CR */ |
| @@ -1188,56 +1198,64 @@ static void gen_l3_ctrl (CPUPPCState *env) | @@ -1188,56 +1198,64 @@ static void gen_l3_ctrl (CPUPPCState *env) | ||
| 1188 | &spr_read_generic, &spr_write_generic, | 1198 | &spr_read_generic, &spr_write_generic, |
| 1189 | 0x00000000); | 1199 | 0x00000000); |
| 1190 | /* L3ITCR0 */ | 1200 | /* L3ITCR0 */ |
| 1201 | + /* XXX : not implemented */ | ||
| 1191 | spr_register(env, SPR_L3ITCR0, "L3ITCR0", | 1202 | spr_register(env, SPR_L3ITCR0, "L3ITCR0", |
| 1192 | SPR_NOACCESS, SPR_NOACCESS, | 1203 | SPR_NOACCESS, SPR_NOACCESS, |
| 1193 | &spr_read_generic, &spr_write_generic, | 1204 | &spr_read_generic, &spr_write_generic, |
| 1194 | 0x00000000); | 1205 | 0x00000000); |
| 1195 | /* L3ITCR1 */ | 1206 | /* L3ITCR1 */ |
| 1207 | + /* XXX : not implemented */ | ||
| 1196 | spr_register(env, SPR_L3ITCR1, "L3ITCR1", | 1208 | spr_register(env, SPR_L3ITCR1, "L3ITCR1", |
| 1197 | SPR_NOACCESS, SPR_NOACCESS, | 1209 | SPR_NOACCESS, SPR_NOACCESS, |
| 1198 | &spr_read_generic, &spr_write_generic, | 1210 | &spr_read_generic, &spr_write_generic, |
| 1199 | 0x00000000); | 1211 | 0x00000000); |
| 1200 | /* L3ITCR2 */ | 1212 | /* L3ITCR2 */ |
| 1213 | + /* XXX : not implemented */ | ||
| 1201 | spr_register(env, SPR_L3ITCR2, "L3ITCR2", | 1214 | spr_register(env, SPR_L3ITCR2, "L3ITCR2", |
| 1202 | SPR_NOACCESS, SPR_NOACCESS, | 1215 | SPR_NOACCESS, SPR_NOACCESS, |
| 1203 | &spr_read_generic, &spr_write_generic, | 1216 | &spr_read_generic, &spr_write_generic, |
| 1204 | 0x00000000); | 1217 | 0x00000000); |
| 1205 | /* L3ITCR3 */ | 1218 | /* L3ITCR3 */ |
| 1219 | + /* XXX : not implemented */ | ||
| 1206 | spr_register(env, SPR_L3ITCR3, "L3ITCR3", | 1220 | spr_register(env, SPR_L3ITCR3, "L3ITCR3", |
| 1207 | SPR_NOACCESS, SPR_NOACCESS, | 1221 | SPR_NOACCESS, SPR_NOACCESS, |
| 1208 | &spr_read_generic, &spr_write_generic, | 1222 | &spr_read_generic, &spr_write_generic, |
| 1209 | 0x00000000); | 1223 | 0x00000000); |
| 1210 | /* L3OHCR */ | 1224 | /* L3OHCR */ |
| 1225 | + /* XXX : not implemented */ | ||
| 1211 | spr_register(env, SPR_L3OHCR, "L3OHCR", | 1226 | spr_register(env, SPR_L3OHCR, "L3OHCR", |
| 1212 | SPR_NOACCESS, SPR_NOACCESS, | 1227 | SPR_NOACCESS, SPR_NOACCESS, |
| 1213 | &spr_read_generic, &spr_write_generic, | 1228 | &spr_read_generic, &spr_write_generic, |
| 1214 | 0x00000000); | 1229 | 0x00000000); |
| 1215 | /* L3PM */ | 1230 | /* L3PM */ |
| 1231 | + /* XXX : not implemented */ | ||
| 1216 | spr_register(env, SPR_L3PM, "L3PM", | 1232 | spr_register(env, SPR_L3PM, "L3PM", |
| 1217 | SPR_NOACCESS, SPR_NOACCESS, | 1233 | SPR_NOACCESS, SPR_NOACCESS, |
| 1218 | &spr_read_generic, &spr_write_generic, | 1234 | &spr_read_generic, &spr_write_generic, |
| 1219 | 0x00000000); | 1235 | 0x00000000); |
| 1220 | } | 1236 | } |
| 1221 | -#endif /* TODO */ | ||
| 1222 | 1237 | ||
| 1223 | -#if defined (TODO) | ||
| 1224 | -static void gen_74xx_soft_tlb (CPUPPCState *env) | 1238 | +static void gen_74xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways) |
| 1225 | { | 1239 | { |
| 1226 | - /* XXX: TODO */ | 1240 | + env->nb_tlb = nb_tlbs; |
| 1241 | + env->nb_ways = nb_ways; | ||
| 1242 | + env->id_tlbs = 1; | ||
| 1243 | + /* XXX : not implemented */ | ||
| 1227 | spr_register(env, SPR_PTEHI, "PTEHI", | 1244 | spr_register(env, SPR_PTEHI, "PTEHI", |
| 1228 | SPR_NOACCESS, SPR_NOACCESS, | 1245 | SPR_NOACCESS, SPR_NOACCESS, |
| 1229 | &spr_read_generic, &spr_write_generic, | 1246 | &spr_read_generic, &spr_write_generic, |
| 1230 | 0x00000000); | 1247 | 0x00000000); |
| 1248 | + /* XXX : not implemented */ | ||
| 1231 | spr_register(env, SPR_PTELO, "PTELO", | 1249 | spr_register(env, SPR_PTELO, "PTELO", |
| 1232 | SPR_NOACCESS, SPR_NOACCESS, | 1250 | SPR_NOACCESS, SPR_NOACCESS, |
| 1233 | &spr_read_generic, &spr_write_generic, | 1251 | &spr_read_generic, &spr_write_generic, |
| 1234 | 0x00000000); | 1252 | 0x00000000); |
| 1253 | + /* XXX : not implemented */ | ||
| 1235 | spr_register(env, SPR_TLBMISS, "TLBMISS", | 1254 | spr_register(env, SPR_TLBMISS, "TLBMISS", |
| 1236 | SPR_NOACCESS, SPR_NOACCESS, | 1255 | SPR_NOACCESS, SPR_NOACCESS, |
| 1237 | &spr_read_generic, &spr_write_generic, | 1256 | &spr_read_generic, &spr_write_generic, |
| 1238 | 0x00000000); | 1257 | 0x00000000); |
| 1239 | } | 1258 | } |
| 1240 | -#endif /* TODO */ | ||
| 1241 | 1259 | ||
| 1242 | /* PowerPC BookE SPR */ | 1260 | /* PowerPC BookE SPR */ |
| 1243 | static void gen_spr_BookE (CPUPPCState *env) | 1261 | static void gen_spr_BookE (CPUPPCState *env) |
| @@ -1491,78 +1509,92 @@ static void gen_spr_BookE (CPUPPCState *env) | @@ -1491,78 +1509,92 @@ static void gen_spr_BookE (CPUPPCState *env) | ||
| 1491 | } | 1509 | } |
| 1492 | 1510 | ||
| 1493 | /* FSL storage control registers */ | 1511 | /* FSL storage control registers */ |
| 1494 | -#if defined(TODO) | ||
| 1495 | static void gen_spr_BookE_FSL (CPUPPCState *env) | 1512 | static void gen_spr_BookE_FSL (CPUPPCState *env) |
| 1496 | { | 1513 | { |
| 1497 | /* TLB assist registers */ | 1514 | /* TLB assist registers */ |
| 1515 | + /* XXX : not implemented */ | ||
| 1498 | spr_register(env, SPR_BOOKE_MAS0, "MAS0", | 1516 | spr_register(env, SPR_BOOKE_MAS0, "MAS0", |
| 1499 | SPR_NOACCESS, SPR_NOACCESS, | 1517 | SPR_NOACCESS, SPR_NOACCESS, |
| 1500 | &spr_read_generic, &spr_write_generic, | 1518 | &spr_read_generic, &spr_write_generic, |
| 1501 | 0x00000000); | 1519 | 0x00000000); |
| 1520 | + /* XXX : not implemented */ | ||
| 1502 | spr_register(env, SPR_BOOKE_MAS1, "MAS2", | 1521 | spr_register(env, SPR_BOOKE_MAS1, "MAS2", |
| 1503 | SPR_NOACCESS, SPR_NOACCESS, | 1522 | SPR_NOACCESS, SPR_NOACCESS, |
| 1504 | &spr_read_generic, &spr_write_generic, | 1523 | &spr_read_generic, &spr_write_generic, |
| 1505 | 0x00000000); | 1524 | 0x00000000); |
| 1525 | + /* XXX : not implemented */ | ||
| 1506 | spr_register(env, SPR_BOOKE_MAS2, "MAS3", | 1526 | spr_register(env, SPR_BOOKE_MAS2, "MAS3", |
| 1507 | SPR_NOACCESS, SPR_NOACCESS, | 1527 | SPR_NOACCESS, SPR_NOACCESS, |
| 1508 | &spr_read_generic, &spr_write_generic, | 1528 | &spr_read_generic, &spr_write_generic, |
| 1509 | 0x00000000); | 1529 | 0x00000000); |
| 1530 | + /* XXX : not implemented */ | ||
| 1510 | spr_register(env, SPR_BOOKE_MAS3, "MAS4", | 1531 | spr_register(env, SPR_BOOKE_MAS3, "MAS4", |
| 1511 | SPR_NOACCESS, SPR_NOACCESS, | 1532 | SPR_NOACCESS, SPR_NOACCESS, |
| 1512 | &spr_read_generic, &spr_write_generic, | 1533 | &spr_read_generic, &spr_write_generic, |
| 1513 | 0x00000000); | 1534 | 0x00000000); |
| 1535 | + /* XXX : not implemented */ | ||
| 1514 | spr_register(env, SPR_BOOKE_MAS4, "MAS5", | 1536 | spr_register(env, SPR_BOOKE_MAS4, "MAS5", |
| 1515 | SPR_NOACCESS, SPR_NOACCESS, | 1537 | SPR_NOACCESS, SPR_NOACCESS, |
| 1516 | &spr_read_generic, &spr_write_generic, | 1538 | &spr_read_generic, &spr_write_generic, |
| 1517 | 0x00000000); | 1539 | 0x00000000); |
| 1540 | + /* XXX : not implemented */ | ||
| 1518 | spr_register(env, SPR_BOOKE_MAS6, "MAS6", | 1541 | spr_register(env, SPR_BOOKE_MAS6, "MAS6", |
| 1519 | SPR_NOACCESS, SPR_NOACCESS, | 1542 | SPR_NOACCESS, SPR_NOACCESS, |
| 1520 | &spr_read_generic, &spr_write_generic, | 1543 | &spr_read_generic, &spr_write_generic, |
| 1521 | 0x00000000); | 1544 | 0x00000000); |
| 1545 | + /* XXX : not implemented */ | ||
| 1522 | spr_register(env, SPR_BOOKE_MAS7, "MAS7", | 1546 | spr_register(env, SPR_BOOKE_MAS7, "MAS7", |
| 1523 | SPR_NOACCESS, SPR_NOACCESS, | 1547 | SPR_NOACCESS, SPR_NOACCESS, |
| 1524 | &spr_read_generic, &spr_write_generic, | 1548 | &spr_read_generic, &spr_write_generic, |
| 1525 | 0x00000000); | 1549 | 0x00000000); |
| 1526 | if (env->nb_pids > 1) { | 1550 | if (env->nb_pids > 1) { |
| 1551 | + /* XXX : not implemented */ | ||
| 1527 | spr_register(env, SPR_BOOKE_PID1, "PID1", | 1552 | spr_register(env, SPR_BOOKE_PID1, "PID1", |
| 1528 | SPR_NOACCESS, SPR_NOACCESS, | 1553 | SPR_NOACCESS, SPR_NOACCESS, |
| 1529 | &spr_read_generic, &spr_write_generic, | 1554 | &spr_read_generic, &spr_write_generic, |
| 1530 | 0x00000000); | 1555 | 0x00000000); |
| 1531 | } | 1556 | } |
| 1532 | if (env->nb_pids > 2) { | 1557 | if (env->nb_pids > 2) { |
| 1558 | + /* XXX : not implemented */ | ||
| 1533 | spr_register(env, SPR_BOOKE_PID2, "PID2", | 1559 | spr_register(env, SPR_BOOKE_PID2, "PID2", |
| 1534 | SPR_NOACCESS, SPR_NOACCESS, | 1560 | SPR_NOACCESS, SPR_NOACCESS, |
| 1535 | &spr_read_generic, &spr_write_generic, | 1561 | &spr_read_generic, &spr_write_generic, |
| 1536 | 0x00000000); | 1562 | 0x00000000); |
| 1537 | } | 1563 | } |
| 1564 | + /* XXX : not implemented */ | ||
| 1538 | spr_register(env, SPR_BOOKE_MMUCFG, "MMUCFG", | 1565 | spr_register(env, SPR_BOOKE_MMUCFG, "MMUCFG", |
| 1539 | SPR_NOACCESS, SPR_NOACCESS, | 1566 | SPR_NOACCESS, SPR_NOACCESS, |
| 1540 | &spr_read_generic, SPR_NOACCESS, | 1567 | &spr_read_generic, SPR_NOACCESS, |
| 1541 | 0x00000000); /* TOFIX */ | 1568 | 0x00000000); /* TOFIX */ |
| 1569 | + /* XXX : not implemented */ | ||
| 1542 | spr_register(env, SPR_BOOKE_MMUCSR0, "MMUCSR0", | 1570 | spr_register(env, SPR_BOOKE_MMUCSR0, "MMUCSR0", |
| 1543 | SPR_NOACCESS, SPR_NOACCESS, | 1571 | SPR_NOACCESS, SPR_NOACCESS, |
| 1544 | &spr_read_generic, &spr_write_generic, | 1572 | &spr_read_generic, &spr_write_generic, |
| 1545 | 0x00000000); /* TOFIX */ | 1573 | 0x00000000); /* TOFIX */ |
| 1546 | switch (env->nb_ways) { | 1574 | switch (env->nb_ways) { |
| 1547 | case 4: | 1575 | case 4: |
| 1576 | + /* XXX : not implemented */ | ||
| 1548 | spr_register(env, SPR_BOOKE_TLB3CFG, "TLB3CFG", | 1577 | spr_register(env, SPR_BOOKE_TLB3CFG, "TLB3CFG", |
| 1549 | SPR_NOACCESS, SPR_NOACCESS, | 1578 | SPR_NOACCESS, SPR_NOACCESS, |
| 1550 | &spr_read_generic, SPR_NOACCESS, | 1579 | &spr_read_generic, SPR_NOACCESS, |
| 1551 | 0x00000000); /* TOFIX */ | 1580 | 0x00000000); /* TOFIX */ |
| 1552 | /* Fallthru */ | 1581 | /* Fallthru */ |
| 1553 | case 3: | 1582 | case 3: |
| 1583 | + /* XXX : not implemented */ | ||
| 1554 | spr_register(env, SPR_BOOKE_TLB2CFG, "TLB2CFG", | 1584 | spr_register(env, SPR_BOOKE_TLB2CFG, "TLB2CFG", |
| 1555 | SPR_NOACCESS, SPR_NOACCESS, | 1585 | SPR_NOACCESS, SPR_NOACCESS, |
| 1556 | &spr_read_generic, SPR_NOACCESS, | 1586 | &spr_read_generic, SPR_NOACCESS, |
| 1557 | 0x00000000); /* TOFIX */ | 1587 | 0x00000000); /* TOFIX */ |
| 1558 | /* Fallthru */ | 1588 | /* Fallthru */ |
| 1559 | case 2: | 1589 | case 2: |
| 1590 | + /* XXX : not implemented */ | ||
| 1560 | spr_register(env, SPR_BOOKE_TLB1CFG, "TLB1CFG", | 1591 | spr_register(env, SPR_BOOKE_TLB1CFG, "TLB1CFG", |
| 1561 | SPR_NOACCESS, SPR_NOACCESS, | 1592 | SPR_NOACCESS, SPR_NOACCESS, |
| 1562 | &spr_read_generic, SPR_NOACCESS, | 1593 | &spr_read_generic, SPR_NOACCESS, |
| 1563 | 0x00000000); /* TOFIX */ | 1594 | 0x00000000); /* TOFIX */ |
| 1564 | /* Fallthru */ | 1595 | /* Fallthru */ |
| 1565 | case 1: | 1596 | case 1: |
| 1597 | + /* XXX : not implemented */ | ||
| 1566 | spr_register(env, SPR_BOOKE_TLB0CFG, "TLB0CFG", | 1598 | spr_register(env, SPR_BOOKE_TLB0CFG, "TLB0CFG", |
| 1567 | SPR_NOACCESS, SPR_NOACCESS, | 1599 | SPR_NOACCESS, SPR_NOACCESS, |
| 1568 | &spr_read_generic, SPR_NOACCESS, | 1600 | &spr_read_generic, SPR_NOACCESS, |
| @@ -1573,7 +1605,6 @@ static void gen_spr_BookE_FSL (CPUPPCState *env) | @@ -1573,7 +1605,6 @@ static void gen_spr_BookE_FSL (CPUPPCState *env) | ||
| 1573 | break; | 1605 | break; |
| 1574 | } | 1606 | } |
| 1575 | } | 1607 | } |
| 1576 | -#endif | ||
| 1577 | 1608 | ||
| 1578 | /* SPR specific to PowerPC 440 implementation */ | 1609 | /* SPR specific to PowerPC 440 implementation */ |
| 1579 | static void gen_spr_440 (CPUPPCState *env) | 1610 | static void gen_spr_440 (CPUPPCState *env) |
| @@ -1730,7 +1761,7 @@ static void gen_spr_40x (CPUPPCState *env) | @@ -1730,7 +1761,7 @@ static void gen_spr_40x (CPUPPCState *env) | ||
| 1730 | SPR_NOACCESS, SPR_NOACCESS, | 1761 | SPR_NOACCESS, SPR_NOACCESS, |
| 1731 | &spr_read_generic, &spr_write_generic, | 1762 | &spr_read_generic, &spr_write_generic, |
| 1732 | 0x00000000); | 1763 | 0x00000000); |
| 1733 | - /* XXX : not implemented */ | 1764 | + /* not emulated, as Qemu do not emulate caches */ |
| 1734 | spr_register(env, SPR_BOOKE_ICDBDR, "ICDBDR", | 1765 | spr_register(env, SPR_BOOKE_ICDBDR, "ICDBDR", |
| 1735 | SPR_NOACCESS, SPR_NOACCESS, | 1766 | SPR_NOACCESS, SPR_NOACCESS, |
| 1736 | &spr_read_generic, SPR_NOACCESS, | 1767 | &spr_read_generic, SPR_NOACCESS, |
| @@ -1913,7 +1944,7 @@ static void gen_spr_401_403 (CPUPPCState *env) | @@ -1913,7 +1944,7 @@ static void gen_spr_401_403 (CPUPPCState *env) | ||
| 1913 | SPR_NOACCESS, &spr_write_tbu, | 1944 | SPR_NOACCESS, &spr_write_tbu, |
| 1914 | 0x00000000); | 1945 | 0x00000000); |
| 1915 | /* Debug */ | 1946 | /* Debug */ |
| 1916 | - /* XXX: not implemented */ | 1947 | + /* not emulated, as Qemu do not emulate caches */ |
| 1917 | spr_register(env, SPR_403_CDBCR, "CDBCR", | 1948 | spr_register(env, SPR_403_CDBCR, "CDBCR", |
| 1918 | SPR_NOACCESS, SPR_NOACCESS, | 1949 | SPR_NOACCESS, SPR_NOACCESS, |
| 1919 | &spr_read_generic, &spr_write_generic, | 1950 | &spr_read_generic, &spr_write_generic, |
| @@ -1996,6 +2027,7 @@ static void gen_spr_403 (CPUPPCState *env) | @@ -1996,6 +2027,7 @@ static void gen_spr_403 (CPUPPCState *env) | ||
| 1996 | SPR_NOACCESS, SPR_NOACCESS, | 2027 | SPR_NOACCESS, SPR_NOACCESS, |
| 1997 | &spr_read_generic, &spr_write_generic, | 2028 | &spr_read_generic, &spr_write_generic, |
| 1998 | 0x00000000); | 2029 | 0x00000000); |
| 2030 | + /* XXX : not implemented */ | ||
| 1999 | spr_register(env, SPR_40x_DAC2, "DAC2", | 2031 | spr_register(env, SPR_40x_DAC2, "DAC2", |
| 2000 | SPR_NOACCESS, SPR_NOACCESS, | 2032 | SPR_NOACCESS, SPR_NOACCESS, |
| 2001 | &spr_read_generic, &spr_write_generic, | 2033 | &spr_read_generic, &spr_write_generic, |
| @@ -2005,6 +2037,7 @@ static void gen_spr_403 (CPUPPCState *env) | @@ -2005,6 +2037,7 @@ static void gen_spr_403 (CPUPPCState *env) | ||
| 2005 | SPR_NOACCESS, SPR_NOACCESS, | 2037 | SPR_NOACCESS, SPR_NOACCESS, |
| 2006 | &spr_read_generic, &spr_write_generic, | 2038 | &spr_read_generic, &spr_write_generic, |
| 2007 | 0x00000000); | 2039 | 0x00000000); |
| 2040 | + /* XXX : not implemented */ | ||
| 2008 | spr_register(env, SPR_40x_IAC2, "IAC2", | 2041 | spr_register(env, SPR_40x_IAC2, "IAC2", |
| 2009 | SPR_NOACCESS, SPR_NOACCESS, | 2042 | SPR_NOACCESS, SPR_NOACCESS, |
| 2010 | &spr_read_generic, &spr_write_generic, | 2043 | &spr_read_generic, &spr_write_generic, |
| @@ -2047,6 +2080,7 @@ static void gen_spr_403_mmu (CPUPPCState *env) | @@ -2047,6 +2080,7 @@ static void gen_spr_403_mmu (CPUPPCState *env) | ||
| 2047 | /* SPR specific to PowerPC compression coprocessor extension */ | 2080 | /* SPR specific to PowerPC compression coprocessor extension */ |
| 2048 | static void gen_spr_compress (CPUPPCState *env) | 2081 | static void gen_spr_compress (CPUPPCState *env) |
| 2049 | { | 2082 | { |
| 2083 | + /* XXX : not implemented */ | ||
| 2050 | spr_register(env, SPR_401_SKR, "SKR", | 2084 | spr_register(env, SPR_401_SKR, "SKR", |
| 2051 | SPR_NOACCESS, SPR_NOACCESS, | 2085 | SPR_NOACCESS, SPR_NOACCESS, |
| 2052 | &spr_read_generic, &spr_write_generic, | 2086 | &spr_read_generic, &spr_write_generic, |
| @@ -2054,84 +2088,100 @@ static void gen_spr_compress (CPUPPCState *env) | @@ -2054,84 +2088,100 @@ static void gen_spr_compress (CPUPPCState *env) | ||
| 2054 | } | 2088 | } |
| 2055 | 2089 | ||
| 2056 | #if defined (TARGET_PPC64) | 2090 | #if defined (TARGET_PPC64) |
| 2057 | -#if defined (TODO) | ||
| 2058 | /* SPR specific to PowerPC 620 */ | 2091 | /* SPR specific to PowerPC 620 */ |
| 2059 | static void gen_spr_620 (CPUPPCState *env) | 2092 | static void gen_spr_620 (CPUPPCState *env) |
| 2060 | { | 2093 | { |
| 2094 | + /* XXX : not implemented */ | ||
| 2061 | spr_register(env, SPR_620_PMR0, "PMR0", | 2095 | spr_register(env, SPR_620_PMR0, "PMR0", |
| 2062 | SPR_NOACCESS, SPR_NOACCESS, | 2096 | SPR_NOACCESS, SPR_NOACCESS, |
| 2063 | &spr_read_generic, &spr_write_generic, | 2097 | &spr_read_generic, &spr_write_generic, |
| 2064 | 0x00000000); | 2098 | 0x00000000); |
| 2099 | + /* XXX : not implemented */ | ||
| 2065 | spr_register(env, SPR_620_PMR1, "PMR1", | 2100 | spr_register(env, SPR_620_PMR1, "PMR1", |
| 2066 | SPR_NOACCESS, SPR_NOACCESS, | 2101 | SPR_NOACCESS, SPR_NOACCESS, |
| 2067 | &spr_read_generic, &spr_write_generic, | 2102 | &spr_read_generic, &spr_write_generic, |
| 2068 | 0x00000000); | 2103 | 0x00000000); |
| 2104 | + /* XXX : not implemented */ | ||
| 2069 | spr_register(env, SPR_620_PMR2, "PMR2", | 2105 | spr_register(env, SPR_620_PMR2, "PMR2", |
| 2070 | SPR_NOACCESS, SPR_NOACCESS, | 2106 | SPR_NOACCESS, SPR_NOACCESS, |
| 2071 | &spr_read_generic, &spr_write_generic, | 2107 | &spr_read_generic, &spr_write_generic, |
| 2072 | 0x00000000); | 2108 | 0x00000000); |
| 2109 | + /* XXX : not implemented */ | ||
| 2073 | spr_register(env, SPR_620_PMR3, "PMR3", | 2110 | spr_register(env, SPR_620_PMR3, "PMR3", |
| 2074 | SPR_NOACCESS, SPR_NOACCESS, | 2111 | SPR_NOACCESS, SPR_NOACCESS, |
| 2075 | &spr_read_generic, &spr_write_generic, | 2112 | &spr_read_generic, &spr_write_generic, |
| 2076 | 0x00000000); | 2113 | 0x00000000); |
| 2114 | + /* XXX : not implemented */ | ||
| 2077 | spr_register(env, SPR_620_PMR4, "PMR4", | 2115 | spr_register(env, SPR_620_PMR4, "PMR4", |
| 2078 | SPR_NOACCESS, SPR_NOACCESS, | 2116 | SPR_NOACCESS, SPR_NOACCESS, |
| 2079 | &spr_read_generic, &spr_write_generic, | 2117 | &spr_read_generic, &spr_write_generic, |
| 2080 | 0x00000000); | 2118 | 0x00000000); |
| 2119 | + /* XXX : not implemented */ | ||
| 2081 | spr_register(env, SPR_620_PMR5, "PMR5", | 2120 | spr_register(env, SPR_620_PMR5, "PMR5", |
| 2082 | SPR_NOACCESS, SPR_NOACCESS, | 2121 | SPR_NOACCESS, SPR_NOACCESS, |
| 2083 | &spr_read_generic, &spr_write_generic, | 2122 | &spr_read_generic, &spr_write_generic, |
| 2084 | 0x00000000); | 2123 | 0x00000000); |
| 2124 | + /* XXX : not implemented */ | ||
| 2085 | spr_register(env, SPR_620_PMR6, "PMR6", | 2125 | spr_register(env, SPR_620_PMR6, "PMR6", |
| 2086 | SPR_NOACCESS, SPR_NOACCESS, | 2126 | SPR_NOACCESS, SPR_NOACCESS, |
| 2087 | &spr_read_generic, &spr_write_generic, | 2127 | &spr_read_generic, &spr_write_generic, |
| 2088 | 0x00000000); | 2128 | 0x00000000); |
| 2129 | + /* XXX : not implemented */ | ||
| 2089 | spr_register(env, SPR_620_PMR7, "PMR7", | 2130 | spr_register(env, SPR_620_PMR7, "PMR7", |
| 2090 | SPR_NOACCESS, SPR_NOACCESS, | 2131 | SPR_NOACCESS, SPR_NOACCESS, |
| 2091 | &spr_read_generic, &spr_write_generic, | 2132 | &spr_read_generic, &spr_write_generic, |
| 2092 | 0x00000000); | 2133 | 0x00000000); |
| 2134 | + /* XXX : not implemented */ | ||
| 2093 | spr_register(env, SPR_620_PMR8, "PMR8", | 2135 | spr_register(env, SPR_620_PMR8, "PMR8", |
| 2094 | SPR_NOACCESS, SPR_NOACCESS, | 2136 | SPR_NOACCESS, SPR_NOACCESS, |
| 2095 | &spr_read_generic, &spr_write_generic, | 2137 | &spr_read_generic, &spr_write_generic, |
| 2096 | 0x00000000); | 2138 | 0x00000000); |
| 2139 | + /* XXX : not implemented */ | ||
| 2097 | spr_register(env, SPR_620_PMR9, "PMR9", | 2140 | spr_register(env, SPR_620_PMR9, "PMR9", |
| 2098 | SPR_NOACCESS, SPR_NOACCESS, | 2141 | SPR_NOACCESS, SPR_NOACCESS, |
| 2099 | &spr_read_generic, &spr_write_generic, | 2142 | &spr_read_generic, &spr_write_generic, |
| 2100 | 0x00000000); | 2143 | 0x00000000); |
| 2144 | + /* XXX : not implemented */ | ||
| 2101 | spr_register(env, SPR_620_PMRA, "PMR10", | 2145 | spr_register(env, SPR_620_PMRA, "PMR10", |
| 2102 | SPR_NOACCESS, SPR_NOACCESS, | 2146 | SPR_NOACCESS, SPR_NOACCESS, |
| 2103 | &spr_read_generic, &spr_write_generic, | 2147 | &spr_read_generic, &spr_write_generic, |
| 2104 | 0x00000000); | 2148 | 0x00000000); |
| 2149 | + /* XXX : not implemented */ | ||
| 2105 | spr_register(env, SPR_620_PMRB, "PMR11", | 2150 | spr_register(env, SPR_620_PMRB, "PMR11", |
| 2106 | SPR_NOACCESS, SPR_NOACCESS, | 2151 | SPR_NOACCESS, SPR_NOACCESS, |
| 2107 | &spr_read_generic, &spr_write_generic, | 2152 | &spr_read_generic, &spr_write_generic, |
| 2108 | 0x00000000); | 2153 | 0x00000000); |
| 2154 | + /* XXX : not implemented */ | ||
| 2109 | spr_register(env, SPR_620_PMRC, "PMR12", | 2155 | spr_register(env, SPR_620_PMRC, "PMR12", |
| 2110 | SPR_NOACCESS, SPR_NOACCESS, | 2156 | SPR_NOACCESS, SPR_NOACCESS, |
| 2111 | &spr_read_generic, &spr_write_generic, | 2157 | &spr_read_generic, &spr_write_generic, |
| 2112 | 0x00000000); | 2158 | 0x00000000); |
| 2159 | + /* XXX : not implemented */ | ||
| 2113 | spr_register(env, SPR_620_PMRD, "PMR13", | 2160 | spr_register(env, SPR_620_PMRD, "PMR13", |
| 2114 | SPR_NOACCESS, SPR_NOACCESS, | 2161 | SPR_NOACCESS, SPR_NOACCESS, |
| 2115 | &spr_read_generic, &spr_write_generic, | 2162 | &spr_read_generic, &spr_write_generic, |
| 2116 | 0x00000000); | 2163 | 0x00000000); |
| 2164 | + /* XXX : not implemented */ | ||
| 2117 | spr_register(env, SPR_620_PMRE, "PMR14", | 2165 | spr_register(env, SPR_620_PMRE, "PMR14", |
| 2118 | SPR_NOACCESS, SPR_NOACCESS, | 2166 | SPR_NOACCESS, SPR_NOACCESS, |
| 2119 | &spr_read_generic, &spr_write_generic, | 2167 | &spr_read_generic, &spr_write_generic, |
| 2120 | 0x00000000); | 2168 | 0x00000000); |
| 2169 | + /* XXX : not implemented */ | ||
| 2121 | spr_register(env, SPR_620_PMRF, "PMR15", | 2170 | spr_register(env, SPR_620_PMRF, "PMR15", |
| 2122 | SPR_NOACCESS, SPR_NOACCESS, | 2171 | SPR_NOACCESS, SPR_NOACCESS, |
| 2123 | &spr_read_generic, &spr_write_generic, | 2172 | &spr_read_generic, &spr_write_generic, |
| 2124 | 0x00000000); | 2173 | 0x00000000); |
| 2174 | + /* XXX : not implemented */ | ||
| 2125 | spr_register(env, SPR_620_HID8, "HID8", | 2175 | spr_register(env, SPR_620_HID8, "HID8", |
| 2126 | SPR_NOACCESS, SPR_NOACCESS, | 2176 | SPR_NOACCESS, SPR_NOACCESS, |
| 2127 | &spr_read_generic, &spr_write_generic, | 2177 | &spr_read_generic, &spr_write_generic, |
| 2128 | 0x00000000); | 2178 | 0x00000000); |
| 2179 | + /* XXX : not implemented */ | ||
| 2129 | spr_register(env, SPR_620_HID9, "HID9", | 2180 | spr_register(env, SPR_620_HID9, "HID9", |
| 2130 | SPR_NOACCESS, SPR_NOACCESS, | 2181 | SPR_NOACCESS, SPR_NOACCESS, |
| 2131 | &spr_read_generic, &spr_write_generic, | 2182 | &spr_read_generic, &spr_write_generic, |
| 2132 | 0x00000000); | 2183 | 0x00000000); |
| 2133 | } | 2184 | } |
| 2134 | -#endif | ||
| 2135 | #endif /* defined (TARGET_PPC64) */ | 2185 | #endif /* defined (TARGET_PPC64) */ |
| 2136 | 2186 | ||
| 2137 | // XXX: TODO | 2187 | // XXX: TODO |
| @@ -2141,7 +2191,6 @@ static void gen_spr_620 (CPUPPCState *env) | @@ -2141,7 +2191,6 @@ static void gen_spr_620 (CPUPPCState *env) | ||
| 2141 | * CTRL => SPR 152 (Power 2.04) | 2191 | * CTRL => SPR 152 (Power 2.04) |
| 2142 | * SCOMC => SPR 276 (64 bits ?) | 2192 | * SCOMC => SPR 276 (64 bits ?) |
| 2143 | * SCOMD => SPR 277 (64 bits ?) | 2193 | * SCOMD => SPR 277 (64 bits ?) |
| 2144 | - * ASR => SPR 280 (64 bits) | ||
| 2145 | * TBU40 => SPR 286 (Power 2.04 hypv) | 2194 | * TBU40 => SPR 286 (Power 2.04 hypv) |
| 2146 | * HSPRG0 => SPR 304 (Power 2.04 hypv) | 2195 | * HSPRG0 => SPR 304 (Power 2.04 hypv) |
| 2147 | * HSPRG1 => SPR 305 (Power 2.04 hypv) | 2196 | * HSPRG1 => SPR 305 (Power 2.04 hypv) |
| @@ -2157,8 +2206,6 @@ static void gen_spr_620 (CPUPPCState *env) | @@ -2157,8 +2206,6 @@ static void gen_spr_620 (CPUPPCState *env) | ||
| 2157 | * LPCR => SPR 316 (970) | 2206 | * LPCR => SPR 316 (970) |
| 2158 | * LPIDR => SPR 317 (970) | 2207 | * LPIDR => SPR 317 (970) |
| 2159 | * SPEFSCR => SPR 512 (Power 2.04 emb) | 2208 | * SPEFSCR => SPR 512 (Power 2.04 emb) |
| 2160 | - * ATBL => SPR 526 (Power 2.04 emb) | ||
| 2161 | - * ATBU => SPR 527 (Power 2.04 emb) | ||
| 2162 | * EPR => SPR 702 (Power 2.04 emb) | 2209 | * EPR => SPR 702 (Power 2.04 emb) |
| 2163 | * perf => 768-783 (Power 2.04) | 2210 | * perf => 768-783 (Power 2.04) |
| 2164 | * perf => 784-799 (Power 2.04) | 2211 | * perf => 784-799 (Power 2.04) |
| @@ -2349,7 +2396,7 @@ static void init_excp_604 (CPUPPCState *env) | @@ -2349,7 +2396,7 @@ static void init_excp_604 (CPUPPCState *env) | ||
| 2349 | #endif | 2396 | #endif |
| 2350 | } | 2397 | } |
| 2351 | 2398 | ||
| 2352 | -#if defined (TODO) | 2399 | +#if defined(TARGET_PPC64) |
| 2353 | static void init_excp_620 (CPUPPCState *env) | 2400 | static void init_excp_620 (CPUPPCState *env) |
| 2354 | { | 2401 | { |
| 2355 | #if !defined(CONFIG_USER_ONLY) | 2402 | #if !defined(CONFIG_USER_ONLY) |
| @@ -2370,7 +2417,7 @@ static void init_excp_620 (CPUPPCState *env) | @@ -2370,7 +2417,7 @@ static void init_excp_620 (CPUPPCState *env) | ||
| 2370 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; | 2417 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2371 | #endif | 2418 | #endif |
| 2372 | } | 2419 | } |
| 2373 | -#endif /* defined (TODO) */ | 2420 | +#endif /* defined(TARGET_PPC64) */ |
| 2374 | 2421 | ||
| 2375 | static void init_excp_7x0 (CPUPPCState *env) | 2422 | static void init_excp_7x0 (CPUPPCState *env) |
| 2376 | { | 2423 | { |
| @@ -2436,7 +2483,6 @@ static void init_excp_7400 (CPUPPCState *env) | @@ -2436,7 +2483,6 @@ static void init_excp_7400 (CPUPPCState *env) | ||
| 2436 | #endif | 2483 | #endif |
| 2437 | } | 2484 | } |
| 2438 | 2485 | ||
| 2439 | -#if defined (TODO) | ||
| 2440 | static void init_excp_7450 (CPUPPCState *env) | 2486 | static void init_excp_7450 (CPUPPCState *env) |
| 2441 | { | 2487 | { |
| 2442 | #if !defined(CONFIG_USER_ONLY) | 2488 | #if !defined(CONFIG_USER_ONLY) |
| @@ -2461,7 +2507,6 @@ static void init_excp_7450 (CPUPPCState *env) | @@ -2461,7 +2507,6 @@ static void init_excp_7450 (CPUPPCState *env) | ||
| 2461 | env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; | 2507 | env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; |
| 2462 | #endif | 2508 | #endif |
| 2463 | } | 2509 | } |
| 2464 | -#endif /* defined (TODO) */ | ||
| 2465 | 2510 | ||
| 2466 | #if defined (TARGET_PPC64) | 2511 | #if defined (TARGET_PPC64) |
| 2467 | static void init_excp_970 (CPUPPCState *env) | 2512 | static void init_excp_970 (CPUPPCState *env) |
| @@ -2547,7 +2592,6 @@ static void init_proc_401x2 (CPUPPCState *env) | @@ -2547,7 +2592,6 @@ static void init_proc_401x2 (CPUPPCState *env) | ||
| 2547 | } | 2592 | } |
| 2548 | 2593 | ||
| 2549 | /* PowerPC 401x3 */ | 2594 | /* PowerPC 401x3 */ |
| 2550 | -#if defined(TODO) | ||
| 2551 | #define POWERPC_INSNS_401x3 (POWERPC_INSNS_EMB | \ | 2595 | #define POWERPC_INSNS_401x3 (POWERPC_INSNS_EMB | \ |
| 2552 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ | 2596 | PPC_MEM_SYNC | PPC_MEM_EIEIO | \ |
| 2553 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ | 2597 | PPC_40x_TLB | PPC_MEM_TLBIA | PPC_MEM_TLBSYNC | \ |
| @@ -2559,6 +2603,7 @@ static void init_proc_401x2 (CPUPPCState *env) | @@ -2559,6 +2603,7 @@ static void init_proc_401x2 (CPUPPCState *env) | ||
| 2559 | #define POWERPC_INPUT_401x3 (PPC_FLAGS_INPUT_401) | 2603 | #define POWERPC_INPUT_401x3 (PPC_FLAGS_INPUT_401) |
| 2560 | #define POWERPC_BFDM_401x3 (bfd_mach_ppc_403) | 2604 | #define POWERPC_BFDM_401x3 (bfd_mach_ppc_403) |
| 2561 | 2605 | ||
| 2606 | +__attribute__ (( unused )) | ||
| 2562 | static void init_proc_401x3 (CPUPPCState *env) | 2607 | static void init_proc_401x3 (CPUPPCState *env) |
| 2563 | { | 2608 | { |
| 2564 | gen_spr_40x(env); | 2609 | gen_spr_40x(env); |
| @@ -2570,7 +2615,6 @@ static void init_proc_401x3 (CPUPPCState *env) | @@ -2570,7 +2615,6 @@ static void init_proc_401x3 (CPUPPCState *env) | ||
| 2570 | /* Allocate hardware IRQ controller */ | 2615 | /* Allocate hardware IRQ controller */ |
| 2571 | ppc40x_irq_init(env); | 2616 | ppc40x_irq_init(env); |
| 2572 | } | 2617 | } |
| 2573 | -#endif /* TODO */ | ||
| 2574 | 2618 | ||
| 2575 | /* IOP480 */ | 2619 | /* IOP480 */ |
| 2576 | #define POWERPC_INSNS_IOP480 (POWERPC_INSNS_EMB | \ | 2620 | #define POWERPC_INSNS_IOP480 (POWERPC_INSNS_EMB | \ |
| @@ -2714,6 +2758,7 @@ static void init_proc_440EP (CPUPPCState *env) | @@ -2714,6 +2758,7 @@ static void init_proc_440EP (CPUPPCState *env) | ||
| 2714 | gen_tbl(env); | 2758 | gen_tbl(env); |
| 2715 | gen_spr_BookE(env); | 2759 | gen_spr_BookE(env); |
| 2716 | gen_spr_440(env); | 2760 | gen_spr_440(env); |
| 2761 | + /* XXX : not implemented */ | ||
| 2717 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", | 2762 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", |
| 2718 | SPR_NOACCESS, SPR_NOACCESS, | 2763 | SPR_NOACCESS, SPR_NOACCESS, |
| 2719 | &spr_read_generic, &spr_write_generic, | 2764 | &spr_read_generic, &spr_write_generic, |
| @@ -2726,6 +2771,7 @@ static void init_proc_440EP (CPUPPCState *env) | @@ -2726,6 +2771,7 @@ static void init_proc_440EP (CPUPPCState *env) | ||
| 2726 | SPR_NOACCESS, SPR_NOACCESS, | 2771 | SPR_NOACCESS, SPR_NOACCESS, |
| 2727 | &spr_read_generic, &spr_write_generic, | 2772 | &spr_read_generic, &spr_write_generic, |
| 2728 | 0x00000000); | 2773 | 0x00000000); |
| 2774 | + /* XXX : not implemented */ | ||
| 2729 | spr_register(env, SPR_440_CCR1, "CCR1", | 2775 | spr_register(env, SPR_440_CCR1, "CCR1", |
| 2730 | SPR_NOACCESS, SPR_NOACCESS, | 2776 | SPR_NOACCESS, SPR_NOACCESS, |
| 2731 | &spr_read_generic, &spr_write_generic, | 2777 | &spr_read_generic, &spr_write_generic, |
| @@ -2764,7 +2810,6 @@ static void init_proc_440GP (CPUPPCState *env) | @@ -2764,7 +2810,6 @@ static void init_proc_440GP (CPUPPCState *env) | ||
| 2764 | } | 2810 | } |
| 2765 | 2811 | ||
| 2766 | /* PowerPC 440x4 */ | 2812 | /* PowerPC 440x4 */ |
| 2767 | -#if defined(TODO) | ||
| 2768 | #define POWERPC_INSNS_440x4 (POWERPC_INSNS_EMB | \ | 2813 | #define POWERPC_INSNS_440x4 (POWERPC_INSNS_EMB | \ |
| 2769 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | 2814 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ |
| 2770 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ | 2815 | PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | \ |
| @@ -2775,6 +2820,7 @@ static void init_proc_440GP (CPUPPCState *env) | @@ -2775,6 +2820,7 @@ static void init_proc_440GP (CPUPPCState *env) | ||
| 2775 | #define POWERPC_INPUT_440x4 (PPC_FLAGS_INPUT_BookE) | 2820 | #define POWERPC_INPUT_440x4 (PPC_FLAGS_INPUT_BookE) |
| 2776 | #define POWERPC_BFDM_440x4 (bfd_mach_ppc_403) | 2821 | #define POWERPC_BFDM_440x4 (bfd_mach_ppc_403) |
| 2777 | 2822 | ||
| 2823 | +__attribute__ (( unused )) | ||
| 2778 | static void init_proc_440x4 (CPUPPCState *env) | 2824 | static void init_proc_440x4 (CPUPPCState *env) |
| 2779 | { | 2825 | { |
| 2780 | /* Time base */ | 2826 | /* Time base */ |
| @@ -2788,7 +2834,6 @@ static void init_proc_440x4 (CPUPPCState *env) | @@ -2788,7 +2834,6 @@ static void init_proc_440x4 (CPUPPCState *env) | ||
| 2788 | init_excp_BookE(env); | 2834 | init_excp_BookE(env); |
| 2789 | /* XXX: TODO: allocate internal IRQ controller */ | 2835 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2790 | } | 2836 | } |
| 2791 | -#endif /* TODO */ | ||
| 2792 | 2837 | ||
| 2793 | /* PowerPC 440x5 */ | 2838 | /* PowerPC 440x5 */ |
| 2794 | #define POWERPC_INSNS_440x5 (POWERPC_INSNS_EMB | \ | 2839 | #define POWERPC_INSNS_440x5 (POWERPC_INSNS_EMB | \ |
| @@ -2807,6 +2852,7 @@ static void init_proc_440x5 (CPUPPCState *env) | @@ -2807,6 +2852,7 @@ static void init_proc_440x5 (CPUPPCState *env) | ||
| 2807 | gen_tbl(env); | 2852 | gen_tbl(env); |
| 2808 | gen_spr_BookE(env); | 2853 | gen_spr_BookE(env); |
| 2809 | gen_spr_440(env); | 2854 | gen_spr_440(env); |
| 2855 | + /* XXX : not implemented */ | ||
| 2810 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", | 2856 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", |
| 2811 | SPR_NOACCESS, SPR_NOACCESS, | 2857 | SPR_NOACCESS, SPR_NOACCESS, |
| 2812 | &spr_read_generic, &spr_write_generic, | 2858 | &spr_read_generic, &spr_write_generic, |
| @@ -2819,6 +2865,7 @@ static void init_proc_440x5 (CPUPPCState *env) | @@ -2819,6 +2865,7 @@ static void init_proc_440x5 (CPUPPCState *env) | ||
| 2819 | SPR_NOACCESS, SPR_NOACCESS, | 2865 | SPR_NOACCESS, SPR_NOACCESS, |
| 2820 | &spr_read_generic, &spr_write_generic, | 2866 | &spr_read_generic, &spr_write_generic, |
| 2821 | 0x00000000); | 2867 | 0x00000000); |
| 2868 | + /* XXX : not implemented */ | ||
| 2822 | spr_register(env, SPR_440_CCR1, "CCR1", | 2869 | spr_register(env, SPR_440_CCR1, "CCR1", |
| 2823 | SPR_NOACCESS, SPR_NOACCESS, | 2870 | SPR_NOACCESS, SPR_NOACCESS, |
| 2824 | &spr_read_generic, &spr_write_generic, | 2871 | &spr_read_generic, &spr_write_generic, |
| @@ -2832,8 +2879,7 @@ static void init_proc_440x5 (CPUPPCState *env) | @@ -2832,8 +2879,7 @@ static void init_proc_440x5 (CPUPPCState *env) | ||
| 2832 | } | 2879 | } |
| 2833 | 2880 | ||
| 2834 | /* PowerPC 460 (guessed) */ | 2881 | /* PowerPC 460 (guessed) */ |
| 2835 | -#if defined(TODO) | ||
| 2836 | -#define POWERPC_INSNS_460F (POWERPC_INSNS_EMB | \ | 2882 | +#define POWERPC_INSNS_460 (POWERPC_INSNS_EMB | \ |
| 2837 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | 2883 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ |
| 2838 | PPC_BOOKE | PPC_BOOKE_EXT | PPC_4xx_COMMON | \ | 2884 | PPC_BOOKE | PPC_BOOKE_EXT | PPC_4xx_COMMON | \ |
| 2839 | PPC_405_MAC | PPC_440_SPEC | PPC_DCRUX) | 2885 | PPC_405_MAC | PPC_440_SPEC | PPC_DCRUX) |
| @@ -2843,12 +2889,14 @@ static void init_proc_440x5 (CPUPPCState *env) | @@ -2843,12 +2889,14 @@ static void init_proc_440x5 (CPUPPCState *env) | ||
| 2843 | #define POWERPC_INPUT_460 (PPC_FLAGS_INPUT_BookE) | 2889 | #define POWERPC_INPUT_460 (PPC_FLAGS_INPUT_BookE) |
| 2844 | #define POWERPC_BFDM_460 (bfd_mach_ppc_403) | 2890 | #define POWERPC_BFDM_460 (bfd_mach_ppc_403) |
| 2845 | 2891 | ||
| 2892 | +__attribute__ (( unused )) | ||
| 2846 | static void init_proc_460 (CPUPPCState *env) | 2893 | static void init_proc_460 (CPUPPCState *env) |
| 2847 | { | 2894 | { |
| 2848 | /* Time base */ | 2895 | /* Time base */ |
| 2849 | gen_tbl(env); | 2896 | gen_tbl(env); |
| 2850 | gen_spr_BookE(env); | 2897 | gen_spr_BookE(env); |
| 2851 | gen_spr_440(env); | 2898 | gen_spr_440(env); |
| 2899 | + /* XXX : not implemented */ | ||
| 2852 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", | 2900 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", |
| 2853 | SPR_NOACCESS, SPR_NOACCESS, | 2901 | SPR_NOACCESS, SPR_NOACCESS, |
| 2854 | &spr_read_generic, &spr_write_generic, | 2902 | &spr_read_generic, &spr_write_generic, |
| @@ -2861,10 +2909,12 @@ static void init_proc_460 (CPUPPCState *env) | @@ -2861,10 +2909,12 @@ static void init_proc_460 (CPUPPCState *env) | ||
| 2861 | SPR_NOACCESS, SPR_NOACCESS, | 2909 | SPR_NOACCESS, SPR_NOACCESS, |
| 2862 | &spr_read_generic, &spr_write_generic, | 2910 | &spr_read_generic, &spr_write_generic, |
| 2863 | 0x00000000); | 2911 | 0x00000000); |
| 2912 | + /* XXX : not implemented */ | ||
| 2864 | spr_register(env, SPR_440_CCR1, "CCR1", | 2913 | spr_register(env, SPR_440_CCR1, "CCR1", |
| 2865 | SPR_NOACCESS, SPR_NOACCESS, | 2914 | SPR_NOACCESS, SPR_NOACCESS, |
| 2866 | &spr_read_generic, &spr_write_generic, | 2915 | &spr_read_generic, &spr_write_generic, |
| 2867 | 0x00000000); | 2916 | 0x00000000); |
| 2917 | + /* XXX : not implemented */ | ||
| 2868 | spr_register(env, SPR_DCRIPR, "SPR_DCRIPR", | 2918 | spr_register(env, SPR_DCRIPR, "SPR_DCRIPR", |
| 2869 | &spr_read_generic, &spr_write_generic, | 2919 | &spr_read_generic, &spr_write_generic, |
| 2870 | &spr_read_generic, &spr_write_generic, | 2920 | &spr_read_generic, &spr_write_generic, |
| @@ -2876,10 +2926,8 @@ static void init_proc_460 (CPUPPCState *env) | @@ -2876,10 +2926,8 @@ static void init_proc_460 (CPUPPCState *env) | ||
| 2876 | init_excp_BookE(env); | 2926 | init_excp_BookE(env); |
| 2877 | /* XXX: TODO: allocate internal IRQ controller */ | 2927 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2878 | } | 2928 | } |
| 2879 | -#endif /* TODO */ | ||
| 2880 | 2929 | ||
| 2881 | /* PowerPC 460F (guessed) */ | 2930 | /* PowerPC 460F (guessed) */ |
| 2882 | -#if defined(TODO) | ||
| 2883 | #define POWERPC_INSNS_460F (POWERPC_INSNS_EMB | \ | 2931 | #define POWERPC_INSNS_460F (POWERPC_INSNS_EMB | \ |
| 2884 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ | 2932 | PPC_CACHE_DCBA | PPC_MEM_TLBSYNC | \ |
| 2885 | PPC_FLOAT | PPC_FLOAT_FSQRT | PPC_FLOAT_FRES | \ | 2933 | PPC_FLOAT | PPC_FLOAT_FSQRT | PPC_FLOAT_FRES | \ |
| @@ -2893,12 +2941,14 @@ static void init_proc_460 (CPUPPCState *env) | @@ -2893,12 +2941,14 @@ static void init_proc_460 (CPUPPCState *env) | ||
| 2893 | #define POWERPC_INPUT_460F (PPC_FLAGS_INPUT_BookE) | 2941 | #define POWERPC_INPUT_460F (PPC_FLAGS_INPUT_BookE) |
| 2894 | #define POWERPC_BFDM_460F (bfd_mach_ppc_403) | 2942 | #define POWERPC_BFDM_460F (bfd_mach_ppc_403) |
| 2895 | 2943 | ||
| 2944 | +__attribute__ (( unused )) | ||
| 2896 | static void init_proc_460F (CPUPPCState *env) | 2945 | static void init_proc_460F (CPUPPCState *env) |
| 2897 | { | 2946 | { |
| 2898 | /* Time base */ | 2947 | /* Time base */ |
| 2899 | gen_tbl(env); | 2948 | gen_tbl(env); |
| 2900 | gen_spr_BookE(env); | 2949 | gen_spr_BookE(env); |
| 2901 | gen_spr_440(env); | 2950 | gen_spr_440(env); |
| 2951 | + /* XXX : not implemented */ | ||
| 2902 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", | 2952 | spr_register(env, SPR_BOOKE_MCSR, "MCSR", |
| 2903 | SPR_NOACCESS, SPR_NOACCESS, | 2953 | SPR_NOACCESS, SPR_NOACCESS, |
| 2904 | &spr_read_generic, &spr_write_generic, | 2954 | &spr_read_generic, &spr_write_generic, |
| @@ -2911,10 +2961,12 @@ static void init_proc_460F (CPUPPCState *env) | @@ -2911,10 +2961,12 @@ static void init_proc_460F (CPUPPCState *env) | ||
| 2911 | SPR_NOACCESS, SPR_NOACCESS, | 2961 | SPR_NOACCESS, SPR_NOACCESS, |
| 2912 | &spr_read_generic, &spr_write_generic, | 2962 | &spr_read_generic, &spr_write_generic, |
| 2913 | 0x00000000); | 2963 | 0x00000000); |
| 2964 | + /* XXX : not implemented */ | ||
| 2914 | spr_register(env, SPR_440_CCR1, "CCR1", | 2965 | spr_register(env, SPR_440_CCR1, "CCR1", |
| 2915 | SPR_NOACCESS, SPR_NOACCESS, | 2966 | SPR_NOACCESS, SPR_NOACCESS, |
| 2916 | &spr_read_generic, &spr_write_generic, | 2967 | &spr_read_generic, &spr_write_generic, |
| 2917 | 0x00000000); | 2968 | 0x00000000); |
| 2969 | + /* XXX : not implemented */ | ||
| 2918 | spr_register(env, SPR_DCRIPR, "SPR_DCRIPR", | 2970 | spr_register(env, SPR_DCRIPR, "SPR_DCRIPR", |
| 2919 | &spr_read_generic, &spr_write_generic, | 2971 | &spr_read_generic, &spr_write_generic, |
| 2920 | &spr_read_generic, &spr_write_generic, | 2972 | &spr_read_generic, &spr_write_generic, |
| @@ -2926,10 +2978,8 @@ static void init_proc_460F (CPUPPCState *env) | @@ -2926,10 +2978,8 @@ static void init_proc_460F (CPUPPCState *env) | ||
| 2926 | init_excp_BookE(env); | 2978 | init_excp_BookE(env); |
| 2927 | /* XXX: TODO: allocate internal IRQ controller */ | 2979 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2928 | } | 2980 | } |
| 2929 | -#endif /* TODO */ | ||
| 2930 | 2981 | ||
| 2931 | /* Generic BookE PowerPC */ | 2982 | /* Generic BookE PowerPC */ |
| 2932 | -#if defined(TODO) | ||
| 2933 | #define POWERPC_INSNS_BookE (POWERPC_INSNS_EMB | \ | 2983 | #define POWERPC_INSNS_BookE (POWERPC_INSNS_EMB | \ |
| 2934 | PPC_MEM_EIEIO | PPC_MEM_TLBSYNC | \ | 2984 | PPC_MEM_EIEIO | PPC_MEM_TLBSYNC | \ |
| 2935 | PPC_CACHE_DCBA | \ | 2985 | PPC_CACHE_DCBA | \ |
| @@ -2943,22 +2993,17 @@ static void init_proc_460F (CPUPPCState *env) | @@ -2943,22 +2993,17 @@ static void init_proc_460F (CPUPPCState *env) | ||
| 2943 | #define POWERPC_INPUT_BookE (PPC_FLAGS_INPUT_BookE) | 2993 | #define POWERPC_INPUT_BookE (PPC_FLAGS_INPUT_BookE) |
| 2944 | #define POWERPC_BFDM_BookE (bfd_mach_ppc_403) | 2994 | #define POWERPC_BFDM_BookE (bfd_mach_ppc_403) |
| 2945 | 2995 | ||
| 2996 | +__attribute__ (( unused )) | ||
| 2946 | static void init_proc_BookE (CPUPPCState *env) | 2997 | static void init_proc_BookE (CPUPPCState *env) |
| 2947 | { | 2998 | { |
| 2948 | init_excp_BookE(env); | 2999 | init_excp_BookE(env); |
| 2949 | } | 3000 | } |
| 2950 | -#endif /* TODO */ | ||
| 2951 | 3001 | ||
| 2952 | /* e200 core */ | 3002 | /* e200 core */ |
| 2953 | -#if defined(TODO) | ||
| 2954 | -#endif /* TODO */ | ||
| 2955 | 3003 | ||
| 2956 | /* e300 core */ | 3004 | /* e300 core */ |
| 2957 | -#if defined(TODO) | ||
| 2958 | -#endif /* TODO */ | ||
| 2959 | 3005 | ||
| 2960 | /* e500 core */ | 3006 | /* e500 core */ |
| 2961 | -#if defined(TODO) | ||
| 2962 | #define POWERPC_INSNS_e500 (POWERPC_INSNS_EMB | \ | 3007 | #define POWERPC_INSNS_e500 (POWERPC_INSNS_EMB | \ |
| 2963 | PPC_MEM_EIEIO | PPC_MEM_TLBSYNC | \ | 3008 | PPC_MEM_EIEIO | PPC_MEM_TLBSYNC | \ |
| 2964 | PPC_CACHE_DCBA | \ | 3009 | PPC_CACHE_DCBA | \ |
| @@ -2968,6 +3013,7 @@ static void init_proc_BookE (CPUPPCState *env) | @@ -2968,6 +3013,7 @@ static void init_proc_BookE (CPUPPCState *env) | ||
| 2968 | #define POWERPC_INPUT_e500 (PPC_FLAGS_INPUT_BookE) | 3013 | #define POWERPC_INPUT_e500 (PPC_FLAGS_INPUT_BookE) |
| 2969 | #define POWERPC_BFDM_e500 (bfd_mach_ppc_403) | 3014 | #define POWERPC_BFDM_e500 (bfd_mach_ppc_403) |
| 2970 | 3015 | ||
| 3016 | +__attribute__ (( unused )) | ||
| 2971 | static void init_proc_e500 (CPUPPCState *env) | 3017 | static void init_proc_e500 (CPUPPCState *env) |
| 2972 | { | 3018 | { |
| 2973 | /* Time base */ | 3019 | /* Time base */ |
| @@ -2981,11 +3027,8 @@ static void init_proc_e500 (CPUPPCState *env) | @@ -2981,11 +3027,8 @@ static void init_proc_e500 (CPUPPCState *env) | ||
| 2981 | init_excp_BookE(env); | 3027 | init_excp_BookE(env); |
| 2982 | /* XXX: TODO: allocate internal IRQ controller */ | 3028 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2983 | } | 3029 | } |
| 2984 | -#endif /* TODO */ | ||
| 2985 | 3030 | ||
| 2986 | /* e600 core */ | 3031 | /* e600 core */ |
| 2987 | -#if defined(TODO) | ||
| 2988 | -#endif /* TODO */ | ||
| 2989 | 3032 | ||
| 2990 | /* Non-embedded PowerPC */ | 3033 | /* Non-embedded PowerPC */ |
| 2991 | /* Base instructions set for all 6xx/7xx/74xx/970 PowerPC */ | 3034 | /* Base instructions set for all 6xx/7xx/74xx/970 PowerPC */ |
| @@ -3461,7 +3504,6 @@ static void init_proc_7410 (CPUPPCState *env) | @@ -3461,7 +3504,6 @@ static void init_proc_7410 (CPUPPCState *env) | ||
| 3461 | } | 3504 | } |
| 3462 | 3505 | ||
| 3463 | /* PowerPC 7440 (aka G4) */ | 3506 | /* PowerPC 7440 (aka G4) */ |
| 3464 | -#if defined (TODO) | ||
| 3465 | #define POWERPC_INSNS_7440 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | 3507 | #define POWERPC_INSNS_7440 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ |
| 3466 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | 3508 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ |
| 3467 | PPC_ALTIVEC) | 3509 | PPC_ALTIVEC) |
| @@ -3471,6 +3513,7 @@ static void init_proc_7410 (CPUPPCState *env) | @@ -3471,6 +3513,7 @@ static void init_proc_7410 (CPUPPCState *env) | ||
| 3471 | #define POWERPC_INPUT_7440 (PPC_FLAGS_INPUT_6xx) | 3513 | #define POWERPC_INPUT_7440 (PPC_FLAGS_INPUT_6xx) |
| 3472 | #define POWERPC_BFDM_7440 (bfd_mach_ppc_7400) | 3514 | #define POWERPC_BFDM_7440 (bfd_mach_ppc_7400) |
| 3473 | 3515 | ||
| 3516 | +__attribute__ (( unused )) | ||
| 3474 | static void init_proc_7440 (CPUPPCState *env) | 3517 | static void init_proc_7440 (CPUPPCState *env) |
| 3475 | { | 3518 | { |
| 3476 | gen_spr_ne_601(env); | 3519 | gen_spr_ne_601(env); |
| @@ -3492,6 +3535,7 @@ static void init_proc_7440 (CPUPPCState *env) | @@ -3492,6 +3535,7 @@ static void init_proc_7440 (CPUPPCState *env) | ||
| 3492 | &spr_read_generic, &spr_write_generic, | 3535 | &spr_read_generic, &spr_write_generic, |
| 3493 | 0x00000000); | 3536 | 0x00000000); |
| 3494 | /* MSSSR0 */ | 3537 | /* MSSSR0 */ |
| 3538 | + /* XXX : not implemented */ | ||
| 3495 | spr_register(env, SPR_MSSSR0, "MSSSR0", | 3539 | spr_register(env, SPR_MSSSR0, "MSSSR0", |
| 3496 | SPR_NOACCESS, SPR_NOACCESS, | 3540 | SPR_NOACCESS, SPR_NOACCESS, |
| 3497 | &spr_read_generic, &spr_write_generic, | 3541 | &spr_read_generic, &spr_write_generic, |
| @@ -3502,28 +3546,29 @@ static void init_proc_7440 (CPUPPCState *env) | @@ -3502,28 +3546,29 @@ static void init_proc_7440 (CPUPPCState *env) | ||
| 3502 | SPR_NOACCESS, SPR_NOACCESS, | 3546 | SPR_NOACCESS, SPR_NOACCESS, |
| 3503 | &spr_read_generic, &spr_write_generic, | 3547 | &spr_read_generic, &spr_write_generic, |
| 3504 | 0x00000000); | 3548 | 0x00000000); |
| 3549 | + /* XXX : not implemented */ | ||
| 3505 | spr_register(env, SPR_UPMC5, "UPMC5", | 3550 | spr_register(env, SPR_UPMC5, "UPMC5", |
| 3506 | &spr_read_ureg, SPR_NOACCESS, | 3551 | &spr_read_ureg, SPR_NOACCESS, |
| 3507 | &spr_read_ureg, SPR_NOACCESS, | 3552 | &spr_read_ureg, SPR_NOACCESS, |
| 3508 | 0x00000000); | 3553 | 0x00000000); |
| 3554 | + /* XXX : not implemented */ | ||
| 3509 | spr_register(env, SPR_PMC6, "PMC6", | 3555 | spr_register(env, SPR_PMC6, "PMC6", |
| 3510 | SPR_NOACCESS, SPR_NOACCESS, | 3556 | SPR_NOACCESS, SPR_NOACCESS, |
| 3511 | &spr_read_generic, &spr_write_generic, | 3557 | &spr_read_generic, &spr_write_generic, |
| 3512 | 0x00000000); | 3558 | 0x00000000); |
| 3559 | + /* XXX : not implemented */ | ||
| 3513 | spr_register(env, SPR_UPMC6, "UPMC6", | 3560 | spr_register(env, SPR_UPMC6, "UPMC6", |
| 3514 | &spr_read_ureg, SPR_NOACCESS, | 3561 | &spr_read_ureg, SPR_NOACCESS, |
| 3515 | &spr_read_ureg, SPR_NOACCESS, | 3562 | &spr_read_ureg, SPR_NOACCESS, |
| 3516 | 0x00000000); | 3563 | 0x00000000); |
| 3517 | /* Memory management */ | 3564 | /* Memory management */ |
| 3518 | gen_low_BATs(env); | 3565 | gen_low_BATs(env); |
| 3519 | - gen_74xx_soft_tlb(env); | 3566 | + gen_74xx_soft_tlb(env, 128, 2); |
| 3520 | /* Allocate hardware IRQ controller */ | 3567 | /* Allocate hardware IRQ controller */ |
| 3521 | ppc6xx_irq_init(env); | 3568 | ppc6xx_irq_init(env); |
| 3522 | } | 3569 | } |
| 3523 | -#endif /* TODO */ | ||
| 3524 | 3570 | ||
| 3525 | /* PowerPC 7450 (aka G4) */ | 3571 | /* PowerPC 7450 (aka G4) */ |
| 3526 | -#if defined (TODO) | ||
| 3527 | #define POWERPC_INSNS_7450 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | 3572 | #define POWERPC_INSNS_7450 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ |
| 3528 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | 3573 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ |
| 3529 | PPC_ALTIVEC) | 3574 | PPC_ALTIVEC) |
| @@ -3533,6 +3578,7 @@ static void init_proc_7440 (CPUPPCState *env) | @@ -3533,6 +3578,7 @@ static void init_proc_7440 (CPUPPCState *env) | ||
| 3533 | #define POWERPC_INPUT_7450 (PPC_FLAGS_INPUT_6xx) | 3578 | #define POWERPC_INPUT_7450 (PPC_FLAGS_INPUT_6xx) |
| 3534 | #define POWERPC_BFDM_7450 (bfd_mach_ppc_7400) | 3579 | #define POWERPC_BFDM_7450 (bfd_mach_ppc_7400) |
| 3535 | 3580 | ||
| 3581 | +__attribute__ (( unused )) | ||
| 3536 | static void init_proc_7450 (CPUPPCState *env) | 3582 | static void init_proc_7450 (CPUPPCState *env) |
| 3537 | { | 3583 | { |
| 3538 | gen_spr_ne_601(env); | 3584 | gen_spr_ne_601(env); |
| @@ -3556,6 +3602,7 @@ static void init_proc_7450 (CPUPPCState *env) | @@ -3556,6 +3602,7 @@ static void init_proc_7450 (CPUPPCState *env) | ||
| 3556 | &spr_read_generic, &spr_write_generic, | 3602 | &spr_read_generic, &spr_write_generic, |
| 3557 | 0x00000000); | 3603 | 0x00000000); |
| 3558 | /* MSSSR0 */ | 3604 | /* MSSSR0 */ |
| 3605 | + /* XXX : not implemented */ | ||
| 3559 | spr_register(env, SPR_MSSSR0, "MSSSR0", | 3606 | spr_register(env, SPR_MSSSR0, "MSSSR0", |
| 3560 | SPR_NOACCESS, SPR_NOACCESS, | 3607 | SPR_NOACCESS, SPR_NOACCESS, |
| 3561 | &spr_read_generic, &spr_write_generic, | 3608 | &spr_read_generic, &spr_write_generic, |
| @@ -3566,29 +3613,30 @@ static void init_proc_7450 (CPUPPCState *env) | @@ -3566,29 +3613,30 @@ static void init_proc_7450 (CPUPPCState *env) | ||
| 3566 | SPR_NOACCESS, SPR_NOACCESS, | 3613 | SPR_NOACCESS, SPR_NOACCESS, |
| 3567 | &spr_read_generic, &spr_write_generic, | 3614 | &spr_read_generic, &spr_write_generic, |
| 3568 | 0x00000000); | 3615 | 0x00000000); |
| 3616 | + /* XXX : not implemented */ | ||
| 3569 | spr_register(env, SPR_UPMC5, "UPMC5", | 3617 | spr_register(env, SPR_UPMC5, "UPMC5", |
| 3570 | &spr_read_ureg, SPR_NOACCESS, | 3618 | &spr_read_ureg, SPR_NOACCESS, |
| 3571 | &spr_read_ureg, SPR_NOACCESS, | 3619 | &spr_read_ureg, SPR_NOACCESS, |
| 3572 | 0x00000000); | 3620 | 0x00000000); |
| 3621 | + /* XXX : not implemented */ | ||
| 3573 | spr_register(env, SPR_PMC6, "PMC6", | 3622 | spr_register(env, SPR_PMC6, "PMC6", |
| 3574 | SPR_NOACCESS, SPR_NOACCESS, | 3623 | SPR_NOACCESS, SPR_NOACCESS, |
| 3575 | &spr_read_generic, &spr_write_generic, | 3624 | &spr_read_generic, &spr_write_generic, |
| 3576 | 0x00000000); | 3625 | 0x00000000); |
| 3626 | + /* XXX : not implemented */ | ||
| 3577 | spr_register(env, SPR_UPMC6, "UPMC6", | 3627 | spr_register(env, SPR_UPMC6, "UPMC6", |
| 3578 | &spr_read_ureg, SPR_NOACCESS, | 3628 | &spr_read_ureg, SPR_NOACCESS, |
| 3579 | &spr_read_ureg, SPR_NOACCESS, | 3629 | &spr_read_ureg, SPR_NOACCESS, |
| 3580 | 0x00000000); | 3630 | 0x00000000); |
| 3581 | /* Memory management */ | 3631 | /* Memory management */ |
| 3582 | gen_low_BATs(env); | 3632 | gen_low_BATs(env); |
| 3583 | - gen_74xx_soft_tlb(env); | 3633 | + gen_74xx_soft_tlb(env, 128, 2); |
| 3584 | init_excp_7450(env); | 3634 | init_excp_7450(env); |
| 3585 | /* Allocate hardware IRQ controller */ | 3635 | /* Allocate hardware IRQ controller */ |
| 3586 | ppc6xx_irq_init(env); | 3636 | ppc6xx_irq_init(env); |
| 3587 | } | 3637 | } |
| 3588 | -#endif /* TODO */ | ||
| 3589 | 3638 | ||
| 3590 | /* PowerPC 7445 (aka G4) */ | 3639 | /* PowerPC 7445 (aka G4) */ |
| 3591 | -#if defined (TODO) | ||
| 3592 | #define POWERPC_INSNS_7445 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | 3640 | #define POWERPC_INSNS_7445 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ |
| 3593 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | 3641 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ |
| 3594 | PPC_ALTIVEC) | 3642 | PPC_ALTIVEC) |
| @@ -3598,6 +3646,7 @@ static void init_proc_7450 (CPUPPCState *env) | @@ -3598,6 +3646,7 @@ static void init_proc_7450 (CPUPPCState *env) | ||
| 3598 | #define POWERPC_INPUT_7445 (PPC_FLAGS_INPUT_6xx) | 3646 | #define POWERPC_INPUT_7445 (PPC_FLAGS_INPUT_6xx) |
| 3599 | #define POWERPC_BFDM_7445 (bfd_mach_ppc_7400) | 3647 | #define POWERPC_BFDM_7445 (bfd_mach_ppc_7400) |
| 3600 | 3648 | ||
| 3649 | +__attribute__ (( unused )) | ||
| 3601 | static void init_proc_7445 (CPUPPCState *env) | 3650 | static void init_proc_7445 (CPUPPCState *env) |
| 3602 | { | 3651 | { |
| 3603 | gen_spr_ne_601(env); | 3652 | gen_spr_ne_601(env); |
| @@ -3619,6 +3668,7 @@ static void init_proc_7445 (CPUPPCState *env) | @@ -3619,6 +3668,7 @@ static void init_proc_7445 (CPUPPCState *env) | ||
| 3619 | &spr_read_generic, &spr_write_generic, | 3668 | &spr_read_generic, &spr_write_generic, |
| 3620 | 0x00000000); | 3669 | 0x00000000); |
| 3621 | /* MSSSR0 */ | 3670 | /* MSSSR0 */ |
| 3671 | + /* XXX : not implemented */ | ||
| 3622 | spr_register(env, SPR_MSSSR0, "MSSSR0", | 3672 | spr_register(env, SPR_MSSSR0, "MSSSR0", |
| 3623 | SPR_NOACCESS, SPR_NOACCESS, | 3673 | SPR_NOACCESS, SPR_NOACCESS, |
| 3624 | &spr_read_generic, &spr_write_generic, | 3674 | &spr_read_generic, &spr_write_generic, |
| @@ -3629,14 +3679,17 @@ static void init_proc_7445 (CPUPPCState *env) | @@ -3629,14 +3679,17 @@ static void init_proc_7445 (CPUPPCState *env) | ||
| 3629 | SPR_NOACCESS, SPR_NOACCESS, | 3679 | SPR_NOACCESS, SPR_NOACCESS, |
| 3630 | &spr_read_generic, &spr_write_generic, | 3680 | &spr_read_generic, &spr_write_generic, |
| 3631 | 0x00000000); | 3681 | 0x00000000); |
| 3682 | + /* XXX : not implemented */ | ||
| 3632 | spr_register(env, SPR_UPMC5, "UPMC5", | 3683 | spr_register(env, SPR_UPMC5, "UPMC5", |
| 3633 | &spr_read_ureg, SPR_NOACCESS, | 3684 | &spr_read_ureg, SPR_NOACCESS, |
| 3634 | &spr_read_ureg, SPR_NOACCESS, | 3685 | &spr_read_ureg, SPR_NOACCESS, |
| 3635 | 0x00000000); | 3686 | 0x00000000); |
| 3687 | + /* XXX : not implemented */ | ||
| 3636 | spr_register(env, SPR_PMC6, "PMC6", | 3688 | spr_register(env, SPR_PMC6, "PMC6", |
| 3637 | SPR_NOACCESS, SPR_NOACCESS, | 3689 | SPR_NOACCESS, SPR_NOACCESS, |
| 3638 | &spr_read_generic, &spr_write_generic, | 3690 | &spr_read_generic, &spr_write_generic, |
| 3639 | 0x00000000); | 3691 | 0x00000000); |
| 3692 | + /* XXX : not implemented */ | ||
| 3640 | spr_register(env, SPR_UPMC6, "UPMC6", | 3693 | spr_register(env, SPR_UPMC6, "UPMC6", |
| 3641 | &spr_read_ureg, SPR_NOACCESS, | 3694 | &spr_read_ureg, SPR_NOACCESS, |
| 3642 | &spr_read_ureg, SPR_NOACCESS, | 3695 | &spr_read_ureg, SPR_NOACCESS, |
| @@ -3677,15 +3730,13 @@ static void init_proc_7445 (CPUPPCState *env) | @@ -3677,15 +3730,13 @@ static void init_proc_7445 (CPUPPCState *env) | ||
| 3677 | /* Memory management */ | 3730 | /* Memory management */ |
| 3678 | gen_low_BATs(env); | 3731 | gen_low_BATs(env); |
| 3679 | gen_high_BATs(env); | 3732 | gen_high_BATs(env); |
| 3680 | - gen_74xx_soft_tlb(env); | 3733 | + gen_74xx_soft_tlb(env, 128, 2); |
| 3681 | init_excp_7450(env); | 3734 | init_excp_7450(env); |
| 3682 | /* Allocate hardware IRQ controller */ | 3735 | /* Allocate hardware IRQ controller */ |
| 3683 | ppc6xx_irq_init(env); | 3736 | ppc6xx_irq_init(env); |
| 3684 | } | 3737 | } |
| 3685 | -#endif /* TODO */ | ||
| 3686 | 3738 | ||
| 3687 | /* PowerPC 7455 (aka G4) */ | 3739 | /* PowerPC 7455 (aka G4) */ |
| 3688 | -#if defined (TODO) | ||
| 3689 | #define POWERPC_INSNS_7455 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ | 3740 | #define POWERPC_INSNS_7455 (POWERPC_INSNS_WORKS | PPC_CACHE_DCBA | \ |
| 3690 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ | 3741 | PPC_EXTERN | PPC_74xx_TLB | PPC_MEM_TLBIA | \ |
| 3691 | PPC_ALTIVEC) | 3742 | PPC_ALTIVEC) |
| @@ -3695,6 +3746,7 @@ static void init_proc_7445 (CPUPPCState *env) | @@ -3695,6 +3746,7 @@ static void init_proc_7445 (CPUPPCState *env) | ||
| 3695 | #define POWERPC_INPUT_7455 (PPC_FLAGS_INPUT_6xx) | 3746 | #define POWERPC_INPUT_7455 (PPC_FLAGS_INPUT_6xx) |
| 3696 | #define POWERPC_BFDM_7455 (bfd_mach_ppc_7400) | 3747 | #define POWERPC_BFDM_7455 (bfd_mach_ppc_7400) |
| 3697 | 3748 | ||
| 3749 | +__attribute__ (( unused )) | ||
| 3698 | static void init_proc_7455 (CPUPPCState *env) | 3750 | static void init_proc_7455 (CPUPPCState *env) |
| 3699 | { | 3751 | { |
| 3700 | gen_spr_ne_601(env); | 3752 | gen_spr_ne_601(env); |
| @@ -3718,6 +3770,7 @@ static void init_proc_7455 (CPUPPCState *env) | @@ -3718,6 +3770,7 @@ static void init_proc_7455 (CPUPPCState *env) | ||
| 3718 | &spr_read_generic, &spr_write_generic, | 3770 | &spr_read_generic, &spr_write_generic, |
| 3719 | 0x00000000); | 3771 | 0x00000000); |
| 3720 | /* MSSSR0 */ | 3772 | /* MSSSR0 */ |
| 3773 | + /* XXX : not implemented */ | ||
| 3721 | spr_register(env, SPR_MSSSR0, "MSSSR0", | 3774 | spr_register(env, SPR_MSSSR0, "MSSSR0", |
| 3722 | SPR_NOACCESS, SPR_NOACCESS, | 3775 | SPR_NOACCESS, SPR_NOACCESS, |
| 3723 | &spr_read_generic, &spr_write_generic, | 3776 | &spr_read_generic, &spr_write_generic, |
| @@ -3728,14 +3781,17 @@ static void init_proc_7455 (CPUPPCState *env) | @@ -3728,14 +3781,17 @@ static void init_proc_7455 (CPUPPCState *env) | ||
| 3728 | SPR_NOACCESS, SPR_NOACCESS, | 3781 | SPR_NOACCESS, SPR_NOACCESS, |
| 3729 | &spr_read_generic, &spr_write_generic, | 3782 | &spr_read_generic, &spr_write_generic, |
| 3730 | 0x00000000); | 3783 | 0x00000000); |
| 3784 | + /* XXX : not implemented */ | ||
| 3731 | spr_register(env, SPR_UPMC5, "UPMC5", | 3785 | spr_register(env, SPR_UPMC5, "UPMC5", |
| 3732 | &spr_read_ureg, SPR_NOACCESS, | 3786 | &spr_read_ureg, SPR_NOACCESS, |
| 3733 | &spr_read_ureg, SPR_NOACCESS, | 3787 | &spr_read_ureg, SPR_NOACCESS, |
| 3734 | 0x00000000); | 3788 | 0x00000000); |
| 3789 | + /* XXX : not implemented */ | ||
| 3735 | spr_register(env, SPR_PMC6, "PMC6", | 3790 | spr_register(env, SPR_PMC6, "PMC6", |
| 3736 | SPR_NOACCESS, SPR_NOACCESS, | 3791 | SPR_NOACCESS, SPR_NOACCESS, |
| 3737 | &spr_read_generic, &spr_write_generic, | 3792 | &spr_read_generic, &spr_write_generic, |
| 3738 | 0x00000000); | 3793 | 0x00000000); |
| 3794 | + /* XXX : not implemented */ | ||
| 3739 | spr_register(env, SPR_UPMC6, "UPMC6", | 3795 | spr_register(env, SPR_UPMC6, "UPMC6", |
| 3740 | &spr_read_ureg, SPR_NOACCESS, | 3796 | &spr_read_ureg, SPR_NOACCESS, |
| 3741 | &spr_read_ureg, SPR_NOACCESS, | 3797 | &spr_read_ureg, SPR_NOACCESS, |
| @@ -3776,12 +3832,11 @@ static void init_proc_7455 (CPUPPCState *env) | @@ -3776,12 +3832,11 @@ static void init_proc_7455 (CPUPPCState *env) | ||
| 3776 | /* Memory management */ | 3832 | /* Memory management */ |
| 3777 | gen_low_BATs(env); | 3833 | gen_low_BATs(env); |
| 3778 | gen_high_BATs(env); | 3834 | gen_high_BATs(env); |
| 3779 | - gen_74xx_soft_tlb(env); | 3835 | + gen_74xx_soft_tlb(env, 128, 2); |
| 3780 | init_excp_7450(env); | 3836 | init_excp_7450(env); |
| 3781 | /* Allocate hardware IRQ controller */ | 3837 | /* Allocate hardware IRQ controller */ |
| 3782 | ppc6xx_irq_init(env); | 3838 | ppc6xx_irq_init(env); |
| 3783 | } | 3839 | } |
| 3784 | -#endif /* TODO */ | ||
| 3785 | 3840 | ||
| 3786 | #if defined (TARGET_PPC64) | 3841 | #if defined (TARGET_PPC64) |
| 3787 | /* PowerPC 970 */ | 3842 | /* PowerPC 970 */ |
| @@ -3914,7 +3969,6 @@ static void init_proc_970GX (CPUPPCState *env) | @@ -3914,7 +3969,6 @@ static void init_proc_970GX (CPUPPCState *env) | ||
| 3914 | } | 3969 | } |
| 3915 | 3970 | ||
| 3916 | /* PowerPC 620 */ | 3971 | /* PowerPC 620 */ |
| 3917 | -#if defined (TODO) | ||
| 3918 | #define POWERPC_INSNS_620 (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ | 3972 | #define POWERPC_INSNS_620 (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \ |
| 3919 | PPC_64B | PPC_SLBI) | 3973 | PPC_64B | PPC_SLBI) |
| 3920 | #define POWERPC_MSRM_620 (0x800000000005FF73ULL) | 3974 | #define POWERPC_MSRM_620 (0x800000000005FF73ULL) |
| @@ -3923,6 +3977,7 @@ static void init_proc_970GX (CPUPPCState *env) | @@ -3923,6 +3977,7 @@ static void init_proc_970GX (CPUPPCState *env) | ||
| 3923 | #define POWERPC_INPUT_620 (PPC_FLAGS_INPUT_970) | 3977 | #define POWERPC_INPUT_620 (PPC_FLAGS_INPUT_970) |
| 3924 | #define POWERPC_BFDM_620 (bfd_mach_ppc64) | 3978 | #define POWERPC_BFDM_620 (bfd_mach_ppc64) |
| 3925 | 3979 | ||
| 3980 | +__attribute__ (( unused )) | ||
| 3926 | static void init_proc_620 (CPUPPCState *env) | 3981 | static void init_proc_620 (CPUPPCState *env) |
| 3927 | { | 3982 | { |
| 3928 | gen_spr_ne_601(env); | 3983 | gen_spr_ne_601(env); |
| @@ -3941,7 +3996,6 @@ static void init_proc_620 (CPUPPCState *env) | @@ -3941,7 +3996,6 @@ static void init_proc_620 (CPUPPCState *env) | ||
| 3941 | init_excp_620(env); | 3996 | init_excp_620(env); |
| 3942 | /* XXX: TODO: initialize internal interrupt controller */ | 3997 | /* XXX: TODO: initialize internal interrupt controller */ |
| 3943 | } | 3998 | } |
| 3944 | -#endif /* TODO */ | ||
| 3945 | #endif /* defined (TARGET_PPC64) */ | 3999 | #endif /* defined (TARGET_PPC64) */ |
| 3946 | 4000 | ||
| 3947 | /* Default 32 bits PowerPC target will be 604 */ | 4001 | /* Default 32 bits PowerPC target will be 604 */ |