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