Commit 1c27f8fbfead8f5ff12da6946436fe35c6adcac4
1 parent
1192dad8
PowerPC hardware reset vector is now considered as part of the exception model.
Use it at CPU initialisation time. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3332 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
31 additions
and
137 deletions
target-ppc/helper.c
| ... | ... | @@ -2792,11 +2792,7 @@ void cpu_ppc_reset (void *opaque) |
| 2792 | 2792 | msr_fp = 1; /* Allow floating point exceptions */ |
| 2793 | 2793 | msr_pr = 1; |
| 2794 | 2794 | #else |
| 2795 | -#if defined(TARGET_PPC64) | |
| 2796 | - env->nip = 0x00000100; | |
| 2797 | -#else | |
| 2798 | - env->nip = 0xFFFFFFFC; | |
| 2799 | -#endif | |
| 2795 | + env->nip = env->hreset_vector | env->excp_prefix; | |
| 2800 | 2796 | ppc_tlb_invalidate_all(env); |
| 2801 | 2797 | #endif |
| 2802 | 2798 | do_compute_hflags(env); | ... | ... |
target-ppc/translate_init.c
| ... | ... | @@ -2235,6 +2235,8 @@ static void init_excp_4xx_real (CPUPPCState *env) |
| 2235 | 2235 | env->excp_prefix = 0x00000000; |
| 2236 | 2236 | env->ivor_mask = 0x0000FFF0; |
| 2237 | 2237 | env->ivpr_mask = 0xFFFF0000; |
| 2238 | + /* Hardware reset vector */ | |
| 2239 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2238 | 2240 | #endif |
| 2239 | 2241 | } |
| 2240 | 2242 | |
| ... | ... | @@ -2258,6 +2260,8 @@ static void init_excp_4xx_softmmu (CPUPPCState *env) |
| 2258 | 2260 | env->excp_prefix = 0x00000000; |
| 2259 | 2261 | env->ivor_mask = 0x0000FFF0; |
| 2260 | 2262 | env->ivpr_mask = 0xFFFF0000; |
| 2263 | + /* Hardware reset vector */ | |
| 2264 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2261 | 2265 | #endif |
| 2262 | 2266 | } |
| 2263 | 2267 | |
| ... | ... | @@ -2283,6 +2287,8 @@ static void init_excp_BookE (CPUPPCState *env) |
| 2283 | 2287 | env->excp_prefix = 0x00000000; |
| 2284 | 2288 | env->ivor_mask = 0x0000FFE0; |
| 2285 | 2289 | env->ivpr_mask = 0xFFFF0000; |
| 2290 | + /* Hardware reset vector */ | |
| 2291 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2286 | 2292 | #endif |
| 2287 | 2293 | } |
| 2288 | 2294 | |
| ... | ... | @@ -2302,6 +2308,8 @@ static void init_excp_601 (CPUPPCState *env) |
| 2302 | 2308 | env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; |
| 2303 | 2309 | env->excp_vectors[POWERPC_EXCP_RUNM] = 0x00002000; |
| 2304 | 2310 | env->excp_prefix = 0xFFF00000; |
| 2311 | + /* Hardware reset vector */ | |
| 2312 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2305 | 2313 | #endif |
| 2306 | 2314 | } |
| 2307 | 2315 | |
| ... | ... | @@ -2328,6 +2336,8 @@ static void init_excp_602 (CPUPPCState *env) |
| 2328 | 2336 | env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500; |
| 2329 | 2337 | env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600; |
| 2330 | 2338 | env->excp_prefix = 0xFFF00000; |
| 2339 | + /* Hardware reset vector */ | |
| 2340 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2331 | 2341 | #endif |
| 2332 | 2342 | } |
| 2333 | 2343 | |
| ... | ... | @@ -2350,6 +2360,8 @@ static void init_excp_603 (CPUPPCState *env) |
| 2350 | 2360 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; |
| 2351 | 2361 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2352 | 2362 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2363 | + /* Hardware reset vector */ | |
| 2364 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2353 | 2365 | #endif |
| 2354 | 2366 | } |
| 2355 | 2367 | |
| ... | ... | @@ -2373,6 +2385,8 @@ static void init_excp_G2 (CPUPPCState *env) |
| 2373 | 2385 | env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; |
| 2374 | 2386 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2375 | 2387 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2388 | + /* Hardware reset vector */ | |
| 2389 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2376 | 2390 | #endif |
| 2377 | 2391 | } |
| 2378 | 2392 | |
| ... | ... | @@ -2393,6 +2407,8 @@ static void init_excp_604 (CPUPPCState *env) |
| 2393 | 2407 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
| 2394 | 2408 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2395 | 2409 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2410 | + /* Hardware reset vector */ | |
| 2411 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2396 | 2412 | #endif |
| 2397 | 2413 | } |
| 2398 | 2414 | |
| ... | ... | @@ -2415,6 +2431,8 @@ static void init_excp_620 (CPUPPCState *env) |
| 2415 | 2431 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
| 2416 | 2432 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2417 | 2433 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2434 | + /* Hardware reset vector */ | |
| 2435 | + env->hreset_vector = 0x0000000000000100ULL; /* ? */ | |
| 2418 | 2436 | #endif |
| 2419 | 2437 | } |
| 2420 | 2438 | #endif /* defined(TARGET_PPC64) */ |
| ... | ... | @@ -2436,6 +2454,8 @@ static void init_excp_7x0 (CPUPPCState *env) |
| 2436 | 2454 | env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; |
| 2437 | 2455 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2438 | 2456 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; |
| 2457 | + /* Hardware reset vector */ | |
| 2458 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2439 | 2459 | #endif |
| 2440 | 2460 | } |
| 2441 | 2461 | |
| ... | ... | @@ -2457,6 +2477,8 @@ static void init_excp_750FX (CPUPPCState *env) |
| 2457 | 2477 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2458 | 2478 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2459 | 2479 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; |
| 2480 | + /* Hardware reset vector */ | |
| 2481 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2460 | 2482 | #endif |
| 2461 | 2483 | } |
| 2462 | 2484 | |
| ... | ... | @@ -2480,6 +2502,8 @@ static void init_excp_7400 (CPUPPCState *env) |
| 2480 | 2502 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2481 | 2503 | env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; |
| 2482 | 2504 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; |
| 2505 | + /* Hardware reset vector */ | |
| 2506 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2483 | 2507 | #endif |
| 2484 | 2508 | } |
| 2485 | 2509 | |
| ... | ... | @@ -2505,6 +2529,8 @@ static void init_excp_7450 (CPUPPCState *env) |
| 2505 | 2529 | env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; |
| 2506 | 2530 | env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; |
| 2507 | 2531 | env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; |
| 2532 | + /* Hardware reset vector */ | |
| 2533 | + env->hreset_vector = 0xFFFFFFFCUL; | |
| 2508 | 2534 | #endif |
| 2509 | 2535 | } |
| 2510 | 2536 | |
| ... | ... | @@ -2534,6 +2560,8 @@ static void init_excp_970 (CPUPPCState *env) |
| 2534 | 2560 | env->excp_vectors[POWERPC_EXCP_MAINT] = 0x00001600; |
| 2535 | 2561 | env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001700; |
| 2536 | 2562 | env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001800; |
| 2563 | + /* Hardware reset vector */ | |
| 2564 | + env->hreset_vector = 0x0000000000000100ULL; | |
| 2537 | 2565 | #endif |
| 2538 | 2566 | } |
| 2539 | 2567 | #endif |
| ... | ... | @@ -2564,10 +2592,6 @@ static void init_proc_401 (CPUPPCState *env) |
| 2564 | 2592 | env->icache_line_size = 32; |
| 2565 | 2593 | /* Allocate hardware IRQ controller */ |
| 2566 | 2594 | ppc40x_irq_init(env); |
| 2567 | -#if !defined(CONFIG_USER_ONLY) | |
| 2568 | - /* Hardware reset vector */ | |
| 2569 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2570 | -#endif | |
| 2571 | 2595 | } |
| 2572 | 2596 | |
| 2573 | 2597 | /* PowerPC 401x2 */ |
| ... | ... | @@ -2597,10 +2621,6 @@ static void init_proc_401x2 (CPUPPCState *env) |
| 2597 | 2621 | env->icache_line_size = 32; |
| 2598 | 2622 | /* Allocate hardware IRQ controller */ |
| 2599 | 2623 | ppc40x_irq_init(env); |
| 2600 | -#if !defined(CONFIG_USER_ONLY) | |
| 2601 | - /* Hardware reset vector */ | |
| 2602 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2603 | -#endif | |
| 2604 | 2624 | } |
| 2605 | 2625 | |
| 2606 | 2626 | /* PowerPC 401x3 */ |
| ... | ... | @@ -2628,10 +2648,6 @@ static void init_proc_401x3 (CPUPPCState *env) |
| 2628 | 2648 | env->icache_line_size = 32; |
| 2629 | 2649 | /* Allocate hardware IRQ controller */ |
| 2630 | 2650 | ppc40x_irq_init(env); |
| 2631 | -#if !defined(CONFIG_USER_ONLY) | |
| 2632 | - /* Hardware reset vector */ | |
| 2633 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2634 | -#endif | |
| 2635 | 2651 | } |
| 2636 | 2652 | |
| 2637 | 2653 | /* IOP480 */ |
| ... | ... | @@ -2661,10 +2677,6 @@ static void init_proc_IOP480 (CPUPPCState *env) |
| 2661 | 2677 | env->icache_line_size = 32; |
| 2662 | 2678 | /* Allocate hardware IRQ controller */ |
| 2663 | 2679 | ppc40x_irq_init(env); |
| 2664 | -#if !defined(CONFIG_USER_ONLY) | |
| 2665 | - /* Hardware reset vector */ | |
| 2666 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2667 | -#endif | |
| 2668 | 2680 | } |
| 2669 | 2681 | |
| 2670 | 2682 | /* PowerPC 403 */ |
| ... | ... | @@ -2733,10 +2745,6 @@ static void init_proc_403GCX (CPUPPCState *env) |
| 2733 | 2745 | env->icache_line_size = 32; |
| 2734 | 2746 | /* Allocate hardware IRQ controller */ |
| 2735 | 2747 | ppc40x_irq_init(env); |
| 2736 | -#if !defined(CONFIG_USER_ONLY) | |
| 2737 | - /* Hardware reset vector */ | |
| 2738 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2739 | -#endif | |
| 2740 | 2748 | } |
| 2741 | 2749 | |
| 2742 | 2750 | /* PowerPC 405 */ |
| ... | ... | @@ -2777,10 +2785,6 @@ static void init_proc_405 (CPUPPCState *env) |
| 2777 | 2785 | env->icache_line_size = 32; |
| 2778 | 2786 | /* Allocate hardware IRQ controller */ |
| 2779 | 2787 | ppc40x_irq_init(env); |
| 2780 | -#if !defined(CONFIG_USER_ONLY) | |
| 2781 | - /* Hardware reset vector */ | |
| 2782 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2783 | -#endif | |
| 2784 | 2788 | } |
| 2785 | 2789 | |
| 2786 | 2790 | /* PowerPC 440 EP */ |
| ... | ... | @@ -2826,10 +2830,6 @@ static void init_proc_440EP (CPUPPCState *env) |
| 2826 | 2830 | env->dcache_line_size = 32; |
| 2827 | 2831 | env->icache_line_size = 32; |
| 2828 | 2832 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2829 | -#if !defined(CONFIG_USER_ONLY) | |
| 2830 | - /* Hardware reset vector */ | |
| 2831 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2832 | -#endif | |
| 2833 | 2833 | } |
| 2834 | 2834 | |
| 2835 | 2835 | /* PowerPC 440 GP */ |
| ... | ... | @@ -2857,10 +2857,6 @@ static void init_proc_440GP (CPUPPCState *env) |
| 2857 | 2857 | env->dcache_line_size = 32; |
| 2858 | 2858 | env->icache_line_size = 32; |
| 2859 | 2859 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2860 | -#if !defined(CONFIG_USER_ONLY) | |
| 2861 | - /* Hardware reset vector */ | |
| 2862 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2863 | -#endif | |
| 2864 | 2860 | } |
| 2865 | 2861 | |
| 2866 | 2862 | /* PowerPC 440x4 */ |
| ... | ... | @@ -2889,10 +2885,6 @@ static void init_proc_440x4 (CPUPPCState *env) |
| 2889 | 2885 | env->dcache_line_size = 32; |
| 2890 | 2886 | env->icache_line_size = 32; |
| 2891 | 2887 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2892 | -#if !defined(CONFIG_USER_ONLY) | |
| 2893 | - /* Hardware reset vector */ | |
| 2894 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2895 | -#endif | |
| 2896 | 2888 | } |
| 2897 | 2889 | |
| 2898 | 2890 | /* PowerPC 440x5 */ |
| ... | ... | @@ -2938,10 +2930,6 @@ static void init_proc_440x5 (CPUPPCState *env) |
| 2938 | 2930 | env->dcache_line_size = 32; |
| 2939 | 2931 | env->icache_line_size = 32; |
| 2940 | 2932 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2941 | -#if !defined(CONFIG_USER_ONLY) | |
| 2942 | - /* Hardware reset vector */ | |
| 2943 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2944 | -#endif | |
| 2945 | 2933 | } |
| 2946 | 2934 | |
| 2947 | 2935 | /* PowerPC 460 (guessed) */ |
| ... | ... | @@ -2993,10 +2981,6 @@ static void init_proc_460 (CPUPPCState *env) |
| 2993 | 2981 | env->dcache_line_size = 32; |
| 2994 | 2982 | env->icache_line_size = 32; |
| 2995 | 2983 | /* XXX: TODO: allocate internal IRQ controller */ |
| 2996 | -#if !defined(CONFIG_USER_ONLY) | |
| 2997 | - /* Hardware reset vector */ | |
| 2998 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 2999 | -#endif | |
| 3000 | 2984 | } |
| 3001 | 2985 | |
| 3002 | 2986 | /* PowerPC 460F (guessed) */ |
| ... | ... | @@ -3051,10 +3035,6 @@ static void init_proc_460F (CPUPPCState *env) |
| 3051 | 3035 | env->dcache_line_size = 32; |
| 3052 | 3036 | env->icache_line_size = 32; |
| 3053 | 3037 | /* XXX: TODO: allocate internal IRQ controller */ |
| 3054 | -#if !defined(CONFIG_USER_ONLY) | |
| 3055 | - /* Hardware reset vector */ | |
| 3056 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3057 | -#endif | |
| 3058 | 3038 | } |
| 3059 | 3039 | |
| 3060 | 3040 | /* Generic BookE PowerPC */ |
| ... | ... | @@ -3077,10 +3057,6 @@ static void init_proc_BookE (CPUPPCState *env) |
| 3077 | 3057 | init_excp_BookE(env); |
| 3078 | 3058 | env->dcache_line_size = 32; |
| 3079 | 3059 | env->icache_line_size = 32; |
| 3080 | -#if !defined(CONFIG_USER_ONLY) | |
| 3081 | - /* Hardware reset vector */ | |
| 3082 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3083 | -#endif | |
| 3084 | 3060 | } |
| 3085 | 3061 | |
| 3086 | 3062 | /* e200 core */ |
| ... | ... | @@ -3112,10 +3088,6 @@ static void init_proc_e500 (CPUPPCState *env) |
| 3112 | 3088 | env->dcache_line_size = 32; |
| 3113 | 3089 | env->icache_line_size = 32; |
| 3114 | 3090 | /* XXX: TODO: allocate internal IRQ controller */ |
| 3115 | -#if !defined(CONFIG_USER_ONLY) | |
| 3116 | - /* Hardware reset vector */ | |
| 3117 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3118 | -#endif | |
| 3119 | 3091 | } |
| 3120 | 3092 | |
| 3121 | 3093 | /* e600 core */ |
| ... | ... | @@ -3185,10 +3157,6 @@ static void init_proc_601 (CPUPPCState *env) |
| 3185 | 3157 | env->dcache_line_size = 64; |
| 3186 | 3158 | env->icache_line_size = 64; |
| 3187 | 3159 | /* XXX: TODO: allocate internal IRQ controller */ |
| 3188 | -#if !defined(CONFIG_USER_ONLY) | |
| 3189 | - /* Hardware reset vector */ | |
| 3190 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3191 | -#endif | |
| 3192 | 3160 | } |
| 3193 | 3161 | |
| 3194 | 3162 | /* PowerPC 602 */ |
| ... | ... | @@ -3228,10 +3196,6 @@ static void init_proc_602 (CPUPPCState *env) |
| 3228 | 3196 | env->icache_line_size = 32; |
| 3229 | 3197 | /* Allocate hardware IRQ controller */ |
| 3230 | 3198 | ppc6xx_irq_init(env); |
| 3231 | -#if !defined(CONFIG_USER_ONLY) | |
| 3232 | - /* Hardware reset vector */ | |
| 3233 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3234 | -#endif | |
| 3235 | 3199 | } |
| 3236 | 3200 | |
| 3237 | 3201 | /* PowerPC 603 */ |
| ... | ... | @@ -3267,10 +3231,6 @@ static void init_proc_603 (CPUPPCState *env) |
| 3267 | 3231 | env->icache_line_size = 32; |
| 3268 | 3232 | /* Allocate hardware IRQ controller */ |
| 3269 | 3233 | ppc6xx_irq_init(env); |
| 3270 | -#if !defined(CONFIG_USER_ONLY) | |
| 3271 | - /* Hardware reset vector */ | |
| 3272 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3273 | -#endif | |
| 3274 | 3234 | } |
| 3275 | 3235 | |
| 3276 | 3236 | /* PowerPC 603e */ |
| ... | ... | @@ -3311,10 +3271,6 @@ static void init_proc_603E (CPUPPCState *env) |
| 3311 | 3271 | env->icache_line_size = 32; |
| 3312 | 3272 | /* Allocate hardware IRQ controller */ |
| 3313 | 3273 | ppc6xx_irq_init(env); |
| 3314 | -#if !defined(CONFIG_USER_ONLY) | |
| 3315 | - /* Hardware reset vector */ | |
| 3316 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3317 | -#endif | |
| 3318 | 3274 | } |
| 3319 | 3275 | |
| 3320 | 3276 | /* PowerPC G2 */ |
| ... | ... | @@ -3357,10 +3313,6 @@ static void init_proc_G2 (CPUPPCState *env) |
| 3357 | 3313 | env->icache_line_size = 32; |
| 3358 | 3314 | /* Allocate hardware IRQ controller */ |
| 3359 | 3315 | ppc6xx_irq_init(env); |
| 3360 | -#if !defined(CONFIG_USER_ONLY) | |
| 3361 | - /* Hardware reset vector */ | |
| 3362 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3363 | -#endif | |
| 3364 | 3316 | } |
| 3365 | 3317 | |
| 3366 | 3318 | /* PowerPC G2LE */ |
| ... | ... | @@ -3403,10 +3355,6 @@ static void init_proc_G2LE (CPUPPCState *env) |
| 3403 | 3355 | env->icache_line_size = 32; |
| 3404 | 3356 | /* Allocate hardware IRQ controller */ |
| 3405 | 3357 | ppc6xx_irq_init(env); |
| 3406 | -#if !defined(CONFIG_USER_ONLY) | |
| 3407 | - /* Hardware reset vector */ | |
| 3408 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3409 | -#endif | |
| 3410 | 3358 | } |
| 3411 | 3359 | |
| 3412 | 3360 | /* PowerPC 604 */ |
| ... | ... | @@ -3441,10 +3389,6 @@ static void init_proc_604 (CPUPPCState *env) |
| 3441 | 3389 | env->icache_line_size = 32; |
| 3442 | 3390 | /* Allocate hardware IRQ controller */ |
| 3443 | 3391 | ppc6xx_irq_init(env); |
| 3444 | -#if !defined(CONFIG_USER_ONLY) | |
| 3445 | - /* Hardware reset vector */ | |
| 3446 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3447 | -#endif | |
| 3448 | 3392 | } |
| 3449 | 3393 | |
| 3450 | 3394 | /* PowerPC 740/750 (aka G3) */ |
| ... | ... | @@ -3481,10 +3425,6 @@ static void init_proc_7x0 (CPUPPCState *env) |
| 3481 | 3425 | env->icache_line_size = 32; |
| 3482 | 3426 | /* Allocate hardware IRQ controller */ |
| 3483 | 3427 | ppc6xx_irq_init(env); |
| 3484 | -#if !defined(CONFIG_USER_ONLY) | |
| 3485 | - /* Hardware reset vector */ | |
| 3486 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3487 | -#endif | |
| 3488 | 3428 | } |
| 3489 | 3429 | |
| 3490 | 3430 | /* PowerPC 750FX/GX */ |
| ... | ... | @@ -3528,10 +3468,6 @@ static void init_proc_750fx (CPUPPCState *env) |
| 3528 | 3468 | env->icache_line_size = 32; |
| 3529 | 3469 | /* Allocate hardware IRQ controller */ |
| 3530 | 3470 | ppc6xx_irq_init(env); |
| 3531 | -#if !defined(CONFIG_USER_ONLY) | |
| 3532 | - /* Hardware reset vector */ | |
| 3533 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3534 | -#endif | |
| 3535 | 3471 | } |
| 3536 | 3472 | |
| 3537 | 3473 | /* PowerPC 745/755 */ |
| ... | ... | @@ -3579,6 +3515,7 @@ static void init_proc_7x5 (CPUPPCState *env) |
| 3579 | 3515 | gen_low_BATs(env); |
| 3580 | 3516 | gen_high_BATs(env); |
| 3581 | 3517 | gen_6xx_7xx_soft_tlb(env, 64, 2); |
| 3518 | + /* XXX: exception vectors ? */ | |
| 3582 | 3519 | env->dcache_line_size = 32; |
| 3583 | 3520 | env->icache_line_size = 32; |
| 3584 | 3521 | /* Allocate hardware IRQ controller */ |
| ... | ... | @@ -3616,10 +3553,6 @@ static void init_proc_7400 (CPUPPCState *env) |
| 3616 | 3553 | env->icache_line_size = 32; |
| 3617 | 3554 | /* Allocate hardware IRQ controller */ |
| 3618 | 3555 | ppc6xx_irq_init(env); |
| 3619 | -#if !defined(CONFIG_USER_ONLY) | |
| 3620 | - /* Hardware reset vector */ | |
| 3621 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3622 | -#endif | |
| 3623 | 3556 | } |
| 3624 | 3557 | |
| 3625 | 3558 | /* PowerPC 7410 (aka G4) */ |
| ... | ... | @@ -3661,10 +3594,6 @@ static void init_proc_7410 (CPUPPCState *env) |
| 3661 | 3594 | env->icache_line_size = 32; |
| 3662 | 3595 | /* Allocate hardware IRQ controller */ |
| 3663 | 3596 | ppc6xx_irq_init(env); |
| 3664 | -#if !defined(CONFIG_USER_ONLY) | |
| 3665 | - /* Hardware reset vector */ | |
| 3666 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3667 | -#endif | |
| 3668 | 3597 | } |
| 3669 | 3598 | |
| 3670 | 3599 | /* PowerPC 7440 (aka G4) */ |
| ... | ... | @@ -3728,14 +3657,11 @@ static void init_proc_7440 (CPUPPCState *env) |
| 3728 | 3657 | /* Memory management */ |
| 3729 | 3658 | gen_low_BATs(env); |
| 3730 | 3659 | gen_74xx_soft_tlb(env, 128, 2); |
| 3660 | + init_excp_7450(env); | |
| 3731 | 3661 | env->dcache_line_size = 32; |
| 3732 | 3662 | env->icache_line_size = 32; |
| 3733 | 3663 | /* Allocate hardware IRQ controller */ |
| 3734 | 3664 | ppc6xx_irq_init(env); |
| 3735 | -#if !defined(CONFIG_USER_ONLY) | |
| 3736 | - /* Hardware reset vector */ | |
| 3737 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3738 | -#endif | |
| 3739 | 3665 | } |
| 3740 | 3666 | |
| 3741 | 3667 | /* PowerPC 7450 (aka G4) */ |
| ... | ... | @@ -3806,10 +3732,6 @@ static void init_proc_7450 (CPUPPCState *env) |
| 3806 | 3732 | env->icache_line_size = 32; |
| 3807 | 3733 | /* Allocate hardware IRQ controller */ |
| 3808 | 3734 | ppc6xx_irq_init(env); |
| 3809 | -#if !defined(CONFIG_USER_ONLY) | |
| 3810 | - /* Hardware reset vector */ | |
| 3811 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3812 | -#endif | |
| 3813 | 3735 | } |
| 3814 | 3736 | |
| 3815 | 3737 | /* PowerPC 7445 (aka G4) */ |
| ... | ... | @@ -3912,10 +3834,6 @@ static void init_proc_7445 (CPUPPCState *env) |
| 3912 | 3834 | env->icache_line_size = 32; |
| 3913 | 3835 | /* Allocate hardware IRQ controller */ |
| 3914 | 3836 | ppc6xx_irq_init(env); |
| 3915 | -#if !defined(CONFIG_USER_ONLY) | |
| 3916 | - /* Hardware reset vector */ | |
| 3917 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 3918 | -#endif | |
| 3919 | 3837 | } |
| 3920 | 3838 | |
| 3921 | 3839 | /* PowerPC 7455 (aka G4) */ |
| ... | ... | @@ -4020,10 +3938,6 @@ static void init_proc_7455 (CPUPPCState *env) |
| 4020 | 3938 | env->icache_line_size = 32; |
| 4021 | 3939 | /* Allocate hardware IRQ controller */ |
| 4022 | 3940 | ppc6xx_irq_init(env); |
| 4023 | -#if !defined(CONFIG_USER_ONLY) | |
| 4024 | - /* Hardware reset vector */ | |
| 4025 | - env->hreset_vector = 0xFFFFFFFCUL; | |
| 4026 | -#endif | |
| 4027 | 3941 | } |
| 4028 | 3942 | |
| 4029 | 3943 | #if defined (TARGET_PPC64) |
| ... | ... | @@ -4084,10 +3998,6 @@ static void init_proc_970 (CPUPPCState *env) |
| 4084 | 3998 | env->icache_line_size = 128; |
| 4085 | 3999 | /* Allocate hardware IRQ controller */ |
| 4086 | 4000 | ppc970_irq_init(env); |
| 4087 | -#if !defined(CONFIG_USER_ONLY) | |
| 4088 | - /* Hardware reset vector */ | |
| 4089 | - env->hreset_vector = 0x0000000000000100ULL; | |
| 4090 | -#endif | |
| 4091 | 4001 | } |
| 4092 | 4002 | |
| 4093 | 4003 | /* PowerPC 970FX (aka G5) */ |
| ... | ... | @@ -4143,10 +4053,6 @@ static void init_proc_970FX (CPUPPCState *env) |
| 4143 | 4053 | env->icache_line_size = 128; |
| 4144 | 4054 | /* Allocate hardware IRQ controller */ |
| 4145 | 4055 | ppc970_irq_init(env); |
| 4146 | -#if !defined(CONFIG_USER_ONLY) | |
| 4147 | - /* Hardware reset vector */ | |
| 4148 | - env->hreset_vector = 0x0000000000000100ULL; | |
| 4149 | -#endif | |
| 4150 | 4056 | } |
| 4151 | 4057 | |
| 4152 | 4058 | /* PowerPC 970 GX */ |
| ... | ... | @@ -4202,10 +4108,6 @@ static void init_proc_970GX (CPUPPCState *env) |
| 4202 | 4108 | env->icache_line_size = 128; |
| 4203 | 4109 | /* Allocate hardware IRQ controller */ |
| 4204 | 4110 | ppc970_irq_init(env); |
| 4205 | -#if !defined(CONFIG_USER_ONLY) | |
| 4206 | - /* Hardware reset vector */ | |
| 4207 | - env->hreset_vector = 0x0000000000000100ULL; | |
| 4208 | -#endif | |
| 4209 | 4111 | } |
| 4210 | 4112 | |
| 4211 | 4113 | /* PowerPC 620 */ |
| ... | ... | @@ -4237,10 +4139,6 @@ static void init_proc_620 (CPUPPCState *env) |
| 4237 | 4139 | env->dcache_line_size = 64; |
| 4238 | 4140 | env->icache_line_size = 64; |
| 4239 | 4141 | /* XXX: TODO: initialize internal interrupt controller */ |
| 4240 | -#if !defined(CONFIG_USER_ONLY) | |
| 4241 | - /* Hardware reset vector */ | |
| 4242 | - env->hreset_vector = 0x0000000000000100ULL; /* ? */ | |
| 4243 | -#endif | |
| 4244 | 4142 | } |
| 4245 | 4143 | #endif /* defined (TARGET_PPC64) */ |
| 4246 | 4144 | ... | ... |