Revision b4095fed

b/target-ppc/cpu.h
104 104
    POWERPC_MMU_SOFT_4xx,
105 105
    /* PowerPC 4xx MMU with software TLB and zones protections */
106 106
    POWERPC_MMU_SOFT_4xx_Z,
107
    /* PowerPC 4xx MMU in real mode only                       */
108
    POWERPC_MMU_REAL_4xx,
107
    /* PowerPC MMU in real mode only                           */
108
    POWERPC_MMU_REAL,
109
    /* Freescale MPC8xx MMU model                              */
110
    POWERPC_MMU_MPC8xx,
109 111
    /* BookE MMU model                                         */
110 112
    POWERPC_MMU_BOOKE,
111 113
    /* BookE FSL MMU model                                     */
......
171 173
    POWERPC_EXCP_DECR     = 10, /* Decrementer exception                     */
172 174
    POWERPC_EXCP_FIT      = 11, /* Fixed-interval timer interrupt            */
173 175
    POWERPC_EXCP_WDT      = 12, /* Watchdog timer interrupt                  */
174
    POWERPC_EXCP_DTLB     = 13, /* Data TLB error                            */
175
    POWERPC_EXCP_ITLB     = 14, /* Instruction TLB error                     */
176
    POWERPC_EXCP_DTLB     = 13, /* Data TLB miss                             */
177
    POWERPC_EXCP_ITLB     = 14, /* Instruction TLB miss                      */
176 178
    POWERPC_EXCP_DEBUG    = 15, /* Debug interrupt                           */
177 179
    /* Vectors 16 to 31 are reserved                                         */
178 180
    POWERPC_EXCP_SPEU     = 32, /* SPE/embedded floating-point unavailable   */
......
201 203
    /* 602 specific exceptions                                               */
202 204
    POWERPC_EXCP_EMUL     = 77, /* Emulation trap exception                  */
203 205
    /* 602/603 specific exceptions                                           */
204
    POWERPC_EXCP_IFTLB    = 78, /* Instruction fetch TLB error               */
206
    POWERPC_EXCP_IFTLB    = 78, /* Instruction fetch TLB miss                */
205 207
    POWERPC_EXCP_DLTLB    = 79, /* Data load TLB miss                        */
206 208
    POWERPC_EXCP_DSTLB    = 80, /* Data store TLB miss                       */
207 209
    /* Exceptions available on most PowerPC                                  */
208 210
    POWERPC_EXCP_FPA      = 81, /* Floating-point assist exception           */
209
    POWERPC_EXCP_IABR     = 82, /* Instruction address breakpoint            */
210
    POWERPC_EXCP_SMI      = 83, /* System management interrupt               */
211
    POWERPC_EXCP_PERFM    = 84, /* Embedded performance monitor interrupt    */
211
    POWERPC_EXCP_DABR     = 82, /* Data address breakpoint                   */
212
    POWERPC_EXCP_IABR     = 83, /* Instruction address breakpoint            */
213
    POWERPC_EXCP_SMI      = 84, /* System management interrupt               */
214
    POWERPC_EXCP_PERFM    = 85, /* Embedded performance monitor interrupt    */
212 215
    /* 7xx/74xx specific exceptions                                          */
213
    POWERPC_EXCP_THERM    = 85, /* Thermal interrupt                         */
216
    POWERPC_EXCP_THERM    = 86, /* Thermal interrupt                         */
214 217
    /* 74xx specific exceptions                                              */
215
    POWERPC_EXCP_VPUA     = 86, /* Vector assist exception                   */
218
    POWERPC_EXCP_VPUA     = 87, /* Vector assist exception                   */
216 219
    /* 970FX specific exceptions                                             */
217
    POWERPC_EXCP_SOFTP    = 87, /* Soft patch exception                      */
218
    POWERPC_EXCP_MAINT    = 88, /* Maintenance exception                     */
220
    POWERPC_EXCP_SOFTP    = 88, /* Soft patch exception                      */
221
    POWERPC_EXCP_MAINT    = 89, /* Maintenance exception                     */
222
    /* Freescale embeded cores specific exceptions                           */
223
    POWERPC_EXCP_MEXTBR   = 90, /* Maskable external breakpoint              */
224
    POWERPC_EXCP_NMEXTBR  = 91, /* Non maskable external breakpoint          */
225
    POWERPC_EXCP_ITLBE    = 92, /* Instruction TLB error                     */
226
    POWERPC_EXCP_DTLBE    = 93, /* Data TLB error                            */
219 227
    /* EOL                                                                   */
220 228
    POWERPC_EXCP_NB       = 96,
221 229
    /* Qemu exceptions: used internally during code translation              */
......
280 288
    PPC_FLAGS_INPUT_970,
281 289
    /* PowerPC 401 bus                  */
282 290
    PPC_FLAGS_INPUT_401,
291
    /* Freescale RCPU bus               */
292
    PPC_FLAGS_INPUT_RCPU,
283 293
};
284 294

  
285 295
#define PPC_INPUT(env) (env->bus_model)
......
1259 1269
    PPC40x_INPUT_NB,
1260 1270
};
1261 1271

  
1272
enum {
1273
    /* RCPU input pins */
1274
    PPCRCPU_INPUT_PORESET   = 0,
1275
    PPCRCPU_INPUT_HRESET    = 1,
1276
    PPCRCPU_INPUT_SRESET    = 2,
1277
    PPCRCPU_INPUT_IRQ0      = 3,
1278
    PPCRCPU_INPUT_IRQ1      = 4,
1279
    PPCRCPU_INPUT_IRQ2      = 5,
1280
    PPCRCPU_INPUT_IRQ3      = 6,
1281
    PPCRCPU_INPUT_IRQ4      = 7,
1282
    PPCRCPU_INPUT_IRQ5      = 8,
1283
    PPCRCPU_INPUT_IRQ6      = 9,
1284
    PPCRCPU_INPUT_IRQ7      = 10,
1285
    PPCRCPU_INPUT_NB,
1286
};
1287

  
1262 1288
#if defined(TARGET_PPC64)
1263 1289
enum {
1264 1290
    /* PowerPC 970 input pins */
b/target-ppc/helper.c
1357 1357
    case POWERPC_MMU_SOFT_6xx:
1358 1358
    case POWERPC_MMU_SOFT_74xx:
1359 1359
    case POWERPC_MMU_SOFT_4xx:
1360
    case POWERPC_MMU_REAL_4xx:
1360
    case POWERPC_MMU_REAL:
1361 1361
    case POWERPC_MMU_BOOKE:
1362 1362
        ctx->prot |= PAGE_WRITE;
1363 1363
        break;
......
1392 1392
            }
1393 1393
        }
1394 1394
        break;
1395
    case POWERPC_MMU_MPC8xx:
1396
        /* XXX: TODO */
1397
        cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1398
        break;
1395 1399
    case POWERPC_MMU_BOOKE_FSL:
1396 1400
        /* XXX: TODO */
1397 1401
        cpu_abort(env, "BookE FSL MMU model not implemented\n");
......
1445 1449
            ret = mmubooke_get_physical_address(env, ctx, eaddr,
1446 1450
                                                rw, access_type);
1447 1451
            break;
1452
        case POWERPC_MMU_MPC8xx:
1453
            /* XXX: TODO */
1454
            cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1455
            break;
1448 1456
        case POWERPC_MMU_BOOKE_FSL:
1449 1457
            /* XXX: TODO */
1450 1458
            cpu_abort(env, "BookE FSL MMU model not implemented\n");
1451 1459
            return -1;
1452
        case POWERPC_MMU_REAL_4xx:
1453
            cpu_abort(env, "PowerPC 401 does not do any translation\n");
1460
        case POWERPC_MMU_REAL:
1461
            cpu_abort(env, "PowerPC in real mode do not do any translation\n");
1454 1462
            return -1;
1455 1463
        default:
1456 1464
            cpu_abort(env, "Unknown or invalid MMU model\n");
......
1537 1545
                    break;
1538 1546
                case POWERPC_MMU_BOOKE:
1539 1547
                    /* XXX: TODO */
1540
                    cpu_abort(env, "MMU model not implemented\n");
1548
                    cpu_abort(env, "BookE MMU model is not implemented\n");
1541 1549
                    return -1;
1542 1550
                case POWERPC_MMU_BOOKE_FSL:
1543 1551
                    /* XXX: TODO */
1544
                    cpu_abort(env, "MMU model not implemented\n");
1552
                    cpu_abort(env, "BookE FSL MMU model is not implemented\n");
1545 1553
                    return -1;
1546
                case POWERPC_MMU_REAL_4xx:
1547
                    cpu_abort(env, "PowerPC 401 should never raise any MMU "
1548
                              "exceptions\n");
1554
                case POWERPC_MMU_MPC8xx:
1555
                    /* XXX: TODO */
1556
                    cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1557
                    break;
1558
                case POWERPC_MMU_REAL:
1559
                    cpu_abort(env, "PowerPC in real mode should never raise "
1560
                              "any MMU exceptions\n");
1549 1561
                    return -1;
1550 1562
                default:
1551 1563
                    cpu_abort(env, "Unknown or invalid MMU model\n");
......
1632 1644
                    else
1633 1645
                        env->spr[SPR_DSISR] = 0x40000000;
1634 1646
                    break;
1647
                case POWERPC_MMU_MPC8xx:
1648
                    /* XXX: TODO */
1649
                    cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1650
                    break;
1635 1651
                case POWERPC_MMU_BOOKE:
1636 1652
                    /* XXX: TODO */
1637
                    cpu_abort(env, "MMU model not implemented\n");
1653
                    cpu_abort(env, "BookE MMU model is not implemented\n");
1638 1654
                    return -1;
1639 1655
                case POWERPC_MMU_BOOKE_FSL:
1640 1656
                    /* XXX: TODO */
1641
                    cpu_abort(env, "MMU model not implemented\n");
1657
                    cpu_abort(env, "BookE FSL MMU model is not implemented\n");
1642 1658
                    return -1;
1643
                case POWERPC_MMU_REAL_4xx:
1644
                    cpu_abort(env, "PowerPC 401 should never raise any MMU "
1645
                              "exceptions\n");
1659
                case POWERPC_MMU_REAL:
1660
                    cpu_abort(env, "PowerPC in real mode should never raise "
1661
                              "any MMU exceptions\n");
1646 1662
                    return -1;
1647 1663
                default:
1648 1664
                    cpu_abort(env, "Unknown or invalid MMU model\n");
......
1921 1937
    case POWERPC_MMU_SOFT_4xx_Z:
1922 1938
        ppc4xx_tlb_invalidate_all(env);
1923 1939
        break;
1924
    case POWERPC_MMU_REAL_4xx:
1940
    case POWERPC_MMU_REAL:
1925 1941
        cpu_abort(env, "No TLB for PowerPC 4xx in real mode\n");
1926 1942
        break;
1943
    case POWERPC_MMU_MPC8xx:
1944
        /* XXX: TODO */
1945
        cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1946
        break;
1927 1947
    case POWERPC_MMU_BOOKE:
1928 1948
        /* XXX: TODO */
1929
        cpu_abort(env, "MMU model not implemented\n");
1949
        cpu_abort(env, "BookE MMU model is not implemented\n");
1930 1950
        break;
1931 1951
    case POWERPC_MMU_BOOKE_FSL:
1932 1952
        /* XXX: TODO */
1933
        cpu_abort(env, "MMU model not implemented\n");
1953
        cpu_abort(env, "BookE MMU model is not implemented\n");
1934 1954
        break;
1935 1955
    case POWERPC_MMU_32B:
1936 1956
    case POWERPC_MMU_601:
......
1961 1981
    case POWERPC_MMU_SOFT_4xx_Z:
1962 1982
        ppc4xx_tlb_invalidate_virt(env, addr, env->spr[SPR_40x_PID]);
1963 1983
        break;
1964
    case POWERPC_MMU_REAL_4xx:
1984
    case POWERPC_MMU_REAL:
1965 1985
        cpu_abort(env, "No TLB for PowerPC 4xx in real mode\n");
1966 1986
        break;
1987
    case POWERPC_MMU_MPC8xx:
1988
        /* XXX: TODO */
1989
        cpu_abort(env, "MPC8xx MMU model is not implemented\n");
1990
        break;
1967 1991
    case POWERPC_MMU_BOOKE:
1968 1992
        /* XXX: TODO */
1969
        cpu_abort(env, "MMU model not implemented\n");
1993
        cpu_abort(env, "BookE MMU model is not implemented\n");
1970 1994
        break;
1971 1995
    case POWERPC_MMU_BOOKE_FSL:
1972 1996
        /* XXX: TODO */
1973
        cpu_abort(env, "MMU model not implemented\n");
1997
        cpu_abort(env, "BookE FSL MMU model is not implemented\n");
1974 1998
        break;
1975 1999
    case POWERPC_MMU_32B:
1976 2000
    case POWERPC_MMU_601:
......
2613 2637
        cpu_abort(env, "Floating point assist exception "
2614 2638
                  "is not implemented yet !\n");
2615 2639
        goto store_next;
2640
    case POWERPC_EXCP_DABR:      /* Data address breakpoint                  */
2641
        /* XXX: TODO */
2642
        cpu_abort(env, "DABR exception is not implemented yet !\n");
2643
        goto store_next;
2616 2644
    case POWERPC_EXCP_IABR:      /* Instruction address breakpoint           */
2617 2645
        /* XXX: TODO */
2618 2646
        cpu_abort(env, "IABR exception is not implemented yet !\n");
......
2648 2676
        cpu_abort(env,
2649 2677
                  "970 maintenance exception is not implemented yet !\n");
2650 2678
        goto store_next;
2679
    case POWERPC_EXCP_MEXTBR:    /* Maskable external breakpoint             */
2680
        /* XXX: TODO */
2681
        cpu_abort(env, "Maskable external exception "
2682
                  "is not implemented yet !\n");
2683
        goto store_next;
2684
    case POWERPC_EXCP_NMEXTBR:   /* Non maskable external breakpoint         */
2685
        /* XXX: TODO */
2686
        cpu_abort(env, "Non maskable external exception "
2687
                  "is not implemented yet !\n");
2688
        goto store_next;
2651 2689
    default:
2652 2690
    excp_invalid:
2653 2691
        cpu_abort(env, "Invalid PowerPC exception %d. Aborting\n", excp);
......
2899 2937
    msr |= (target_ulong)1 << MSR_PR;
2900 2938
#else
2901 2939
    env->nip = env->hreset_vector | env->excp_prefix;
2902
    if (env->mmu_model != POWERPC_MMU_REAL_4xx)
2940
    if (env->mmu_model != POWERPC_MMU_REAL)
2903 2941
        ppc_tlb_invalidate_all(env);
2904 2942
#endif
2905 2943
    env->msr = msr;
b/target-ppc/translate_init.c
2656 2656
                              PPC_MEM_SYNC | PPC_MEM_EIEIO |                  \
2657 2657
                              PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT)
2658 2658
#define POWERPC_MSRM_401     (0x00000000000FD201ULL)
2659
#define POWERPC_MMU_401      (POWERPC_MMU_REAL_4xx)
2659
#define POWERPC_MMU_401      (POWERPC_MMU_REAL)
2660 2660
#define POWERPC_EXCP_401     (POWERPC_EXCP_40x)
2661 2661
#define POWERPC_INPUT_401    (PPC_FLAGS_INPUT_401)
2662 2662
#define POWERPC_BFDM_401     (bfd_mach_ppc_403)
......
2775 2775
                              PPC_MEM_SYNC | PPC_MEM_EIEIO |                  \
2776 2776
                              PPC_4xx_COMMON | PPC_40x_EXCP | PPC_40x_ICBT)
2777 2777
#define POWERPC_MSRM_403     (0x000000000007D00DULL)
2778
#define POWERPC_MMU_403      (POWERPC_MMU_REAL_4xx)
2778
#define POWERPC_MMU_403      (POWERPC_MMU_REAL)
2779 2779
#define POWERPC_EXCP_403     (POWERPC_EXCP_40x)
2780 2780
#define POWERPC_INPUT_403    (PPC_FLAGS_INPUT_401)
2781 2781
#define POWERPC_BFDM_403     (bfd_mach_ppc_403)
......
6639 6639
            mmu_model = "PowerPC 4xx with software driven TLBs "
6640 6640
                "and zones protections";
6641 6641
            break;
6642
        case POWERPC_MMU_REAL_4xx:
6643
            mmu_model = "PowerPC 4xx real mode only";
6642
        case POWERPC_MMU_REAL:
6643
            mmu_model = "PowerPC real mode only";
6644
            break;
6645
        case POWERPC_MMU_MPC8xx:
6646
            mmu_model = "PowerPC MPC8xx";
6644 6647
            break;
6645 6648
        case POWERPC_MMU_BOOKE:
6646 6649
            mmu_model = "PowerPC BookE";
......
6648 6651
        case POWERPC_MMU_BOOKE_FSL:
6649 6652
            mmu_model = "PowerPC BookE FSL";
6650 6653
            break;
6654
        case POWERPC_MMU_601:
6655
            mmu_model = "PowerPC 601";
6656
            break;
6651 6657
#if defined (TARGET_PPC64)
6652 6658
        case POWERPC_MMU_64B:
6653 6659
            mmu_model = "PowerPC 64";
......
6713 6719
        case PPC_FLAGS_INPUT_401:
6714 6720
            bus_model = "PowerPC 401/403";
6715 6721
            break;
6722
        case PPC_FLAGS_INPUT_RCPU:
6723
            bus_model = "RCPU / MPC8xx";
6724
            break;
6716 6725
#if defined (TARGET_PPC64)
6717 6726
        case PPC_FLAGS_INPUT_970:
6718 6727
            bus_model = "PowerPC 970";

Also available in: Unified diff