|
| From: | Alexander Graf |
| Subject: | Re: [Qemu-ppc] [PATCH v3 15/24] target-ppc: Refactor class init for POWER7/8 |
| Date: | Wed, 28 May 2014 02:14:35 +0200 |
| User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 |
On 27.05.14 12:37, Alexey Kardashevskiy wrote:
This extends init_proc_POWER to support POWER7 and POWER8. Signed-off-by: Alexey Kardashevskiy <address@hidden> --- target-ppc/translate_init.c | 96 ++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 37 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index ca592ed..e39a44d 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -7276,6 +7276,9 @@ POWERPC_FAMILY(e600)(ObjectClass *oc, void *data) enum BOOK3S_CPU_TYPE { BOOK3S_CPU_970, BOOK3S_CPU_POWER5PLUS, + BOOK3S_CPU_POWER6, + BOOK3S_CPU_POWER7, + BOOK3S_CPU_POWER8 };static int check_pow_970 (CPUPPCState *env)@@ -7582,28 +7585,70 @@ static void init_proc_POWER(CPUPPCState *env, int version) gen_spr_book3s_pmu(env); gen_spr_book3s_dbg(env);- gen_spr_970_hid(env);- gen_spr_970_hior(env); - gen_low_BATs(env); - gen_spr_970_ctrl(env); - gen_spr_970_pmu(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_ctrl(env); + gen_spr_970_pmu(env); + break; + case BOOK3S_CPU_POWER7: + case BOOK3S_CPU_POWER8: + default:
We're probably better off with a g_assert_not_reached() for default: to make sure we catch bugs early on.
+ gen_spr_book3s_ids(env);
+ gen_spr_book3s_common(env);
+ gen_spr_amr(env);
+ gen_spr_book3s_purr(env);
+ break;
+ }
if (version >= BOOK3S_CPU_POWER5PLUS) {
gen_spr_book3s_lpar(env);
gen_spr_book3s_external_control(env);
} else {
gen_spr_970_lpar(env);
}
-
- gen_spr_970_dbg(env);
+ if (version == BOOK3S_CPU_970) {
+ gen_spr_970_dbg(env);
+ }
+ if (version >= BOOK3S_CPU_POWER6) {
+ gen_spr_book3s_pcr(env);
+ gen_spr_power6_dbg(env);
+ }
+ if (version >= BOOK3S_CPU_POWER8) {
+ gen_spr_power8_branch_control(env);
+ }
#if !defined(CONFIG_USER_ONLY)
- env->slb_nr = 64;
+ 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
- init_excp_970(env);
+ /* Allocate hardware IRQ controller */
+ switch (version) {
+ case BOOK3S_CPU_970:
+ case BOOK3S_CPU_POWER5PLUS:
+ init_excp_970(env);
+ ppc970_irq_init(env);
+ break;
+ case BOOK3S_CPU_POWER7:
+ case BOOK3S_CPU_POWER8:
+ default:
same here Alex
| [Prev in Thread] | Current Thread | [Next in Thread] |