From decb5c587d6b5cfd343a6d6492113a61ff00f6d4 Mon Sep 17 00:00:00 2001 From: brolley Date: Fri, 25 Jun 2004 17:44:35 +0000 Subject: [PATCH] 2004-06-25 Dave Brolley * 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 | 13 +++++++++++++ sid/component/cgen-cpu/cgen-cpu.h | 4 ++-- sid/component/cgen-cpu/compCGEN.cxx | 6 ++++-- sid/component/cgen-cpu/tracedis.cxx | 16 +++++++++++----- sid/component/cgen-cpu/tracedis.h | 2 +- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/sid/component/cgen-cpu/ChangeLog b/sid/component/cgen-cpu/ChangeLog index f861d73441..aa13427d9c 100644 --- a/sid/component/cgen-cpu/ChangeLog +++ b/sid/component/cgen-cpu/ChangeLog @@ -1,3 +1,16 @@ +2004-06-25 Dave Brolley + + * 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 * Makefile.am (_LIBADD, _DEPENDENCIES): Add opcodes/dis-init.c. diff --git a/sid/component/cgen-cpu/cgen-cpu.h b/sid/component/cgen-cpu/cgen-cpu.h index 4399ab89c8..c8aee0e448 100644 --- a/sid/component/cgen-cpu/cgen-cpu.h +++ b/sid/component/cgen-cpu/cgen-cpu.h @@ -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, diff --git a/sid/component/cgen-cpu/compCGEN.cxx b/sid/component/cgen-cpu/compCGEN.cxx index 378c5f6049..bce8a06112 100644 --- a/sid/component/cgen-cpu/compCGEN.cxx +++ b/sid/component/cgen-cpu/compCGEN.cxx @@ -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); diff --git a/sid/component/cgen-cpu/tracedis.cxx b/sid/component/cgen-cpu/tracedis.cxx index b7f8393060..bd80c2bac3 100644 --- a/sid/component/cgen-cpu/tracedis.cxx +++ b/sid/component/cgen-cpu/tracedis.cxx @@ -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; diff --git a/sid/component/cgen-cpu/tracedis.h b/sid/component/cgen-cpu/tracedis.h index 5d37053557..6ff1f201cd 100644 --- a/sid/component/cgen-cpu/tracedis.h +++ b/sid/component/cgen-cpu/tracedis.h @@ -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); -- 2.11.0