From ae1b99e42dbce238cd7eb5efd38672b8306f1148 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 3 Oct 1996 16:42:22 +0000 Subject: [PATCH] Grrr. The mn10200 and mn10300 are _not_ similar enough to easily support with a single generic configuration. So break them up into two different configurations. See the individual ChangeLogs for additional detail. --- ChangeLog | 6 ++ bfd/.Sanitize | 6 +- bfd/ChangeLog | 10 ++ bfd/Makefile.in | 12 ++- bfd/bfd-in2.h | 3 +- bfd/config.bfd | 8 +- bfd/configure | 3 +- bfd/configure.in | 3 +- bfd/{cpu-mn10x00.c => cpu-mn10200.c} | 22 +---- bfd/cpu-mn10300.c | 38 ++++++++ bfd/{elf32-mn10x00.c => elf32-mn10200.c} | 44 ++++----- bfd/elf32-mn10300.c | 111 ++++++++++++++++++++++ bfd/targets.c | 6 +- config.sub | 5 +- configure.in | 5 +- gas/config/.Sanitize | 6 +- gas/config/{tc-mn10x00.c => tc-mn10300.c} | 66 ++++++------- gas/config/tc-mn10x00.h | 48 ---------- gas/configure | 3 +- gas/configure.in | 3 +- gas/testsuite/ChangeLog | 5 +- gas/testsuite/gas/.Sanitize | 3 +- include/ChangeLog | 5 + include/dis-asm.h | 3 +- include/elf/ChangeLog | 4 + include/opcode/.Sanitize | 3 +- include/opcode/ChangeLog | 5 + include/opcode/{mn10x00.h => mn10300.h} | 24 ++--- opcodes/.Sanitize | 4 + opcodes/ChangeLog | 10 ++ opcodes/{mn10x00-dis.c => mn10200-dis.c} | 6 +- opcodes/{mn10x00-opc.c => mn10200-opc.c} | 12 +-- opcodes/mn10300-dis.c | 34 +++++++ opcodes/mn10300-opc.c | 51 ++++++++++ 34 files changed, 411 insertions(+), 166 deletions(-) rename bfd/{cpu-mn10x00.c => cpu-mn10200.c} (77%) mode change 100755 => 100644 create mode 100644 bfd/cpu-mn10300.c rename bfd/{elf32-mn10x00.c => elf32-mn10200.c} (65%) create mode 100644 bfd/elf32-mn10300.c rename gas/config/{tc-mn10x00.c => tc-mn10300.c} (92%) delete mode 100644 gas/config/tc-mn10x00.h rename include/opcode/{mn10x00.h => mn10300.h} (80%) rename opcodes/{mn10x00-dis.c => mn10200-dis.c} (90%) mode change 100755 => 100644 rename opcodes/{mn10x00-opc.c => mn10200-opc.c} (84%) create mode 100644 opcodes/mn10300-dis.c create mode 100644 opcodes/mn10300-opc.c diff --git a/ChangeLog b/ChangeLog index fdda615cae2..c8eb6a97634 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Oct 3 09:28:25 1996 Jeffrey A Law (law@cygnus.com) + + * configure.in: Break mn10x00 support into separate + mn10200 and mn10300 configurations. + * config.sub: Likewise. + Wed Oct 2 22:27:52 1996 Jeffrey A Law (law@cygnus.com) * configure.in: Add lots of stuff to noconfigdirs for diff --git a/bfd/.Sanitize b/bfd/.Sanitize index 4186890aea7..14662f1fbed 100644 --- a/bfd/.Sanitize +++ b/bfd/.Sanitize @@ -137,7 +137,8 @@ cpu-i960.c cpu-m68k.c cpu-m88k.c cpu-mips.c -cpu-mn10x00.c +cpu-mn10200.c +cpu-mn10300.c cpu-ns32k.c cpu-powerpc.c cpu-rs6000.c @@ -163,7 +164,8 @@ elf32-i860.c elf32-m68k.c elf32-m88k.c elf32-mips.c -elf32-mn10x00.c +elf32-mn10200.c +elf32-mn10300.c elf32-ppc.c elf32-sh.c elf32-sparc.c diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ce0335c5686..6b76ef4bbd1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +Thu Oct 3 09:29:09 1996 Jeffrey A Law (law@cygnus.com) + + * cpu-mn10x00.c, elf32-mn10x00: Removed. + * cpu-mn10200.c, cpu-mn10300.c: New files. + * elf32-mn10200.c, elf32-mn10300.c: New files. + * Makefile.in: Break mn10x00 support into two separate + configurations, mn10200 and mn10300. + * archures.c, config.bfd, configure.in, elf.c, targets.c: Likewise. + * bfd-in2.h, configure: Rebuilt. + Thu Oct 3 15:38:19 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) * Makefile.in (do_clean): Move config.log to do_distclean. diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 4d4b96d6c55..5cbc4369b63 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -131,7 +131,8 @@ ALL_MACHINES = \ cpu-m68k.o \ cpu-m88k.o \ cpu-mips.o \ - cpu-mn10x00.o \ + cpu-mn10200.o \ + cpu-mn10300.o \ cpu-ns32k.o \ cpu-powerpc.o \ cpu-rs6000.o \ @@ -219,7 +220,8 @@ BFD32_BACKENDS = \ elf32-m68k.o \ elf32-m88k.o \ elf32-mips.o \ - elf32-mn10x00.o \ + elf32-mn10200.o \ + elf32-mn10300.o \ elf32-ppc.o \ elf32-sh.o \ elf32-sparc.o \ @@ -827,7 +829,11 @@ elf32-m32r.o: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \ elf32-target.h end-sanitize-m32r: -elf32-mn10x00.o: elf32-mn10x00.c elf-bfd.h $(INCDIR)/elf/common.h \ +elf32-mn10200.o: elf32-mn10200.c elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ + elf32-target.h + +elf32-mn10300.o: elf32-mn10300.c elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ elf32-target.h diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 67dbcb982b7..252931d0218 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1229,7 +1229,8 @@ enum bfd_architecture /* start-sanitize-m32r */ bfd_arch_m32r, /* Mitsubishi M32R */ /* end-sanitize-m32r */ - bfd_arch_mn10x00, /* Matsushita MN10x00 */ + bfd_arch_mn10200, /* Matsushita MN10200 */ + bfd_arch_mn10300, /* Matsushita MN10300 */ bfd_arch_last }; diff --git a/bfd/config.bfd b/bfd/config.bfd index a780acaeba4..7c9b4ee395f 100755 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -393,8 +393,12 @@ case "${targ}" in targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" ;; - mn10x00-*-*) - targ_defvec=bfd_elf32_mn10x00_vec + mn10200-*-*) + targ_defvec=bfd_elf32_mn10200_vec + ;; + + mn10300-*-*) + targ_defvec=bfd_elf32_mn10300_vec ;; ns32k-pc532-mach* | ns32k-pc532-ux*) diff --git a/bfd/configure b/bfd/configure index 51a0fc8329b..d655f1a1ad9 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1928,7 +1928,8 @@ do # end-sanitize-m32r bfd_elf32_m68k_vec) tb="$tb elf32-m68k.o elf32.o $elf" ;; bfd_elf32_m88k_vec) tb="$tb elf32-m88k.o elf32.o $elf" ;; - bfd_elf32_mn10x00_vec) tb="$tb elf32-mn10x00.o elf32.o $elf" ;; + bfd_elf32_mn10200_vec) tb="$tb elf32-mn10200.o elf32.o $elf" ;; + bfd_elf32_mn10300_vec) tb="$tb elf32-mn10300.o elf32.o $elf" ;; bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;; bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.o elf32.o $elf coff-sh.o" ;; diff --git a/bfd/configure.in b/bfd/configure.in index 8b88d41f290..467db829aa5 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -456,7 +456,8 @@ do # end-sanitize-m32r bfd_elf32_m68k_vec) tb="$tb elf32-m68k.o elf32.o $elf" ;; bfd_elf32_m88k_vec) tb="$tb elf32-m88k.o elf32.o $elf" ;; - bfd_elf32_mn10x00_vec) tb="$tb elf32-mn10x00.o elf32.o $elf" ;; + bfd_elf32_mn10200_vec) tb="$tb elf32-mn10200.o elf32.o $elf" ;; + bfd_elf32_mn10300_vec) tb="$tb elf32-mn10300.o elf32.o $elf" ;; bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;; bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.o elf32.o $elf coff-sh.o" ;; diff --git a/bfd/cpu-mn10x00.c b/bfd/cpu-mn10200.c old mode 100755 new mode 100644 similarity index 77% rename from bfd/cpu-mn10x00.c rename to bfd/cpu-mn10200.c index b8f1c568230..2a0a9888c58 --- a/bfd/cpu-mn10x00.c +++ b/bfd/cpu-mn10200.c @@ -1,4 +1,4 @@ -/* BFD support for the Matsushita 10200 and 10300 processors +/* BFD support for the Matsushita 10200 processor Copyright 1996 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -26,9 +26,9 @@ const bfd_arch_info_type bfd_mn10200_arch = 16, /* 16 bits in a word */ 24, /* 16 bits in an address */ 8, /* 8 bits in a byte */ - bfd_arch_mn10x00, + bfd_arch_mn10200, 200, - "mn10x00", + "mn10200", "mn10200", 2, true, /* the one and only */ @@ -36,19 +36,3 @@ const bfd_arch_info_type bfd_mn10200_arch = bfd_default_scan , 0, }; - -const bfd_arch_info_type bfd_mn10x00_arch = - { - 16, - 24, - 8, - bfd_arch_mn10x00, - 300, - "mn10x00", - "mn10300", - 2, - false, - bfd_default_compatible, - bfd_default_scan, - &bfd_mn10200_arch - }; diff --git a/bfd/cpu-mn10300.c b/bfd/cpu-mn10300.c new file mode 100644 index 00000000000..fc6108d407b --- /dev/null +++ b/bfd/cpu-mn10300.c @@ -0,0 +1,38 @@ +/* BFD support for the Matsushita 10300 processor + Copyright 1996 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" + +const bfd_arch_info_type bfd_mn10300_arch = + { + 32, /* 16 bits in a word */ + 32, /* 16 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_mn10300, + 300, + "mn10300", + "mn10300", + 2, + true, /* the one and only */ + bfd_default_compatible, + bfd_default_scan , + 0, + }; diff --git a/bfd/elf32-mn10x00.c b/bfd/elf32-mn10200.c similarity index 65% rename from bfd/elf32-mn10x00.c rename to bfd/elf32-mn10200.c index 15fab94400a..88c3cbecb84 100644 --- a/bfd/elf32-mn10x00.c +++ b/bfd/elf32-mn10200.c @@ -1,5 +1,5 @@ -/* Matsushita 10200 and 10300 specific support for 32-bit ELF - Copyright (C) 1994, 1995 Free Software Foundation, Inc. +/* Matsushita 10200 specific support for 32-bit ELF + Copyright (C) 1996 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); -static void mn10x00_info_to_howto_rel +static void mn10200_info_to_howto_rel PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); /* Try to minimize the amount of space occupied by relocation tables @@ -33,14 +33,14 @@ static void mn10x00_info_to_howto_rel enum reloc_type { - R_MN10x00_NONE = 0, - R_MN10x00_MAX + R_MN10200_NONE = 0, + R_MN10200_MAX }; -static reloc_howto_type elf_mn10x00_howto_table[] = +static reloc_howto_type elf_mn10200_howto_table[] = { /* */ - HOWTO (R_MN10x00_NONE, + HOWTO (R_MN10200_NONE, 0, 2, 16, @@ -48,22 +48,22 @@ static reloc_howto_type elf_mn10x00_howto_table[] = 0, complain_overflow_bitfield, bfd_elf_generic_reloc, - "R_MN10x00_NONE", + "R_MN10200_NONE", false, 0, 0, false), }; -struct mn10x00_reloc_map +struct mn10200_reloc_map { unsigned char bfd_reloc_val; unsigned char elf_reloc_val; }; -static const struct mn10x00_reloc_map mn10x00_reloc_map[] = +static const struct mn10200_reloc_map mn10200_reloc_map[] = { - { BFD_RELOC_NONE, R_MN10x00_NONE, }, + { BFD_RELOC_NONE, R_MN10200_NONE, }, }; static reloc_howto_type * @@ -74,11 +74,11 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code) unsigned int i; for (i = 0; - i < sizeof (mn10x00_reloc_map) / sizeof (struct mn10x00_reloc_map); + i < sizeof (mn10200_reloc_map) / sizeof (struct mn10200_reloc_map); i++) { - if (mn10x00_reloc_map[i].bfd_reloc_val == code) - return &elf_mn10x00_howto_table[mn10x00_reloc_map[i].elf_reloc_val]; + if (mn10200_reloc_map[i].bfd_reloc_val == code) + return &elf_mn10200_howto_table[mn10200_reloc_map[i].elf_reloc_val]; } return NULL; @@ -87,7 +87,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code) /* Set the howto pointer for an V850 ELF reloc. */ static void -mn10x00_info_to_howto_rel (abfd, cache_ptr, dst) +mn10200_info_to_howto_rel (abfd, cache_ptr, dst) bfd *abfd; arelent *cache_ptr; Elf32_Internal_Rel *dst; @@ -95,17 +95,17 @@ mn10x00_info_to_howto_rel (abfd, cache_ptr, dst) unsigned int r_type; r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_MN10x00_MAX); - cache_ptr->howto = &elf_mn10x00_howto_table[r_type]; + BFD_ASSERT (r_type < (unsigned int) R_MN10200_MAX); + cache_ptr->howto = &elf_mn10200_howto_table[r_type]; } -#define TARGET_LITTLE_SYM bfd_elf32_mn10x00_vec -#define TARGET_LITTLE_NAME "elf32-mn10x00" -#define ELF_ARCH bfd_arch_mn10x00 -#define ELF_MACHINE_CODE EM_CYGNUS_MN10x00 +#define TARGET_LITTLE_SYM bfd_elf32_mn10200_vec +#define TARGET_LITTLE_NAME "elf32-mn10200" +#define ELF_ARCH bfd_arch_mn10200 +#define ELF_MACHINE_CODE EM_CYGNUS_MN10200 #define ELF_MAXPAGESIZE 0x1000 #define elf_info_to_howto 0 -#define elf_info_to_howto_rel mn10x00_info_to_howto_rel +#define elf_info_to_howto_rel mn10200_info_to_howto_rel #include "elf32-target.h" diff --git a/bfd/elf32-mn10300.c b/bfd/elf32-mn10300.c new file mode 100644 index 00000000000..309fa40a215 --- /dev/null +++ b/bfd/elf32-mn10300.c @@ -0,0 +1,111 @@ +/* Matsushita 10300 specific support for 32-bit ELF + Copyright (C) 1996 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "elf-bfd.h" + +static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup + PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); +static void mn10300_info_to_howto_rel + PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); + +/* Try to minimize the amount of space occupied by relocation tables + on the ROM (not that the ROM won't be swamped by other ELF overhead). */ +#define USE_REL + +enum reloc_type +{ + R_MN10300_NONE = 0, + R_MN10300_MAX +}; + +static reloc_howto_type elf_mn10300_howto_table[] = +{ + /* */ + HOWTO (R_MN10300_NONE, + 0, + 2, + 16, + false, + 0, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_MN10300_NONE", + false, + 0, + 0, + false), +}; + +struct mn10300_reloc_map +{ + unsigned char bfd_reloc_val; + unsigned char elf_reloc_val; +}; + +static const struct mn10300_reloc_map mn10300_reloc_map[] = +{ + { BFD_RELOC_NONE, R_MN10300_NONE, }, +}; + +static reloc_howto_type * +bfd_elf32_bfd_reloc_type_lookup (abfd, code) + bfd *abfd; + bfd_reloc_code_real_type code; +{ + unsigned int i; + + for (i = 0; + i < sizeof (mn10300_reloc_map) / sizeof (struct mn10300_reloc_map); + i++) + { + if (mn10300_reloc_map[i].bfd_reloc_val == code) + return &elf_mn10300_howto_table[mn10300_reloc_map[i].elf_reloc_val]; + } + + return NULL; +} + +/* Set the howto pointer for an V850 ELF reloc. */ + +static void +mn10300_info_to_howto_rel (abfd, cache_ptr, dst) + bfd *abfd; + arelent *cache_ptr; + Elf32_Internal_Rel *dst; +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + BFD_ASSERT (r_type < (unsigned int) R_MN10300_MAX); + cache_ptr->howto = &elf_mn10300_howto_table[r_type]; +} + +#define TARGET_LITTLE_SYM bfd_elf32_mn10300_vec +#define TARGET_LITTLE_NAME "elf32-mn10300" +#define ELF_ARCH bfd_arch_mn10300 +#define ELF_MACHINE_CODE EM_CYGNUS_MN10300 +#define ELF_MAXPAGESIZE 0x1000 + +#define elf_info_to_howto 0 +#define elf_info_to_howto_rel mn10300_info_to_howto_rel + +#include "elf32-target.h" diff --git a/bfd/targets.c b/bfd/targets.c index 5e7a4705980..964e6567e43 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -503,7 +503,8 @@ extern const bfd_target bfd_elf32_m32r_vec; /* end-sanitize-m32r */ extern const bfd_target bfd_elf32_m68k_vec; extern const bfd_target bfd_elf32_m88k_vec; -extern const bfd_target bfd_elf32_mn10x00_vec; +extern const bfd_target bfd_elf32_mn10200_vec; +extern const bfd_target bfd_elf32_mn10300_vec; extern const bfd_target bfd_elf32_powerpc_vec; extern const bfd_target bfd_elf32_powerpcle_vec; extern const bfd_target bfd_elf32_sh_vec; @@ -664,7 +665,8 @@ const bfd_target * const bfd_target_vector[] = { /* start-sanitize-m32r */ &bfd_elf32_m32r_vec, /* end-sanitize-m32r */ - &bfd_elf32_mn10x00_vec, + &bfd_elf32_mn10200_vec, + &bfd_elf32_mn10300_vec, &bfd_elf32_m68k_vec, &bfd_elf32_m88k_vec, &bfd_elf32_sparc_vec, diff --git a/config.sub b/config.sub index 242215a0700..2762ff21ba6 100755 --- a/config.sub +++ b/config.sub @@ -186,7 +186,10 @@ case $basic_machine in basic_machine=$basic_machine-unknown ;; # end-sanitize-m32r - mn10x00) + mn10200) + basic_machine=$basic_machine-unknown + ;; + mn10300) basic_machine=$basic_machine-unknown ;; # Object if more than one company name word. diff --git a/configure.in b/configure.in index 9c0a47fcb3f..fc5318067c6 100644 --- a/configure.in +++ b/configure.in @@ -490,7 +490,10 @@ case "${target}" in noconfigdirs="$noconfigdirs target-libgloss libio libstdc++ libg++ gdb" ;; # end-sanitize-m32r - mn10x00-*-*) + mn10200-*-*) + noconfigdirs="$noconfigdirs ld gcc gdb target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++" + ;; + mn10300-*-*) noconfigdirs="$noconfigdirs ld gcc gdb target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++" ;; powerpc-*-aix*) diff --git a/gas/config/.Sanitize b/gas/config/.Sanitize index da1092afb49..97641cb645b 100644 --- a/gas/config/.Sanitize +++ b/gas/config/.Sanitize @@ -120,8 +120,10 @@ tc-m88k.c tc-m88k.h tc-mips.c tc-mips.h -tc-mn10x00.c -tc-mn10x00.h +tc-mn10200.c +tc-mn10200.h +tc-mn10300.c +tc-mn10300.h tc-ns32k.c tc-ns32k.h tc-ppc.c diff --git a/gas/config/tc-mn10x00.c b/gas/config/tc-mn10300.c similarity index 92% rename from gas/config/tc-mn10x00.c rename to gas/config/tc-mn10300.c index db3a3860f2d..c928a86c338 100644 --- a/gas/config/tc-mn10x00.c +++ b/gas/config/tc-mn10300.c @@ -1,4 +1,4 @@ -/* tc-mn10x00.c -- Assembler code for the Matsushita 10x00 +/* tc-mn10300.c -- Assembler code for the Matsushita 10300 Copyright (C) 1996 Free Software Foundation. @@ -23,7 +23,7 @@ #include #include "as.h" #include "subsegs.h" -#include "opcode/mn10x00.h" +#include "opcode/mn10300.h" /* Structure to hold information about predefined registers. */ struct reg_name @@ -54,25 +54,25 @@ const char FLT_CHARS[] = "dD"; /* local functions */ -static unsigned long mn10x00 - PARAMS ((unsigned long insn, const struct mn10x00_operand *operand, +static unsigned long mn10300 + PARAMS ((unsigned long insn, const struct mn10300_operand *operand, offsetT val, char *file, unsigned int line)); static int reg_name_search PARAMS ((const struct reg_name *, int, const char *)); static boolean register_name PARAMS ((expressionS *expressionP)); static boolean system_register_name PARAMS ((expressionS *expressionP)); static boolean cc_name PARAMS ((expressionS *expressionP)); -static bfd_reloc_code_real_type mn10x00_reloc_prefix PARAMS ((void)); +static bfd_reloc_code_real_type mn10300_reloc_prefix PARAMS ((void)); /* fixups */ #define MAX_INSN_FIXUPS (5) -struct mn10x00_fixup +struct mn10300_fixup { expressionS exp; int opindex; bfd_reloc_code_real_type reloc; }; -struct mn10x00_fixup fixups[MAX_INSN_FIXUPS]; +struct mn10300_fixup fixups[MAX_INSN_FIXUPS]; static int fc; const char *md_shortopts = ""; @@ -88,7 +88,7 @@ const pseudo_typeS md_pseudo_table[] = }; /* Opcode hash table. */ -static struct hash_control *mn10x00_hash; +static struct hash_control *mn10300_hash; /* This table is sorted. Suitable for searching by a binary search. */ static const struct reg_name pre_defined_registers[] = @@ -345,7 +345,7 @@ void md_show_usage (stream) FILE *stream; { - fprintf(stream, "MN10x00 options:\n\ + fprintf(stream, "MN10300 options:\n\ none yet\n"); } @@ -429,29 +429,29 @@ void md_begin () { char *prev_name = ""; - register const struct mn10x00_opcode *op; + register const struct mn10300_opcode *op; - mn10x00_hash = hash_new(); + mn10300_hash = hash_new(); - /* Insert unique names into hash table. The MN10x00 instruction set + /* Insert unique names into hash table. The MN10300 instruction set has many identical opcode names that have different opcodes based on the operands. This hash table then provides a quick index to the first opcode with a particular name in the opcode table. */ - op = mn10x00_opcodes; + op = mn10300_opcodes; while (op->name) { if (strcmp (prev_name, op->name)) { prev_name = (char *) op->name; - hash_insert (mn10x00_hash, op->name, (char *) op); + hash_insert (mn10300_hash, op->name, (char *) op); } op++; } } static bfd_reloc_code_real_type -mn10x00_reloc_prefix() +mn10300_reloc_prefix() { if (strncmp(input_line_pointer, "hi0(", 4) == 0) { @@ -479,8 +479,8 @@ md_assemble (str) char *str; { char *s; - struct mn10x00_opcode *opcode; - struct mn10x00_opcode *next_opcode; + struct mn10300_opcode *opcode; + struct mn10300_opcode *next_opcode; const unsigned char *opindex_ptr; int next_opindex; unsigned long insn, size; @@ -496,7 +496,7 @@ md_assemble (str) *s++ = '\0'; /* find the first opcode with the proper name */ - opcode = (struct mn10x00_opcode *)hash_find (mn10x00_hash, str); + opcode = (struct mn10300_opcode *)hash_find (mn10300_hash, str); if (opcode == NULL) { as_bad ("Unrecognized opcode: `%s'", str); @@ -519,17 +519,17 @@ md_assemble (str) insn = opcode->opcode; for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++) { - const struct mn10x00_operand *operand; + const struct mn10300_operand *operand; char *hold; expressionS ex; if (next_opindex == 0) { - operand = &mn10x00_operands[*opindex_ptr]; + operand = &mn10300_operands[*opindex_ptr]; } else { - operand = &mn10x00_operands[next_opindex]; + operand = &mn10300_operands[next_opindex]; next_opindex = 0; } @@ -544,7 +544,7 @@ md_assemble (str) /* lo(), hi(), hi0(), etc... */ - if ((reloc = mn10x00_reloc_prefix()) != BFD_RELOC_UNUSED) + if ((reloc = mn10300_reloc_prefix()) != BFD_RELOC_UNUSED) { expression(&ex); @@ -575,7 +575,7 @@ md_assemble (str) break; } - insn = mn10x00_insert_operand (insn, operand, ex.X_add_number, + insn = mn10300_insert_operand (insn, operand, ex.X_add_number, (char *) NULL, 0); } else @@ -601,12 +601,12 @@ md_assemble (str) goto error; case O_register: - insn = mn10x00_insert_operand (insn, operand, ex.X_add_number, + insn = mn10300_insert_operand (insn, operand, ex.X_add_number, (char *) NULL, 0); break; case O_constant: - insn = mn10x00_insert_operand (insn, operand, ex.X_add_number, + insn = mn10300_insert_operand (insn, operand, ex.X_add_number, (char *) NULL, 0); break; @@ -673,9 +673,9 @@ md_assemble (str) md_apply_fix. */ for (i = 0; i < fc; i++) { - const struct mn10x00_operand *operand; + const struct mn10300_operand *operand; - operand = &mn10x00_operands[fixups[i].opindex]; + operand = &mn10300_operands[fixups[i].opindex]; if (fixups[i].reloc != BFD_RELOC_UNUSED) { reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); @@ -701,7 +701,7 @@ md_assemble (str) { fix_new_exp (frag_now, f - frag_now->fr_literal, 4, &fixups[i].exp, - 1 /* FIXME: MN10x00_OPERAND_RELATIVE ??? */, + 1 /* FIXME: MN10300_OPERAND_RELATIVE ??? */, ((bfd_reloc_code_real_type) (fixups[i].opindex + (int) BFD_RELOC_UNUSED))); } @@ -790,12 +790,12 @@ md_apply_fix3 (fixp, valuep, seg) if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED) { int opindex; - const struct mn10x00_operand *operand; + const struct mn10300_operand *operand; char *where; unsigned long insn; opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED; - operand = &mn10x00_operands[opindex]; + operand = &mn10300_operands[opindex]; /* Fetch the instruction, insert the fully resolved operand value, and stuff the instruction back again. @@ -805,7 +805,7 @@ md_apply_fix3 (fixp, valuep, seg) where = fixp->fx_frag->fr_literal + fixp->fx_where; insn = bfd_getl32((unsigned char *) where); - insn = mn10x00_insert_operand (insn, operand, (offsetT) value, + insn = mn10300_insert_operand (insn, operand, (offsetT) value, fixp->fx_file, fixp->fx_line); bfd_putl32((bfd_vma) insn, (unsigned char *) where); @@ -845,9 +845,9 @@ md_apply_fix3 (fixp, valuep, seg) /* Insert an operand value into an instruction. */ static unsigned long -mn10x00_insert_operand (insn, operand, val, file, line) +mn10300_insert_operand (insn, operand, val, file, line) unsigned long insn; - const struct mn10x00_operand *operand; + const struct mn10300_operand *operand; offsetT val; char *file; unsigned int line; diff --git a/gas/config/tc-mn10x00.h b/gas/config/tc-mn10x00.h deleted file mode 100644 index c5b2addb40f..00000000000 --- a/gas/config/tc-mn10x00.h +++ /dev/null @@ -1,48 +0,0 @@ -/* tc-mn10x00.h -- Header file for tc-mn10x00.c. - Copyright (C) 1996 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define TC_MN10x00 - -#ifndef BFD_ASSEMBLER - #error MN10x00 support requires BFD_ASSEMBLER -#endif - -/* The target BFD architecture. */ -#define TARGET_ARCH bfd_arch_mn10x00 - -#define TARGET_FORMAT "elf32-mn10x00" - -#define MD_APPLY_FIX3 -#define md_operand(x) - -/* Permit temporary numeric labels. */ -#define LOCAL_LABELS_FB 1 - -#define LOCAL_LABEL(name) ((name[0] == '.' \ - && (name[1] == 'L' || name[1] == '.')) \ - || (name[0] == '_' && name[1] == '.' && name[2] == 'L' \ - && name[3] == '_')) - -#define FAKE_LABEL_NAME ".L0\001" -#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ - -/* We don't need to handle .word strangely. */ -#define WORKING_DOT_WORD - -#define md_number_to_chars number_to_chars_littleendian diff --git a/gas/configure b/gas/configure index b53b1e2d157..67918189740 100755 --- a/gas/configure +++ b/gas/configure @@ -876,7 +876,8 @@ for this_target in $target $canon_targets ; do *) targ=mips-lit ;; esac ;; - mn10x00-*-*) fmt=elf bfd_gas=yes ;; + mn10200-*-*) fmt=elf bfd_gas=yes ;; + mn10300-*-*) fmt=elf bfd_gas=yes ;; ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*) fmt=coff em=pe case "$endian" in diff --git a/gas/configure.in b/gas/configure.in index 3735f4b79e4..8325e033965 100644 --- a/gas/configure.in +++ b/gas/configure.in @@ -230,7 +230,8 @@ changequote([,])dnl *) targ=mips-lit ;; esac ;; - mn10x00-*-*) fmt=elf bfd_gas=yes ;; + mn10200-*-*) fmt=elf bfd_gas=yes ;; + mn10300-*-*) fmt=elf bfd_gas=yes ;; ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*) fmt=coff em=pe case "$endian" in diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 397cfd3b8a2..02d0a5ce8e2 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,6 +1,7 @@ -Thu Oct 3 00:14:04 1996 Jeffrey A Law (law@cygnus.com) +Thu Oct 3 09:57:03 1996 Jeffrey A Law (law@cygnus.com) - * gas/mn10x00: New directory for Matsushita 10x00 tests. + * gas/mn10200, gas/mn10300: New directorys for Matsushita + mn10200 and mn10300 tests. Tue Oct 1 15:38:28 1996 Ian Lance Taylor diff --git a/gas/testsuite/gas/.Sanitize b/gas/testsuite/gas/.Sanitize index 2dc9ec22245..9be0821ad09 100644 --- a/gas/testsuite/gas/.Sanitize +++ b/gas/testsuite/gas/.Sanitize @@ -48,7 +48,8 @@ m68k m68k-coff macros mips -mn10x00 +mn10200 +mn10300 mri sh sparc diff --git a/include/ChangeLog b/include/ChangeLog index 79b16d475da..a63b82ceb61 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 3 10:33:14 1996 Jeffrey A Law (law@cygnus.com) + + * dis-asm.h (print_insn_mn10x00): Delete declaration. + (print_insn_mn10200, print_insn_mn10300): Declare. + Wed Oct 2 21:24:43 1996 Jeffrey A Law (law@cygnus.com) * dis-asm.h (print_insn_mn10x00): Declare. diff --git a/include/dis-asm.h b/include/dis-asm.h index 3a0592749b7..e38331b428c 100644 --- a/include/dis-asm.h +++ b/include/dis-asm.h @@ -131,7 +131,8 @@ extern int print_insn_sh PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_shl PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_hppa PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_m88k PARAMS ((bfd_vma, disassemble_info*)); -extern int print_insn_mn10x00 PARAMS ((bfd_vma, disassemble_info*)); +extern int print_insn_mn10200 PARAMS ((bfd_vma, disassemble_info*)); +extern int print_insn_mn10300 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_ns32k PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_big_powerpc PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_little_powerpc PARAMS ((bfd_vma, disassemble_info*)); diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index dac3d6e6add..3c1c42b1c1b 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,7 @@ +Thu Oct 3 10:01:40 1996 Jeffrey A Law (law@cygnus.com) + + * common.h: Break mn10x00 support into mn10200 and mn10300. + Wed Oct 2 21:26:43 1996 Jeffrey A Law (law@cygnus.com) * common.h (EM_CYGNUS_MN10x00): Define. diff --git a/include/opcode/.Sanitize b/include/opcode/.Sanitize index 81362b352f7..e9cf078de43 100644 --- a/include/opcode/.Sanitize +++ b/include/opcode/.Sanitize @@ -61,7 +61,8 @@ i960.h m68k.h m88k.h mips.h -mn10x00.h +mn10200.h +mn10300.h np1.h ns32k.h pn.h diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 48dd5155ffd..56817b30ce2 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 3 10:33:46 1996 Jeffrey A Law (law@cygnus.com) + + * mn10x00.h: Delete. + * mn10200.h, mn10300.h: New files. + Wed Oct 2 21:31:26 1996 Jeffrey A Law (law@cygnus.com) * mn10x00.h: New file. diff --git a/include/opcode/mn10x00.h b/include/opcode/mn10300.h similarity index 80% rename from include/opcode/mn10x00.h rename to include/opcode/mn10300.h index b09387fa043..2d780b1d936 100644 --- a/include/opcode/mn10x00.h +++ b/include/opcode/mn10300.h @@ -1,4 +1,4 @@ -/* mn10x00.h -- Header file for Matsushita 10200 and 10300 opcode table +/* mn10300.h -- Header file for Matsushita 10300 opcode table Copyright 1996 Free Software Foundation, Inc. Written by Jeff Law, Cygnus Support @@ -18,12 +18,12 @@ You should have received a copy of the GNU General Public License along with this file; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef MN10x00_H -#define MN10x00_H +#ifndef MN10300_H +#define MN10300_H -/* The opcode table is an array of struct mn10x00_opcode. */ +/* The opcode table is an array of struct mn10300_opcode. */ -struct mn10x00_opcode +struct mn10300_opcode { /* The opcode name. */ const char *name; @@ -47,13 +47,13 @@ struct mn10x00_opcode /* The table itself is sorted by major opcode number, and is otherwise in the order in which the disassembler should consider instructions. */ -extern const struct mn10x00_opcode mn10x00_opcodes[]; -extern const int mn10x00_num_opcodes; +extern const struct mn10300_opcode mn10300_opcodes[]; +extern const int mn10300_num_opcodes; /* The operands table is an array of struct powerpc_operand. */ -struct mn10x00_operand +struct mn10300_operand { /* The number of bits in the operand. */ int bits; @@ -66,10 +66,10 @@ struct mn10x00_operand }; /* Elements in the table are retrieved by indexing with values from - the operands field of the mn10x00_opcodes table. */ + the operands field of the mn10300_opcodes table. */ -extern const struct mn10x00_operand mn10x00_operands[]; +extern const struct mn10300_operand mn10300_operands[]; -/* Values defined for the flags field of a struct mn10x00_operand. */ +/* Values defined for the flags field of a struct mn10300_operand. */ -#endif /* MN10x00_H */ +#endif /* MN10300_H */ diff --git a/opcodes/.Sanitize b/opcodes/.Sanitize index 4c61e37981c..4aa3000d020 100644 --- a/opcodes/.Sanitize +++ b/opcodes/.Sanitize @@ -74,6 +74,10 @@ m88k-dis.c makefile.vms mips-dis.c mips-opc.c +mn10200-dis.c +mn10200-opc.c +mn10300-dis.c +mn10300-opc.c mpw-config.in mpw-make.sed ns32k-dis.c diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index de99849962c..b9ee3181875 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,13 @@ +Thu Oct 3 10:06:07 1996 Jeffrey A Law (law@cygnus.com) + + * mn10200-opc.c, mn10300-opc.c: New files. + * mn10200-dis.c, mn10300-dis.c: New files. + * mn10x00-opc.c, mn10x00-dis.c: Deleted. + * disassemble.c: Break mn10x00 support into 10200 and 10300 + support. + * configure.in: Likewise. + * configure: Rebuilt. + Thu Oct 3 15:59:12 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) * Makefile.in (MOSTLYCLEAN): Move config.log to distclean. diff --git a/opcodes/mn10x00-dis.c b/opcodes/mn10200-dis.c old mode 100755 new mode 100644 similarity index 90% rename from opcodes/mn10x00-dis.c rename to opcodes/mn10200-dis.c index cd068e32d69..5aa0cb8b8fe --- a/opcodes/mn10x00-dis.c +++ b/opcodes/mn10200-dis.c @@ -1,4 +1,4 @@ -/* Disassemble MN10x00 instructions. +/* Disassemble MN10200 instructions. Copyright (C) 1996 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "ansidecl.h" -#include "opcode/mn10x00.h" +#include "opcode/mn10200.h" #include "dis-asm.h" static void disassemble PARAMS ((bfd_vma memaddr, @@ -27,7 +27,7 @@ static void disassemble PARAMS ((bfd_vma memaddr, unsigned long insn)); int -print_insn_mn10x00 (memaddr, info) +print_insn_mn10200 (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; { diff --git a/opcodes/mn10x00-opc.c b/opcodes/mn10200-opc.c similarity index 84% rename from opcodes/mn10x00-opc.c rename to opcodes/mn10200-opc.c index 278756b6c0d..7b4abfa59ec 100644 --- a/opcodes/mn10x00-opc.c +++ b/opcodes/mn10200-opc.c @@ -1,4 +1,4 @@ -/* Assemble Matsushita MN10x00 instructions. +/* Assemble Matsushita MN10200 instructions. Copyright (C) 1996 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -16,10 +16,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ansidecl.h" -#include "opcode/mn10x00.h" +#include "opcode/mn10200.h" -const struct mn10x00_operand mn10x00_operands[] = { +const struct mn10200_operand mn10200_operands[] = { #define UNUSED 0 { 0, 0, 0 }, } ; @@ -42,10 +42,10 @@ const struct mn10x00_operand mn10x00_operands[] = { specific instructions before more general instructions. It is also sorted by major opcode. */ -const struct mn10x00_opcode mn10x00_opcodes[] = { +const struct mn10200_opcode mn10200_opcodes[] = { { 0, 0, 0, {0}, } } ; -const int mn10x00_num_opcodes = - sizeof (mn10x00_opcodes) / sizeof (mn10x00_opcodes[0]); +const int mn10200_num_opcodes = + sizeof (mn10200_opcodes) / sizeof (mn10200_opcodes[0]); diff --git a/opcodes/mn10300-dis.c b/opcodes/mn10300-dis.c new file mode 100644 index 00000000000..b81d49326c5 --- /dev/null +++ b/opcodes/mn10300-dis.c @@ -0,0 +1,34 @@ +/* Disassemble MN10300 instructions. + Copyright (C) 1996 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + +#include + +#include "ansidecl.h" +#include "opcode/mn10300.h" +#include "dis-asm.h" + +static void disassemble PARAMS ((bfd_vma memaddr, + struct disassemble_info *info, + unsigned long insn)); + +int +print_insn_mn10300 (memaddr, info) + bfd_vma memaddr; + struct disassemble_info *info; +{ +} diff --git a/opcodes/mn10300-opc.c b/opcodes/mn10300-opc.c new file mode 100644 index 00000000000..800a45b8c73 --- /dev/null +++ b/opcodes/mn10300-opc.c @@ -0,0 +1,51 @@ +/* Assemble Matsushita MN10300 instructions. + Copyright (C) 1996 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "ansidecl.h" +#include "opcode/mn10300.h" + + +const struct mn10300_operand mn10300_operands[] = { +#define UNUSED 0 + { 0, 0, 0 }, +} ; + + +/* The opcode table. + + The format of the opcode table is: + + NAME OPCODE MASK { OPERANDS } + + NAME is the name of the instruction. + OPCODE is the instruction opcode. + MASK is the opcode mask; this is used to tell the disassembler + which bits in the actual opcode must match OPCODE. + OPERANDS is the list of operands. + + The disassembler reads the table in order and prints the first + instruction which matches, so this table is sorted to put more + specific instructions before more general instructions. It is also + sorted by major opcode. */ + +const struct mn10300_opcode mn10300_opcodes[] = { +{ 0, 0, 0, {0}, } } ; + +const int mn10300_num_opcodes = + sizeof (mn10300_opcodes) / sizeof (mn10300_opcodes[0]); + + -- 2.30.2