+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.
// 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.
// 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,
// 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.
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,
printfn,
flavour,
arch,
+ machine,
endian,
name,
isa_mask);
// 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.
#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
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;
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;
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;
}
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;
}
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;
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);