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.
This commit is contained in:
Jeff Law
1996-10-03 16:42:22 +00:00
parent feede9b699
commit ae1b99e42d
34 changed files with 411 additions and 166 deletions

View File

@ -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) Wed Oct 2 22:27:52 1996 Jeffrey A Law (law@cygnus.com)
* configure.in: Add lots of stuff to noconfigdirs for * configure.in: Add lots of stuff to noconfigdirs for

View File

@ -137,7 +137,8 @@ cpu-i960.c
cpu-m68k.c cpu-m68k.c
cpu-m88k.c cpu-m88k.c
cpu-mips.c cpu-mips.c
cpu-mn10x00.c cpu-mn10200.c
cpu-mn10300.c
cpu-ns32k.c cpu-ns32k.c
cpu-powerpc.c cpu-powerpc.c
cpu-rs6000.c cpu-rs6000.c
@ -163,7 +164,8 @@ elf32-i860.c
elf32-m68k.c elf32-m68k.c
elf32-m88k.c elf32-m88k.c
elf32-mips.c elf32-mips.c
elf32-mn10x00.c elf32-mn10200.c
elf32-mn10300.c
elf32-ppc.c elf32-ppc.c
elf32-sh.c elf32-sh.c
elf32-sparc.c elf32-sparc.c

View File

@ -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) Thu Oct 3 15:38:19 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
* Makefile.in (do_clean): Move config.log to do_distclean. * Makefile.in (do_clean): Move config.log to do_distclean.

View File

@ -131,7 +131,8 @@ ALL_MACHINES = \
cpu-m68k.o \ cpu-m68k.o \
cpu-m88k.o \ cpu-m88k.o \
cpu-mips.o \ cpu-mips.o \
cpu-mn10x00.o \ cpu-mn10200.o \
cpu-mn10300.o \
cpu-ns32k.o \ cpu-ns32k.o \
cpu-powerpc.o \ cpu-powerpc.o \
cpu-rs6000.o \ cpu-rs6000.o \
@ -219,7 +220,8 @@ BFD32_BACKENDS = \
elf32-m68k.o \ elf32-m68k.o \
elf32-m88k.o \ elf32-m88k.o \
elf32-mips.o \ elf32-mips.o \
elf32-mn10x00.o \ elf32-mn10200.o \
elf32-mn10300.o \
elf32-ppc.o \ elf32-ppc.o \
elf32-sh.o \ elf32-sh.o \
elf32-sparc.o \ elf32-sparc.o \
@ -827,7 +829,11 @@ elf32-m32r.o: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \
elf32-target.h elf32-target.h
end-sanitize-m32r: 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 \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-target.h elf32-target.h

View File

@ -1229,7 +1229,8 @@ enum bfd_architecture
/* start-sanitize-m32r */ /* start-sanitize-m32r */
bfd_arch_m32r, /* Mitsubishi M32R */ bfd_arch_m32r, /* Mitsubishi M32R */
/* end-sanitize-m32r */ /* end-sanitize-m32r */
bfd_arch_mn10x00, /* Matsushita MN10x00 */ bfd_arch_mn10200, /* Matsushita MN10200 */
bfd_arch_mn10300, /* Matsushita MN10300 */
bfd_arch_last bfd_arch_last
}; };

View File

@ -393,8 +393,12 @@ case "${targ}" in
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
;; ;;
mn10x00-*-*) mn10200-*-*)
targ_defvec=bfd_elf32_mn10x00_vec targ_defvec=bfd_elf32_mn10200_vec
;;
mn10300-*-*)
targ_defvec=bfd_elf32_mn10300_vec
;; ;;
ns32k-pc532-mach* | ns32k-pc532-ux*) ns32k-pc532-mach* | ns32k-pc532-ux*)

3
bfd/configure vendored
View File

@ -1928,7 +1928,8 @@ do
# end-sanitize-m32r # end-sanitize-m32r
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.o elf32.o $elf" ;; 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_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_powerpc_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;;
bfd_elf32_powerpcle_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" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.o elf32.o $elf coff-sh.o" ;;

View File

@ -456,7 +456,8 @@ do
# end-sanitize-m32r # end-sanitize-m32r
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.o elf32.o $elf" ;; 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_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_powerpc_vec) tb="$tb elf32-ppc.o elf32.o $elf" ;;
bfd_elf32_powerpcle_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" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.o elf32.o $elf coff-sh.o" ;;

22
bfd/cpu-mn10x00.c → bfd/cpu-mn10200.c Executable file → Normal file
View File

@ -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. Copyright 1996 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library. 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 */ 16, /* 16 bits in a word */
24, /* 16 bits in an address */ 24, /* 16 bits in an address */
8, /* 8 bits in a byte */ 8, /* 8 bits in a byte */
bfd_arch_mn10x00, bfd_arch_mn10200,
200, 200,
"mn10x00", "mn10200",
"mn10200", "mn10200",
2, 2,
true, /* the one and only */ true, /* the one and only */
@ -36,19 +36,3 @@ const bfd_arch_info_type bfd_mn10200_arch =
bfd_default_scan , bfd_default_scan ,
0, 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
};

38
bfd/cpu-mn10300.c Normal file
View File

@ -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,
};

View File

@ -1,5 +1,5 @@
/* Matsushita 10200 and 10300 specific support for 32-bit ELF /* Matsushita 10200 specific support for 32-bit ELF
Copyright (C) 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library. 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 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); 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 *)); PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *));
/* Try to minimize the amount of space occupied by relocation tables /* 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 enum reloc_type
{ {
R_MN10x00_NONE = 0, R_MN10200_NONE = 0,
R_MN10x00_MAX 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, 0,
2, 2,
16, 16,
@ -48,22 +48,22 @@ static reloc_howto_type elf_mn10x00_howto_table[] =
0, 0,
complain_overflow_bitfield, complain_overflow_bitfield,
bfd_elf_generic_reloc, bfd_elf_generic_reloc,
"R_MN10x00_NONE", "R_MN10200_NONE",
false, false,
0, 0,
0, 0,
false), false),
}; };
struct mn10x00_reloc_map struct mn10200_reloc_map
{ {
unsigned char bfd_reloc_val; unsigned char bfd_reloc_val;
unsigned char elf_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 * static reloc_howto_type *
@ -74,11 +74,11 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code)
unsigned int i; unsigned int i;
for (i = 0; for (i = 0;
i < sizeof (mn10x00_reloc_map) / sizeof (struct mn10x00_reloc_map); i < sizeof (mn10200_reloc_map) / sizeof (struct mn10200_reloc_map);
i++) i++)
{ {
if (mn10x00_reloc_map[i].bfd_reloc_val == code) if (mn10200_reloc_map[i].bfd_reloc_val == code)
return &elf_mn10x00_howto_table[mn10x00_reloc_map[i].elf_reloc_val]; return &elf_mn10200_howto_table[mn10200_reloc_map[i].elf_reloc_val];
} }
return NULL; return NULL;
@ -87,7 +87,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code)
/* Set the howto pointer for an V850 ELF reloc. */ /* Set the howto pointer for an V850 ELF reloc. */
static void static void
mn10x00_info_to_howto_rel (abfd, cache_ptr, dst) mn10200_info_to_howto_rel (abfd, cache_ptr, dst)
bfd *abfd; bfd *abfd;
arelent *cache_ptr; arelent *cache_ptr;
Elf32_Internal_Rel *dst; Elf32_Internal_Rel *dst;
@ -95,17 +95,17 @@ mn10x00_info_to_howto_rel (abfd, cache_ptr, dst)
unsigned int r_type; unsigned int r_type;
r_type = ELF32_R_TYPE (dst->r_info); r_type = ELF32_R_TYPE (dst->r_info);
BFD_ASSERT (r_type < (unsigned int) R_MN10x00_MAX); BFD_ASSERT (r_type < (unsigned int) R_MN10200_MAX);
cache_ptr->howto = &elf_mn10x00_howto_table[r_type]; cache_ptr->howto = &elf_mn10200_howto_table[r_type];
} }
#define TARGET_LITTLE_SYM bfd_elf32_mn10x00_vec #define TARGET_LITTLE_SYM bfd_elf32_mn10200_vec
#define TARGET_LITTLE_NAME "elf32-mn10x00" #define TARGET_LITTLE_NAME "elf32-mn10200"
#define ELF_ARCH bfd_arch_mn10x00 #define ELF_ARCH bfd_arch_mn10200
#define ELF_MACHINE_CODE EM_CYGNUS_MN10x00 #define ELF_MACHINE_CODE EM_CYGNUS_MN10200
#define ELF_MAXPAGESIZE 0x1000 #define ELF_MAXPAGESIZE 0x1000
#define elf_info_to_howto 0 #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" #include "elf32-target.h"

111
bfd/elf32-mn10300.c Normal file
View File

@ -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"

View File

@ -503,7 +503,8 @@ extern const bfd_target bfd_elf32_m32r_vec;
/* end-sanitize-m32r */ /* end-sanitize-m32r */
extern const bfd_target bfd_elf32_m68k_vec; extern const bfd_target bfd_elf32_m68k_vec;
extern const bfd_target bfd_elf32_m88k_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_powerpc_vec;
extern const bfd_target bfd_elf32_powerpcle_vec; extern const bfd_target bfd_elf32_powerpcle_vec;
extern const bfd_target bfd_elf32_sh_vec; extern const bfd_target bfd_elf32_sh_vec;
@ -664,7 +665,8 @@ const bfd_target * const bfd_target_vector[] = {
/* start-sanitize-m32r */ /* start-sanitize-m32r */
&bfd_elf32_m32r_vec, &bfd_elf32_m32r_vec,
/* end-sanitize-m32r */ /* end-sanitize-m32r */
&bfd_elf32_mn10x00_vec, &bfd_elf32_mn10200_vec,
&bfd_elf32_mn10300_vec,
&bfd_elf32_m68k_vec, &bfd_elf32_m68k_vec,
&bfd_elf32_m88k_vec, &bfd_elf32_m88k_vec,
&bfd_elf32_sparc_vec, &bfd_elf32_sparc_vec,

5
config.sub vendored
View File

@ -186,7 +186,10 @@ case $basic_machine in
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
# end-sanitize-m32r # end-sanitize-m32r
mn10x00) mn10200)
basic_machine=$basic_machine-unknown
;;
mn10300)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
# Object if more than one company name word. # Object if more than one company name word.

View File

@ -490,7 +490,10 @@ case "${target}" in
noconfigdirs="$noconfigdirs target-libgloss libio libstdc++ libg++ gdb" noconfigdirs="$noconfigdirs target-libgloss libio libstdc++ libg++ gdb"
;; ;;
# end-sanitize-m32r # 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++" noconfigdirs="$noconfigdirs ld gcc gdb target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
;; ;;
powerpc-*-aix*) powerpc-*-aix*)

View File

@ -120,8 +120,10 @@ tc-m88k.c
tc-m88k.h tc-m88k.h
tc-mips.c tc-mips.c
tc-mips.h tc-mips.h
tc-mn10x00.c tc-mn10200.c
tc-mn10x00.h tc-mn10200.h
tc-mn10300.c
tc-mn10300.h
tc-ns32k.c tc-ns32k.c
tc-ns32k.h tc-ns32k.h
tc-ppc.c tc-ppc.c

View File

@ -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. Copyright (C) 1996 Free Software Foundation.
@ -23,7 +23,7 @@
#include <ctype.h> #include <ctype.h>
#include "as.h" #include "as.h"
#include "subsegs.h" #include "subsegs.h"
#include "opcode/mn10x00.h" #include "opcode/mn10300.h"
/* Structure to hold information about predefined registers. */ /* Structure to hold information about predefined registers. */
struct reg_name struct reg_name
@ -54,25 +54,25 @@ const char FLT_CHARS[] = "dD";
/* local functions */ /* local functions */
static unsigned long mn10x00 static unsigned long mn10300
PARAMS ((unsigned long insn, const struct mn10x00_operand *operand, PARAMS ((unsigned long insn, const struct mn10300_operand *operand,
offsetT val, char *file, unsigned int line)); offsetT val, char *file, unsigned int line));
static int reg_name_search PARAMS ((const struct reg_name *, int, const char *)); static int reg_name_search PARAMS ((const struct reg_name *, int, const char *));
static boolean register_name PARAMS ((expressionS *expressionP)); static boolean register_name PARAMS ((expressionS *expressionP));
static boolean system_register_name PARAMS ((expressionS *expressionP)); static boolean system_register_name PARAMS ((expressionS *expressionP));
static boolean cc_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 */ /* fixups */
#define MAX_INSN_FIXUPS (5) #define MAX_INSN_FIXUPS (5)
struct mn10x00_fixup struct mn10300_fixup
{ {
expressionS exp; expressionS exp;
int opindex; int opindex;
bfd_reloc_code_real_type reloc; bfd_reloc_code_real_type reloc;
}; };
struct mn10x00_fixup fixups[MAX_INSN_FIXUPS]; struct mn10300_fixup fixups[MAX_INSN_FIXUPS];
static int fc; static int fc;
const char *md_shortopts = ""; const char *md_shortopts = "";
@ -88,7 +88,7 @@ const pseudo_typeS md_pseudo_table[] =
}; };
/* Opcode hash 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. */ /* This table is sorted. Suitable for searching by a binary search. */
static const struct reg_name pre_defined_registers[] = static const struct reg_name pre_defined_registers[] =
@ -345,7 +345,7 @@ void
md_show_usage (stream) md_show_usage (stream)
FILE *stream; FILE *stream;
{ {
fprintf(stream, "MN10x00 options:\n\ fprintf(stream, "MN10300 options:\n\
none yet\n"); none yet\n");
} }
@ -429,29 +429,29 @@ void
md_begin () md_begin ()
{ {
char *prev_name = ""; 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 has many identical opcode names that have different opcodes based
on the operands. This hash table then provides a quick index to on the operands. This hash table then provides a quick index to
the first opcode with a particular name in the opcode table. */ the first opcode with a particular name in the opcode table. */
op = mn10x00_opcodes; op = mn10300_opcodes;
while (op->name) while (op->name)
{ {
if (strcmp (prev_name, op->name)) if (strcmp (prev_name, op->name))
{ {
prev_name = (char *) op->name; prev_name = (char *) op->name;
hash_insert (mn10x00_hash, op->name, (char *) op); hash_insert (mn10300_hash, op->name, (char *) op);
} }
op++; op++;
} }
} }
static bfd_reloc_code_real_type static bfd_reloc_code_real_type
mn10x00_reloc_prefix() mn10300_reloc_prefix()
{ {
if (strncmp(input_line_pointer, "hi0(", 4) == 0) if (strncmp(input_line_pointer, "hi0(", 4) == 0)
{ {
@ -479,8 +479,8 @@ md_assemble (str)
char *str; char *str;
{ {
char *s; char *s;
struct mn10x00_opcode *opcode; struct mn10300_opcode *opcode;
struct mn10x00_opcode *next_opcode; struct mn10300_opcode *next_opcode;
const unsigned char *opindex_ptr; const unsigned char *opindex_ptr;
int next_opindex; int next_opindex;
unsigned long insn, size; unsigned long insn, size;
@ -496,7 +496,7 @@ md_assemble (str)
*s++ = '\0'; *s++ = '\0';
/* find the first opcode with the proper name */ /* 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) if (opcode == NULL)
{ {
as_bad ("Unrecognized opcode: `%s'", str); as_bad ("Unrecognized opcode: `%s'", str);
@ -519,17 +519,17 @@ md_assemble (str)
insn = opcode->opcode; insn = opcode->opcode;
for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++) for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++)
{ {
const struct mn10x00_operand *operand; const struct mn10300_operand *operand;
char *hold; char *hold;
expressionS ex; expressionS ex;
if (next_opindex == 0) if (next_opindex == 0)
{ {
operand = &mn10x00_operands[*opindex_ptr]; operand = &mn10300_operands[*opindex_ptr];
} }
else else
{ {
operand = &mn10x00_operands[next_opindex]; operand = &mn10300_operands[next_opindex];
next_opindex = 0; next_opindex = 0;
} }
@ -544,7 +544,7 @@ md_assemble (str)
/* lo(), hi(), hi0(), etc... */ /* lo(), hi(), hi0(), etc... */
if ((reloc = mn10x00_reloc_prefix()) != BFD_RELOC_UNUSED) if ((reloc = mn10300_reloc_prefix()) != BFD_RELOC_UNUSED)
{ {
expression(&ex); expression(&ex);
@ -575,7 +575,7 @@ md_assemble (str)
break; break;
} }
insn = mn10x00_insert_operand (insn, operand, ex.X_add_number, insn = mn10300_insert_operand (insn, operand, ex.X_add_number,
(char *) NULL, 0); (char *) NULL, 0);
} }
else else
@ -601,12 +601,12 @@ md_assemble (str)
goto error; goto error;
case O_register: 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); (char *) NULL, 0);
break; break;
case O_constant: 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); (char *) NULL, 0);
break; break;
@ -673,9 +673,9 @@ md_assemble (str)
md_apply_fix. */ md_apply_fix. */
for (i = 0; i < fc; i++) 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) if (fixups[i].reloc != BFD_RELOC_UNUSED)
{ {
reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); 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, fix_new_exp (frag_now, f - frag_now->fr_literal, 4,
&fixups[i].exp, &fixups[i].exp,
1 /* FIXME: MN10x00_OPERAND_RELATIVE ??? */, 1 /* FIXME: MN10300_OPERAND_RELATIVE ??? */,
((bfd_reloc_code_real_type) ((bfd_reloc_code_real_type)
(fixups[i].opindex + (int) BFD_RELOC_UNUSED))); (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) if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
{ {
int opindex; int opindex;
const struct mn10x00_operand *operand; const struct mn10300_operand *operand;
char *where; char *where;
unsigned long insn; unsigned long insn;
opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED; 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 /* Fetch the instruction, insert the fully resolved operand
value, and stuff the instruction back again. 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; where = fixp->fx_frag->fr_literal + fixp->fx_where;
insn = bfd_getl32((unsigned char *) 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); fixp->fx_file, fixp->fx_line);
bfd_putl32((bfd_vma) insn, (unsigned char *) where); 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. */ /* Insert an operand value into an instruction. */
static unsigned long static unsigned long
mn10x00_insert_operand (insn, operand, val, file, line) mn10300_insert_operand (insn, operand, val, file, line)
unsigned long insn; unsigned long insn;
const struct mn10x00_operand *operand; const struct mn10300_operand *operand;
offsetT val; offsetT val;
char *file; char *file;
unsigned int line; unsigned int line;

View File

@ -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

3
gas/configure vendored
View File

@ -876,7 +876,8 @@ for this_target in $target $canon_targets ; do
*) targ=mips-lit ;; *) targ=mips-lit ;;
esac 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*) ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
fmt=coff em=pe fmt=coff em=pe
case "$endian" in case "$endian" in

View File

@ -230,7 +230,8 @@ changequote([,])dnl
*) targ=mips-lit ;; *) targ=mips-lit ;;
esac 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*) ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
fmt=coff em=pe fmt=coff em=pe
case "$endian" in case "$endian" in

View File

@ -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 <ian@cygnus.com> Tue Oct 1 15:38:28 1996 Ian Lance Taylor <ian@cygnus.com>

View File

@ -48,7 +48,8 @@ m68k
m68k-coff m68k-coff
macros macros
mips mips
mn10x00 mn10200
mn10300
mri mri
sh sh
sparc sparc

View File

@ -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) Wed Oct 2 21:24:43 1996 Jeffrey A Law (law@cygnus.com)
* dis-asm.h (print_insn_mn10x00): Declare. * dis-asm.h (print_insn_mn10x00): Declare.

View File

@ -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_shl PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_hppa 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_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_ns32k PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_big_powerpc 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*)); extern int print_insn_little_powerpc PARAMS ((bfd_vma, disassemble_info*));

View File

@ -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) Wed Oct 2 21:26:43 1996 Jeffrey A Law (law@cygnus.com)
* common.h (EM_CYGNUS_MN10x00): Define. * common.h (EM_CYGNUS_MN10x00): Define.

View File

@ -61,7 +61,8 @@ i960.h
m68k.h m68k.h
m88k.h m88k.h
mips.h mips.h
mn10x00.h mn10200.h
mn10300.h
np1.h np1.h
ns32k.h ns32k.h
pn.h pn.h

View File

@ -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) Wed Oct 2 21:31:26 1996 Jeffrey A Law (law@cygnus.com)
* mn10x00.h: New file. * mn10x00.h: New file.

View File

@ -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. Copyright 1996 Free Software Foundation, Inc.
Written by Jeff Law, Cygnus Support 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 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. */ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef MN10x00_H #ifndef MN10300_H
#define MN10x00_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. */ /* The opcode name. */
const char *name; const char *name;
@ -47,13 +47,13 @@ struct mn10x00_opcode
/* The table itself is sorted by major opcode number, and is otherwise /* The table itself is sorted by major opcode number, and is otherwise
in the order in which the disassembler should consider in the order in which the disassembler should consider
instructions. */ instructions. */
extern const struct mn10x00_opcode mn10x00_opcodes[]; extern const struct mn10300_opcode mn10300_opcodes[];
extern const int mn10x00_num_opcodes; extern const int mn10300_num_opcodes;
/* The operands table is an array of struct powerpc_operand. */ /* The operands table is an array of struct powerpc_operand. */
struct mn10x00_operand struct mn10300_operand
{ {
/* The number of bits in the operand. */ /* The number of bits in the operand. */
int bits; int bits;
@ -66,10 +66,10 @@ struct mn10x00_operand
}; };
/* Elements in the table are retrieved by indexing with values from /* 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 */

View File

@ -74,6 +74,10 @@ m88k-dis.c
makefile.vms makefile.vms
mips-dis.c mips-dis.c
mips-opc.c mips-opc.c
mn10200-dis.c
mn10200-opc.c
mn10300-dis.c
mn10300-opc.c
mpw-config.in mpw-config.in
mpw-make.sed mpw-make.sed
ns32k-dis.c ns32k-dis.c

View File

@ -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) Thu Oct 3 15:59:12 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
* Makefile.in (MOSTLYCLEAN): Move config.log to distclean. * Makefile.in (MOSTLYCLEAN): Move config.log to distclean.

6
opcodes/mn10x00-dis.c → opcodes/mn10200-dis.c Executable file → Normal file
View File

@ -1,4 +1,4 @@
/* Disassemble MN10x00 instructions. /* Disassemble MN10200 instructions.
Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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 <stdio.h> #include <stdio.h>
#include "ansidecl.h" #include "ansidecl.h"
#include "opcode/mn10x00.h" #include "opcode/mn10200.h"
#include "dis-asm.h" #include "dis-asm.h"
static void disassemble PARAMS ((bfd_vma memaddr, static void disassemble PARAMS ((bfd_vma memaddr,
@ -27,7 +27,7 @@ static void disassemble PARAMS ((bfd_vma memaddr,
unsigned long insn)); unsigned long insn));
int int
print_insn_mn10x00 (memaddr, info) print_insn_mn10200 (memaddr, info)
bfd_vma memaddr; bfd_vma memaddr;
struct disassemble_info *info; struct disassemble_info *info;
{ {

View File

@ -1,4 +1,4 @@
/* Assemble Matsushita MN10x00 instructions. /* Assemble Matsushita MN10200 instructions.
Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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. */ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ansidecl.h" #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 #define UNUSED 0
{ 0, 0, 0 }, { 0, 0, 0 },
} ; } ;
@ -42,10 +42,10 @@ const struct mn10x00_operand mn10x00_operands[] = {
specific instructions before more general instructions. It is also specific instructions before more general instructions. It is also
sorted by major opcode. */ sorted by major opcode. */
const struct mn10x00_opcode mn10x00_opcodes[] = { const struct mn10200_opcode mn10200_opcodes[] = {
{ 0, 0, 0, {0}, } } ; { 0, 0, 0, {0}, } } ;
const int mn10x00_num_opcodes = const int mn10200_num_opcodes =
sizeof (mn10x00_opcodes) / sizeof (mn10x00_opcodes[0]); sizeof (mn10200_opcodes) / sizeof (mn10200_opcodes[0]);

34
opcodes/mn10300-dis.c Normal file
View File

@ -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 <stdio.h>
#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;
{
}

51
opcodes/mn10300-opc.c Normal file
View File

@ -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]);