Revision 237c0af0 target-ppc/translate_init.c

b/target-ppc/translate_init.c
23 23
 * inside "#if defined(TODO) ... #endif" statements to make tests easier.
24 24
 */
25 25

  
26
#include "dis-asm.h"
27

  
26 28
//#define PPC_DUMP_CPU
27 29
//#define PPC_DEBUG_SPR
28 30
//#define PPC_DEBUG_IRQ
......
37 39
    uint8_t excp_model;
38 40
    uint8_t bus_model;
39 41
    uint8_t pad;
42
    int bfd_mach;
40 43
    void (*init_proc)(CPUPPCState *env);
41 44
};
42 45

  
......
2163 2166
#define POWERPC_MMU_401      (POWERPC_MMU_REAL_4xx)
2164 2167
#define POWERPC_EXCP_401     (POWERPC_EXCP_40x)
2165 2168
#define POWERPC_INPUT_401    (PPC_FLAGS_INPUT_401)
2169
#define POWERPC_BFDM_401     (bfd_mach_ppc_403)
2166 2170

  
2167 2171
static void init_proc_401 (CPUPPCState *env)
2168 2172
{
......
2192 2196
#define POWERPC_MMU_401x2    (POWERPC_MMU_SOFT_4xx_Z)
2193 2197
#define POWERPC_EXCP_401x2   (POWERPC_EXCP_40x)
2194 2198
#define POWERPC_INPUT_401x2  (PPC_FLAGS_INPUT_401)
2199
#define POWERPC_BFDM_401x2   (bfd_mach_ppc_403)
2195 2200

  
2196 2201
static void init_proc_401x2 (CPUPPCState *env)
2197 2202
{
......
2227 2232
#define POWERPC_MMU_401x3    (POWERPC_MMU_SOFT_4xx_Z)
2228 2233
#define POWERPC_EXCP_401x3   (POWERPC_EXCP_40x)
2229 2234
#define POWERPC_INPUT_401x3  (PPC_FLAGS_INPUT_401)
2235
#define POWERPC_BFDM_401x3   (bfd_mach_ppc_403)
2230 2236

  
2231 2237
static void init_proc_401x2 (CPUPPCState *env)
2232 2238
{
......
2243 2249
#define POWERPC_MMU_IOP480   (POWERPC_MMU_SOFT_4xx_Z)
2244 2250
#define POWERPC_EXCP_IOP480  (POWERPC_EXCP_40x)
2245 2251
#define POWERPC_INPUT_IOP480 (PPC_FLAGS_INPUT_401)
2252
#define POWERPC_BFDM_IOP480  (bfd_mach_ppc_403)
2246 2253

  
2247 2254
static void init_proc_IOP480 (CPUPPCState *env)
2248 2255
{
......
2276 2283
#define POWERPC_MMU_403      (POWERPC_MMU_REAL_4xx)
2277 2284
#define POWERPC_EXCP_403     (POWERPC_EXCP_40x)
2278 2285
#define POWERPC_INPUT_403    (PPC_FLAGS_INPUT_401)
2286
#define POWERPC_BFDM_403     (bfd_mach_ppc_403)
2279 2287

  
2280 2288
static void init_proc_403 (CPUPPCState *env)
2281 2289
{
......
2295 2303
#define POWERPC_MMU_403GCX   (POWERPC_MMU_SOFT_4xx_Z)
2296 2304
#define POWERPC_EXCP_403GCX  (POWERPC_EXCP_40x)
2297 2305
#define POWERPC_INPUT_403GCX (PPC_FLAGS_INPUT_401)
2306
#define POWERPC_BFDM_403GCX  (bfd_mach_ppc_403)
2298 2307

  
2299 2308
static void init_proc_403GCX (CPUPPCState *env)
2300 2309
{
......
2330 2339
#define POWERPC_MMU_405      (POWERPC_MMU_SOFT_4xx)
2331 2340
#define POWERPC_EXCP_405     (POWERPC_EXCP_40x)
2332 2341
#define POWERPC_INPUT_405    (PPC_FLAGS_INPUT_405)
2342
#define POWERPC_BFDM_405     (bfd_mach_ppc_403)
2333 2343

  
2334 2344
static void init_proc_405 (CPUPPCState *env)
2335 2345
{
......
2364 2374
#define POWERPC_MMU_440EP    (POWERPC_MMU_BOOKE)
2365 2375
#define POWERPC_EXCP_440EP   (POWERPC_EXCP_BOOKE)
2366 2376
#define POWERPC_INPUT_440EP  (PPC_FLAGS_INPUT_BookE)
2377
#define POWERPC_BFDM_440EP   (bfd_mach_ppc_403)
2367 2378

  
2368 2379
static void init_proc_440EP (CPUPPCState *env)
2369 2380
{
......
2403 2414
#define POWERPC_MMU_440GP    (POWERPC_MMU_BOOKE)
2404 2415
#define POWERPC_EXCP_440GP   (POWERPC_EXCP_BOOKE)
2405 2416
#define POWERPC_INPUT_440GP  (PPC_FLAGS_INPUT_BookE)
2417
#define POWERPC_BFDM_440GP   (bfd_mach_ppc_403)
2406 2418

  
2407 2419
static void init_proc_440GP (CPUPPCState *env)
2408 2420
{
......
2427 2439
#define POWERPC_MMU_440x4    (POWERPC_MMU_BOOKE)
2428 2440
#define POWERPC_EXCP_440x4   (POWERPC_EXCP_BOOKE)
2429 2441
#define POWERPC_INPUT_440x4  (PPC_FLAGS_INPUT_BookE)
2442
#define POWERPC_BFDM_440x4   (bfd_mach_ppc_403)
2430 2443

  
2431 2444
static void init_proc_440x4 (CPUPPCState *env)
2432 2445
{
......
2451 2464
#define POWERPC_MMU_440x5    (POWERPC_MMU_BOOKE)
2452 2465
#define POWERPC_EXCP_440x5   (POWERPC_EXCP_BOOKE)
2453 2466
#define POWERPC_INPUT_440x5  (PPC_FLAGS_INPUT_BookE)
2467
#define POWERPC_BFDM_440x5   (bfd_mach_ppc_403)
2454 2468

  
2455 2469
static void init_proc_440x5 (CPUPPCState *env)
2456 2470
{
......
2491 2505
#define POWERPC_MMU_460      (POWERPC_MMU_BOOKE)
2492 2506
#define POWERPC_EXCP_460     (POWERPC_EXCP_BOOKE)
2493 2507
#define POWERPC_INPUT_460    (PPC_FLAGS_INPUT_BookE)
2508
#define POWERPC_BFDM_460     (bfd_mach_ppc_403)
2494 2509

  
2495 2510
static void init_proc_460 (CPUPPCState *env)
2496 2511
{
......
2510 2525
#define POWERPC_MMU_460F     (POWERPC_MMU_BOOKE)
2511 2526
#define POWERPC_EXCP_460F    (POWERPC_EXCP_BOOKE)
2512 2527
#define POWERPC_INPUT_460F   (PPC_FLAGS_INPUT_BookE)
2528
#define POWERPC_BFDM_460F    (bfd_mach_ppc_403)
2513 2529

  
2514 2530
static void init_proc_460 (CPUPPCState *env)
2515 2531
{
......
2558 2574
#define POWERPC_MMU_BookE    (POWERPC_MMU_BOOKE)
2559 2575
#define POWERPC_EXCP_BookE   (POWERPC_EXCP_BOOKE)
2560 2576
#define POWERPC_INPUT_BookE  (PPC_FLAGS_INPUT_BookE)
2577
#define POWERPC_BFDM_BookE   (bfd_mach_ppc_403)
2561 2578

  
2562 2579
static void init_proc_BookE (CPUPPCState *env)
2563 2580
{
......
2581 2598
#define POWERPC_MMU_e500     (POWERPC_MMU_SOFT_4xx)
2582 2599
#define POWERPC_EXCP_e500    (POWERPC_EXCP_40x)
2583 2600
#define POWERPC_INPUT_e500   (PPC_FLAGS_INPUT_BookE)
2601
#define POWERPC_BFDM_e500    (bfd_mach_ppc_403)
2584 2602

  
2585 2603
static void init_proc_e500 (CPUPPCState *env)
2586 2604
{
......
2623 2641
//#define POWERPC_MMU_601      (POWERPC_MMU_601)
2624 2642
//#define POWERPC_EXCP_601     (POWERPC_EXCP_601)
2625 2643
#define POWERPC_INPUT_601    (PPC_FLAGS_INPUT_6xx)
2644
#define POWERPC_BFDM_601     (bfd_mach_ppc_601)
2626 2645

  
2627 2646
static void init_proc_601 (CPUPPCState *env)
2628 2647
{
......
2671 2690
#define POWERPC_MMU_602      (POWERPC_MMU_SOFT_6xx)
2672 2691
//#define POWERPC_EXCP_602     (POWERPC_EXCP_602)
2673 2692
#define POWERPC_INPUT_602    (PPC_FLAGS_INPUT_6xx)
2693
#define POWERPC_BFDM_602     (bfd_mach_ppc_602)
2674 2694

  
2675 2695
static void init_proc_602 (CPUPPCState *env)
2676 2696
{
......
2702 2722
#define POWERPC_MMU_603      (POWERPC_MMU_SOFT_6xx)
2703 2723
//#define POWERPC_EXCP_603     (POWERPC_EXCP_603)
2704 2724
#define POWERPC_INPUT_603    (PPC_FLAGS_INPUT_6xx)
2725
#define POWERPC_BFDM_603     (bfd_mach_ppc_603)
2705 2726

  
2706 2727
static void init_proc_603 (CPUPPCState *env)
2707 2728
{
......
2733 2754
#define POWERPC_MMU_603E     (POWERPC_MMU_SOFT_6xx)
2734 2755
//#define POWERPC_EXCP_603E    (POWERPC_EXCP_603E)
2735 2756
#define POWERPC_INPUT_603E   (PPC_FLAGS_INPUT_6xx)
2757
#define POWERPC_BFDM_603E    (bfd_mach_ppc_ec603e)
2736 2758

  
2737 2759
static void init_proc_603E (CPUPPCState *env)
2738 2760
{
......
2769 2791
#define POWERPC_MMU_G2       (POWERPC_MMU_SOFT_6xx)
2770 2792
//#define POWERPC_EXCP_G2      (POWERPC_EXCP_G2)
2771 2793
#define POWERPC_INPUT_G2     (PPC_FLAGS_INPUT_6xx)
2794
#define POWERPC_BFDM_G2      (bfd_mach_ppc_ec603e)
2772 2795

  
2773 2796
static void init_proc_G2 (CPUPPCState *env)
2774 2797
{
......
2807 2830
#define POWERPC_MMU_G2LE     (POWERPC_MMU_SOFT_6xx)
2808 2831
#define POWERPC_EXCP_G2LE    (POWERPC_EXCP_G2)
2809 2832
#define POWERPC_INPUT_G2LE   (PPC_FLAGS_INPUT_6xx)
2833
#define POWERPC_BFDM_G2LE    (bfd_mach_ppc_ec603e)
2810 2834

  
2811 2835
static void init_proc_G2LE (CPUPPCState *env)
2812 2836
{
......
2845 2869
#define POWERPC_MMU_604      (POWERPC_MMU_32B)
2846 2870
//#define POWERPC_EXCP_604     (POWERPC_EXCP_604)
2847 2871
#define POWERPC_INPUT_604    (PPC_FLAGS_INPUT_6xx)
2872
#define POWERPC_BFDM_604     (bfd_mach_ppc_604)
2848 2873

  
2849 2874
static void init_proc_604 (CPUPPCState *env)
2850 2875
{
......
2875 2900
#define POWERPC_MMU_7x0      (POWERPC_MMU_32B)
2876 2901
//#define POWERPC_EXCP_7x0     (POWERPC_EXCP_7x0)
2877 2902
#define POWERPC_INPUT_7x0    (PPC_FLAGS_INPUT_6xx)
2903
#define POWERPC_BFDM_7x0     (bfd_mach_ppc_750)
2878 2904

  
2879 2905
static void init_proc_7x0 (CPUPPCState *env)
2880 2906
{
......
2907 2933
#define POWERPC_MMU_750fx    (POWERPC_MMU_32B)
2908 2934
#define POWERPC_EXCP_750fx   (POWERPC_EXCP_7x0)
2909 2935
#define POWERPC_INPUT_750fx  (PPC_FLAGS_INPUT_6xx)
2936
#define POWERPC_BFDM_750fx   (bfd_mach_ppc_750)
2910 2937

  
2911 2938
static void init_proc_750fx (CPUPPCState *env)
2912 2939
{
......
2946 2973
#define POWERPC_MMU_7x5      (POWERPC_MMU_SOFT_6xx)
2947 2974
//#define POWERPC_EXCP_7x5     (POWERPC_EXCP_7x5)
2948 2975
#define POWERPC_INPUT_7x5    (PPC_FLAGS_INPUT_6xx)
2976
#define POWERPC_BFDM_7x5     (bfd_mach_ppc_750)
2949 2977

  
2950 2978
static void init_proc_7x5 (CPUPPCState *env)
2951 2979
{
......
2996 3024
#define POWERPC_MMU_7400     (POWERPC_MMU_32B)
2997 3025
#define POWERPC_EXCP_7400    (POWERPC_EXCP_74xx)
2998 3026
#define POWERPC_INPUT_7400   (PPC_FLAGS_INPUT_6xx)
3027
#define POWERPC_BFDM_7400    (bfd_mach_ppc_7400)
2999 3028

  
3000 3029
static void init_proc_7400 (CPUPPCState *env)
3001 3030
{
......
3021 3050
#define POWERPC_MMU_7410     (POWERPC_MMU_32B)
3022 3051
#define POWERPC_EXCP_7410    (POWERPC_EXCP_74xx)
3023 3052
#define POWERPC_INPUT_7410   (PPC_FLAGS_INPUT_6xx)
3053
#define POWERPC_BFDM_7410    (bfd_mach_ppc_7400)
3024 3054

  
3025 3055
static void init_proc_7410 (CPUPPCState *env)
3026 3056
{
......
3059 3089
#define POWERPC_MMU_7440     (POWERPC_MMU_SOFT_74xx)
3060 3090
#define POWERPC_EXCP_7440    (POWERPC_EXCP_74xx)
3061 3091
#define POWERPC_INPUT_7440   (PPC_FLAGS_INPUT_6xx)
3092
#define POWERPC_BFDM_7440    (bfd_mach_ppc_7400)
3062 3093

  
3063 3094
static void init_proc_7440 (CPUPPCState *env)
3064 3095
{
......
3120 3151
#define POWERPC_MMU_7450     (POWERPC_MMU_SOFT_74xx)
3121 3152
#define POWERPC_EXCP_7450    (POWERPC_EXCP_74xx)
3122 3153
#define POWERPC_INPUT_7450   (PPC_FLAGS_INPUT_6xx)
3154
#define POWERPC_BFDM_7450    (bfd_mach_ppc_7400)
3123 3155

  
3124 3156
static void init_proc_7450 (CPUPPCState *env)
3125 3157
{
......
3183 3215
#define POWERPC_MMU_7445     (POWERPC_MMU_SOFT_74xx)
3184 3216
#define POWERPC_EXCP_7445    (POWERPC_EXCP_74xx)
3185 3217
#define POWERPC_INPUT_7445   (PPC_FLAGS_INPUT_6xx)
3218
#define POWERPC_BFDM_7445    (bfd_mach_ppc_7400)
3186 3219

  
3187 3220
static void init_proc_7445 (CPUPPCState *env)
3188 3221
{
......
3278 3311
#define POWERPC_MMU_7455     (POWERPC_MMU_SOFT_74xx)
3279 3312
#define POWERPC_EXCP_7455    (POWERPC_EXCP_74xx)
3280 3313
#define POWERPC_INPUT_7455   (PPC_FLAGS_INPUT_6xx)
3314
#define POWERPC_BFDM_7455    (bfd_mach_ppc_7400)
3281 3315

  
3282 3316
static void init_proc_7455 (CPUPPCState *env)
3283 3317
{
......
3375 3409
#define POWERPC_MMU_970      (POWERPC_MMU_64BRIDGE)
3376 3410
//#define POWERPC_EXCP_970     (POWERPC_EXCP_970)
3377 3411
#define POWERPC_INPUT_970    (PPC_FLAGS_INPUT_970)
3412
#define POWERPC_BFDM_970     (bfd_mach_ppc64)
3378 3413

  
3379 3414
static void init_proc_970 (CPUPPCState *env)
3380 3415
{
......
3416 3451
#define POWERPC_MMU_970FX    (POWERPC_MMU_64BRIDGE)
3417 3452
#define POWERPC_EXCP_970FX   (POWERPC_EXCP_970)
3418 3453
#define POWERPC_INPUT_970FX  (PPC_FLAGS_INPUT_970)
3454
#define POWERPC_BFDM_970FX   (bfd_mach_ppc64)
3419 3455

  
3420 3456
static void init_proc_970FX (CPUPPCState *env)
3421 3457
{
......
3457 3493
#define POWERPC_MMU_970GX    (POWERPC_MMU_64BRIDGE)
3458 3494
#define POWERPC_EXCP_970GX   (POWERPC_EXCP_970)
3459 3495
#define POWERPC_INPUT_970GX  (PPC_FLAGS_INPUT_970)
3496
#define POWERPC_BFDM_970GX   (bfd_mach_ppc64)
3460 3497

  
3461 3498
static void init_proc_970GX (CPUPPCState *env)
3462 3499
{
......
3498 3535
#define POWERPC_MMU_620      (POWERPC_MMU_64B)
3499 3536
#define POWERPC_EXCP_620     (POWERPC_EXCP_970)
3500 3537
#define POWERPC_INPUT_620    (PPC_FLAGS_INPUT_970)
3538
#define POWERPC_BFDM_620     (bfd_mach_ppc64)
3501 3539

  
3502 3540
static void init_proc_620 (CPUPPCState *env)
3503 3541
{
......
3527 3565
#define POWERPC_EXCP_PPC32    POWERPC_EXCP_604
3528 3566
#define POWERPC_INPUT_PPC32   POWERPC_INPUT_604
3529 3567
#define init_proc_PPC32       init_proc_604
3568
#define POWERPC_BFDM_PPC32    POWERPC_BFDM_604
3530 3569

  
3531 3570
/* Default 64 bits PowerPC target will be 970 FX */
3532 3571
#define CPU_POWERPC_PPC64     CPU_POWERPC_970FX
......
3536 3575
#define POWERPC_EXCP_PPC64    POWERPC_EXCP_970FX
3537 3576
#define POWERPC_INPUT_PPC64   POWERPC_INPUT_970FX
3538 3577
#define init_proc_PPC64       init_proc_970FX
3578
#define POWERPC_BFDM_PPC64    POWERPC_BFDM_970FX
3539 3579

  
3540 3580
/* Default PowerPC target will be PowerPC 32 */
3541 3581
#if defined (TARGET_PPC64) && 0 // XXX: TODO
......
3546 3586
#define POWERPC_EXCP_DEFAULT  POWERPC_EXCP_PPC64
3547 3587
#define POWERPC_INPUT_DEFAULT POWERPC_INPUT_PPC64
3548 3588
#define init_proc_DEFAULT     init_proc_PPC64
3589
#define POWERPC_BFDM_DEFAULT  POWERPC_BFDM_PPC64
3549 3590
#else
3550 3591
#define CPU_POWERPC_DEFAULT   CPU_POWERPC_PPC32
3551 3592
#define POWERPC_INSNS_DEFAULT POWERPC_INSNS_PPC32
......
3554 3595
#define POWERPC_EXCP_DEFAULT  POWERPC_EXCP_PPC32
3555 3596
#define POWERPC_INPUT_DEFAULT POWERPC_INPUT_PPC32
3556 3597
#define init_proc_DEFAULT     init_proc_PPC32
3598
#define POWERPC_BFDM_DEFAULT  POWERPC_BFDM_PPC32
3557 3599
#endif
3558 3600

  
3559 3601
/*****************************************************************************/
......
4048 4090
        .mmu_model   = glue(POWERPC_MMU_,_type),                              \
4049 4091
        .excp_model  = glue(POWERPC_EXCP_,_type),                             \
4050 4092
        .bus_model   = glue(POWERPC_INPUT_,_type),                            \
4093
        .bfd_mach    = glue(POWERPC_BFDM_,_type),                             \
4051 4094
        .init_proc   = &glue(init_proc_,_type),                               \
4052 4095
    }
4053 4096

  
......
5332 5375
    env->mmu_model = def->mmu_model;
5333 5376
    env->excp_model = def->excp_model;
5334 5377
    env->bus_model = def->bus_model;
5378
    env->bfd_mach = def->bfd_mach;
5335 5379
    if (create_ppc_opcodes(env, def) < 0)
5336 5380
        return -1;
5337 5381
    init_ppc_proc(env, def);

Also available in: Unified diff