Commit f2e63a42c9151d17d734ce5a173d81f1598f0565
1 parent
d26bfc9a
Reorganize the CPUPPCState structure to group features.
Add #ifdef to avoid compiling not relevant resources: - MMU related stuff for user-mode only targets - PowerPC 64 only resources for PowerPC 32 targets - embedded PowerPC extensions for non-ppcemb targets. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3343 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
69 additions
and
19 deletions
target-ppc/cpu.h
| ... | ... | @@ -495,9 +495,14 @@ struct CPUPPCState { |
| 495 | 495 | int access_type; /* when a memory exception occurs, the access |
| 496 | 496 | type is stored here */ |
| 497 | 497 | |
| 498 | - /* MMU context */ | |
| 498 | + /* MMU context - only relevant for full system emulation */ | |
| 499 | +#if !defined(CONFIG_USER_ONLY) | |
| 500 | +#if defined(TARGET_PPC64) | |
| 499 | 501 | /* Address space register */ |
| 500 | 502 | target_ulong asr; |
| 503 | + /* PowerPC 64 SLB area */ | |
| 504 | + int slb_nr; | |
| 505 | +#endif | |
| 501 | 506 | /* segment registers */ |
| 502 | 507 | target_ulong sdr1; |
| 503 | 508 | target_ulong sr[16]; |
| ... | ... | @@ -505,17 +510,31 @@ struct CPUPPCState { |
| 505 | 510 | int nb_BATs; |
| 506 | 511 | target_ulong DBAT[2][8]; |
| 507 | 512 | target_ulong IBAT[2][8]; |
| 513 | + /* PowerPC TLB registers (for 4xx and 60x software driven TLBs) */ | |
| 514 | + int nb_tlb; /* Total number of TLB */ | |
| 515 | + int tlb_per_way; /* Speed-up helper: used to avoid divisions at run time */ | |
| 516 | + int nb_ways; /* Number of ways in the TLB set */ | |
| 517 | + int last_way; /* Last used way used to allocate TLB in a LRU way */ | |
| 518 | + int id_tlbs; /* If 1, MMU has separated TLBs for instructions & data */ | |
| 519 | + int nb_pids; /* Number of available PID registers */ | |
| 520 | + ppc_tlb_t *tlb; /* TLB is optional. Allocate them only if needed */ | |
| 521 | + /* 403 dedicated access protection registers */ | |
| 522 | + target_ulong pb[4]; | |
| 523 | +#endif | |
| 508 | 524 | |
| 509 | 525 | /* Other registers */ |
| 510 | 526 | /* Special purpose registers */ |
| 511 | 527 | target_ulong spr[1024]; |
| 528 | + ppc_spr_t spr_cb[1024]; | |
| 512 | 529 | /* Altivec registers */ |
| 513 | 530 | ppc_avr_t avr[32]; |
| 514 | 531 | uint32_t vscr; |
| 532 | +#if defined(TARGET_PPCEMB) | |
| 515 | 533 | /* SPE registers */ |
| 516 | 534 | ppc_gpr_t spe_acc; |
| 517 | 535 | float_status spe_status; |
| 518 | 536 | uint32_t spe_fscr; |
| 537 | +#endif | |
| 519 | 538 | |
| 520 | 539 | /* Internal devices resources */ |
| 521 | 540 | /* Time base and decrementer */ |
| ... | ... | @@ -523,19 +542,6 @@ struct CPUPPCState { |
| 523 | 542 | /* Device control registers */ |
| 524 | 543 | ppc_dcr_t *dcr_env; |
| 525 | 544 | |
| 526 | - /* PowerPC TLB registers (for 4xx and 60x software driven TLBs) */ | |
| 527 | - int nb_tlb; /* Total number of TLB */ | |
| 528 | - int tlb_per_way; /* Speed-up helper: used to avoid divisions at run time */ | |
| 529 | - int nb_ways; /* Number of ways in the TLB set */ | |
| 530 | - int last_way; /* Last used way used to allocate TLB in a LRU way */ | |
| 531 | - int id_tlbs; /* If 1, MMU has separated TLBs for instructions & data */ | |
| 532 | - int nb_pids; /* Number of available PID registers */ | |
| 533 | - ppc_tlb_t *tlb; /* TLB is optional. Allocate them only if needed */ | |
| 534 | - /* 403 dedicated access protection registers */ | |
| 535 | - target_ulong pb[4]; | |
| 536 | - /* PowerPC 64 SLB area */ | |
| 537 | - int slb_nr; | |
| 538 | - | |
| 539 | 545 | int dcache_line_size; |
| 540 | 546 | int icache_line_size; |
| 541 | 547 | |
| ... | ... | @@ -570,8 +576,7 @@ struct CPUPPCState { |
| 570 | 576 | /* Those resources are used only during code translation */ |
| 571 | 577 | /* Next instruction pointer */ |
| 572 | 578 | target_ulong nip; |
| 573 | - /* SPR translation callbacks */ | |
| 574 | - ppc_spr_t spr_cb[1024]; | |
| 579 | + | |
| 575 | 580 | /* opcode handlers */ |
| 576 | 581 | opc_handler_t *opcodes[0x40]; |
| 577 | 582 | ... | ... |
target-ppc/translate.c
| ... | ... | @@ -6448,9 +6448,11 @@ void cpu_dump_state (CPUState *env, FILE *f, |
| 6448 | 6448 | if ((i & (RFPL - 1)) == (RFPL - 1)) |
| 6449 | 6449 | cpu_fprintf(f, "\n"); |
| 6450 | 6450 | } |
| 6451 | +#if !defined(CONFIG_USER_ONLY) | |
| 6451 | 6452 | cpu_fprintf(f, "SRR0 " REGX " SRR1 " REGX " " FILL FILL FILL |
| 6452 | 6453 | "SDR1 " REGX "\n", |
| 6453 | 6454 | env->spr[SPR_SRR0], env->spr[SPR_SRR1], env->sdr1); |
| 6455 | +#endif | |
| 6454 | 6456 | |
| 6455 | 6457 | #undef RGPL |
| 6456 | 6458 | #undef RFPL | ... | ... |
target-ppc/translate_init.c
| ... | ... | @@ -533,6 +533,7 @@ static void gen_spr_ne_601 (CPUPPCState *env) |
| 533 | 533 | /* BATs 0-3 */ |
| 534 | 534 | static void gen_low_BATs (CPUPPCState *env) |
| 535 | 535 | { |
| 536 | +#if !defined(CONFIG_USER_ONLY) | |
| 536 | 537 | spr_register(env, SPR_IBAT0U, "IBAT0U", |
| 537 | 538 | SPR_NOACCESS, SPR_NOACCESS, |
| 538 | 539 | &spr_read_ibat, &spr_write_ibatu, |
| ... | ... | @@ -598,11 +599,13 @@ static void gen_low_BATs (CPUPPCState *env) |
| 598 | 599 | &spr_read_dbat, &spr_write_dbatl, |
| 599 | 600 | 0x00000000); |
| 600 | 601 | env->nb_BATs += 4; |
| 602 | +#endif | |
| 601 | 603 | } |
| 602 | 604 | |
| 603 | 605 | /* BATs 4-7 */ |
| 604 | 606 | static void gen_high_BATs (CPUPPCState *env) |
| 605 | 607 | { |
| 608 | +#if !defined(CONFIG_USER_ONLY) | |
| 606 | 609 | spr_register(env, SPR_IBAT4U, "IBAT4U", |
| 607 | 610 | SPR_NOACCESS, SPR_NOACCESS, |
| 608 | 611 | &spr_read_ibat_h, &spr_write_ibatu_h, |
| ... | ... | @@ -668,6 +671,7 @@ static void gen_high_BATs (CPUPPCState *env) |
| 668 | 671 | &spr_read_dbat_h, &spr_write_dbatl_h, |
| 669 | 672 | 0x00000000); |
| 670 | 673 | env->nb_BATs += 4; |
| 674 | +#endif | |
| 671 | 675 | } |
| 672 | 676 | |
| 673 | 677 | /* Generic PowerPC time base */ |
| ... | ... | @@ -694,6 +698,7 @@ static void gen_tbl (CPUPPCState *env) |
| 694 | 698 | /* Softare table search registers */ |
| 695 | 699 | static void gen_6xx_7xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways) |
| 696 | 700 | { |
| 701 | +#if !defined(CONFIG_USER_ONLY) | |
| 697 | 702 | env->nb_tlb = nb_tlbs; |
| 698 | 703 | env->nb_ways = nb_ways; |
| 699 | 704 | env->id_tlbs = 1; |
| ... | ... | @@ -725,6 +730,7 @@ static void gen_6xx_7xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways) |
| 725 | 730 | SPR_NOACCESS, SPR_NOACCESS, |
| 726 | 731 | &spr_read_generic, &spr_write_generic, |
| 727 | 732 | 0x00000000); |
| 733 | +#endif | |
| 728 | 734 | } |
| 729 | 735 | |
| 730 | 736 | /* SPR common to MPC755 and G2 */ |
| ... | ... | @@ -1105,6 +1111,7 @@ static void gen_spr_601 (CPUPPCState *env) |
| 1105 | 1111 | &spr_read_generic, &spr_write_generic, |
| 1106 | 1112 | 0x00000000); |
| 1107 | 1113 | /* Memory management */ |
| 1114 | +#if !defined(CONFIG_USER_ONLY) | |
| 1108 | 1115 | spr_register(env, SPR_IBAT0U, "IBAT0U", |
| 1109 | 1116 | SPR_NOACCESS, SPR_NOACCESS, |
| 1110 | 1117 | &spr_read_601_ubat, &spr_write_601_ubatu, |
| ... | ... | @@ -1138,6 +1145,7 @@ static void gen_spr_601 (CPUPPCState *env) |
| 1138 | 1145 | &spr_read_601_ubat, &spr_write_601_ubatl, |
| 1139 | 1146 | 0x00000000); |
| 1140 | 1147 | env->nb_BATs = 4; |
| 1148 | +#endif | |
| 1141 | 1149 | } |
| 1142 | 1150 | |
| 1143 | 1151 | static void gen_spr_74xx (CPUPPCState *env) |
| ... | ... | @@ -1238,6 +1246,7 @@ static void gen_l3_ctrl (CPUPPCState *env) |
| 1238 | 1246 | |
| 1239 | 1247 | static void gen_74xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways) |
| 1240 | 1248 | { |
| 1249 | +#if !defined(CONFIG_USER_ONLY) | |
| 1241 | 1250 | env->nb_tlb = nb_tlbs; |
| 1242 | 1251 | env->nb_ways = nb_ways; |
| 1243 | 1252 | env->id_tlbs = 1; |
| ... | ... | @@ -1256,6 +1265,7 @@ static void gen_74xx_soft_tlb (CPUPPCState *env, int nb_tlbs, int nb_ways) |
| 1256 | 1265 | SPR_NOACCESS, SPR_NOACCESS, |
| 1257 | 1266 | &spr_read_generic, &spr_write_generic, |
| 1258 | 1267 | 0x00000000); |
| 1268 | +#endif | |
| 1259 | 1269 | } |
| 1260 | 1270 | |
| 1261 | 1271 | /* PowerPC BookE SPR */ |
| ... | ... | @@ -1512,6 +1522,7 @@ static void gen_spr_BookE (CPUPPCState *env) |
| 1512 | 1522 | /* FSL storage control registers */ |
| 1513 | 1523 | static void gen_spr_BookE_FSL (CPUPPCState *env) |
| 1514 | 1524 | { |
| 1525 | +#if !defined(CONFIG_USER_ONLY) | |
| 1515 | 1526 | /* TLB assist registers */ |
| 1516 | 1527 | /* XXX : not implemented */ |
| 1517 | 1528 | spr_register(env, SPR_BOOKE_MAS0, "MAS0", |
| ... | ... | @@ -1605,6 +1616,7 @@ static void gen_spr_BookE_FSL (CPUPPCState *env) |
| 1605 | 1616 | default: |
| 1606 | 1617 | break; |
| 1607 | 1618 | } |
| 1619 | +#endif | |
| 1608 | 1620 | } |
| 1609 | 1621 | |
| 1610 | 1622 | /* SPR specific to PowerPC 440 implementation */ |
| ... | ... | @@ -2616,9 +2628,11 @@ static void init_proc_401x2 (CPUPPCState *env) |
| 2616 | 2628 | gen_spr_401x2(env); |
| 2617 | 2629 | gen_spr_compress(env); |
| 2618 | 2630 | /* Memory management */ |
| 2631 | +#if !defined(CONFIG_USER_ONLY) | |
| 2619 | 2632 | env->nb_tlb = 64; |
| 2620 | 2633 | env->nb_ways = 1; |
| 2621 | 2634 | env->id_tlbs = 0; |
| 2635 | +#endif | |
| 2622 | 2636 | init_excp_4xx_softmmu(env); |
| 2623 | 2637 | env->dcache_line_size = 32; |
| 2624 | 2638 | env->icache_line_size = 32; |
| ... | ... | @@ -2674,9 +2688,11 @@ static void init_proc_IOP480 (CPUPPCState *env) |
| 2674 | 2688 | gen_spr_401x2(env); |
| 2675 | 2689 | gen_spr_compress(env); |
| 2676 | 2690 | /* Memory management */ |
| 2691 | +#if !defined(CONFIG_USER_ONLY) | |
| 2677 | 2692 | env->nb_tlb = 64; |
| 2678 | 2693 | env->nb_ways = 1; |
| 2679 | 2694 | env->id_tlbs = 0; |
| 2695 | +#endif | |
| 2680 | 2696 | init_excp_4xx_softmmu(env); |
| 2681 | 2697 | env->dcache_line_size = 32; |
| 2682 | 2698 | env->icache_line_size = 32; |
| ... | ... | @@ -2744,9 +2760,11 @@ static void init_proc_403GCX (CPUPPCState *env) |
| 2744 | 2760 | &spr_read_generic, &spr_write_generic, |
| 2745 | 2761 | 0x00000000); |
| 2746 | 2762 | /* Memory management */ |
| 2763 | +#if !defined(CONFIG_USER_ONLY) | |
| 2747 | 2764 | env->nb_tlb = 64; |
| 2748 | 2765 | env->nb_ways = 1; |
| 2749 | 2766 | env->id_tlbs = 0; |
| 2767 | +#endif | |
| 2750 | 2768 | init_excp_4xx_softmmu(env); |
| 2751 | 2769 | env->dcache_line_size = 32; |
| 2752 | 2770 | env->icache_line_size = 32; |
| ... | ... | @@ -2785,9 +2803,11 @@ static void init_proc_405 (CPUPPCState *env) |
| 2785 | 2803 | &spr_read_generic, &spr_write_generic, |
| 2786 | 2804 | 0x00000000); |
| 2787 | 2805 | /* Memory management */ |
| 2806 | +#if !defined(CONFIG_USER_ONLY) | |
| 2788 | 2807 | env->nb_tlb = 64; |
| 2789 | 2808 | env->nb_ways = 1; |
| 2790 | 2809 | env->id_tlbs = 0; |
| 2810 | +#endif | |
| 2791 | 2811 | init_excp_4xx_softmmu(env); |
| 2792 | 2812 | env->dcache_line_size = 32; |
| 2793 | 2813 | env->icache_line_size = 32; |
| ... | ... | @@ -2832,9 +2852,11 @@ static void init_proc_440EP (CPUPPCState *env) |
| 2832 | 2852 | &spr_read_generic, &spr_write_generic, |
| 2833 | 2853 | 0x00000000); |
| 2834 | 2854 | /* Memory management */ |
| 2855 | +#if !defined(CONFIG_USER_ONLY) | |
| 2835 | 2856 | env->nb_tlb = 64; |
| 2836 | 2857 | env->nb_ways = 1; |
| 2837 | 2858 | env->id_tlbs = 0; |
| 2859 | +#endif | |
| 2838 | 2860 | init_excp_BookE(env); |
| 2839 | 2861 | env->dcache_line_size = 32; |
| 2840 | 2862 | env->icache_line_size = 32; |
| ... | ... | @@ -2860,9 +2882,11 @@ static void init_proc_440GP (CPUPPCState *env) |
| 2860 | 2882 | gen_spr_BookE(env); |
| 2861 | 2883 | gen_spr_440(env); |
| 2862 | 2884 | /* Memory management */ |
| 2885 | +#if !defined(CONFIG_USER_ONLY) | |
| 2863 | 2886 | env->nb_tlb = 64; |
| 2864 | 2887 | env->nb_ways = 1; |
| 2865 | 2888 | env->id_tlbs = 0; |
| 2889 | +#endif | |
| 2866 | 2890 | init_excp_BookE(env); |
| 2867 | 2891 | env->dcache_line_size = 32; |
| 2868 | 2892 | env->icache_line_size = 32; |
| ... | ... | @@ -2889,9 +2913,11 @@ static void init_proc_440x4 (CPUPPCState *env) |
| 2889 | 2913 | gen_spr_BookE(env); |
| 2890 | 2914 | gen_spr_440(env); |
| 2891 | 2915 | /* Memory management */ |
| 2916 | +#if !defined(CONFIG_USER_ONLY) | |
| 2892 | 2917 | env->nb_tlb = 64; |
| 2893 | 2918 | env->nb_ways = 1; |
| 2894 | 2919 | env->id_tlbs = 0; |
| 2920 | +#endif | |
| 2895 | 2921 | init_excp_BookE(env); |
| 2896 | 2922 | env->dcache_line_size = 32; |
| 2897 | 2923 | env->icache_line_size = 32; |
| ... | ... | @@ -2935,9 +2961,11 @@ static void init_proc_440x5 (CPUPPCState *env) |
| 2935 | 2961 | &spr_read_generic, &spr_write_generic, |
| 2936 | 2962 | 0x00000000); |
| 2937 | 2963 | /* Memory management */ |
| 2964 | +#if !defined(CONFIG_USER_ONLY) | |
| 2938 | 2965 | env->nb_tlb = 64; |
| 2939 | 2966 | env->nb_ways = 1; |
| 2940 | 2967 | env->id_tlbs = 0; |
| 2968 | +#endif | |
| 2941 | 2969 | init_excp_BookE(env); |
| 2942 | 2970 | env->dcache_line_size = 32; |
| 2943 | 2971 | env->icache_line_size = 32; |
| ... | ... | @@ -2987,9 +3015,11 @@ static void init_proc_460 (CPUPPCState *env) |
| 2987 | 3015 | &spr_read_generic, &spr_write_generic, |
| 2988 | 3016 | 0x00000000); |
| 2989 | 3017 | /* Memory management */ |
| 3018 | +#if !defined(CONFIG_USER_ONLY) | |
| 2990 | 3019 | env->nb_tlb = 64; |
| 2991 | 3020 | env->nb_ways = 1; |
| 2992 | 3021 | env->id_tlbs = 0; |
| 3022 | +#endif | |
| 2993 | 3023 | init_excp_BookE(env); |
| 2994 | 3024 | env->dcache_line_size = 32; |
| 2995 | 3025 | env->icache_line_size = 32; |
| ... | ... | @@ -3042,9 +3072,11 @@ static void init_proc_460F (CPUPPCState *env) |
| 3042 | 3072 | &spr_read_generic, &spr_write_generic, |
| 3043 | 3073 | 0x00000000); |
| 3044 | 3074 | /* Memory management */ |
| 3075 | +#if !defined(CONFIG_USER_ONLY) | |
| 3045 | 3076 | env->nb_tlb = 64; |
| 3046 | 3077 | env->nb_ways = 1; |
| 3047 | 3078 | env->id_tlbs = 0; |
| 3079 | +#endif | |
| 3048 | 3080 | init_excp_BookE(env); |
| 3049 | 3081 | env->dcache_line_size = 32; |
| 3050 | 3082 | env->icache_line_size = 32; |
| ... | ... | @@ -3097,9 +3129,11 @@ static void init_proc_e500 (CPUPPCState *env) |
| 3097 | 3129 | gen_spr_BookE(env); |
| 3098 | 3130 | /* Memory management */ |
| 3099 | 3131 | gen_spr_BookE_FSL(env); |
| 3132 | +#if !defined(CONFIG_USER_ONLY) | |
| 3100 | 3133 | env->nb_tlb = 64; |
| 3101 | 3134 | env->nb_ways = 1; |
| 3102 | 3135 | env->id_tlbs = 0; |
| 3136 | +#endif | |
| 3103 | 3137 | init_excp_BookE(env); |
| 3104 | 3138 | env->dcache_line_size = 32; |
| 3105 | 3139 | env->icache_line_size = 32; |
| ... | ... | @@ -3167,10 +3201,11 @@ static void init_proc_601 (CPUPPCState *env) |
| 3167 | 3201 | &spr_read_generic, &spr_write_generic, |
| 3168 | 3202 | 0x00000000); |
| 3169 | 3203 | /* Memory management */ |
| 3204 | +#if !defined(CONFIG_USER_ONLY) | |
| 3170 | 3205 | env->nb_tlb = 64; |
| 3171 | 3206 | env->nb_ways = 2; |
| 3172 | 3207 | env->id_tlbs = 0; |
| 3173 | - env->id_tlbs = 0; | |
| 3208 | +#endif | |
| 3174 | 3209 | init_excp_601(env); |
| 3175 | 3210 | env->dcache_line_size = 64; |
| 3176 | 3211 | env->icache_line_size = 64; |
| ... | ... | @@ -4041,7 +4076,9 @@ static void init_proc_970 (CPUPPCState *env) |
| 4041 | 4076 | #if !defined(CONFIG_USER_ONLY) |
| 4042 | 4077 | env->excp_prefix = 0xFFF00000; |
| 4043 | 4078 | #endif |
| 4079 | +#if !defined(CONFIG_USER_ONLY) | |
| 4044 | 4080 | env->slb_nr = 32; |
| 4081 | +#endif | |
| 4045 | 4082 | init_excp_970(env); |
| 4046 | 4083 | env->dcache_line_size = 128; |
| 4047 | 4084 | env->icache_line_size = 128; |
| ... | ... | @@ -4112,7 +4149,9 @@ static void init_proc_970FX (CPUPPCState *env) |
| 4112 | 4149 | #if !defined(CONFIG_USER_ONLY) |
| 4113 | 4150 | env->excp_prefix = 0xFFF00000; |
| 4114 | 4151 | #endif |
| 4152 | +#if !defined(CONFIG_USER_ONLY) | |
| 4115 | 4153 | env->slb_nr = 32; |
| 4154 | +#endif | |
| 4116 | 4155 | init_excp_970(env); |
| 4117 | 4156 | env->dcache_line_size = 128; |
| 4118 | 4157 | env->icache_line_size = 128; |
| ... | ... | @@ -4183,7 +4222,9 @@ static void init_proc_970GX (CPUPPCState *env) |
| 4183 | 4222 | #if !defined(CONFIG_USER_ONLY) |
| 4184 | 4223 | env->excp_prefix = 0xFFF00000; |
| 4185 | 4224 | #endif |
| 4225 | +#if !defined(CONFIG_USER_ONLY) | |
| 4186 | 4226 | env->slb_nr = 32; |
| 4227 | +#endif | |
| 4187 | 4228 | init_excp_970(env); |
| 4188 | 4229 | env->dcache_line_size = 128; |
| 4189 | 4230 | env->icache_line_size = 128; |
| ... | ... | @@ -5729,11 +5770,11 @@ static void init_ppc_proc (CPUPPCState *env, ppc_def_t *def) |
| 5729 | 5770 | env->excp_prefix = 0x00000000; |
| 5730 | 5771 | env->ivor_mask = 0x00000000; |
| 5731 | 5772 | env->ivpr_mask = 0x00000000; |
| 5732 | -#endif | |
| 5733 | 5773 | /* Default MMU definitions */ |
| 5734 | 5774 | env->nb_BATs = 0; |
| 5735 | 5775 | env->nb_tlb = 0; |
| 5736 | 5776 | env->nb_ways = 0; |
| 5777 | +#endif | |
| 5737 | 5778 | /* Register SPR common to all PowerPC implementations */ |
| 5738 | 5779 | gen_spr_generic(env); |
| 5739 | 5780 | spr_register(env, SPR_PVR, "PVR", |
| ... | ... | @@ -5743,6 +5784,7 @@ static void init_ppc_proc (CPUPPCState *env, ppc_def_t *def) |
| 5743 | 5784 | /* PowerPC implementation specific initialisations (SPRs, timers, ...) */ |
| 5744 | 5785 | (*def->init_proc)(env); |
| 5745 | 5786 | /* Allocate TLBs buffer when needed */ |
| 5787 | +#if !defined(CONFIG_USER_ONLY) | |
| 5746 | 5788 | if (env->nb_tlb != 0) { |
| 5747 | 5789 | int nb_tlb = env->nb_tlb; |
| 5748 | 5790 | if (env->id_tlbs != 0) |
| ... | ... | @@ -5751,7 +5793,6 @@ static void init_ppc_proc (CPUPPCState *env, ppc_def_t *def) |
| 5751 | 5793 | /* Pre-compute some useful values */ |
| 5752 | 5794 | env->tlb_per_way = env->nb_tlb / env->nb_ways; |
| 5753 | 5795 | } |
| 5754 | -#if !defined(CONFIG_USER_ONLY) | |
| 5755 | 5796 | if (env->irq_inputs == NULL) { |
| 5756 | 5797 | fprintf(stderr, "WARNING: no internal IRQ controller registered.\n" |
| 5757 | 5798 | " Attempt Qemu to crash very soon !\n"); |
| ... | ... | @@ -6171,11 +6212,13 @@ int cpu_ppc_register (CPUPPCState *env, ppc_def_t *def) |
| 6171 | 6212 | printf("PowerPC %-12s : PVR %08x MSR %016" PRIx64 "\n" |
| 6172 | 6213 | " MMU model : %s\n", |
| 6173 | 6214 | def->name, def->pvr, def->msr_mask, mmu_model); |
| 6215 | +#if !defined(CONFIG_USER_ONLY) | |
| 6174 | 6216 | if (env->tlb != NULL) { |
| 6175 | 6217 | printf(" %d %s TLB in %d ways\n", |
| 6176 | 6218 | env->nb_tlb, env->id_tlbs ? "splitted" : "merged", |
| 6177 | 6219 | env->nb_ways); |
| 6178 | 6220 | } |
| 6221 | +#endif | |
| 6179 | 6222 | printf(" Exceptions model : %s\n" |
| 6180 | 6223 | " Bus model : %s\n", |
| 6181 | 6224 | excp_model, bus_model); | ... | ... |