From b09cd072df07c63997cc81b6767f2e145d9496e5 Mon Sep 17 00:00:00 2001
From: "Edgar E. Iglesias" <edgar@axis.com>
Date: Mon, 10 Jan 2011 22:31:09 +0100
Subject: cris: Support disassembly of crisv10

Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
---
 cris-dis.c | 9 +++++++--
 dis-asm.h  | 1 +
 disas.c    | 9 +++++++--
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/cris-dis.c b/cris-dis.c
index afd775c29b..5fa67d9f29 100644
--- a/cris-dis.c
+++ b/cris-dis.c
@@ -2767,7 +2767,6 @@ print_insn_cris_generic (bfd_vma memaddr,
 }
 
 /* Disassemble, prefixing register names with `$'.  CRIS v0..v10.  */
-#if 0
 static int
 print_insn_cris_with_register_prefix (bfd_vma vma,
 				      disassemble_info *info)
@@ -2777,7 +2776,6 @@ print_insn_cris_with_register_prefix (bfd_vma vma,
     return -1;
   return print_insn_cris_generic (vma, info, true);
 }
-#endif
 /* Disassemble, prefixing register names with `$'.  CRIS v32.  */
 
 static int
@@ -2842,6 +2840,13 @@ print_insn_crisv10_v32_without_register_prefix (bfd_vma vma,
 }
 #endif
 
+int
+print_insn_crisv10 (bfd_vma vma,
+		    disassemble_info *info)
+{
+  return print_insn_cris_with_register_prefix(vma, info);
+}
+
 int
 print_insn_crisv32 (bfd_vma vma,
 		    disassemble_info *info)
diff --git a/dis-asm.h b/dis-asm.h
index 3fb483815a..356459c5fd 100644
--- a/dis-asm.h
+++ b/dis-asm.h
@@ -397,6 +397,7 @@ extern int print_insn_tic30		(bfd_vma, disassemble_info*);
 extern int print_insn_ppc		(bfd_vma, disassemble_info*);
 extern int print_insn_s390		(bfd_vma, disassemble_info*);
 extern int print_insn_crisv32           (bfd_vma, disassemble_info*);
+extern int print_insn_crisv10           (bfd_vma, disassemble_info*);
 extern int print_insn_microblaze        (bfd_vma, disassemble_info*);
 extern int print_insn_ia64              (bfd_vma, disassemble_info*);
 
diff --git a/disas.c b/disas.c
index afe331fdb9..dd2db142d7 100644
--- a/disas.c
+++ b/disas.c
@@ -208,8 +208,13 @@ void target_disas(FILE *out, target_ulong code, target_ulong size, int flags)
     disasm_info.mach = bfd_mach_alpha;
     print_insn = print_insn_alpha;
 #elif defined(TARGET_CRIS)
-    disasm_info.mach = bfd_mach_cris_v32;
-    print_insn = print_insn_crisv32;
+    if (flags != 32) {
+        disasm_info.mach = bfd_mach_cris_v0_v10;
+        print_insn = print_insn_crisv10;
+    } else {
+        disasm_info.mach = bfd_mach_cris_v32;
+        print_insn = print_insn_crisv32;
+    }
 #elif defined(TARGET_MICROBLAZE)
     disasm_info.mach = bfd_arch_microblaze;
     print_insn = print_insn_microblaze;
-- 
cgit v1.2.3