OSDN Git Service

2004-06-25 Dave Brolley <brolley@redhat.com>
authorbrolley <brolley>
Fri, 25 Jun 2004 17:44:35 +0000 (17:44 +0000)
committerbrolley <brolley>
Fri, 25 Jun 2004 17:44:35 +0000 (17:44 +0000)
        * tracedis.cxx (register_name): Add parameter for the cgen MACH. Save
        it in hack_list->machine or p->machine.
        (cgen_disassemble): Add parameter for the cgen MACH. Pass it to
        register_name. Use it to set info->mach.
        (arch_hack): New field 'machine'.
        (bfd_lookup_arch): Make sure the machines match.
        * cgen-cpu.h (disassemble): Add parameter for the cgen MACH.
        * compCGEN.cxx (disassemble): Add parameter for the cgen MACH. Pass it
        to cgen_disassemble.
        * tracedis.h (cgen_disassemble): Add parameter for the cgen MACH.

sid/component/cgen-cpu/ChangeLog
sid/component/cgen-cpu/cgen-cpu.h
sid/component/cgen-cpu/compCGEN.cxx
sid/component/cgen-cpu/tracedis.cxx
sid/component/cgen-cpu/tracedis.h

index f861d73..aa13427 100644 (file)
@@ -1,3 +1,16 @@
+2004-06-25  Dave Brolley  <brolley@redhat.com>
+
+       * tracedis.cxx (register_name): Add parameter for the cgen MACH. Save
+       it in hack_list->machine or p->machine.
+       (cgen_disassemble): Add parameter for the cgen MACH. Pass it to
+       register_name. Use it to set info->mach.
+       (arch_hack): New field 'machine'.
+       (bfd_lookup_arch): Make sure the machines match.
+       * cgen-cpu.h (disassemble): Add parameter for the cgen MACH.
+       * compCGEN.cxx (disassemble): Add parameter for the cgen MACH. Pass it
+       to cgen_disassemble.
+       * tracedis.h (cgen_disassemble): Add parameter for the cgen MACH.
+
 2004-05-08  Robert Cragie <rcc@jennic.com>
 
        * Makefile.am (_LIBADD, _DEPENDENCIES): Add opcodes/dis-init.c.
index 4399ab8..c8aee0e 100644 (file)
@@ -1,6 +1,6 @@
 // cgen-cpu.h  -*- C++ -*-
 
-// Copyright (C) 2000, 2001, 2002, 2003 Red Hat.
+// Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat.
 // This file is part of SID and is licensed under the GPL.
 // See the file COPYING.SID for conditions for redistribution.
 
@@ -68,7 +68,7 @@ public:
   // Disassembly tracing support
   void disassemble (PCADDR pc, disassembler_ftype printfn,
                    enum bfd_flavour flavour, enum bfd_architecture arch,
-                   enum bfd_endian endian, const char *name, unsigned long isa_mask = 0);
+                   enum bfd_endian endian, const char *name, unsigned long isa_mask = 0, int machine = 0);
   struct disassemble_info info;
 protected:
   static int cgen_read_memory (bfd_vma memaddr, bfd_byte *myaddr,
index 378c5f6..bce8a06 100644 (file)
@@ -1,6 +1,6 @@
 // compCGEN.cxx - CPU components.  -*- C++ -*-
 
-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Red Hat.
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Red Hat.
 // This file is part of SID and is licensed under the GPL.
 // See the file COPYING.SID for conditions for redistribution.
 
@@ -155,7 +155,8 @@ cgen::cgen_bi_endian_cpu::disassemble (PCADDR pc,
   enum bfd_architecture arch,
   enum bfd_endian endian,
   const char *name,
-  unsigned long isa_mask)
+  unsigned long isa_mask,
+  int machine)
 {
   cgen_disassemble((bfd_vma)pc, &this->info, this,
                    & cgen_bi_endian_cpu::cgen_read_memory,
@@ -165,6 +166,7 @@ cgen::cgen_bi_endian_cpu::disassemble (PCADDR pc,
                    printfn,
                    flavour,
                    arch,
+                  machine,
                    endian,
                   name,
                   isa_mask);
index b7f8393..bd80c2b 100644 (file)
@@ -1,6 +1,6 @@
 // tracedis.cxx - disassembly tracing support.  -*- C++ -*-
 
-// Copyright (C) 2001, 2002 Red Hat.
+// Copyright (C) 2001-2004 Red Hat.
 // This file is part of SID and is licensed under the GPL.
 // See the file COPYING.SID for conditions for redistribution.
 
@@ -12,7 +12,7 @@
 #include "sidcomputil.h"
 #include "sidcpuutil.h"
 
-void register_name(enum bfd_architecture, const char *);
+void register_name(enum bfd_architecture, const char *, int);
 
 // XXX: for compatibility with older libraries
 static
@@ -41,16 +41,18 @@ cgen_disassemble(bfd_vma pc,
                 disassembler_ftype fp,
                 enum bfd_flavour flavour,
                 enum bfd_architecture arch,
+                int machine,
                 enum bfd_endian endian,
                 const char *name,
                 unsigned long isa_mask)
 {
-  register_name(arch, name);
+  register_name(arch, name, machine);
   INIT_DISASSEMBLE_INFO(*info, this_ptr, trace_printf);
   info->application_data = this_ptr;
   info->flavour = flavour;
   info->insn_sets = isa_mask; /* may be 0 */
   info->arch = arch;
+  info->mach = machine;
   info->endian = endian;
   info->read_memory_func = read_mem_func;
   info->memory_error_func = memory_error_func;
@@ -174,13 +176,14 @@ bfd_get_bits (const void* addr, int bits, int big_p)
 struct bfd_arch_hack {
   struct bfd_arch_hack *next;
   enum bfd_architecture arch;
+  int machine;
   const char *name;
 };
 
 struct bfd_arch_hack *hack_list;
 
 void
-register_name(enum bfd_architecture arch, const char *name)
+register_name(enum bfd_architecture arch, const char *name, int machine)
 {
   struct bfd_arch_hack *p;
 
@@ -189,6 +192,7 @@ register_name(enum bfd_architecture arch, const char *name)
       hack_list = (struct bfd_arch_hack *)xmalloc(sizeof *hack_list);
       hack_list->next = NULL;
       hack_list->arch = arch;
+      hack_list->machine = machine;
       hack_list->name = name;
       return;
     }
@@ -197,11 +201,13 @@ register_name(enum bfd_architecture arch, const char *name)
     if (strcmp(p->name, name) == 0)
       {
        p->arch = arch;
+       p->machine = machine;
        return;
       }
   p = (struct bfd_arch_hack *)xmalloc(sizeof *hack_list);
   p->next = hack_list;
   p->arch = arch;
+  p->machine = machine;
   p->name = name;
 }
 
@@ -213,7 +219,7 @@ bfd_lookup_arch (enum bfd_architecture arch, unsigned long machine)
 
   for (b = hack_list; b->name; b++)
     {
-      if (b->arch == arch)
+      if (b->arch == arch && b->machine == machine)
        {
           info.printable_name = b->name;
           return &info;
index 5d37053..6ff1f20 100644 (file)
@@ -9,4 +9,4 @@ typedef void (*MEMERR)(int status, bfd_vma memaddr, struct disassemble_info *inf
 typedef void (*PRINTADDR)(bfd_vma addr, struct disassemble_info *info);
 typedef int (*SYMATADDR)(bfd_vma addr, struct disassemble_info * info);
 
-void cgen_disassemble(bfd_vma, disassemble_info *, void *, READMEM, MEMERR, PRINTADDR, SYMATADDR, disassembler_ftype, enum bfd_flavour, enum bfd_architecture, enum bfd_endian, const char *, unsigned long isa_mask);
+void cgen_disassemble(bfd_vma, disassemble_info *, void *, READMEM, MEMERR, PRINTADDR, SYMATADDR, disassembler_ftype, enum bfd_flavour, enum bfd_architecture, int machine, enum bfd_endian, const char *, unsigned long isa_mask);