Revision d63001d1 target-ppc/translate_init.c
b/target-ppc/translate_init.c | ||
---|---|---|
2542 | 2542 |
/* PowerPC implementations definitions */ |
2543 | 2543 |
|
2544 | 2544 |
/* PowerPC 40x instruction set */ |
2545 |
#define POWERPC_INSNS_EMB (PPC_INSNS_BASE | PPC_EMB_COMMON) |
|
2545 |
#define POWERPC_INSNS_EMB (PPC_INSNS_BASE | PPC_CACHE_DCBZ | PPC_EMB_COMMON)
|
|
2546 | 2546 |
|
2547 | 2547 |
/* PowerPC 401 */ |
2548 | 2548 |
#define POWERPC_INSNS_401 (POWERPC_INSNS_EMB | \ |
... | ... | |
2560 | 2560 |
gen_spr_401_403(env); |
2561 | 2561 |
gen_spr_401(env); |
2562 | 2562 |
init_excp_4xx_real(env); |
2563 |
env->dcache_line_size = 32; |
|
2564 |
env->icache_line_size = 32; |
|
2563 | 2565 |
/* Allocate hardware IRQ controller */ |
2564 | 2566 |
ppc40x_irq_init(env); |
2567 |
#if !defined(CONFIG_USER_ONLY) |
|
2568 |
/* Hardware reset vector */ |
|
2569 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2570 |
#endif |
|
2565 | 2571 |
} |
2566 | 2572 |
|
2567 | 2573 |
/* PowerPC 401x2 */ |
... | ... | |
2587 | 2593 |
env->nb_ways = 1; |
2588 | 2594 |
env->id_tlbs = 0; |
2589 | 2595 |
init_excp_4xx_softmmu(env); |
2596 |
env->dcache_line_size = 32; |
|
2597 |
env->icache_line_size = 32; |
|
2590 | 2598 |
/* Allocate hardware IRQ controller */ |
2591 | 2599 |
ppc40x_irq_init(env); |
2600 |
#if !defined(CONFIG_USER_ONLY) |
|
2601 |
/* Hardware reset vector */ |
|
2602 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2603 |
#endif |
|
2592 | 2604 |
} |
2593 | 2605 |
|
2594 | 2606 |
/* PowerPC 401x3 */ |
... | ... | |
2612 | 2624 |
gen_spr_401x2(env); |
2613 | 2625 |
gen_spr_compress(env); |
2614 | 2626 |
init_excp_4xx_softmmu(env); |
2627 |
env->dcache_line_size = 32; |
|
2628 |
env->icache_line_size = 32; |
|
2615 | 2629 |
/* Allocate hardware IRQ controller */ |
2616 | 2630 |
ppc40x_irq_init(env); |
2631 |
#if !defined(CONFIG_USER_ONLY) |
|
2632 |
/* Hardware reset vector */ |
|
2633 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2634 |
#endif |
|
2617 | 2635 |
} |
2618 | 2636 |
|
2619 | 2637 |
/* IOP480 */ |
... | ... | |
2639 | 2657 |
env->nb_ways = 1; |
2640 | 2658 |
env->id_tlbs = 0; |
2641 | 2659 |
init_excp_4xx_softmmu(env); |
2660 |
env->dcache_line_size = 32; |
|
2661 |
env->icache_line_size = 32; |
|
2642 | 2662 |
/* Allocate hardware IRQ controller */ |
2643 | 2663 |
ppc40x_irq_init(env); |
2664 |
#if !defined(CONFIG_USER_ONLY) |
|
2665 |
/* Hardware reset vector */ |
|
2666 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2667 |
#endif |
|
2644 | 2668 |
} |
2645 | 2669 |
|
2646 | 2670 |
/* PowerPC 403 */ |
... | ... | |
2661 | 2685 |
gen_spr_403(env); |
2662 | 2686 |
gen_spr_403_real(env); |
2663 | 2687 |
init_excp_4xx_real(env); |
2688 |
env->dcache_line_size = 32; |
|
2689 |
env->icache_line_size = 32; |
|
2664 | 2690 |
/* Allocate hardware IRQ controller */ |
2665 | 2691 |
ppc40x_irq_init(env); |
2692 |
#if !defined(CONFIG_USER_ONLY) |
|
2693 |
/* Hardware reset vector */ |
|
2694 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2695 |
#endif |
|
2666 | 2696 |
} |
2667 | 2697 |
|
2668 | 2698 |
/* PowerPC 403 GCX */ |
... | ... | |
2699 | 2729 |
env->nb_ways = 1; |
2700 | 2730 |
env->id_tlbs = 0; |
2701 | 2731 |
init_excp_4xx_softmmu(env); |
2732 |
env->dcache_line_size = 32; |
|
2733 |
env->icache_line_size = 32; |
|
2702 | 2734 |
/* Allocate hardware IRQ controller */ |
2703 | 2735 |
ppc40x_irq_init(env); |
2736 |
#if !defined(CONFIG_USER_ONLY) |
|
2737 |
/* Hardware reset vector */ |
|
2738 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2739 |
#endif |
|
2704 | 2740 |
} |
2705 | 2741 |
|
2706 | 2742 |
/* PowerPC 405 */ |
... | ... | |
2737 | 2773 |
env->nb_ways = 1; |
2738 | 2774 |
env->id_tlbs = 0; |
2739 | 2775 |
init_excp_4xx_softmmu(env); |
2776 |
env->dcache_line_size = 32; |
|
2777 |
env->icache_line_size = 32; |
|
2740 | 2778 |
/* Allocate hardware IRQ controller */ |
2741 | 2779 |
ppc40x_irq_init(env); |
2780 |
#if !defined(CONFIG_USER_ONLY) |
|
2781 |
/* Hardware reset vector */ |
|
2782 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2783 |
#endif |
|
2742 | 2784 |
} |
2743 | 2785 |
|
2744 | 2786 |
/* PowerPC 440 EP */ |
... | ... | |
2781 | 2823 |
env->nb_ways = 1; |
2782 | 2824 |
env->id_tlbs = 0; |
2783 | 2825 |
init_excp_BookE(env); |
2826 |
env->dcache_line_size = 32; |
|
2827 |
env->icache_line_size = 32; |
|
2784 | 2828 |
/* XXX: TODO: allocate internal IRQ controller */ |
2829 |
#if !defined(CONFIG_USER_ONLY) |
|
2830 |
/* Hardware reset vector */ |
|
2831 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2832 |
#endif |
|
2785 | 2833 |
} |
2786 | 2834 |
|
2787 | 2835 |
/* PowerPC 440 GP */ |
... | ... | |
2806 | 2854 |
env->nb_ways = 1; |
2807 | 2855 |
env->id_tlbs = 0; |
2808 | 2856 |
init_excp_BookE(env); |
2857 |
env->dcache_line_size = 32; |
|
2858 |
env->icache_line_size = 32; |
|
2809 | 2859 |
/* XXX: TODO: allocate internal IRQ controller */ |
2860 |
#if !defined(CONFIG_USER_ONLY) |
|
2861 |
/* Hardware reset vector */ |
|
2862 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2863 |
#endif |
|
2810 | 2864 |
} |
2811 | 2865 |
|
2812 | 2866 |
/* PowerPC 440x4 */ |
... | ... | |
2832 | 2886 |
env->nb_ways = 1; |
2833 | 2887 |
env->id_tlbs = 0; |
2834 | 2888 |
init_excp_BookE(env); |
2889 |
env->dcache_line_size = 32; |
|
2890 |
env->icache_line_size = 32; |
|
2835 | 2891 |
/* XXX: TODO: allocate internal IRQ controller */ |
2892 |
#if !defined(CONFIG_USER_ONLY) |
|
2893 |
/* Hardware reset vector */ |
|
2894 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2895 |
#endif |
|
2836 | 2896 |
} |
2837 | 2897 |
|
2838 | 2898 |
/* PowerPC 440x5 */ |
... | ... | |
2875 | 2935 |
env->nb_ways = 1; |
2876 | 2936 |
env->id_tlbs = 0; |
2877 | 2937 |
init_excp_BookE(env); |
2938 |
env->dcache_line_size = 32; |
|
2939 |
env->icache_line_size = 32; |
|
2878 | 2940 |
/* XXX: TODO: allocate internal IRQ controller */ |
2941 |
#if !defined(CONFIG_USER_ONLY) |
|
2942 |
/* Hardware reset vector */ |
|
2943 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2944 |
#endif |
|
2879 | 2945 |
} |
2880 | 2946 |
|
2881 | 2947 |
/* PowerPC 460 (guessed) */ |
... | ... | |
2924 | 2990 |
env->nb_ways = 1; |
2925 | 2991 |
env->id_tlbs = 0; |
2926 | 2992 |
init_excp_BookE(env); |
2993 |
env->dcache_line_size = 32; |
|
2994 |
env->icache_line_size = 32; |
|
2927 | 2995 |
/* XXX: TODO: allocate internal IRQ controller */ |
2996 |
#if !defined(CONFIG_USER_ONLY) |
|
2997 |
/* Hardware reset vector */ |
|
2998 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
2999 |
#endif |
|
2928 | 3000 |
} |
2929 | 3001 |
|
2930 | 3002 |
/* PowerPC 460F (guessed) */ |
... | ... | |
2976 | 3048 |
env->nb_ways = 1; |
2977 | 3049 |
env->id_tlbs = 0; |
2978 | 3050 |
init_excp_BookE(env); |
3051 |
env->dcache_line_size = 32; |
|
3052 |
env->icache_line_size = 32; |
|
2979 | 3053 |
/* XXX: TODO: allocate internal IRQ controller */ |
3054 |
#if !defined(CONFIG_USER_ONLY) |
|
3055 |
/* Hardware reset vector */ |
|
3056 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3057 |
#endif |
|
2980 | 3058 |
} |
2981 | 3059 |
|
2982 | 3060 |
/* Generic BookE PowerPC */ |
... | ... | |
2997 | 3075 |
static void init_proc_BookE (CPUPPCState *env) |
2998 | 3076 |
{ |
2999 | 3077 |
init_excp_BookE(env); |
3078 |
env->dcache_line_size = 32; |
|
3079 |
env->icache_line_size = 32; |
|
3080 |
#if !defined(CONFIG_USER_ONLY) |
|
3081 |
/* Hardware reset vector */ |
|
3082 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3083 |
#endif |
|
3000 | 3084 |
} |
3001 | 3085 |
|
3002 | 3086 |
/* e200 core */ |
... | ... | |
3025 | 3109 |
env->nb_ways = 1; |
3026 | 3110 |
env->id_tlbs = 0; |
3027 | 3111 |
init_excp_BookE(env); |
3112 |
env->dcache_line_size = 32; |
|
3113 |
env->icache_line_size = 32; |
|
3028 | 3114 |
/* XXX: TODO: allocate internal IRQ controller */ |
3115 |
#if !defined(CONFIG_USER_ONLY) |
|
3116 |
/* Hardware reset vector */ |
|
3117 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3118 |
#endif |
|
3029 | 3119 |
} |
3030 | 3120 |
|
3031 | 3121 |
/* e600 core */ |
... | ... | |
3038 | 3128 |
#define POWERPC_INSNS_WORKS (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT | \ |
3039 | 3129 |
PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ |
3040 | 3130 |
PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ |
3041 |
PPC_MEM_TLBSYNC | PPC_MFTB) |
|
3131 |
PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ | PPC_MFTB)
|
|
3042 | 3132 |
|
3043 | 3133 |
/* POWER : same as 601, without mfmsr, mfsr */ |
3044 | 3134 |
#if defined(TODO) |
... | ... | |
3048 | 3138 |
#endif /* TODO */ |
3049 | 3139 |
|
3050 | 3140 |
/* PowerPC 601 */ |
3051 |
#define POWERPC_INSNS_601 (POWERPC_INSNS_6xx | PPC_EXTERN | PPC_POWER_BR) |
|
3141 |
#define POWERPC_INSNS_601 (POWERPC_INSNS_6xx | PPC_CACHE_DCBZ | \ |
|
3142 |
PPC_EXTERN | PPC_POWER_BR) |
|
3052 | 3143 |
#define POWERPC_MSRM_601 (0x000000000000FE70ULL) |
3053 | 3144 |
//#define POWERPC_MMU_601 (POWERPC_MMU_601) |
3054 | 3145 |
//#define POWERPC_EXCP_601 (POWERPC_EXCP_601) |
... | ... | |
3091 | 3182 |
env->id_tlbs = 0; |
3092 | 3183 |
env->id_tlbs = 0; |
3093 | 3184 |
init_excp_601(env); |
3185 |
env->dcache_line_size = 64; |
|
3186 |
env->icache_line_size = 64; |
|
3094 | 3187 |
/* XXX: TODO: allocate internal IRQ controller */ |
3188 |
#if !defined(CONFIG_USER_ONLY) |
|
3189 |
/* Hardware reset vector */ |
|
3190 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3191 |
#endif |
|
3095 | 3192 |
} |
3096 | 3193 |
|
3097 | 3194 |
/* PowerPC 602 */ |
3098 | 3195 |
#define POWERPC_INSNS_602 (POWERPC_INSNS_6xx | PPC_MFTB | \ |
3099 | 3196 |
PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ |
3100 | 3197 |
PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ |
3101 |
PPC_6xx_TLB | PPC_MEM_TLBSYNC | PPC_602_SPEC) |
|
3198 |
PPC_6xx_TLB | PPC_MEM_TLBSYNC | PPC_CACHE_DCBZ |\ |
|
3199 |
PPC_602_SPEC) |
|
3102 | 3200 |
#define POWERPC_MSRM_602 (0x000000000033FF73ULL) |
3103 | 3201 |
#define POWERPC_MMU_602 (POWERPC_MMU_SOFT_6xx) |
3104 | 3202 |
//#define POWERPC_EXCP_602 (POWERPC_EXCP_602) |
... | ... | |
3126 | 3224 |
gen_low_BATs(env); |
3127 | 3225 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3128 | 3226 |
init_excp_602(env); |
3227 |
env->dcache_line_size = 32; |
|
3228 |
env->icache_line_size = 32; |
|
3129 | 3229 |
/* Allocate hardware IRQ controller */ |
3130 | 3230 |
ppc6xx_irq_init(env); |
3231 |
#if !defined(CONFIG_USER_ONLY) |
|
3232 |
/* Hardware reset vector */ |
|
3233 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3234 |
#endif |
|
3131 | 3235 |
} |
3132 | 3236 |
|
3133 | 3237 |
/* PowerPC 603 */ |
... | ... | |
3159 | 3263 |
gen_low_BATs(env); |
3160 | 3264 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3161 | 3265 |
init_excp_603(env); |
3266 |
env->dcache_line_size = 32; |
|
3267 |
env->icache_line_size = 32; |
|
3162 | 3268 |
/* Allocate hardware IRQ controller */ |
3163 | 3269 |
ppc6xx_irq_init(env); |
3270 |
#if !defined(CONFIG_USER_ONLY) |
|
3271 |
/* Hardware reset vector */ |
|
3272 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3273 |
#endif |
|
3164 | 3274 |
} |
3165 | 3275 |
|
3166 | 3276 |
/* PowerPC 603e */ |
... | ... | |
3197 | 3307 |
gen_low_BATs(env); |
3198 | 3308 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3199 | 3309 |
init_excp_603(env); |
3310 |
env->dcache_line_size = 32; |
|
3311 |
env->icache_line_size = 32; |
|
3200 | 3312 |
/* Allocate hardware IRQ controller */ |
3201 | 3313 |
ppc6xx_irq_init(env); |
3314 |
#if !defined(CONFIG_USER_ONLY) |
|
3315 |
/* Hardware reset vector */ |
|
3316 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3317 |
#endif |
|
3202 | 3318 |
} |
3203 | 3319 |
|
3204 | 3320 |
/* PowerPC G2 */ |
... | ... | |
3237 | 3353 |
gen_high_BATs(env); |
3238 | 3354 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3239 | 3355 |
init_excp_G2(env); |
3356 |
env->dcache_line_size = 32; |
|
3357 |
env->icache_line_size = 32; |
|
3240 | 3358 |
/* Allocate hardware IRQ controller */ |
3241 | 3359 |
ppc6xx_irq_init(env); |
3360 |
#if !defined(CONFIG_USER_ONLY) |
|
3361 |
/* Hardware reset vector */ |
|
3362 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3363 |
#endif |
|
3242 | 3364 |
} |
3243 | 3365 |
|
3244 | 3366 |
/* PowerPC G2LE */ |
... | ... | |
3277 | 3399 |
gen_high_BATs(env); |
3278 | 3400 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3279 | 3401 |
init_excp_G2(env); |
3402 |
env->dcache_line_size = 32; |
|
3403 |
env->icache_line_size = 32; |
|
3280 | 3404 |
/* Allocate hardware IRQ controller */ |
3281 | 3405 |
ppc6xx_irq_init(env); |
3406 |
#if !defined(CONFIG_USER_ONLY) |
|
3407 |
/* Hardware reset vector */ |
|
3408 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3409 |
#endif |
|
3282 | 3410 |
} |
3283 | 3411 |
|
3284 | 3412 |
/* PowerPC 604 */ |
... | ... | |
3309 | 3437 |
/* Memory management */ |
3310 | 3438 |
gen_low_BATs(env); |
3311 | 3439 |
init_excp_604(env); |
3440 |
env->dcache_line_size = 32; |
|
3441 |
env->icache_line_size = 32; |
|
3312 | 3442 |
/* Allocate hardware IRQ controller */ |
3313 | 3443 |
ppc6xx_irq_init(env); |
3444 |
#if !defined(CONFIG_USER_ONLY) |
|
3445 |
/* Hardware reset vector */ |
|
3446 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3447 |
#endif |
|
3314 | 3448 |
} |
3315 | 3449 |
|
3316 | 3450 |
/* PowerPC 740/750 (aka G3) */ |
... | ... | |
3343 | 3477 |
/* Memory management */ |
3344 | 3478 |
gen_low_BATs(env); |
3345 | 3479 |
init_excp_7x0(env); |
3480 |
env->dcache_line_size = 32; |
|
3481 |
env->icache_line_size = 32; |
|
3346 | 3482 |
/* Allocate hardware IRQ controller */ |
3347 | 3483 |
ppc6xx_irq_init(env); |
3484 |
#if !defined(CONFIG_USER_ONLY) |
|
3485 |
/* Hardware reset vector */ |
|
3486 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3487 |
#endif |
|
3348 | 3488 |
} |
3349 | 3489 |
|
3350 | 3490 |
/* PowerPC 750FX/GX */ |
... | ... | |
3384 | 3524 |
/* PowerPC 750fx & 750gx has 8 DBATs and 8 IBATs */ |
3385 | 3525 |
gen_high_BATs(env); |
3386 | 3526 |
init_excp_750FX(env); |
3527 |
env->dcache_line_size = 32; |
|
3528 |
env->icache_line_size = 32; |
|
3387 | 3529 |
/* Allocate hardware IRQ controller */ |
3388 | 3530 |
ppc6xx_irq_init(env); |
3531 |
#if !defined(CONFIG_USER_ONLY) |
|
3532 |
/* Hardware reset vector */ |
|
3533 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3534 |
#endif |
|
3389 | 3535 |
} |
3390 | 3536 |
|
3391 | 3537 |
/* PowerPC 745/755 */ |
... | ... | |
3433 | 3579 |
gen_low_BATs(env); |
3434 | 3580 |
gen_high_BATs(env); |
3435 | 3581 |
gen_6xx_7xx_soft_tlb(env, 64, 2); |
3582 |
env->dcache_line_size = 32; |
|
3583 |
env->icache_line_size = 32; |
|
3436 | 3584 |
/* Allocate hardware IRQ controller */ |
3437 | 3585 |
ppc6xx_irq_init(env); |
3586 |
#if !defined(CONFIG_USER_ONLY) |
|
3587 |
/* Hardware reset vector */ |
|
3588 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3589 |
#endif |
|
3438 | 3590 |
} |
3439 | 3591 |
|
3440 | 3592 |
/* PowerPC 7400 (aka G4) */ |
... | ... | |
3460 | 3612 |
/* Memory management */ |
3461 | 3613 |
gen_low_BATs(env); |
3462 | 3614 |
init_excp_7400(env); |
3615 |
env->dcache_line_size = 32; |
|
3616 |
env->icache_line_size = 32; |
|
3463 | 3617 |
/* Allocate hardware IRQ controller */ |
3464 | 3618 |
ppc6xx_irq_init(env); |
3619 |
#if !defined(CONFIG_USER_ONLY) |
|
3620 |
/* Hardware reset vector */ |
|
3621 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3622 |
#endif |
|
3465 | 3623 |
} |
3466 | 3624 |
|
3467 | 3625 |
/* PowerPC 7410 (aka G4) */ |
... | ... | |
3499 | 3657 |
/* Memory management */ |
3500 | 3658 |
gen_low_BATs(env); |
3501 | 3659 |
init_excp_7400(env); |
3660 |
env->dcache_line_size = 32; |
|
3661 |
env->icache_line_size = 32; |
|
3502 | 3662 |
/* Allocate hardware IRQ controller */ |
3503 | 3663 |
ppc6xx_irq_init(env); |
3664 |
#if !defined(CONFIG_USER_ONLY) |
|
3665 |
/* Hardware reset vector */ |
|
3666 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3667 |
#endif |
|
3504 | 3668 |
} |
3505 | 3669 |
|
3506 | 3670 |
/* PowerPC 7440 (aka G4) */ |
... | ... | |
3564 | 3728 |
/* Memory management */ |
3565 | 3729 |
gen_low_BATs(env); |
3566 | 3730 |
gen_74xx_soft_tlb(env, 128, 2); |
3731 |
env->dcache_line_size = 32; |
|
3732 |
env->icache_line_size = 32; |
|
3567 | 3733 |
/* Allocate hardware IRQ controller */ |
3568 | 3734 |
ppc6xx_irq_init(env); |
3735 |
#if !defined(CONFIG_USER_ONLY) |
|
3736 |
/* Hardware reset vector */ |
|
3737 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3738 |
#endif |
|
3569 | 3739 |
} |
3570 | 3740 |
|
3571 | 3741 |
/* PowerPC 7450 (aka G4) */ |
... | ... | |
3632 | 3802 |
gen_low_BATs(env); |
3633 | 3803 |
gen_74xx_soft_tlb(env, 128, 2); |
3634 | 3804 |
init_excp_7450(env); |
3805 |
env->dcache_line_size = 32; |
|
3806 |
env->icache_line_size = 32; |
|
3635 | 3807 |
/* Allocate hardware IRQ controller */ |
3636 | 3808 |
ppc6xx_irq_init(env); |
3809 |
#if !defined(CONFIG_USER_ONLY) |
|
3810 |
/* Hardware reset vector */ |
|
3811 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3812 |
#endif |
|
3637 | 3813 |
} |
3638 | 3814 |
|
3639 | 3815 |
/* PowerPC 7445 (aka G4) */ |
... | ... | |
3732 | 3908 |
gen_high_BATs(env); |
3733 | 3909 |
gen_74xx_soft_tlb(env, 128, 2); |
3734 | 3910 |
init_excp_7450(env); |
3911 |
env->dcache_line_size = 32; |
|
3912 |
env->icache_line_size = 32; |
|
3735 | 3913 |
/* Allocate hardware IRQ controller */ |
3736 | 3914 |
ppc6xx_irq_init(env); |
3915 |
#if !defined(CONFIG_USER_ONLY) |
|
3916 |
/* Hardware reset vector */ |
|
3917 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
3918 |
#endif |
|
3737 | 3919 |
} |
3738 | 3920 |
|
3739 | 3921 |
/* PowerPC 7455 (aka G4) */ |
... | ... | |
3834 | 4016 |
gen_high_BATs(env); |
3835 | 4017 |
gen_74xx_soft_tlb(env, 128, 2); |
3836 | 4018 |
init_excp_7450(env); |
4019 |
env->dcache_line_size = 32; |
|
4020 |
env->icache_line_size = 32; |
|
3837 | 4021 |
/* Allocate hardware IRQ controller */ |
3838 | 4022 |
ppc6xx_irq_init(env); |
4023 |
#if !defined(CONFIG_USER_ONLY) |
|
4024 |
/* Hardware reset vector */ |
|
4025 |
env->hreset_vector = 0xFFFFFFFCUL; |
|
4026 |
#endif |
|
3839 | 4027 |
} |
3840 | 4028 |
|
3841 | 4029 |
#if defined (TARGET_PPC64) |
4030 |
#define POWERPC_INSNS_WORK64 (POWERPC_INSNS_6xx | PPC_FLOAT_FSQRT | \ |
|
4031 |
PPC_FLOAT_FRES | PPC_FLOAT_FRSQRTE | \ |
|
4032 |
PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX | \ |
|
4033 |
PPC_MEM_TLBSYNC | PPC_CACHE_DCBZT | PPC_MFTB) |
|
3842 | 4034 |
/* PowerPC 970 */ |
3843 |
#define POWERPC_INSNS_970 (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \
|
|
4035 |
#define POWERPC_INSNS_970 (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \
|
|
3844 | 4036 |
PPC_64B | PPC_ALTIVEC | \ |
3845 | 4037 |
PPC_64_BRIDGE | PPC_SLBI) |
3846 | 4038 |
#define POWERPC_MSRM_970 (0x900000000204FF36ULL) |
... | ... | |
3860 | 4052 |
spr_register(env, SPR_HID0, "HID0", |
3861 | 4053 |
SPR_NOACCESS, SPR_NOACCESS, |
3862 | 4054 |
&spr_read_generic, &spr_write_clear, |
3863 |
0x00000000);
|
|
4055 |
0x60000000);
|
|
3864 | 4056 |
/* XXX : not implemented */ |
3865 | 4057 |
spr_register(env, SPR_HID1, "HID1", |
3866 | 4058 |
SPR_NOACCESS, SPR_NOACCESS, |
... | ... | |
3878 | 4070 |
env->slb_nr = 32; |
3879 | 4071 |
#endif |
3880 | 4072 |
init_excp_970(env); |
4073 |
env->dcache_line_size = 128; |
|
4074 |
env->icache_line_size = 128; |
|
3881 | 4075 |
/* Allocate hardware IRQ controller */ |
3882 | 4076 |
ppc970_irq_init(env); |
4077 |
#if !defined(CONFIG_USER_ONLY) |
|
4078 |
/* Hardware reset vector */ |
|
4079 |
env->hreset_vector = 0x0000000000000100ULL; |
|
4080 |
#endif |
|
3883 | 4081 |
} |
3884 | 4082 |
|
3885 | 4083 |
/* PowerPC 970FX (aka G5) */ |
3886 |
#define POWERPC_INSNS_970FX (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \
|
|
4084 |
#define POWERPC_INSNS_970FX (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \
|
|
3887 | 4085 |
PPC_64B | PPC_ALTIVEC | \ |
3888 | 4086 |
PPC_64_BRIDGE | PPC_SLBI) |
3889 | 4087 |
#define POWERPC_MSRM_970FX (0x800000000204FF36ULL) |
... | ... | |
3903 | 4101 |
spr_register(env, SPR_HID0, "HID0", |
3904 | 4102 |
SPR_NOACCESS, SPR_NOACCESS, |
3905 | 4103 |
&spr_read_generic, &spr_write_clear, |
3906 |
0x00000000);
|
|
4104 |
0x60000000);
|
|
3907 | 4105 |
/* XXX : not implemented */ |
3908 | 4106 |
spr_register(env, SPR_HID1, "HID1", |
3909 | 4107 |
SPR_NOACCESS, SPR_NOACCESS, |
... | ... | |
3914 | 4112 |
SPR_NOACCESS, SPR_NOACCESS, |
3915 | 4113 |
&spr_read_generic, &spr_write_generic, |
3916 | 4114 |
0x00000000); |
4115 |
/* XXX : not implemented */ |
|
4116 |
spr_register(env, SPR_970_HID5, "HID5", |
|
4117 |
SPR_NOACCESS, SPR_NOACCESS, |
|
4118 |
&spr_read_generic, &spr_write_generic, |
|
4119 |
0x00000000); |
|
3917 | 4120 |
/* Memory management */ |
3918 | 4121 |
/* XXX: not correct */ |
3919 | 4122 |
gen_low_BATs(env); |
... | ... | |
3921 | 4124 |
env->slb_nr = 32; |
3922 | 4125 |
#endif |
3923 | 4126 |
init_excp_970(env); |
4127 |
env->dcache_line_size = 128; |
|
4128 |
env->icache_line_size = 128; |
|
3924 | 4129 |
/* Allocate hardware IRQ controller */ |
3925 | 4130 |
ppc970_irq_init(env); |
4131 |
#if !defined(CONFIG_USER_ONLY) |
|
4132 |
/* Hardware reset vector */ |
|
4133 |
env->hreset_vector = 0x0000000000000100ULL; |
|
4134 |
#endif |
|
3926 | 4135 |
} |
3927 | 4136 |
|
3928 | 4137 |
/* PowerPC 970 GX */ |
3929 |
#define POWERPC_INSNS_970GX (POWERPC_INSNS_WORKS | PPC_FLOAT_FSQRT | \
|
|
4138 |
#define POWERPC_INSNS_970GX (POWERPC_INSNS_WORK64 | PPC_FLOAT_FSQRT | \
|
|
3930 | 4139 |
PPC_64B | PPC_ALTIVEC | \ |
3931 | 4140 |
PPC_64_BRIDGE | PPC_SLBI) |
3932 | 4141 |
#define POWERPC_MSRM_970GX (0x800000000204FF36ULL) |
... | ... | |
3946 | 4155 |
spr_register(env, SPR_HID0, "HID0", |
3947 | 4156 |
SPR_NOACCESS, SPR_NOACCESS, |
3948 | 4157 |
&spr_read_generic, &spr_write_clear, |
3949 |
0x00000000);
|
|
4158 |
0x60000000);
|
|
3950 | 4159 |
/* XXX : not implemented */ |
3951 | 4160 |
spr_register(env, SPR_HID1, "HID1", |
3952 | 4161 |
SPR_NOACCESS, SPR_NOACCESS, |
... | ... | |
3957 | 4166 |
SPR_NOACCESS, SPR_NOACCESS, |
3958 | 4167 |
&spr_read_generic, &spr_write_generic, |
3959 | 4168 |
0x00000000); |
4169 |
/* XXX : not implemented */ |
|
4170 |
spr_register(env, SPR_970_HID5, "HID5", |
|
4171 |
SPR_NOACCESS, SPR_NOACCESS, |
|
4172 |
&spr_read_generic, &spr_write_generic, |
|
4173 |
0x00000000); |
|
3960 | 4174 |
/* Memory management */ |
3961 | 4175 |
/* XXX: not correct */ |
3962 | 4176 |
gen_low_BATs(env); |
... | ... | |
3964 | 4178 |
env->slb_nr = 32; |
3965 | 4179 |
#endif |
3966 | 4180 |
init_excp_970(env); |
4181 |
env->dcache_line_size = 128; |
|
4182 |
env->icache_line_size = 128; |
|
3967 | 4183 |
/* Allocate hardware IRQ controller */ |
3968 | 4184 |
ppc970_irq_init(env); |
4185 |
#if !defined(CONFIG_USER_ONLY) |
|
4186 |
/* Hardware reset vector */ |
|
4187 |
env->hreset_vector = 0x0000000000000100ULL; |
|
4188 |
#endif |
|
3969 | 4189 |
} |
3970 | 4190 |
|
3971 | 4191 |
/* PowerPC 620 */ |
... | ... | |
3994 | 4214 |
gen_low_BATs(env); |
3995 | 4215 |
gen_high_BATs(env); |
3996 | 4216 |
init_excp_620(env); |
4217 |
env->dcache_line_size = 64; |
|
4218 |
env->icache_line_size = 64; |
|
3997 | 4219 |
/* XXX: TODO: initialize internal interrupt controller */ |
4220 |
#if !defined(CONFIG_USER_ONLY) |
|
4221 |
/* Hardware reset vector */ |
|
4222 |
env->hreset_vector = 0x0000000000000100ULL; /* ? */ |
|
4223 |
#endif |
|
3998 | 4224 |
} |
3999 | 4225 |
#endif /* defined (TARGET_PPC64) */ |
4000 | 4226 |
|
Also available in: Unified diff