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)
* configure.in: Add lots of stuff to noconfigdirs for

View File

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

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)
* Makefile.in (do_clean): Move config.log to do_distclean.

View File

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

View File

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

View File

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

3
bfd/configure vendored
View File

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

View File

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

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.
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
};

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

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 */
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,

5
config.sub vendored
View File

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

View File

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

View File

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

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.
@ -23,7 +23,7 @@
#include <ctype.h>
#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;

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

View File

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

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>

View File

@ -48,7 +48,8 @@ m68k
m68k-coff
macros
mips
mn10x00
mn10200
mn10300
mri
sh
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)
* 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_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*));

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)
* common.h (EM_CYGNUS_MN10x00): Define.

View File

@ -61,7 +61,8 @@ i960.h
m68k.h
m88k.h
mips.h
mn10x00.h
mn10200.h
mn10300.h
np1.h
ns32k.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)
* 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.
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 */

View File

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

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)
* 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.
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 "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;
{

View File

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

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