qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH v3 15/24] target-ppc: Refactor class init for POWE


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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]