static void init_proc_book3s_64(CPUPPCState *env, int version)

{

    gen_spr_ne_601(env);

    gen_tbl(env);

    gen_spr_book3s_altivec(env);

    gen_spr_book3s_pmu_sup(env);

    gen_spr_book3s_pmu_user(env);

    gen_spr_book3s_common(env);



    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        gen_spr_970_hid(env);

        gen_spr_970_hior(env);

        gen_low_BATs(env);

        gen_spr_970_pmu_sup(env);

        gen_spr_970_pmu_user(env);

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        gen_spr_book3s_ids(env);

        gen_spr_amr(env, version >= BOOK3S_CPU_POWER8);

        gen_spr_book3s_purr(env);

        env->ci_large_pages = true;

        break;

    default:

        g_assert_not_reached();

    }

    if (version >= BOOK3S_CPU_POWER5PLUS) {

        gen_spr_power5p_common(env);

        gen_spr_power5p_lpar(env);

        gen_spr_power5p_ear(env);

    } else {

        gen_spr_970_lpar(env);

    }

    if (version == BOOK3S_CPU_970) {

        gen_spr_970_dbg(env);

    }

    if (version >= BOOK3S_CPU_POWER6) {

        gen_spr_power6_common(env);

        gen_spr_power6_dbg(env);

    }

    if (version == BOOK3S_CPU_POWER7) {

        gen_spr_power7_book4(env);

    }

    if (version >= BOOK3S_CPU_POWER8) {

        gen_spr_power8_tce_address_control(env);

        gen_spr_power8_ids(env);

        gen_spr_power8_ebb(env);

        gen_spr_power8_fscr(env);

        gen_spr_power8_pmu_sup(env);

        gen_spr_power8_pmu_user(env);

        gen_spr_power8_tm(env);

        gen_spr_power8_pspb(env);

        gen_spr_vtb(env);

        gen_spr_power8_ic(env);

        gen_spr_power8_book4(env);

    }

    if (version < BOOK3S_CPU_POWER8) {

        gen_spr_book3s_dbg(env);

    } else {

        gen_spr_book3s_207_dbg(env);

    }

#if !defined(CONFIG_USER_ONLY)

    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        env->slb_nr = 64;

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

    default:

        env->slb_nr = 32;

        break;

    }

#endif

    /* Allocate hardware IRQ controller */

    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        init_excp_970(env);

        ppc970_irq_init(ppc_env_get_cpu(env));

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        init_excp_POWER7(env);

        ppcPOWER7_irq_init(ppc_env_get_cpu(env));

        break;

    default:

        g_assert_not_reached();

    }



    env->dcache_line_size = 128;

    env->icache_line_size = 128;

}

static void init_proc_book3s_64(CPUPPCState *env, int version)

{

    gen_spr_ne_601(env);

    gen_tbl(env);

    gen_spr_book3s_altivec(env);

    gen_spr_book3s_pmu_sup(env);

    gen_spr_book3s_pmu_user(env);

    gen_spr_book3s_common(env);



    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        gen_spr_970_hid(env);

        gen_spr_970_hior(env);

        gen_low_BATs(env);

        gen_spr_970_pmu_sup(env);

        gen_spr_970_pmu_user(env);

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        gen_spr_book3s_ids(env);

        gen_spr_amr(env, version >= BOOK3S_CPU_POWER8);

        gen_spr_book3s_purr(env);

        env->ci_large_pages = true;

        break;

    default:

        g_assert_not_reached();

    }

    if (version >= BOOK3S_CPU_POWER5PLUS) {

        gen_spr_power5p_common(env);

        gen_spr_power5p_lpar(env);

        gen_spr_power5p_ear(env);

    } else {

        gen_spr_970_lpar(env);

    }

    if (version == BOOK3S_CPU_970) {

        gen_spr_970_dbg(env);

    }

    if (version >= BOOK3S_CPU_POWER6) {

        gen_spr_power6_common(env);

        gen_spr_power6_dbg(env);

    }

    if (version == BOOK3S_CPU_POWER7) {

        gen_spr_power7_book4(env);

    }

    if (version >= BOOK3S_CPU_POWER8) {

        gen_spr_power8_tce_address_control(env);

        gen_spr_power8_ids(env);

        gen_spr_power8_ebb(env);

        gen_spr_power8_fscr(env);

        gen_spr_power8_pmu_sup(env);

        gen_spr_power8_pmu_user(env);

        gen_spr_power8_tm(env);

        gen_spr_power8_pspb(env);

        gen_spr_vtb(env);

        gen_spr_power8_ic(env);

        gen_spr_power8_book4(env);

    }

    if (version < BOOK3S_CPU_POWER8) {

        gen_spr_book3s_dbg(env);

    } else {

        gen_spr_book3s_207_dbg(env);

    }

#if !defined(CONFIG_USER_ONLY)

    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        env->slb_nr = 64;

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

    default:

        env->slb_nr = 32;

        break;

    }

#endif

    

    switch (version) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        init_excp_970(env);

        ppc970_irq_init(ppc_env_get_cpu(env));

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        init_excp_POWER7(env);

        ppcPOWER7_irq_init(ppc_env_get_cpu(env));

        break;

    default:

        g_assert_not_reached();

    }



    env->dcache_line_size = 128;

    env->icache_line_size = 128;

}

    case BOOK3S_CPU_POWER8:
static void FUNC_0(CPUPPCState *VAR_0, int VAR_1)

{

    gen_spr_ne_601(VAR_0);

    gen_tbl(VAR_0);

    gen_spr_book3s_altivec(VAR_0);

    gen_spr_book3s_pmu_sup(VAR_0);

    gen_spr_book3s_pmu_user(VAR_0);

    gen_spr_book3s_common(VAR_0);



    switch (VAR_1) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        gen_spr_970_hid(VAR_0);

        gen_spr_970_hior(VAR_0);

        gen_low_BATs(VAR_0);

        gen_spr_970_pmu_sup(VAR_0);

        gen_spr_970_pmu_user(VAR_0);

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        gen_spr_book3s_ids(VAR_0);

        gen_spr_amr(VAR_0, VAR_1 >= BOOK3S_CPU_POWER8);

        gen_spr_book3s_purr(VAR_0);

        VAR_0->ci_large_pages = true;

        break;

    default:

        g_assert_not_reached();

    }

    if (VAR_1 >= BOOK3S_CPU_POWER5PLUS) {

        gen_spr_power5p_common(VAR_0);

        gen_spr_power5p_lpar(VAR_0);

        gen_spr_power5p_ear(VAR_0);

    } else {

        gen_spr_970_lpar(VAR_0);

    }

    if (VAR_1 == BOOK3S_CPU_970) {

        gen_spr_970_dbg(VAR_0);

    }

    if (VAR_1 >= BOOK3S_CPU_POWER6) {

        gen_spr_power6_common(VAR_0);

        gen_spr_power6_dbg(VAR_0);

    }

    if (VAR_1 == BOOK3S_CPU_POWER7) {

        gen_spr_power7_book4(VAR_0);

    }

    if (VAR_1 >= BOOK3S_CPU_POWER8) {

        gen_spr_power8_tce_address_control(VAR_0);

        gen_spr_power8_ids(VAR_0);

        gen_spr_power8_ebb(VAR_0);

        gen_spr_power8_fscr(VAR_0);

        gen_spr_power8_pmu_sup(VAR_0);

        gen_spr_power8_pmu_user(VAR_0);

        gen_spr_power8_tm(VAR_0);

        gen_spr_power8_pspb(VAR_0);

        gen_spr_vtb(VAR_0);

        gen_spr_power8_ic(VAR_0);

        gen_spr_power8_book4(VAR_0);

    }

    if (VAR_1 < BOOK3S_CPU_POWER8) {

        gen_spr_book3s_dbg(VAR_0);

    } else {

        gen_spr_book3s_207_dbg(VAR_0);

    }

#if !defined(CONFIG_USER_ONLY)

    switch (VAR_1) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        VAR_0->slb_nr = 64;

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

    default:

        VAR_0->slb_nr = 32;

        break;

    }

#endif

    

    switch (VAR_1) {

    case BOOK3S_CPU_970:

    case BOOK3S_CPU_POWER5PLUS:

        init_excp_970(VAR_0);

        ppc970_irq_init(ppc_env_get_cpu(VAR_0));

        break;

    case BOOK3S_CPU_POWER7:

    case BOOK3S_CPU_POWER8:

        init_excp_POWER7(VAR_0);

        ppcPOWER7_irq_init(ppc_env_get_cpu(VAR_0));

        break;

    default:

        g_assert_not_reached();

    }



    VAR_0->dcache_line_size = 128;

    VAR_0->icache_line_size = 128;

}

static void FUNC_0(CPUPPCState *VAR_0, int VAR_1)
{ gen_spr_ne_601(VAR_0); gen_tbl(VAR_0); gen_spr_book3s_altivec(VAR_0); gen_spr_book3s_pmu_sup(VAR_0); gen_spr_book3s_pmu_user(VAR_0); gen_spr_book3s_common(VAR_0); switch (VAR_1) { case BOOK3S_CPU_970:
case BOOK3S_CPU_POWER5PLUS:
gen_spr_970_hid(VAR_0); gen_spr_970_hior(VAR_0); gen_low_BATs(VAR_0); gen_spr_970_pmu_sup(VAR_0); gen_spr_970_pmu_user(VAR_0); break; case BOOK3S_CPU_POWER7:
case BOOK3S_CPU_POWER8:
gen_spr_book3s_ids(VAR_0); gen_spr_amr(VAR_0, VAR_1 >= BOOK3S_CPU_POWER8); gen_spr_book3s_purr(VAR_0); VAR_0->ci_large_pages = true; break; default:
g_assert_not_reached(); } if (VAR_1 >= BOOK3S_CPU_POWER5PLUS) { gen_spr_power5p_common(VAR_0); gen_spr_power5p_lpar(VAR_0); gen_spr_power5p_ear(VAR_0); } else { gen_spr_970_lpar(VAR_0); } if (VAR_1 == BOOK3S_CPU_970) { gen_spr_970_dbg(VAR_0); } if (VAR_1 >= BOOK3S_CPU_POWER6) { gen_spr_power6_common(VAR_0); gen_spr_power6_dbg(VAR_0); } if (VAR_1 == BOOK3S_CPU_POWER7) { gen_spr_power7_book4(VAR_0); } if (VAR_1 >= BOOK3S_CPU_POWER8) { gen_spr_power8_tce_address_control(VAR_0); gen_spr_power8_ids(VAR_0); gen_spr_power8_ebb(VAR_0); gen_spr_power8_fscr(VAR_0); gen_spr_power8_pmu_sup(VAR_0); gen_spr_power8_pmu_user(VAR_0); gen_spr_power8_tm(VAR_0); gen_spr_power8_pspb(VAR_0); gen_spr_vtb(VAR_0); gen_spr_power8_ic(VAR_0); gen_spr_power8_book4(VAR_0); } if (VAR_1 < BOOK3S_CPU_POWER8) { gen_spr_book3s_dbg(VAR_0); } else { gen_spr_book3s_207_dbg(VAR_0); } #if !defined(CONFIG_USER_ONLY)
switch (VAR_1) { case BOOK3S_CPU_970:
case BOOK3S_CPU_POWER5PLUS:
VAR_0->slb_nr = 64; break; case BOOK3S_CPU_POWER7:
case BOOK3S_CPU_POWER8:
default:
VAR_0->slb_nr = 32; break; } #endif
switch (VAR_1) { case BOOK3S_CPU_970:
case BOOK3S_CPU_POWER5PLUS:
init_excp_970(VAR_0); ppc970_irq_init(ppc_env_get_cpu(VAR_0)); break; case BOOK3S_CPU_POWER7:
case BOOK3S_CPU_POWER8:
init_excp_POWER7(VAR_0); ppcPOWER7_irq_init(ppc_env_get_cpu(VAR_0)); break; default:
g_assert_not_reached(); } VAR_0->dcache_line_size = 128; VAR_0->icache_line_size = 128; }