Commit 1c27f8fbfead8f5ff12da6946436fe35c6adcac4

Authored by j_mayer
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
target-ppc/helper.c
@@ -2792,11 +2792,7 @@ void cpu_ppc_reset (void *opaque) @@ -2792,11 +2792,7 @@ void cpu_ppc_reset (void *opaque)
2792 msr_fp = 1; /* Allow floating point exceptions */ 2792 msr_fp = 1; /* Allow floating point exceptions */
2793 msr_pr = 1; 2793 msr_pr = 1;
2794 #else 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 ppc_tlb_invalidate_all(env); 2796 ppc_tlb_invalidate_all(env);
2801 #endif 2797 #endif
2802 do_compute_hflags(env); 2798 do_compute_hflags(env);
target-ppc/translate_init.c
@@ -2235,6 +2235,8 @@ static void init_excp_4xx_real (CPUPPCState *env) @@ -2235,6 +2235,8 @@ static void init_excp_4xx_real (CPUPPCState *env)
2235 env->excp_prefix = 0x00000000; 2235 env->excp_prefix = 0x00000000;
2236 env->ivor_mask = 0x0000FFF0; 2236 env->ivor_mask = 0x0000FFF0;
2237 env->ivpr_mask = 0xFFFF0000; 2237 env->ivpr_mask = 0xFFFF0000;
  2238 + /* Hardware reset vector */
  2239 + env->hreset_vector = 0xFFFFFFFCUL;
2238 #endif 2240 #endif
2239 } 2241 }
2240 2242
@@ -2258,6 +2260,8 @@ static void init_excp_4xx_softmmu (CPUPPCState *env) @@ -2258,6 +2260,8 @@ static void init_excp_4xx_softmmu (CPUPPCState *env)
2258 env->excp_prefix = 0x00000000; 2260 env->excp_prefix = 0x00000000;
2259 env->ivor_mask = 0x0000FFF0; 2261 env->ivor_mask = 0x0000FFF0;
2260 env->ivpr_mask = 0xFFFF0000; 2262 env->ivpr_mask = 0xFFFF0000;
  2263 + /* Hardware reset vector */
  2264 + env->hreset_vector = 0xFFFFFFFCUL;
2261 #endif 2265 #endif
2262 } 2266 }
2263 2267
@@ -2283,6 +2287,8 @@ static void init_excp_BookE (CPUPPCState *env) @@ -2283,6 +2287,8 @@ static void init_excp_BookE (CPUPPCState *env)
2283 env->excp_prefix = 0x00000000; 2287 env->excp_prefix = 0x00000000;
2284 env->ivor_mask = 0x0000FFE0; 2288 env->ivor_mask = 0x0000FFE0;
2285 env->ivpr_mask = 0xFFFF0000; 2289 env->ivpr_mask = 0xFFFF0000;
  2290 + /* Hardware reset vector */
  2291 + env->hreset_vector = 0xFFFFFFFCUL;
2286 #endif 2292 #endif
2287 } 2293 }
2288 2294
@@ -2302,6 +2308,8 @@ static void init_excp_601 (CPUPPCState *env) @@ -2302,6 +2308,8 @@ static void init_excp_601 (CPUPPCState *env)
2302 env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00; 2308 env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00;
2303 env->excp_vectors[POWERPC_EXCP_RUNM] = 0x00002000; 2309 env->excp_vectors[POWERPC_EXCP_RUNM] = 0x00002000;
2304 env->excp_prefix = 0xFFF00000; 2310 env->excp_prefix = 0xFFF00000;
  2311 + /* Hardware reset vector */
  2312 + env->hreset_vector = 0xFFFFFFFCUL;
2305 #endif 2313 #endif
2306 } 2314 }
2307 2315
@@ -2328,6 +2336,8 @@ static void init_excp_602 (CPUPPCState *env) @@ -2328,6 +2336,8 @@ static void init_excp_602 (CPUPPCState *env)
2328 env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500; 2336 env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500;
2329 env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600; 2337 env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600;
2330 env->excp_prefix = 0xFFF00000; 2338 env->excp_prefix = 0xFFF00000;
  2339 + /* Hardware reset vector */
  2340 + env->hreset_vector = 0xFFFFFFFCUL;
2331 #endif 2341 #endif
2332 } 2342 }
2333 2343
@@ -2350,6 +2360,8 @@ static void init_excp_603 (CPUPPCState *env) @@ -2350,6 +2360,8 @@ static void init_excp_603 (CPUPPCState *env)
2350 env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; 2360 env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200;
2351 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2361 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2352 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2362 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
  2363 + /* Hardware reset vector */
  2364 + env->hreset_vector = 0xFFFFFFFCUL;
2353 #endif 2365 #endif
2354 } 2366 }
2355 2367
@@ -2373,6 +2385,8 @@ static void init_excp_G2 (CPUPPCState *env) @@ -2373,6 +2385,8 @@ static void init_excp_G2 (CPUPPCState *env)
2373 env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200; 2385 env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200;
2374 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2386 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2375 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2387 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
  2388 + /* Hardware reset vector */
  2389 + env->hreset_vector = 0xFFFFFFFCUL;
2376 #endif 2390 #endif
2377 } 2391 }
2378 2392
@@ -2393,6 +2407,8 @@ static void init_excp_604 (CPUPPCState *env) @@ -2393,6 +2407,8 @@ static void init_excp_604 (CPUPPCState *env)
2393 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; 2407 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00;
2394 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2408 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2395 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2409 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
  2410 + /* Hardware reset vector */
  2411 + env->hreset_vector = 0xFFFFFFFCUL;
2396 #endif 2412 #endif
2397 } 2413 }
2398 2414
@@ -2415,6 +2431,8 @@ static void init_excp_620 (CPUPPCState *env) @@ -2415,6 +2431,8 @@ static void init_excp_620 (CPUPPCState *env)
2415 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; 2431 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00;
2416 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2432 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2417 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2433 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
  2434 + /* Hardware reset vector */
  2435 + env->hreset_vector = 0x0000000000000100ULL; /* ? */
2418 #endif 2436 #endif
2419 } 2437 }
2420 #endif /* defined(TARGET_PPC64) */ 2438 #endif /* defined(TARGET_PPC64) */
@@ -2436,6 +2454,8 @@ static void init_excp_7x0 (CPUPPCState *env) @@ -2436,6 +2454,8 @@ static void init_excp_7x0 (CPUPPCState *env)
2436 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00; 2454 env->excp_vectors[POWERPC_EXCP_PERFM] = 0x00000F00;
2437 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2455 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2438 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; 2456 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700;
  2457 + /* Hardware reset vector */
  2458 + env->hreset_vector = 0xFFFFFFFCUL;
2439 #endif 2459 #endif
2440 } 2460 }
2441 2461
@@ -2457,6 +2477,8 @@ static void init_excp_750FX (CPUPPCState *env) @@ -2457,6 +2477,8 @@ static void init_excp_750FX (CPUPPCState *env)
2457 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2477 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2458 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2478 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
2459 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; 2479 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700;
  2480 + /* Hardware reset vector */
  2481 + env->hreset_vector = 0xFFFFFFFCUL;
2460 #endif 2482 #endif
2461 } 2483 }
2462 2484
@@ -2480,6 +2502,8 @@ static void init_excp_7400 (CPUPPCState *env) @@ -2480,6 +2502,8 @@ static void init_excp_7400 (CPUPPCState *env)
2480 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2502 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
2481 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; 2503 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600;
2482 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; 2504 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700;
  2505 + /* Hardware reset vector */
  2506 + env->hreset_vector = 0xFFFFFFFCUL;
2483 #endif 2507 #endif
2484 } 2508 }
2485 2509
@@ -2505,6 +2529,8 @@ static void init_excp_7450 (CPUPPCState *env) @@ -2505,6 +2529,8 @@ static void init_excp_7450 (CPUPPCState *env)
2505 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; 2529 env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
2506 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; 2530 env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
2507 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; 2531 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600;
  2532 + /* Hardware reset vector */
  2533 + env->hreset_vector = 0xFFFFFFFCUL;
2508 #endif 2534 #endif
2509 } 2535 }
2510 2536
@@ -2534,6 +2560,8 @@ static void init_excp_970 (CPUPPCState *env) @@ -2534,6 +2560,8 @@ static void init_excp_970 (CPUPPCState *env)
2534 env->excp_vectors[POWERPC_EXCP_MAINT] = 0x00001600; 2560 env->excp_vectors[POWERPC_EXCP_MAINT] = 0x00001600;
2535 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001700; 2561 env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001700;
2536 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001800; 2562 env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001800;
  2563 + /* Hardware reset vector */
  2564 + env->hreset_vector = 0x0000000000000100ULL;
2537 #endif 2565 #endif
2538 } 2566 }
2539 #endif 2567 #endif
@@ -2564,10 +2592,6 @@ static void init_proc_401 (CPUPPCState *env) @@ -2564,10 +2592,6 @@ static void init_proc_401 (CPUPPCState *env)
2564 env->icache_line_size = 32; 2592 env->icache_line_size = 32;
2565 /* Allocate hardware IRQ controller */ 2593 /* Allocate hardware IRQ controller */
2566 ppc40x_irq_init(env); 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 /* PowerPC 401x2 */ 2597 /* PowerPC 401x2 */
@@ -2597,10 +2621,6 @@ static void init_proc_401x2 (CPUPPCState *env) @@ -2597,10 +2621,6 @@ static void init_proc_401x2 (CPUPPCState *env)
2597 env->icache_line_size = 32; 2621 env->icache_line_size = 32;
2598 /* Allocate hardware IRQ controller */ 2622 /* Allocate hardware IRQ controller */
2599 ppc40x_irq_init(env); 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 /* PowerPC 401x3 */ 2626 /* PowerPC 401x3 */
@@ -2628,10 +2648,6 @@ static void init_proc_401x3 (CPUPPCState *env) @@ -2628,10 +2648,6 @@ static void init_proc_401x3 (CPUPPCState *env)
2628 env->icache_line_size = 32; 2648 env->icache_line_size = 32;
2629 /* Allocate hardware IRQ controller */ 2649 /* Allocate hardware IRQ controller */
2630 ppc40x_irq_init(env); 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 /* IOP480 */ 2653 /* IOP480 */
@@ -2661,10 +2677,6 @@ static void init_proc_IOP480 (CPUPPCState *env) @@ -2661,10 +2677,6 @@ static void init_proc_IOP480 (CPUPPCState *env)
2661 env->icache_line_size = 32; 2677 env->icache_line_size = 32;
2662 /* Allocate hardware IRQ controller */ 2678 /* Allocate hardware IRQ controller */
2663 ppc40x_irq_init(env); 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 /* PowerPC 403 */ 2682 /* PowerPC 403 */
@@ -2733,10 +2745,6 @@ static void init_proc_403GCX (CPUPPCState *env) @@ -2733,10 +2745,6 @@ static void init_proc_403GCX (CPUPPCState *env)
2733 env->icache_line_size = 32; 2745 env->icache_line_size = 32;
2734 /* Allocate hardware IRQ controller */ 2746 /* Allocate hardware IRQ controller */
2735 ppc40x_irq_init(env); 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 /* PowerPC 405 */ 2750 /* PowerPC 405 */
@@ -2777,10 +2785,6 @@ static void init_proc_405 (CPUPPCState *env) @@ -2777,10 +2785,6 @@ static void init_proc_405 (CPUPPCState *env)
2777 env->icache_line_size = 32; 2785 env->icache_line_size = 32;
2778 /* Allocate hardware IRQ controller */ 2786 /* Allocate hardware IRQ controller */
2779 ppc40x_irq_init(env); 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 /* PowerPC 440 EP */ 2790 /* PowerPC 440 EP */
@@ -2826,10 +2830,6 @@ static void init_proc_440EP (CPUPPCState *env) @@ -2826,10 +2830,6 @@ static void init_proc_440EP (CPUPPCState *env)
2826 env->dcache_line_size = 32; 2830 env->dcache_line_size = 32;
2827 env->icache_line_size = 32; 2831 env->icache_line_size = 32;
2828 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 440 GP */ 2835 /* PowerPC 440 GP */
@@ -2857,10 +2857,6 @@ static void init_proc_440GP (CPUPPCState *env) @@ -2857,10 +2857,6 @@ static void init_proc_440GP (CPUPPCState *env)
2857 env->dcache_line_size = 32; 2857 env->dcache_line_size = 32;
2858 env->icache_line_size = 32; 2858 env->icache_line_size = 32;
2859 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 440x4 */ 2862 /* PowerPC 440x4 */
@@ -2889,10 +2885,6 @@ static void init_proc_440x4 (CPUPPCState *env) @@ -2889,10 +2885,6 @@ static void init_proc_440x4 (CPUPPCState *env)
2889 env->dcache_line_size = 32; 2885 env->dcache_line_size = 32;
2890 env->icache_line_size = 32; 2886 env->icache_line_size = 32;
2891 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 440x5 */ 2890 /* PowerPC 440x5 */
@@ -2938,10 +2930,6 @@ static void init_proc_440x5 (CPUPPCState *env) @@ -2938,10 +2930,6 @@ static void init_proc_440x5 (CPUPPCState *env)
2938 env->dcache_line_size = 32; 2930 env->dcache_line_size = 32;
2939 env->icache_line_size = 32; 2931 env->icache_line_size = 32;
2940 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 460 (guessed) */ 2935 /* PowerPC 460 (guessed) */
@@ -2993,10 +2981,6 @@ static void init_proc_460 (CPUPPCState *env) @@ -2993,10 +2981,6 @@ static void init_proc_460 (CPUPPCState *env)
2993 env->dcache_line_size = 32; 2981 env->dcache_line_size = 32;
2994 env->icache_line_size = 32; 2982 env->icache_line_size = 32;
2995 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 460F (guessed) */ 2986 /* PowerPC 460F (guessed) */
@@ -3051,10 +3035,6 @@ static void init_proc_460F (CPUPPCState *env) @@ -3051,10 +3035,6 @@ static void init_proc_460F (CPUPPCState *env)
3051 env->dcache_line_size = 32; 3035 env->dcache_line_size = 32;
3052 env->icache_line_size = 32; 3036 env->icache_line_size = 32;
3053 /* XXX: TODO: allocate internal IRQ controller */ 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 /* Generic BookE PowerPC */ 3040 /* Generic BookE PowerPC */
@@ -3077,10 +3057,6 @@ static void init_proc_BookE (CPUPPCState *env) @@ -3077,10 +3057,6 @@ static void init_proc_BookE (CPUPPCState *env)
3077 init_excp_BookE(env); 3057 init_excp_BookE(env);
3078 env->dcache_line_size = 32; 3058 env->dcache_line_size = 32;
3079 env->icache_line_size = 32; 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 /* e200 core */ 3062 /* e200 core */
@@ -3112,10 +3088,6 @@ static void init_proc_e500 (CPUPPCState *env) @@ -3112,10 +3088,6 @@ static void init_proc_e500 (CPUPPCState *env)
3112 env->dcache_line_size = 32; 3088 env->dcache_line_size = 32;
3113 env->icache_line_size = 32; 3089 env->icache_line_size = 32;
3114 /* XXX: TODO: allocate internal IRQ controller */ 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 /* e600 core */ 3093 /* e600 core */
@@ -3185,10 +3157,6 @@ static void init_proc_601 (CPUPPCState *env) @@ -3185,10 +3157,6 @@ static void init_proc_601 (CPUPPCState *env)
3185 env->dcache_line_size = 64; 3157 env->dcache_line_size = 64;
3186 env->icache_line_size = 64; 3158 env->icache_line_size = 64;
3187 /* XXX: TODO: allocate internal IRQ controller */ 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 /* PowerPC 602 */ 3162 /* PowerPC 602 */
@@ -3228,10 +3196,6 @@ static void init_proc_602 (CPUPPCState *env) @@ -3228,10 +3196,6 @@ static void init_proc_602 (CPUPPCState *env)
3228 env->icache_line_size = 32; 3196 env->icache_line_size = 32;
3229 /* Allocate hardware IRQ controller */ 3197 /* Allocate hardware IRQ controller */
3230 ppc6xx_irq_init(env); 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 /* PowerPC 603 */ 3201 /* PowerPC 603 */
@@ -3267,10 +3231,6 @@ static void init_proc_603 (CPUPPCState *env) @@ -3267,10 +3231,6 @@ static void init_proc_603 (CPUPPCState *env)
3267 env->icache_line_size = 32; 3231 env->icache_line_size = 32;
3268 /* Allocate hardware IRQ controller */ 3232 /* Allocate hardware IRQ controller */
3269 ppc6xx_irq_init(env); 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 /* PowerPC 603e */ 3236 /* PowerPC 603e */
@@ -3311,10 +3271,6 @@ static void init_proc_603E (CPUPPCState *env) @@ -3311,10 +3271,6 @@ static void init_proc_603E (CPUPPCState *env)
3311 env->icache_line_size = 32; 3271 env->icache_line_size = 32;
3312 /* Allocate hardware IRQ controller */ 3272 /* Allocate hardware IRQ controller */
3313 ppc6xx_irq_init(env); 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 /* PowerPC G2 */ 3276 /* PowerPC G2 */
@@ -3357,10 +3313,6 @@ static void init_proc_G2 (CPUPPCState *env) @@ -3357,10 +3313,6 @@ static void init_proc_G2 (CPUPPCState *env)
3357 env->icache_line_size = 32; 3313 env->icache_line_size = 32;
3358 /* Allocate hardware IRQ controller */ 3314 /* Allocate hardware IRQ controller */
3359 ppc6xx_irq_init(env); 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 /* PowerPC G2LE */ 3318 /* PowerPC G2LE */
@@ -3403,10 +3355,6 @@ static void init_proc_G2LE (CPUPPCState *env) @@ -3403,10 +3355,6 @@ static void init_proc_G2LE (CPUPPCState *env)
3403 env->icache_line_size = 32; 3355 env->icache_line_size = 32;
3404 /* Allocate hardware IRQ controller */ 3356 /* Allocate hardware IRQ controller */
3405 ppc6xx_irq_init(env); 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 /* PowerPC 604 */ 3360 /* PowerPC 604 */
@@ -3441,10 +3389,6 @@ static void init_proc_604 (CPUPPCState *env) @@ -3441,10 +3389,6 @@ static void init_proc_604 (CPUPPCState *env)
3441 env->icache_line_size = 32; 3389 env->icache_line_size = 32;
3442 /* Allocate hardware IRQ controller */ 3390 /* Allocate hardware IRQ controller */
3443 ppc6xx_irq_init(env); 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 /* PowerPC 740/750 (aka G3) */ 3394 /* PowerPC 740/750 (aka G3) */
@@ -3481,10 +3425,6 @@ static void init_proc_7x0 (CPUPPCState *env) @@ -3481,10 +3425,6 @@ static void init_proc_7x0 (CPUPPCState *env)
3481 env->icache_line_size = 32; 3425 env->icache_line_size = 32;
3482 /* Allocate hardware IRQ controller */ 3426 /* Allocate hardware IRQ controller */
3483 ppc6xx_irq_init(env); 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 /* PowerPC 750FX/GX */ 3430 /* PowerPC 750FX/GX */
@@ -3528,10 +3468,6 @@ static void init_proc_750fx (CPUPPCState *env) @@ -3528,10 +3468,6 @@ static void init_proc_750fx (CPUPPCState *env)
3528 env->icache_line_size = 32; 3468 env->icache_line_size = 32;
3529 /* Allocate hardware IRQ controller */ 3469 /* Allocate hardware IRQ controller */
3530 ppc6xx_irq_init(env); 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 /* PowerPC 745/755 */ 3473 /* PowerPC 745/755 */
@@ -3579,6 +3515,7 @@ static void init_proc_7x5 (CPUPPCState *env) @@ -3579,6 +3515,7 @@ static void init_proc_7x5 (CPUPPCState *env)
3579 gen_low_BATs(env); 3515 gen_low_BATs(env);
3580 gen_high_BATs(env); 3516 gen_high_BATs(env);
3581 gen_6xx_7xx_soft_tlb(env, 64, 2); 3517 gen_6xx_7xx_soft_tlb(env, 64, 2);
  3518 + /* XXX: exception vectors ? */
3582 env->dcache_line_size = 32; 3519 env->dcache_line_size = 32;
3583 env->icache_line_size = 32; 3520 env->icache_line_size = 32;
3584 /* Allocate hardware IRQ controller */ 3521 /* Allocate hardware IRQ controller */
@@ -3616,10 +3553,6 @@ static void init_proc_7400 (CPUPPCState *env) @@ -3616,10 +3553,6 @@ static void init_proc_7400 (CPUPPCState *env)
3616 env->icache_line_size = 32; 3553 env->icache_line_size = 32;
3617 /* Allocate hardware IRQ controller */ 3554 /* Allocate hardware IRQ controller */
3618 ppc6xx_irq_init(env); 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 /* PowerPC 7410 (aka G4) */ 3558 /* PowerPC 7410 (aka G4) */
@@ -3661,10 +3594,6 @@ static void init_proc_7410 (CPUPPCState *env) @@ -3661,10 +3594,6 @@ static void init_proc_7410 (CPUPPCState *env)
3661 env->icache_line_size = 32; 3594 env->icache_line_size = 32;
3662 /* Allocate hardware IRQ controller */ 3595 /* Allocate hardware IRQ controller */
3663 ppc6xx_irq_init(env); 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 /* PowerPC 7440 (aka G4) */ 3599 /* PowerPC 7440 (aka G4) */
@@ -3728,14 +3657,11 @@ static void init_proc_7440 (CPUPPCState *env) @@ -3728,14 +3657,11 @@ static void init_proc_7440 (CPUPPCState *env)
3728 /* Memory management */ 3657 /* Memory management */
3729 gen_low_BATs(env); 3658 gen_low_BATs(env);
3730 gen_74xx_soft_tlb(env, 128, 2); 3659 gen_74xx_soft_tlb(env, 128, 2);
  3660 + init_excp_7450(env);
3731 env->dcache_line_size = 32; 3661 env->dcache_line_size = 32;
3732 env->icache_line_size = 32; 3662 env->icache_line_size = 32;
3733 /* Allocate hardware IRQ controller */ 3663 /* Allocate hardware IRQ controller */
3734 ppc6xx_irq_init(env); 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 /* PowerPC 7450 (aka G4) */ 3667 /* PowerPC 7450 (aka G4) */
@@ -3806,10 +3732,6 @@ static void init_proc_7450 (CPUPPCState *env) @@ -3806,10 +3732,6 @@ static void init_proc_7450 (CPUPPCState *env)
3806 env->icache_line_size = 32; 3732 env->icache_line_size = 32;
3807 /* Allocate hardware IRQ controller */ 3733 /* Allocate hardware IRQ controller */
3808 ppc6xx_irq_init(env); 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 /* PowerPC 7445 (aka G4) */ 3737 /* PowerPC 7445 (aka G4) */
@@ -3912,10 +3834,6 @@ static void init_proc_7445 (CPUPPCState *env) @@ -3912,10 +3834,6 @@ static void init_proc_7445 (CPUPPCState *env)
3912 env->icache_line_size = 32; 3834 env->icache_line_size = 32;
3913 /* Allocate hardware IRQ controller */ 3835 /* Allocate hardware IRQ controller */
3914 ppc6xx_irq_init(env); 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 /* PowerPC 7455 (aka G4) */ 3839 /* PowerPC 7455 (aka G4) */
@@ -4020,10 +3938,6 @@ static void init_proc_7455 (CPUPPCState *env) @@ -4020,10 +3938,6 @@ static void init_proc_7455 (CPUPPCState *env)
4020 env->icache_line_size = 32; 3938 env->icache_line_size = 32;
4021 /* Allocate hardware IRQ controller */ 3939 /* Allocate hardware IRQ controller */
4022 ppc6xx_irq_init(env); 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 #if defined (TARGET_PPC64) 3943 #if defined (TARGET_PPC64)
@@ -4084,10 +3998,6 @@ static void init_proc_970 (CPUPPCState *env) @@ -4084,10 +3998,6 @@ static void init_proc_970 (CPUPPCState *env)
4084 env->icache_line_size = 128; 3998 env->icache_line_size = 128;
4085 /* Allocate hardware IRQ controller */ 3999 /* Allocate hardware IRQ controller */
4086 ppc970_irq_init(env); 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 /* PowerPC 970FX (aka G5) */ 4003 /* PowerPC 970FX (aka G5) */
@@ -4143,10 +4053,6 @@ static void init_proc_970FX (CPUPPCState *env) @@ -4143,10 +4053,6 @@ static void init_proc_970FX (CPUPPCState *env)
4143 env->icache_line_size = 128; 4053 env->icache_line_size = 128;
4144 /* Allocate hardware IRQ controller */ 4054 /* Allocate hardware IRQ controller */
4145 ppc970_irq_init(env); 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 /* PowerPC 970 GX */ 4058 /* PowerPC 970 GX */
@@ -4202,10 +4108,6 @@ static void init_proc_970GX (CPUPPCState *env) @@ -4202,10 +4108,6 @@ static void init_proc_970GX (CPUPPCState *env)
4202 env->icache_line_size = 128; 4108 env->icache_line_size = 128;
4203 /* Allocate hardware IRQ controller */ 4109 /* Allocate hardware IRQ controller */
4204 ppc970_irq_init(env); 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 /* PowerPC 620 */ 4113 /* PowerPC 620 */
@@ -4237,10 +4139,6 @@ static void init_proc_620 (CPUPPCState *env) @@ -4237,10 +4139,6 @@ static void init_proc_620 (CPUPPCState *env)
4237 env->dcache_line_size = 64; 4139 env->dcache_line_size = 64;
4238 env->icache_line_size = 64; 4140 env->icache_line_size = 64;
4239 /* XXX: TODO: initialize internal interrupt controller */ 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 #endif /* defined (TARGET_PPC64) */ 4143 #endif /* defined (TARGET_PPC64) */
4246 4144