Patchwork Added ppc440x6 and ppc440x6f cores.

login
register
mail settings
Submitter Alex Rozenman
Date Jan. 27, 2011, 11:10 a.m.
Message ID <AANLkTimskGBDEA68H80hszx+o5uZKn46urwbUVvDqMFR@mail.gmail.com>
Download mbox | patch
Permalink /patch/80650/
State New
Headers show

Comments

Alex Rozenman - Jan. 27, 2011, 11:10 a.m.
Hi,

Small patch adding ppc440x6 cores.
Please push.
Andreas Färber - Jan. 29, 2011, 12:29 p.m.
Hi,

Am 27.01.2011 um 12:10 schrieb Alex Rozenman:

> Small patch adding ppc440x6 cores.
> Please push.

Please resend your patches using git-send-email so that they can be  
reviewed more easily, and don't forget the Signed-off-by. You should  
cc the ppc maintainers and prefix the subject with target-ppc. A  
longer description and some info on how to test the new code would  
also be nice. Otherwise it looks okay on first sight.

Regards,
Andreas

> -- 
> Best regards,
> Alex Rozenman (rozenman@gmail.com).
>
> <0001-Added-ppc440x6-and-ppc440x6f-cores.patch>

Patch

From 96f21d28bc9dc7404b664a890da299fdaaf86667 Mon Sep 17 00:00:00 2001
From: Alex Rozenman <rozenman@gmail.com>
Date: Thu, 27 Jan 2011 13:06:32 +0200
Subject: [PATCH] Added ppc440x6 and ppc440x6f cores.

---
 target-ppc/translate_init.c |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index dfcd949..bc83e83 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -1403,7 +1403,7 @@  static void gen_spr_BookE (CPUPPCState *env, uint64_t ivor_mask)
     /* XXX : not implemented */
     spr_register(env, SPR_BOOKE_DBCR0, "DBCR0",
                  SPR_NOACCESS, SPR_NOACCESS,
-                 &spr_read_generic, &spr_write_generic,
+                 &spr_read_generic, &spr_write_40x_dbcr0,
                  0x00000000);
     /* XXX : not implemented */
     spr_register(env, SPR_BOOKE_DBCR1, "DBCR1",
@@ -1464,7 +1464,7 @@  static void gen_spr_BookE (CPUPPCState *env, uint64_t ivor_mask)
                  0x00000000);
     spr_register(env, SPR_BOOKE_DECAR, "DECAR",
                  SPR_NOACCESS, SPR_NOACCESS,
-                 SPR_NOACCESS, &spr_write_generic,
+                 SPR_NOACCESS, &spr_write_40x_pit,
                  0x00000000);
     /* SPRGs */
     spr_register(env, SPR_USPRG0, "USPRG0",
@@ -3658,6 +3658,39 @@  static void init_proc_440x5 (CPUPPCState *env)
     ppc40x_irq_init(env);
 }
 
+/* PowerPC 440x6                                                             */
+#define POWERPC_INSNS_440x6  (POWERPC_INSNS_440x5 | PPC_DCRX | PPC_DCRUX)
+#define POWERPC_MSRM_440x6   (POWERPC_MSRM_440x5)
+#define POWERPC_MMU_440x6    (POWERPC_MMU_440x5)
+#define POWERPC_EXCP_440x6   (POWERPC_EXCP_440x5)
+#define POWERPC_INPUT_440x6  (POWERPC_INPUT_440x5)
+#define POWERPC_BFDM_440x6   (POWERPC_BFDM_440x5)
+#define POWERPC_FLAG_440x6   (POWERPC_FLAG_440x5)
+#define check_pow_440x6      check_pow_440x5
+
+static void init_proc_440x6 (CPUPPCState *env)
+{
+    init_proc_440x5 (env);
+}
+
+/* PowerPC 440x6f                                                            */
+#define POWERPC_INSNS_440x6f (POWERPC_INSNS_440x6 | PPC_FLOAT | \
+                              PPC_FLOAT_FRES | PPC_FLOAT_FSEL | \
+                              PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE |     \
+                              PPC_FLOAT_STFIWX)
+#define POWERPC_MSRM_440x6f  (POWERPC_MSRM_440x6)
+#define POWERPC_MMU_440x6f   (POWERPC_MMU_440x6)
+#define POWERPC_EXCP_440x6f  (POWERPC_EXCP_440x6)
+#define POWERPC_INPUT_440x6f (POWERPC_INPUT_440x6)
+#define POWERPC_BFDM_440x6f  (POWERPC_BFDM_440x6)
+#define POWERPC_FLAG_440x6f  (POWERPC_FLAG_440x6)
+#define check_pow_440x6f     check_pow_440x6
+
+static void init_proc_440x6f (CPUPPCState *env)
+{
+    init_proc_440x6 (env);
+}
+
 /* PowerPC 460 (guessed)                                                     */
 #define POWERPC_INSNS_460    (PPC_INSNS_BASE | PPC_STRING |                   \
                               PPC_DCR | PPC_DCRX  | PPC_DCRUX |               \
@@ -6536,6 +6569,8 @@  enum {
     CPU_POWERPC_440A4              = xxx,
 #endif
     CPU_POWERPC_440_XILINX         = 0x7ff21910,
+    CPU_POWERPC_440x6              = 0x7ff21910,
+    CPU_POWERPC_440x6f             = 0x7ff21910,
 #if 0
     CPU_POWERPC_440A5              = xxx,
 #endif
@@ -7466,6 +7501,9 @@  static const ppc_def_t ppc_defs[] = {
 #endif
     /* PowerPC 440 Xilinx 5                                                  */
     POWERPC_DEF("440-Xilinx",    CPU_POWERPC_440_XILINX,             440x5),
+    /* PowerPC 440x6                                                         */
+    POWERPC_DEF("440x6",         CPU_POWERPC_440x6,                  440x6),
+    POWERPC_DEF("440x6f",         CPU_POWERPC_440x6f,                  440x6f),
 #if defined (TODO)
     /* PowerPC 440 A5                                                        */
     POWERPC_DEF("440A5",         CPU_POWERPC_440A5,                  440x5),
-- 
1.7.0.4