This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
support for xstormy16
- From: Geoffrey Keating <geoffk at cygnus dot com>
- To: binutils at sources dot redhat dot com
- Date: Fri, 7 Dec 2001 14:37:53 -0800
- Subject: support for xstormy16
This adds support for the Sanyo Xstormy16 CPU core. It shouldn't
affect any other target.
OK to commit?
--
Geoff Keating <geoffk@redhat.com>
===File ~/patches/sanyo-contrib-bfd.patch===================
Index: bfd/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* Makefile.am: Add support for xstormy16.
* archures.c: Add support for xstormy16.
* config.bfd: Add support for xstormy16.
* configure.in: Add support for xstormy16.
* reloc.c: Add support for xstormy16.
* targets.c: Add support for xstormy16.
* cpu-xstormy16.c: New file.
* elf32-xstormy16.c: New file.
* Makefile.in: Regenerated.
* bfd-in2.h: Regenerated.
* configure: Regenerated.
* libbfd.h: Regenerated.
Index: binutils/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* readelf.c (guess_is_rela): Add support for stormy16.
(dump_relocations): Likewise.
(get_machine_name): Likewise.
Index: gas/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* configure.in: Add support for xstormy16.
* configure: Regenerated.
* Makefile.am: Add support for xstormy16.
* Makefile.in: Regenerated.
* config/tc-xstormy16.c: New file.
* config/tc-xstormy16.h: New file.
Index: gas/testsuite/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* gas/xstormy16/allinsn.d: New file.
* gas/xstormy16/allinsn.exp: New file.
* gas/xstormy16/allinsn.s: New file.
* gas/xstormy16/allinsn.sh: New file.
* gas/xstormy16/gcc.d: New file.
* gas/xstormy16/gcc.s: New file.
* gas/xstormy16/gcc.sh: New file.
* gas/xstormy16/reloc-1.d: New file.
* gas/xstormy16/reloc-1.s: New file.
* gas/xstormy16/reloc-2.d: New file.
* gas/xstormy16/reloc-2.s: New file.
Index: ld/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* Makefile.am: Add support for xstormy16.
* configure.tgt: Add support for xstormy16.
* Makefile.in: Regenerate.
* emulparams/elf32xstormy16.sh: New file.
* scripttempl/xstormy16.sc: New file.
Index: opcodes/ChangeLog
2001-11-26 Geoffrey Keating <geoffk@redhat.com>
* Makefile.am: Add support for xstormy16.
* Makefile.in: Regenerate.
* configure.in: Add support for xstormy16.
* configure: Regenerate.
* disassemble.c: Add support for xstormy16.
* xstormy16-asm.c: New generated file.
* xstormy16-desc.c: New generated file.
* xstormy16-desc.h: New generated file.
* xstormy16-dis.c: New generated file.
* xstormy16-ibld.c: New generated file.
* xstormy16-opc.c: New generated file.
* xstormy16-opc.h: New generated file.
Index: bfd/Makefile.am
===================================================================
RCS file: /cvs/src/src/bfd/Makefile.am,v
retrieving revision 1.69
diff -p -u -p -r1.69 Makefile.am
--- bfd/Makefile.am 2001/12/05 22:46:20 1.69
+++ bfd/Makefile.am 2001/12/07 22:26:45
@@ -89,6 +89,7 @@ ALL_MACHINES = \
cpu-vax.lo \
cpu-we32k.lo \
cpu-w65.lo \
+ cpu-xstormy16.lo \
cpu-z8k.lo
ALL_MACHINES_CFILES = \
@@ -135,6 +136,7 @@ ALL_MACHINES_CFILES = \
cpu-vax.c \
cpu-we32k.c \
cpu-w65.c \
+ cpu-xstormy16.c \
cpu-z8k.c
# The .o files needed by all of the 32 bit vectors that are configured into
@@ -217,6 +219,7 @@ BFD32_BACKENDS = \
elf32-sh-lin.lo \
elf32-sparc.lo \
elf32-v850.lo \
+ elf32-xstormy16.lo \
elf32.lo \
elflink.lo \
elf-strtab.lo \
@@ -358,6 +361,7 @@ BFD32_BACKENDS_CFILES = \
elf32-sh-lin.c \
elf32-sparc.c \
elf32-v850.c \
+ elf32-xstormy16.c \
elf32.c \
elflink.c \
elf-strtab.c \
@@ -857,6 +861,7 @@ cpu-v850.lo: cpu-v850.c $(INCDIR)/filena
cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
+cpu-xstormy16.lo: cpu-xstormy16.c $(INCDIR)/filenames.h
cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
@@ -1132,6 +1137,10 @@ elf32-v850.lo: elf32-v850.c $(INCDIR)/fi
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/libiberty.h elf32-target.h
+elf32-xstormy16.lo: elf32-xstormy16.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/elf/xstormy16.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \
Index: bfd/archures.c
===================================================================
RCS file: /cvs/src/src/bfd/archures.c,v
retrieving revision 1.40
diff -p -u -p -r1.40 archures.c
--- bfd/archures.c 2001/10/30 15:20:02 1.40
+++ bfd/archures.c 2001/12/07 22:26:46
@@ -259,6 +259,8 @@ DESCRIPTION
.#define bfd_mach_s390_esame 1
. bfd_arch_openrisc, {* OpenRISC *}
. bfd_arch_mmix, {* Donald Knuth's educational processor *}
+. bfd_arch_xstormy16,
+.#define bfd_mach_xstormy16 0
. bfd_arch_last
. };
*/
@@ -338,6 +340,7 @@ extern const bfd_arch_info_type bfd_ia64
extern const bfd_arch_info_type bfd_s390_arch;
extern const bfd_arch_info_type bfd_openrisc_arch;
extern const bfd_arch_info_type bfd_mmix_arch;
+extern const bfd_arch_info_type bfd_xstormy16_arch;
static const bfd_arch_info_type * const bfd_archures_list[] = {
#ifdef SELECT_ARCHITECTURES
@@ -386,6 +389,7 @@ static const bfd_arch_info_type * const
&bfd_s390_arch,
&bfd_openrisc_arch,
&bfd_mmix_arch,
+ &bfd_xstormy16_arch,
#endif
0
};
Index: bfd/config.bfd
===================================================================
RCS file: /cvs/src/src/bfd/config.bfd,v
retrieving revision 1.73
diff -p -u -p -r1.73 config.bfd
--- bfd/config.bfd 2001/12/05 22:46:21 1.73
+++ bfd/config.bfd 2001/12/07 22:26:47
@@ -972,6 +972,10 @@ case "${targ}" in
targ_defvec=w65_vec
;;
+ xstormy16-*-elf)
+ targ_defvec=bfd_elf32_xstormy16_vec
+ ;;
+
z8k*-*-*)
targ_defvec=z8kcoff_vec
targ_underscore=yes
Index: bfd/configure.in
===================================================================
RCS file: /cvs/src/src/bfd/configure.in,v
retrieving revision 1.70
diff -p -u -p -r1.70 configure.in
--- bfd/configure.in 2001/12/05 22:46:21 1.70
+++ bfd/configure.in 2001/12/07 22:26:48
@@ -583,6 +583,7 @@ do
bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_us_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;;
+ bfd_elf32_xstormy16_vec) tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
Index: bfd/cpu-xstormy16.c
===================================================================
RCS file: cpu-xstormy16.c
diff -N cpu-xstormy16.c
--- bfd/cpu-xstormy16.c Tue May 5 13:32:27 1998
+++ bfd/cpu-xstormy16.c Fri Dec 7 14:26:48 2001
@@ -0,0 +1,38 @@
+/* BFD support for the XSTORMY16 processor.
+ Copyright (C) 2001 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_xstormy16_arch =
+{
+ 16, /* bits per word */
+ 32, /* bits per address */
+ 8, /* bits per byte */
+ bfd_arch_xstormy16, /* architecture */
+ bfd_mach_xstormy16, /* machine */
+ "xstormy16", /* architecture name */
+ "xstormy16", /* printable name */
+ 2, /* section align power */
+ true, /* the default ? */
+ bfd_default_compatible, /* architecture comparison fn */
+ bfd_default_scan, /* string to architecture convert fn */
+ NULL /* next in list */
+};
Index: bfd/elf32-xstormy16.c
===================================================================
RCS file: elf32-xstormy16.c
diff -N elf32-xstormy16.c
--- bfd/elf32-xstormy16.c Tue May 5 13:32:27 1998
+++ bfd/elf32-xstormy16.c Fri Dec 7 14:26:48 2001
@@ -0,0 +1,1074 @@
+/* XSTORMY16-specific support for 32-bit ELF.
+ Copyright (C) 2000, 2001 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"
+#include "elf/xstormy16.h"
+
+/* Forward declarations. */
+static reloc_howto_type * xstormy16_reloc_type_lookup
+ PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
+static void xstormy16_info_to_howto_rela
+ PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *));
+static bfd_reloc_status_type xstormy16_elf_24_reloc
+ PARAMS ((bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+ PTR data, asection *input_section, bfd *output_bfd,
+ char **error_message));
+static boolean xstormy16_elf_check_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, asection *,
+ const Elf_Internal_Rela *));
+static boolean xstormy16_relax_plt_check
+ PARAMS ((struct elf_link_hash_entry *, PTR));
+static boolean xstormy16_relax_plt_realloc
+ PARAMS ((struct elf_link_hash_entry *, PTR));
+static boolean xstormy16_elf_relax_section
+ PARAMS ((bfd *abfd, asection *sec, struct bfd_link_info *link_info,
+ boolean *again));
+static boolean xstormy16_elf_always_size_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+static boolean xstormy16_elf_relocate_section
+ PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+ Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+static boolean xstormy16_elf_finish_dynamic_sections
+ PARAMS((bfd *, struct bfd_link_info *));
+static boolean xstormy16_elf_gc_sweep_hook
+ PARAMS ((bfd *, struct bfd_link_info *, asection *,
+ const Elf_Internal_Rela *));
+static asection * xstormy16_elf_gc_mark_hook
+ PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *,
+ struct elf_link_hash_entry *, Elf_Internal_Sym *));
+
+static reloc_howto_type xstormy16_elf_howto_table [] =
+{
+ /* This reloc does nothing. */
+ HOWTO (R_XSTORMY16_NONE, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_NONE", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* A 32 bit absolute relocation. */
+ HOWTO (R_XSTORMY16_32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_32", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation. */
+ HOWTO (R_XSTORMY16_16, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_16", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* An 8 bit absolute relocation. */
+ HOWTO (R_XSTORMY16_8, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 8, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_8", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* A 32 bit pc-relative relocation. */
+ HOWTO (R_XSTORMY16_PC32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ true, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_PC32", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ true), /* pcrel_offset */
+
+ /* A 16 bit pc-relative relocation. */
+ HOWTO (R_XSTORMY16_PC16, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ true, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_PC16", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ true), /* pcrel_offset */
+
+ /* An 8 bit pc-relative relocation. */
+ HOWTO (R_XSTORMY16_PC8, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 8, /* bitsize */
+ true, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_PC8", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ true), /* pcrel_offset */
+
+ /* A 12-bit pc-relative relocation suitable for the branch instructions. */
+ HOWTO (R_XSTORMY16_REL_12, /* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 11, /* bitsize */
+ true, /* pc_relative */
+ 1, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_REL_12", /* name */
+ true, /* partial_inplace */
+ 0, /* src_mask */
+ 0x0fff, /* dst_mask */
+ true), /* pcrel_offset */
+
+ /* A 24-bit absolute relocation suitable for the jump instructions. */
+ HOWTO (R_XSTORMY16_24, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_unsigned, /* complain_on_overflow */
+ xstormy16_elf_24_reloc, /* special_function */
+ "R_XSTORMY16_24", /* name */
+ true, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffff00ff, /* dst_mask */
+ true), /* pcrel_offset */
+
+ /* A 16 bit absolute relocation to a function pointer. */
+ HOWTO (R_XSTORMY16_FPTR16, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_XSTORMY16_FPTR16", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
+};
+
+static reloc_howto_type xstormy16_elf_howto_table2 [] =
+{
+ /* GNU extension to record C++ vtable hierarchy */
+ HOWTO (R_XSTORMY16_GNU_VTINHERIT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_XSTORMY16_GNU_VTINHERIT", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* GNU extension to record C++ vtable member usage */
+ HOWTO (R_XSTORMY16_GNU_VTENTRY, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ _bfd_elf_rel_vtable_reloc_fn, /* special_function */
+ "R_XSTORMY16_GNU_VTENTRY", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ false), /* pcrel_offset */
+
+};
+
+/* Map BFD reloc types to XSTORMY16 ELF reloc types. */
+
+struct xstormy16_reloc_map
+{
+ bfd_reloc_code_real_type bfd_reloc_val;
+ unsigned int xstormy16_reloc_val;
+};
+
+static const struct xstormy16_reloc_map xstormy16_reloc_map [] =
+{
+ { BFD_RELOC_NONE, R_XSTORMY16_NONE },
+ { BFD_RELOC_32, R_XSTORMY16_32 },
+ { BFD_RELOC_16, R_XSTORMY16_16 },
+ { BFD_RELOC_8, R_XSTORMY16_8 },
+ { BFD_RELOC_32_PCREL, R_XSTORMY16_PC32 },
+ { BFD_RELOC_16_PCREL, R_XSTORMY16_PC16 },
+ { BFD_RELOC_8_PCREL, R_XSTORMY16_PC8 },
+ { BFD_RELOC_XSTORMY16_REL_12, R_XSTORMY16_REL_12 },
+ { BFD_RELOC_XSTORMY16_24, R_XSTORMY16_24 },
+ { BFD_RELOC_XSTORMY16_FPTR16, R_XSTORMY16_FPTR16 },
+ { BFD_RELOC_VTABLE_INHERIT, R_XSTORMY16_GNU_VTINHERIT },
+ { BFD_RELOC_VTABLE_ENTRY, R_XSTORMY16_GNU_VTENTRY },
+};
+
+static reloc_howto_type *
+xstormy16_reloc_type_lookup (abfd, code)
+ bfd * abfd ATTRIBUTE_UNUSED;
+ bfd_reloc_code_real_type code;
+{
+ unsigned int i;
+
+ for (i = sizeof (xstormy16_reloc_map) / sizeof (xstormy16_reloc_map[0]);
+ --i;)
+ if (xstormy16_reloc_map [i].bfd_reloc_val == code)
+ return & xstormy16_elf_howto_table [xstormy16_reloc_map[i].xstormy16_reloc_val];
+
+ return NULL;
+}
+
+/* Set the howto pointer for an XSTORMY16 ELF reloc. */
+
+static void
+xstormy16_info_to_howto_rela (abfd, cache_ptr, dst)
+ bfd * abfd ATTRIBUTE_UNUSED;
+ arelent * cache_ptr;
+ Elf32_Internal_Rela * dst;
+{
+ unsigned int r_type = ELF32_R_TYPE (dst->r_info);
+
+ if (r_type <= (unsigned int) R_XSTORMY16_FPTR16)
+ cache_ptr->howto = &xstormy16_elf_howto_table [r_type];
+ else if (r_type - R_XSTORMY16_GNU_VTINHERIT
+ <= (unsigned int) R_XSTORMY16_GNU_VTENTRY)
+ cache_ptr->howto
+ = &xstormy16_elf_howto_table2 [r_type - R_XSTORMY16_GNU_VTINHERIT];
+ else
+ abort ();
+}
+
+/* Handle the R_XSTORMY16_24 reloc, which has an odd bit arrangement. */
+
+static bfd_reloc_status_type
+xstormy16_elf_24_reloc (abfd, reloc_entry, symbol, data, input_section,
+ output_bfd, error_message)
+ bfd *abfd;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message ATTRIBUTE_UNUSED;
+{
+ bfd_vma relocation, x;
+
+ if (output_bfd != NULL)
+ {
+ reloc_entry->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+
+ if (reloc_entry->address > input_section->_cooked_size)
+ return bfd_reloc_outofrange;
+
+ if (bfd_is_com_section (symbol->section))
+ relocation = 0;
+ else
+ relocation = symbol->value;
+
+ relocation += symbol->section->output_section->vma;
+ relocation += symbol->section->output_offset;
+ relocation += reloc_entry->addend;
+
+ x = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
+ x &= 0x0000ff00;
+ x |= relocation & 0xff;
+ x |= (relocation << 8) & 0xffff0000;
+ bfd_put_32 (abfd, x, (bfd_byte *) data + reloc_entry->address);
+
+ if (relocation & ~ (bfd_vma) 0xffffff)
+ return bfd_reloc_overflow;
+
+ return bfd_reloc_ok;
+}
+
+/* We support 16-bit pointers to code above 64k by generating a thunk
+ below 64k containing a JMPF instruction to the final address. We
+ cannot, unfortunately, minimize the number of thunks unless the
+ -relax switch is given, as otherwise we have no idea where the
+ sections will fall in the address space. */
+
+static boolean
+xstormy16_elf_check_relocs (abfd, info, sec, relocs)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
+{
+ const Elf_Internal_Rela *rel, *relend;
+ struct elf_link_hash_entry **sym_hashes;
+ Elf_Internal_Shdr *symtab_hdr;
+ bfd_vma *local_plt_offsets;
+ asection *splt;
+ bfd *dynobj;
+
+ if (info->relocateable)
+ return true;
+
+ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_plt_offsets = elf_local_got_offsets (abfd);
+ splt = NULL;
+ dynobj = elf_hash_table(info)->dynobj;
+
+ relend = relocs + sec->reloc_count;
+ for (rel = relocs; rel < relend; ++rel)
+ {
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+ bfd_vma *offset;
+
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx < symtab_hdr->sh_info)
+ h = NULL;
+ else
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ }
+
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ /* This relocation describes a 16-bit pointer to a function.
+ We may need to allocate a thunk in low memory; reserve memory
+ for it now. */
+ case R_XSTORMY16_FPTR16:
+ if (rel->r_addend != 0)
+ {
+ (*info->callbacks->warning)
+ (info, _("non-zero addend in @fptr reloc"), 0,
+ abfd, 0, 0);
+ }
+
+ if (dynobj == NULL)
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+ if (splt == NULL)
+ {
+ splt = bfd_get_section_by_name (dynobj, ".plt");
+ if (splt == NULL)
+ {
+ splt = bfd_make_section (dynobj, ".plt");
+ if (splt == NULL
+ || ! bfd_set_section_flags (dynobj, splt,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY
+ | SEC_CODE))
+ || ! bfd_set_section_alignment (dynobj, splt, 1))
+ return false;
+ }
+ }
+
+ if (h != NULL)
+ offset = &h->plt.offset;
+ else
+ {
+ if (local_plt_offsets == NULL)
+ {
+ size_t size;
+ unsigned int i;
+
+ size = symtab_hdr->sh_info * sizeof (bfd_vma);
+ local_plt_offsets = (bfd_vma *) bfd_alloc (abfd, size);
+ if (local_plt_offsets == NULL)
+ return false;
+ elf_local_got_offsets (abfd) = local_plt_offsets;
+
+ for (i = 0; i < symtab_hdr->sh_info; i++)
+ local_plt_offsets[i] = (bfd_vma) -1;
+ }
+ offset = &local_plt_offsets[r_symndx];
+ }
+
+ if (*offset == (bfd_vma) -1)
+ {
+ *offset = splt->_raw_size;
+ splt->_raw_size += 4;
+ }
+ break;
+
+ /* This relocation describes the C++ object vtable hierarchy.
+ Reconstruct it for later use during GC. */
+ case R_XSTORMY16_GNU_VTINHERIT:
+ if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
+ return false;
+ break;
+
+ /* This relocation describes which C++ vtable entries are actually
+ used. Record for later use during GC. */
+ case R_XSTORMY16_GNU_VTENTRY:
+ if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+ return false;
+ break;
+ }
+ }
+
+ return true;
+}
+
+/* A subroutine of xstormy16_elf_relax_section. If the global symbol H
+ is within the low 64k, remove any entry for it in the plt. */
+
+struct relax_plt_data
+{
+ asection *splt;
+ boolean *again;
+};
+
+static boolean
+xstormy16_relax_plt_check (h, xdata)
+ struct elf_link_hash_entry *h;
+ PTR xdata;
+{
+ struct relax_plt_data *data = (struct relax_plt_data *) xdata;
+
+ if (h->plt.offset != (bfd_vma) -1)
+ {
+ bfd_vma address;
+
+ if (h->root.type == bfd_link_hash_undefined
+ || h->root.type == bfd_link_hash_undefweak)
+ address = 0;
+ else
+ address = (h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset
+ + h->root.u.def.value);
+
+ if (address <= 0xffff)
+ {
+ h->plt.offset = -1;
+ data->splt->_cooked_size -= 4;
+ *data->again = true;
+ }
+ }
+
+ return true;
+}
+
+/* A subroutine of xstormy16_elf_relax_section. If the global symbol H
+ previously had a plt entry, give it a new entry offset. */
+
+static boolean
+xstormy16_relax_plt_realloc (h, xdata)
+ struct elf_link_hash_entry *h;
+ PTR xdata;
+{
+ bfd_vma *entry = (bfd_vma *) xdata;
+
+ if (h->plt.offset != (bfd_vma) -1)
+ {
+ h->plt.offset = *entry;
+ *entry += 4;
+ }
+
+ return true;
+}
+
+static boolean
+xstormy16_elf_relax_section (dynobj, splt, info, again)
+ bfd *dynobj;
+ asection *splt;
+ struct bfd_link_info *info;
+ boolean *again;
+{
+ struct relax_plt_data relax_plt_data;
+ bfd *ibfd;
+
+ /* Assume nothing changes. */
+ *again = false;
+
+ if (info->relocateable)
+ return true;
+
+ /* We only relax the .plt section at the moment. */
+ if (dynobj != elf_hash_table (info)->dynobj
+ || strcmp (splt->name, ".plt") != 0)
+ return true;
+
+ /* Quick check for an empty plt. */
+ if (splt->_raw_size == 0)
+ return true;
+
+ /* If this is the first time we have been called for this section,
+ initialize the cooked size. */
+ if (splt->_cooked_size == 0)
+ splt->_cooked_size = splt->_raw_size;
+
+ /* Map across all global symbols; see which ones happen to
+ fall in the low 64k. */
+ relax_plt_data.splt = splt;
+ relax_plt_data.again = again;
+ elf_link_hash_traverse (elf_hash_table (info), xstormy16_relax_plt_check,
+ &relax_plt_data);
+
+ /* Likewise for local symbols, though that's somewhat less convenient
+ as we have walk the list of input bfds and swap in symbol data. */
+ for (ibfd = info->input_bfds; ibfd ; ibfd = ibfd->link_next)
+ {
+ bfd_vma *local_plt_offsets = elf_local_got_offsets (ibfd);
+ Elf_Internal_Shdr *symtab_hdr;
+ Elf32_External_Sym *extsyms;
+ unsigned int idx;
+
+ if (! local_plt_offsets)
+ continue;
+
+ symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
+
+ if (symtab_hdr->contents != NULL)
+ extsyms = (Elf32_External_Sym *) symtab_hdr->contents;
+ else
+ {
+ extsyms = (Elf32_External_Sym *) bfd_malloc (symtab_hdr->sh_size);
+ if (extsyms == NULL)
+ return false;
+ if (bfd_seek (ibfd, symtab_hdr->sh_offset, SEEK_SET) != 0
+ || (bfd_bread (extsyms, symtab_hdr->sh_size, ibfd)
+ != symtab_hdr->sh_size))
+ {
+ free (extsyms);
+ return false;
+ }
+ }
+
+ for (idx = 0; idx < symtab_hdr->sh_info; ++idx)
+ {
+ Elf_Internal_Sym isym;
+ asection *tsec;
+ bfd_vma address;
+
+ if (local_plt_offsets[idx] == (bfd_vma) -1)
+ continue;
+
+ bfd_elf32_swap_symbol_in (ibfd, extsyms + idx, &isym);
+ if (isym.st_shndx == SHN_UNDEF)
+ continue;
+ else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE)
+ tsec = bfd_section_from_elf_index (ibfd, isym.st_shndx);
+ else if (isym.st_shndx == SHN_ABS)
+ tsec = bfd_abs_section_ptr;
+ else
+ continue;
+
+ address = (tsec->output_section->vma
+ + tsec->output_offset
+ + isym.st_value);
+ if (address <= 0xffff)
+ {
+ local_plt_offsets[idx] = -1;
+ splt->_cooked_size -= 4;
+ *again = true;
+ }
+ }
+
+ if (symtab_hdr->contents != extsyms)
+ free (extsyms);
+ }
+
+ /* If we changed anything, walk the symbols again to reallocate
+ .plt entry addresses. */
+ if (*again && splt->_cooked_size > 0)
+ {
+ bfd_vma entry = 0;
+
+ elf_link_hash_traverse (elf_hash_table (info),
+ xstormy16_relax_plt_realloc, &entry);
+
+ for (ibfd = info->input_bfds; ibfd ; ibfd = ibfd->link_next)
+ {
+ bfd_vma *local_plt_offsets = elf_local_got_offsets (ibfd);
+ unsigned int nlocals = elf_tdata (ibfd)->symtab_hdr.sh_info;
+ unsigned int idx;
+
+ if (! local_plt_offsets)
+ continue;
+
+ for (idx = 0; idx < nlocals; ++idx)
+ if (local_plt_offsets[idx] != (bfd_vma) -1)
+ {
+ local_plt_offsets[idx] = entry;
+ entry += 4;
+ }
+ }
+ }
+
+ splt->_raw_size = splt->_cooked_size;
+ return true;
+}
+
+static boolean
+xstormy16_elf_always_size_sections (output_bfd, info)
+ bfd *output_bfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info *info;
+{
+ bfd *dynobj;
+ asection *splt;
+
+ if (info->relocateable)
+ return true;
+
+ dynobj = elf_hash_table (info)->dynobj;
+ if (dynobj == NULL)
+ return true;
+
+ splt = bfd_get_section_by_name (dynobj, ".plt");
+ BFD_ASSERT (splt != NULL);
+
+ splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->_raw_size);
+ if (splt->contents == NULL)
+ return false;
+
+ return true;
+}
+
+/* Relocate an XSTORMY16 ELF section.
+ There is some attempt to make this function usable for many architectures,
+ both USE_REL and USE_RELA ['twould be nice if such a critter existed],
+ if only to serve as a learning tool.
+
+ The RELOCATE_SECTION function is called by the new ELF backend linker
+ to handle the relocations for a section.
+
+ The relocs are always passed as Rela structures; if the section
+ actually uses Rel structures, the r_addend field will always be
+ zero.
+
+ This function is responsible for adjusting the section contents as
+ necessary, and (if using Rela relocs and generating a relocateable
+ output file) adjusting the reloc addend as necessary.
+
+ This function does not have to worry about setting the reloc
+ address or the reloc symbol index.
+
+ LOCAL_SYMS is a pointer to the swapped in local symbols.
+
+ LOCAL_SECTIONS is an array giving the section in the input file
+ corresponding to the st_shndx field of each local symbol.
+
+ The global hash table entry for the global symbols can be found
+ via elf_sym_hashes (input_bfd).
+
+ When generating relocateable output, this function must handle
+ STB_LOCAL/STT_SECTION symbols specially. The output symbol is
+ going to be the section symbol corresponding to the output
+ section, which means that the addend must be adjusted
+ accordingly. */
+
+static boolean
+xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section,
+ contents, relocs, local_syms, local_sections)
+ bfd * output_bfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info * info;
+ bfd * input_bfd;
+ asection * input_section;
+ bfd_byte * contents;
+ Elf_Internal_Rela * relocs;
+ Elf_Internal_Sym * local_syms;
+ asection ** local_sections;
+{
+ Elf_Internal_Shdr * symtab_hdr;
+ struct elf_link_hash_entry ** sym_hashes;
+ Elf_Internal_Rela * rel;
+ Elf_Internal_Rela * relend;
+ bfd *dynobj;
+ asection *splt;
+
+ symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (input_bfd);
+ relend = relocs + input_section->reloc_count;
+
+ dynobj = elf_hash_table (info)->dynobj;
+ splt = NULL;
+ if (dynobj != NULL)
+ splt = bfd_get_section_by_name (dynobj, ".plt");
+
+ for (rel = relocs; rel < relend; rel ++)
+ {
+ reloc_howto_type * howto;
+ unsigned long r_symndx;
+ Elf_Internal_Sym * sym;
+ asection * sec;
+ struct elf_link_hash_entry * h;
+ bfd_vma relocation;
+ bfd_reloc_status_type r;
+ const char * name = NULL;
+ int r_type;
+
+ r_type = ELF32_R_TYPE (rel->r_info);
+
+ if ( r_type == R_XSTORMY16_GNU_VTINHERIT
+ || r_type == R_XSTORMY16_GNU_VTENTRY)
+ continue;
+
+ r_symndx = ELF32_R_SYM (rel->r_info);
+
+ if (info->relocateable)
+ {
+ /* This is a relocateable link. We don't have to change
+ anything, unless the reloc is against a section symbol,
+ in which case we have to adjust according to where the
+ section symbol winds up in the output section. */
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+
+ if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ sec = local_sections [r_symndx];
+ rel->r_addend += sec->output_offset + sym->st_value;
+ }
+ }
+
+ continue;
+ }
+
+ /* This is a final link. */
+ howto = xstormy16_elf_howto_table + ELF32_R_TYPE (rel->r_info);
+ h = NULL;
+ sym = NULL;
+ sec = NULL;
+
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+ sec = local_sections [r_symndx];
+ relocation = (sec->output_section->vma
+ + sec->output_offset
+ + sym->st_value);
+
+ name = bfd_elf_string_from_elf_section
+ (input_bfd, symtab_hdr->sh_link, sym->st_name);
+ name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+ }
+ else
+ {
+ h = sym_hashes [r_symndx - symtab_hdr->sh_info];
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ name = h->root.root.string;
+
+ if (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ {
+ sec = h->root.u.def.section;
+ relocation = (h->root.u.def.value
+ + sec->output_section->vma
+ + sec->output_offset);
+ }
+ else if (h->root.type == bfd_link_hash_undefweak)
+ {
+ relocation = 0;
+ }
+ else
+ {
+ if (! ((*info->callbacks->undefined_symbol)
+ (info, h->root.root.string, input_bfd,
+ input_section, rel->r_offset, true)))
+ return false;
+ relocation = 0;
+ }
+ }
+
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_XSTORMY16_24:
+ {
+ bfd_vma reloc = relocation + rel->r_addend;
+ unsigned int x;
+
+ x = bfd_get_32 (input_bfd, contents + rel->r_offset);
+ x &= 0x0000ff00;
+ x |= reloc & 0xff;
+ x |= (reloc << 8) & 0xffff0000;
+ bfd_put_32 (input_bfd, x, contents + rel->r_offset);
+
+ if (reloc & ~0xffffff)
+ r = bfd_reloc_overflow;
+ else
+ r = bfd_reloc_ok;
+ break;
+ }
+
+ case R_XSTORMY16_FPTR16:
+ {
+ bfd_vma *plt_offset;
+
+ if (h != NULL)
+ plt_offset = &h->plt.offset;
+ else
+ plt_offset = elf_local_got_offsets (input_bfd) + r_symndx;
+
+ if (relocation <= 0xffff)
+ {
+ /* If the symbol is in range for a 16-bit address, we should
+ have deallocated the plt entry in relax_section. */
+ BFD_ASSERT (*plt_offset == (bfd_vma) -1);
+ }
+ else
+ {
+ /* If the symbol is out of range for a 16-bit address,
+ we must have allocated a plt entry. */
+ BFD_ASSERT (*plt_offset != (bfd_vma) -1);
+
+ /* If this is the first time we've processed this symbol,
+ fill in the plt entry with the correct symbol address. */
+ if ((*plt_offset & 1) == 0)
+ {
+ unsigned int x;
+
+ x = 0x00000200; /* jmpf */
+ x |= relocation & 0xff;
+ x |= (relocation << 8) & 0xffff0000;
+ bfd_put_32 (input_bfd, x, splt->contents + *plt_offset);
+ *plt_offset |= 1;
+ }
+
+ relocation = (splt->output_section->vma
+ + splt->output_offset
+ + (*plt_offset & -2));
+ }
+ r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, 0);
+ break;
+ }
+
+ default:
+ r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, rel->r_addend);
+ break;
+ }
+
+ if (r != bfd_reloc_ok)
+ {
+ const char * msg = (const char *) NULL;
+
+ switch (r)
+ {
+ case bfd_reloc_overflow:
+ r = info->callbacks->reloc_overflow
+ (info, name, howto->name, (bfd_vma) 0,
+ input_bfd, input_section, rel->r_offset);
+ break;
+
+ case bfd_reloc_undefined:
+ r = info->callbacks->undefined_symbol
+ (info, name, input_bfd, input_section, rel->r_offset,
+ true);
+ break;
+
+ case bfd_reloc_outofrange:
+ msg = _("internal error: out of range error");
+ break;
+
+ case bfd_reloc_notsupported:
+ msg = _("internal error: unsupported relocation error");
+ break;
+
+ case bfd_reloc_dangerous:
+ msg = _("internal error: dangerous relocation");
+ break;
+
+ default:
+ msg = _("internal error: unknown error");
+ break;
+ }
+
+ if (msg)
+ r = info->callbacks->warning
+ (info, msg, name, input_bfd, input_section, rel->r_offset);
+
+ if (! r)
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/* This must exist if dynobj is ever set. */
+
+static boolean
+xstormy16_elf_finish_dynamic_sections (abfd, info)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info *info;
+{
+ bfd *dynobj;
+ asection *splt;
+
+ /* As an extra sanity check, verify that all plt entries have
+ been filled in. */
+
+ if ((dynobj = elf_hash_table (info)->dynobj) != NULL
+ && (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL)
+ {
+ bfd_byte *contents = splt->contents;
+ unsigned int i, size = splt->_raw_size;
+ for (i = 0; i < size; i += 4)
+ {
+ unsigned int x = bfd_get_32 (dynobj, contents + i);
+ BFD_ASSERT (x != 0);
+ }
+ }
+
+ return true;
+}
+
+/* Return the section that should be marked against GC for a given
+ relocation. */
+
+static asection *
+xstormy16_elf_gc_mark_hook (abfd, info, rel, h, sym)
+ bfd * abfd;
+ struct bfd_link_info * info ATTRIBUTE_UNUSED;
+ Elf_Internal_Rela * rel;
+ struct elf_link_hash_entry * h;
+ Elf_Internal_Sym * sym;
+{
+ if (h != NULL)
+ {
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_XSTORMY16_GNU_VTINHERIT:
+ case R_XSTORMY16_GNU_VTENTRY:
+ break;
+
+ default:
+ switch (h->root.type)
+ {
+ case bfd_link_hash_defined:
+ case bfd_link_hash_defweak:
+ return h->root.u.def.section;
+
+ case bfd_link_hash_common:
+ return h->root.u.c.p->section;
+
+ default:
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (!(elf_bad_symtab (abfd)
+ && ELF_ST_BIND (sym->st_info) != STB_LOCAL)
+ && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE)
+ && sym->st_shndx != SHN_COMMON))
+ {
+ return bfd_section_from_elf_index (abfd, sym->st_shndx);
+ }
+ }
+
+ return NULL;
+}
+
+/* Update the got entry reference counts for the section being removed. */
+
+static boolean
+xstormy16_elf_gc_sweep_hook (abfd, info, sec, relocs)
+ bfd * abfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info * info ATTRIBUTE_UNUSED;
+ asection * sec ATTRIBUTE_UNUSED;
+ const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED;
+{
+ return true;
+}
+
+#define ELF_ARCH bfd_arch_xstormy16
+#define ELF_MACHINE_CODE EM_XSTORMY16
+#define ELF_MAXPAGESIZE 0x100
+
+#define TARGET_LITTLE_SYM bfd_elf32_xstormy16_vec
+#define TARGET_LITTLE_NAME "elf32-xstormy16"
+
+#define elf_info_to_howto_rel NULL
+#define elf_info_to_howto xstormy16_info_to_howto_rela
+#define elf_backend_relocate_section xstormy16_elf_relocate_section
+#define elf_backend_gc_mark_hook xstormy16_elf_gc_mark_hook
+#define elf_backend_gc_sweep_hook xstormy16_elf_gc_sweep_hook
+#define elf_backend_check_relocs xstormy16_elf_check_relocs
+#define elf_backend_always_size_sections \
+ xstormy16_elf_always_size_sections
+#define elf_backend_finish_dynamic_sections \
+ xstormy16_elf_finish_dynamic_sections
+
+#define elf_backend_can_gc_sections 1
+
+#define bfd_elf32_bfd_reloc_type_lookup xstormy16_reloc_type_lookup
+#define bfd_elf32_bfd_relax_section xstormy16_elf_relax_section
+
+#include "elf32-target.h"
Index: bfd/reloc.c
===================================================================
RCS file: /cvs/src/src/bfd/reloc.c,v
retrieving revision 1.50
diff -p -u -p -r1.50 reloc.c
--- bfd/reloc.c 2001/12/03 23:16:20 1.50
+++ bfd/reloc.c 2001/12/07 22:26:49
@@ -3253,6 +3253,15 @@ ENUMX
ENUMDOC
H8 elf Relocations.
+ENUM
+ BFD_RELOC_XSTORMY16_REL_12
+ENUMX
+ BFD_RELOC_XSTORMY16_24
+ENUMX
+ BFD_RELOC_XSTORMY16_FPTR16
+ENUMDOC
+ Sony Xstormy16 Relocations.
+
ENDSENUM
BFD_RELOC_UNUSED
CODE_FRAGMENT
Index: bfd/targets.c
===================================================================
RCS file: /cvs/src/src/bfd/targets.c,v
retrieving revision 1.50
diff -p -u -p -r1.50 targets.c
--- bfd/targets.c 2001/10/31 09:01:21 1.50
+++ bfd/targets.c 2001/12/07 22:26:49
@@ -554,6 +554,7 @@ extern const bfd_target bfd_elf32_tradbi
extern const bfd_target bfd_elf32_tradlittlemips_vec;
extern const bfd_target bfd_elf32_us_cris_vec;
extern const bfd_target bfd_elf32_v850_vec;
+extern const bfd_target bfd_elf32_xstormy16_vec;
extern const bfd_target bfd_elf64_alpha_vec;
extern const bfd_target bfd_elf64_big_generic_vec;
extern const bfd_target bfd_elf64_bigmips_vec;
@@ -793,6 +794,7 @@ static const bfd_target * const _bfd_tar
&bfd_elf32_tradlittlemips_vec,
&bfd_elf32_us_cris_vec,
&bfd_elf32_v850_vec,
+ &bfd_elf32_xstormy16_vec,
#ifdef BFD64
&bfd_elf64_alpha_vec,
&bfd_elf64_big_generic_vec,
Index: binutils/readelf.c
===================================================================
RCS file: /cvs/src/src/binutils/readelf.c,v
retrieving revision 1.136
diff -p -u -p -r1.136 readelf.c
--- binutils/readelf.c 2001/12/06 10:22:36 1.136
+++ binutils/readelf.c 2001/12/07 22:26:51
@@ -77,6 +77,7 @@
#include "elf/i860.h"
#include "elf/x86-64.h"
#include "elf/s390.h"
+#include "elf/xstormy16.h"
#include "bucomm.h"
#include "getopt.h"
@@ -595,6 +596,7 @@ guess_is_rela (e_machine)
case EM_S390:
case EM_S390_OLD:
case EM_MMIX:
+ case EM_XSTORMY16:
return TRUE;
case EM_MMA:
@@ -1009,6 +1011,10 @@ dump_relocations (file, rel_offset, rel_
case EM_S390:
rtype = elf_s390_reloc_type (type);
break;
+
+ case EM_XSTORMY16:
+ rtype = elf_xstormy16_reloc_type (type);
+ break;
}
if (rtype == NULL)
@@ -1396,6 +1402,7 @@ get_machine_name (e_machine)
case EM_X86_64: return "Advanced Micro Devices X86-64";
case EM_S390_OLD:
case EM_S390: return "IBM S/390";
+ case EM_XSTORMY16: return "Sanyo Xstormy16 CPU core";
default:
sprintf (buff, _("<unknown>: %x"), e_machine);
return buff;
Index: gas/Makefile.am
===================================================================
RCS file: /cvs/src/src/gas/Makefile.am,v
retrieving revision 1.44
diff -p -u -p -r1.44 Makefile.am
--- gas/Makefile.am 2001/10/31 05:04:33 1.44
+++ gas/Makefile.am 2001/12/07 22:26:53
@@ -78,6 +78,7 @@ CPU_TYPES = \
vax \
w65 \
v850 \
+ xstormy16 \
z8k
# Object format types. This is only used for dependency information.
@@ -263,6 +264,7 @@ TARGET_CPU_CFILES = \
config/tc-vax.c \
config/tc-w65.c \
config/tc-v850.c \
+ config/tc-xstormy16.c \
config/tc-z8k.c
TARGET_CPU_HFILES = \
@@ -307,6 +309,7 @@ TARGET_CPU_HFILES = \
config/tc-vax.h \
config/tc-w65.h \
config/tc-v850.h \
+ config/tc-xstormy16.h \
config/tc-z8k.h
# OBJ files in config
Index: gas/configure.in
===================================================================
RCS file: /cvs/src/src/gas/configure.in,v
retrieving revision 1.84
diff -p -u -p -r1.84 configure.in
--- gas/configure.in 2001/11/04 19:06:38 1.84
+++ gas/configure.in 2001/12/07 22:26:54
@@ -449,12 +449,13 @@ changequote([,])dnl
fmt=aout ;;
vax-*-vms) fmt=vms ;;
+ w65-*-*) fmt=coff ;;
+
+ xstormy16-*-*) fmt=elf bfd_gas=yes ;;
z8k-*-coff | z8k-*-sim)
fmt=coff ;;
- w65-*-*) fmt=coff ;;
-
*-*-aout | *-*-scout)
fmt=aout ;;
*-*-freebsd*) fmt=elf em=freebsd bfd_gas=yes ;;
@@ -570,6 +571,11 @@ changequote([,])dnl
AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
fi
;;
+
+ xstormy16)
+ using_cgen=yes
+ ;;
+
*)
;;
esac
Index: gas/config/tc-xstormy16.c
===================================================================
RCS file: tc-xstormy16.c
diff -N tc-xstormy16.c
--- gas/config/tc-xstormy16.c Tue May 5 13:32:27 1998
+++ gas/config/tc-xstormy16.c Fri Dec 7 14:26:54 2001
@@ -0,0 +1,650 @@
+/* tc-xstormy16.c -- Assembler for the Sanyo XSTORMY16.
+ Copyright (C) 2000, 2001 Free Software Foundation.
+
+ 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. */
+
+#include <stdio.h>
+#include "as.h"
+#include "subsegs.h"
+#include "symcat.h"
+#include "opcodes/xstormy16-desc.h"
+#include "opcodes/xstormy16-opc.h"
+#include "cgen.h"
+
+/* Structure to hold all of the different components describing
+ an individual instruction. */
+typedef struct
+{
+ const CGEN_INSN * insn;
+ const CGEN_INSN * orig_insn;
+ CGEN_FIELDS fields;
+#if CGEN_INT_INSN_P
+ CGEN_INSN_INT buffer [1];
+#define INSN_VALUE(buf) (*(buf))
+#else
+ unsigned char buffer [CGEN_MAX_INSN_SIZE];
+#define INSN_VALUE(buf) (buf)
+#endif
+ char * addr;
+ fragS * frag;
+ int num_fixups;
+ fixS * fixups [GAS_CGEN_MAX_FIXUPS];
+ int indices [MAX_OPERAND_INSTANCES];
+}
+xstormy16_insn;
+
+const char comment_chars[] = ";";
+const char line_comment_chars[] = "#";
+const char line_separator_chars[] = "|";
+const char EXP_CHARS[] = "eE";
+const char FLT_CHARS[] = "dD";
+
+#define O_fptr_symbol (O_max + 1)
+
+#define XSTORMY16_SHORTOPTS ""
+const char * md_shortopts = XSTORMY16_SHORTOPTS;
+
+struct option md_longopts[] =
+{
+ {NULL, no_argument, NULL, 0}
+};
+size_t md_longopts_size = sizeof (md_longopts);
+
+int
+md_parse_option (c, arg)
+ int c ATTRIBUTE_UNUSED;
+ char * arg ATTRIBUTE_UNUSED;
+{
+ return 0;
+}
+
+void
+md_show_usage (stream)
+ FILE * stream;
+{
+ fprintf (stream, _(" XSTORMY16 specific command line options:\n"));
+}
+
+/* The target specific pseudo-ops which we support. */
+const pseudo_typeS md_pseudo_table[] =
+{
+ { "word", cons, 4 },
+ { NULL, NULL, 0 }
+};
+
+
+void
+md_begin ()
+{
+ /* Initialize the `cgen' interface. */
+
+ /* Set the machine number and endian. */
+ gas_cgen_cpu_desc = xstormy16_cgen_cpu_open (CGEN_CPU_OPEN_MACHS, 0,
+ CGEN_CPU_OPEN_ENDIAN,
+ CGEN_ENDIAN_LITTLE,
+ CGEN_CPU_OPEN_END);
+ xstormy16_cgen_init_asm (gas_cgen_cpu_desc);
+
+ /* This is a callback from cgen to gas to parse operands. */
+ cgen_set_parse_operand_fn (gas_cgen_cpu_desc, gas_cgen_parse_operand);
+}
+
+void
+md_assemble (str)
+ char * str;
+{
+ xstormy16_insn insn;
+ char * errmsg;
+
+ /* Initialize GAS's cgen interface for a new instruction. */
+ gas_cgen_init_parse ();
+
+ insn.insn = xstormy16_cgen_assemble_insn
+ (gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg);
+
+ if (!insn.insn)
+ {
+ as_bad (errmsg);
+ return;
+ }
+
+ /* Doesn't really matter what we pass for RELAX_P here. */
+ gas_cgen_finish_insn (insn.insn, insn.buffer,
+ CGEN_FIELDS_BITSIZE (& insn.fields), 0, NULL);
+}
+
+void
+md_operand (e)
+ expressionS * e;
+{
+ if (*input_line_pointer != '@')
+ return;
+
+ if (strncmp (input_line_pointer+1, "fptr", 4) == 0)
+ {
+ input_line_pointer += 5;
+ SKIP_WHITESPACE ();
+ if (*input_line_pointer != '(')
+ {
+ as_bad ("Expected '('");
+ goto err;
+ }
+ input_line_pointer++;
+
+ expression (e);
+
+ if (*input_line_pointer != ')')
+ {
+ as_bad ("Missing ')'");
+ goto err;
+ }
+ input_line_pointer++;
+
+ if (e->X_op != O_symbol)
+ as_bad ("Not a symbolic expression");
+ else
+ e->X_op = O_fptr_symbol;
+ }
+
+ return;
+ err:
+ ignore_rest_of_line ();
+}
+
+/* Called while parsing data to create a fixup.
+ Create BFD_RELOC_XSTORMY16_FPTR16 relocations. */
+
+void
+xstormy16_cons_fix_new (f, where, nbytes, exp)
+ fragS *f;
+ int where;
+ int nbytes;
+ expressionS *exp;
+{
+ bfd_reloc_code_real_type code;
+ fixS *fix;
+
+ if (exp->X_op == O_fptr_symbol)
+ {
+ if (nbytes != 2)
+ {
+ as_bad ("unsupported fptr fixup size %d", nbytes);
+ return;
+ }
+ exp->X_op = O_symbol;
+ code = BFD_RELOC_XSTORMY16_FPTR16;
+ }
+ else if (nbytes == 1)
+ code = BFD_RELOC_8;
+ else if (nbytes == 2)
+ code = BFD_RELOC_16;
+ else if (nbytes == 4)
+ code = BFD_RELOC_32;
+ else
+ {
+ as_bad ("unsupported fixup size %d", nbytes);
+ return;
+ }
+
+ fix = fix_new_exp (f, where, nbytes, exp, 0, code);
+}
+
+/* Called while parsing an instruction to create a fixup.
+ Create BFD_RELOC_XSTORMY16_FPTR16 relocations. */
+
+fixS *
+xstormy16_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp)
+ fragS * frag;
+ int where;
+ const CGEN_INSN * insn;
+ int length;
+ const CGEN_OPERAND * operand;
+ int opinfo;
+ expressionS * exp;
+{
+ fixS *fixP;
+ operatorT op = exp->X_op;
+
+ if (op == O_fptr_symbol)
+ exp->X_op = O_symbol;
+
+ fixP = gas_cgen_record_fixup_exp (frag, where, insn, length,
+ operand, opinfo, exp);
+
+ if (op == O_fptr_symbol)
+ {
+ if (operand->type != XSTORMY16_OPERAND_IMM16)
+ as_bad ("unsupported fptr fixup");
+ else
+ {
+ fixP->fx_r_type = BFD_RELOC_XSTORMY16_FPTR16;
+ fixP->fx_where += 2;
+ }
+ }
+
+ return fixP;
+}
+
+valueT
+md_section_align (segment, size)
+ segT segment;
+ valueT size;
+{
+ int align = bfd_get_section_alignment (stdoutput, segment);
+ return ((size + (1 << align) - 1) & (-1 << align));
+}
+
+symbolS *
+md_undefined_symbol (name)
+ char * name ATTRIBUTE_UNUSED;
+{
+ return 0;
+}
+
+/* Return an initial guess of the length by which a fragment must grow to
+ hold a branch to reach its destination.
+ Also updates fr_type/fr_subtype as necessary.
+
+ Called just before doing relaxation.
+ Any symbol that is now undefined will not become defined.
+ The guess for fr_var is ACTUALLY the growth beyond fr_fix.
+ Whatever we do to grow fr_fix or fr_var contributes to our returned value.
+ Although it may not be explicit in the frag, pretend fr_var starts with a
+ 0 value. */
+
+int
+md_estimate_size_before_relax (fragP, segment)
+ fragS * fragP ATTRIBUTE_UNUSED;
+ segT segment ATTRIBUTE_UNUSED;
+{
+ /* No assembler relaxation is defined (or necessary) for this port. */
+ abort ();
+}
+
+/* *fragP has been relaxed to its final size, and now needs to have
+ the bytes inside it modified to conform to the new size.
+
+ Called after relaxation is finished.
+ fragP->fr_type == rs_machine_dependent.
+ fragP->fr_subtype is the subtype of what the address relaxed to. */
+
+void
+md_convert_frag (abfd, sec, fragP)
+ bfd * abfd ATTRIBUTE_UNUSED;
+ segT sec ATTRIBUTE_UNUSED;
+ fragS * fragP ATTRIBUTE_UNUSED;
+{
+ /* No assembler relaxation is defined (or necessary) for this port. */
+ abort ();
+}
+
+/* Functions concerning relocs. */
+
+/* The location from which a PC relative jump should be calculated,
+ given a PC relative reloc. */
+
+long
+md_pcrel_from_section (fixP, sec)
+ fixS * fixP;
+ segT sec;
+{
+ if (fixP->fx_addsy != (symbolS *) NULL
+ && (! S_IS_DEFINED (fixP->fx_addsy)
+ || S_GET_SEGMENT (fixP->fx_addsy) != sec))
+ {
+ /* The symbol is undefined (or is defined but not in this section).
+ Let the linker figure it out. */
+ return 0;
+ }
+
+ return fixP->fx_frag->fr_address + fixP->fx_where;
+}
+
+/* Return the bfd reloc type for OPERAND of INSN at fixup FIXP.
+ Returns BFD_RELOC_NONE if no reloc type can be found.
+ *FIXP may be modified if desired. */
+
+bfd_reloc_code_real_type
+md_cgen_lookup_reloc (insn, operand, fixP)
+ const CGEN_INSN * insn ATTRIBUTE_UNUSED;
+ const CGEN_OPERAND * operand;
+ fixS * fixP;
+{
+ switch (operand->type)
+ {
+ case XSTORMY16_OPERAND_IMM2:
+ case XSTORMY16_OPERAND_IMM3:
+ case XSTORMY16_OPERAND_IMM3B:
+ case XSTORMY16_OPERAND_IMM4:
+ case XSTORMY16_OPERAND_IMM12:
+ case XSTORMY16_OPERAND_HMEM8:
+ return BFD_RELOC_NONE;
+
+ case XSTORMY16_OPERAND_IMM8:
+ case XSTORMY16_OPERAND_LMEM8:
+ return fixP->fx_pcrel ? BFD_RELOC_8_PCREL : BFD_RELOC_8;
+
+ case XSTORMY16_OPERAND_IMM16:
+ fixP->fx_where += 2;
+ return fixP->fx_pcrel ? BFD_RELOC_16_PCREL : BFD_RELOC_16;
+
+ case XSTORMY16_OPERAND_ABS24:
+ return BFD_RELOC_XSTORMY16_24;
+
+ case XSTORMY16_OPERAND_REL8_2:
+ case XSTORMY16_OPERAND_REL8_4:
+ fixP->fx_pcrel = 1;
+ return BFD_RELOC_8_PCREL;
+
+ case XSTORMY16_OPERAND_REL12:
+ fixP->fx_where += 2;
+ /* Fall through... */
+ case XSTORMY16_OPERAND_REL12A:
+ fixP->fx_pcrel = 1;
+ return BFD_RELOC_XSTORMY16_REL_12;
+
+ default : /* avoid -Wall warning */
+ abort ();
+ }
+}
+
+/* See whether we need to force a relocation into the output file.
+ This is used to force out switch and PC relative relocations when
+ relaxing. */
+
+int
+xstormy16_force_relocation (fix)
+ fixS * fix;
+{
+ switch (fix->fx_r_type)
+ {
+ case BFD_RELOC_XSTORMY16_FPTR16:
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
+ return 1;
+
+ default:
+ return 0;
+ }
+}
+
+/* Return true if a relocation against a symbol may be replaced with
+ a relocation against section+offset. */
+
+boolean
+xstormy16_fix_adjustable (fixP)
+ fixS * fixP;
+{
+ if (fixP->fx_addsy == NULL)
+ return 1;
+
+ /* Prevent all adjustments to global symbols. */
+ if (S_IS_EXTERN (fixP->fx_addsy))
+ return 0;
+
+ if (S_IS_WEAK (fixP->fx_addsy))
+ return 0;
+
+ return ! xstormy16_force_relocation (fixP);
+}
+
+/* This is a copy of gas_cgen_md_apply_fix3, with some enhancements to
+ do various things that would not be valid for all ports. */
+
+void
+xstormy16_md_apply_fix3 (fixP, valueP, seg)
+ fixS * fixP;
+ valueT * valueP;
+ segT seg ATTRIBUTE_UNUSED;
+{
+ char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
+ valueT value;
+ /* Canonical name, since used a lot. */
+ CGEN_CPU_DESC cd = gas_cgen_cpu_desc;
+
+ /* This port has pc-relative relocs and DIFF_EXPR_OK defined, so
+ it must deal with turning a BFD_RELOC_{8,16,32,64} into a
+ BFD_RELOC_*_PCREL for the case of
+
+ .word something-.
+ */
+ if (fixP->fx_pcrel)
+ switch (fixP->fx_r_type)
+ {
+ case BFD_RELOC_8:
+ fixP->fx_r_type = BFD_RELOC_8_PCREL;
+ break;
+ case BFD_RELOC_16:
+ fixP->fx_r_type = BFD_RELOC_16_PCREL;
+ break;
+ case BFD_RELOC_32:
+ fixP->fx_r_type = BFD_RELOC_32_PCREL;
+ break;
+ case BFD_RELOC_64:
+ fixP->fx_r_type = BFD_RELOC_64_PCREL;
+ break;
+ default:
+ break;
+ }
+
+ /* FIXME FIXME FIXME: The value we are passed in *valuep includes
+ the symbol values. Since we are using BFD_ASSEMBLER, if we are
+ doing this relocation the code in write.c is going to call
+ bfd_install_relocation, which is also going to use the symbol
+ value. That means that if the reloc is fully resolved we want to
+ use *valuep since bfd_install_relocation is not being used.
+ However, if the reloc is not fully resolved we do not want to use
+ *valuep, and must use fx_offset instead. However, if the reloc
+ is PC relative, we do want to use *valuep since it includes the
+ result of md_pcrel_from. This is confusing. */
+
+ if (fixP->fx_addsy == (symbolS *) NULL)
+ {
+ value = *valueP;
+ fixP->fx_done = 1;
+ }
+ else if (fixP->fx_pcrel)
+ value = *valueP;
+ else
+ {
+ value = fixP->fx_offset;
+ if (fixP->fx_subsy != (symbolS *) NULL)
+ {
+ if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+ value -= S_GET_VALUE (fixP->fx_subsy);
+ else
+ {
+ /* We don't actually support subtracting a symbol. */
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("expression too complex"));
+ }
+ }
+ }
+
+ if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
+ {
+ int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
+ const CGEN_OPERAND *operand = cgen_operand_lookup_by_num (cd, opindex);
+ const char *errmsg;
+ bfd_reloc_code_real_type reloc_type;
+ CGEN_FIELDS *fields = alloca (CGEN_CPU_SIZEOF_FIELDS (cd));
+ const CGEN_INSN *insn = fixP->fx_cgen.insn;
+
+ /* If the reloc has been fully resolved finish the operand here. */
+ /* FIXME: This duplicates the capabilities of code in BFD. */
+ if (fixP->fx_done)
+ {
+ CGEN_CPU_SET_FIELDS_BITSIZE (cd) (fields, CGEN_INSN_BITSIZE (insn));
+ CGEN_CPU_SET_VMA_OPERAND (cd) (cd, opindex, fields, (bfd_vma) value);
+
+#if CGEN_INT_INSN_P
+ {
+ CGEN_INSN_INT insn_value =
+ cgen_get_insn_value (cd, where, CGEN_INSN_BITSIZE (insn));
+
+ /* ??? 0 is passed for `pc'. */
+ errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields,
+ &insn_value, (bfd_vma) 0);
+ cgen_put_insn_value (cd, where, CGEN_INSN_BITSIZE (insn),
+ insn_value);
+ }
+#else
+ /* ??? 0 is passed for `pc'. */
+ errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, where,
+ (bfd_vma) 0);
+#endif
+ if (errmsg)
+ as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg);
+ }
+
+ if (fixP->fx_done)
+ return 1;
+
+ /* The operand isn't fully resolved. Determine a BFD reloc value
+ based on the operand information and leave it to
+ bfd_install_relocation. Note that this doesn't work when
+ partial_inplace == false. */
+
+ reloc_type = md_cgen_lookup_reloc (insn, operand, fixP);
+ if (reloc_type != BFD_RELOC_NONE)
+ {
+ fixP->fx_r_type = reloc_type;
+ }
+ else
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("unresolved expression that must be resolved"));
+ fixP->fx_done = 1;
+ return 1;
+ }
+ }
+ else if (fixP->fx_done)
+ {
+ /* We're finished with this fixup. Install it because
+ bfd_install_relocation won't be called to do it. */
+ switch (fixP->fx_r_type)
+ {
+ case BFD_RELOC_8:
+ md_number_to_chars (where, value, 1);
+ break;
+ case BFD_RELOC_16:
+ md_number_to_chars (where, value, 2);
+ break;
+ case BFD_RELOC_32:
+ md_number_to_chars (where, value, 4);
+ break;
+ case BFD_RELOC_64:
+ md_number_to_chars (where, value, 8);
+ break;
+ default:
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("internal error: can't install fix for reloc type %d (`%s')"),
+ fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type));
+ break;
+ }
+ }
+ else
+ {
+ /* bfd_install_relocation will be called to finish things up. */
+ }
+
+ /* This is a RELA port. Thus, it does not need to store a
+ value if it is going to make a reloc. What's more, when
+ assembling a line like
+
+ .byte global-0x7f00
+
+ we'll get a spurious error message if we try to stuff 0x7f00 into
+ the byte. */
+ if (! fixP->fx_done)
+ *valueP = 0;
+
+ /* Tuck `value' away for use by tc_gen_reloc.
+ See the comment describing fx_addnumber in write.h.
+ This field is misnamed (or misused :-). */
+ fixP->fx_addnumber = value;
+
+ return 1;
+}
+
+
+/* Write a value out to the object file, using the appropriate endianness. */
+
+void
+md_number_to_chars (buf, val, n)
+ char * buf;
+ valueT val;
+ int n;
+{
+ number_to_chars_littleendian (buf, val, n);
+}
+
+/* Turn a string in input_line_pointer into a floating point constant of type
+ type, and store the appropriate bytes in *litP. The number of LITTLENUMS
+ emitted is stored in *sizeP . An error message is returned, or NULL on OK.
+*/
+
+/* Equal to MAX_PRECISION in atof-ieee.c */
+#define MAX_LITTLENUMS 6
+
+char *
+md_atof (type, litP, sizeP)
+ char type;
+ char * litP;
+ int * sizeP;
+{
+ int prec;
+ LITTLENUM_TYPE words [MAX_LITTLENUMS];
+ LITTLENUM_TYPE *wordP;
+ char * t;
+
+ switch (type)
+ {
+ case 'f':
+ case 'F':
+ prec = 2;
+ break;
+
+ case 'd':
+ case 'D':
+ prec = 4;
+ break;
+
+ /* FIXME: Some targets allow other format chars for bigger sizes here. */
+
+ default:
+ * sizeP = 0;
+ return _("Bad call to md_atof()");
+ }
+
+ t = atof_ieee (input_line_pointer, type, words);
+ if (t)
+ input_line_pointer = t;
+ * sizeP = prec * sizeof (LITTLENUM_TYPE);
+
+ *sizeP = prec * sizeof (LITTLENUM_TYPE);
+ /* This loops outputs the LITTLENUMs in REVERSE order; in accord with
+ the littleendianness of the processor. */
+ for (wordP = words + prec - 1; prec--;)
+ {
+ md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE));
+ litP += sizeof (LITTLENUM_TYPE);
+ }
+
+ return 0;
+}
Index: gas/config/tc-xstormy16.h
===================================================================
RCS file: tc-xstormy16.h
diff -N tc-xstormy16.h
--- gas/config/tc-xstormy16.h Tue May 5 13:32:27 1998
+++ gas/config/tc-xstormy16.h Fri Dec 7 14:26:54 2001
@@ -0,0 +1,69 @@
+/* tc-xstormy16.h -- Header file for tc-xstormy16.c.
+ Copyright (C) 2000, 2001 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_XSTORMY16
+
+#ifndef BFD_ASSEMBLER
+/* leading space so will compile with cc */
+ #error XSTORMY16 support requires BFD_ASSEMBLER
+#endif
+
+#define LISTING_HEADER "XSTORMY16 GAS "
+
+/* The target BFD architecture. */
+#define TARGET_ARCH bfd_arch_xstormy16
+
+#define TARGET_FORMAT "elf32-xstormy16"
+
+#define TARGET_BYTES_BIG_ENDIAN 0
+
+/* call md_pcrel_from_section, not md_pcrel_from */
+long md_pcrel_from_section PARAMS ((struct fix *, segT));
+#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
+
+/* Permit temporary numeric labels. */
+#define LOCAL_LABELS_FB 1
+
+#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_APPLY_FIX3
+#define md_apply_fix3 xstormy16_md_apply_fix3
+
+#define obj_fix_adjustable(fixP) xstormy16_fix_adjustable (fixP)
+extern boolean xstormy16_fix_adjustable PARAMS ((struct fix *));
+
+#define TC_FORCE_RELOCATION(fix) xstormy16_force_relocation (fix)
+extern int xstormy16_force_relocation PARAMS ((struct fix *));
+
+#define TC_HANDLES_FX_DONE
+
+#define tc_gen_reloc gas_cgen_tc_gen_reloc
+
+/* Call md_pcrel_from_section(), not md_pcrel_from(). */
+#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
+extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
+
+#define TC_CONS_FIX_NEW xstormy16_cons_fix_new
+extern void xstormy16_cons_fix_new PARAMS ((fragS *f, int, int, expressionS *));
+
+#define md_cgen_record_fixup_exp xstormy16_cgen_record_fixup_exp
Index: gas/testsuite/gas/xstormy16/allinsn.d
===================================================================
RCS file: allinsn.d
diff -N allinsn.d
--- gas/testsuite/gas/xstormy16/allinsn.d Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/allinsn.d Fri Dec 7 14:26:56 2001
@@ -0,0 +1,1222 @@
+#as:
+#objdump: -dr
+#name: allinsn
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+00000000 <movlmemimm>:
+ 0: 00 78 00 00 mov\.b 0x0,#0x0
+ 4: ff 79 ff ff mov\.w 0xff,#0xffff
+ 8: 80 79 00 80 mov\.w 0x80,#0x8000
+ c: 7f 78 ff 7f mov\.b 0x7f,#0x7fff
+ 10: 01 79 01 00 mov\.w 0x1,#0x1
+ 14: 51 79 a9 fc mov\.w 0x51,#0xfca9
+ 18: f7 79 f6 a4 mov\.w 0xf7,#0xa4f6
+ 1c: 54 78 07 41 mov\.b 0x54,#0x4107
+
+00000020 <movhmemimm>:
+ 20: 00 7a 00 00 mov\.b 0x7f00,#0x0
+ 24: ff 7b ff ff mov\.w 0x7fff,#0xffff
+ 28: 80 7b 00 80 mov\.w 0x7f80,#0x8000
+ 2c: 7f 7a ff 7f mov\.b 0x7f7f,#0x7fff
+ 30: 01 7b 01 00 mov\.w 0x7f01,#0x1
+ 34: a5 7a 98 07 mov\.b 0x7fa5,#0x798
+ 38: ba 7b fd 2c mov\.w 0x7fba,#0x2cfd
+ 3c: 3f 7a d4 63 mov\.b 0x7f3f,#0x63d4
+
+00000040 <movlgrmem>:
+ 40: 00 80 mov\.b r0,0x0
+ 42: ff 8f mov\.w r7,0xff
+ 44: 80 89 mov\.w r4,0x80
+ 46: 7f 86 mov\.b r3,0x7f
+ 48: 01 83 mov\.w r1,0x1
+ 4a: b3 8d mov\.w r6,0xb3
+ 4c: b7 81 mov\.w r0,0xb7
+ 4e: 29 86 mov\.b r3,0x29
+
+00000050 <movhgrmem>:
+ 50: 00 a0 mov\.b r0,0x7f00
+ 52: ff af mov\.w r7,0x7fff
+ 54: 80 a9 mov\.w r4,0x7f80
+ 56: 7f a6 mov\.b r3,0x7f7f
+ 58: 01 a3 mov\.w r1,0x7f01
+ 5a: 72 a4 mov\.b r2,0x7f72
+ 5c: d2 a5 mov\.w r2,0x7fd2
+ 5e: b5 ab mov\.w r5,0x7fb5
+
+00000060 <movlmemgr>:
+ 60: 00 90 mov\.b 0x0,r0
+ 62: ff 9f mov\.w 0xff,r7
+ 64: 80 99 mov\.w 0x80,r4
+ 66: 7f 96 mov\.b 0x7f,r3
+ 68: 01 93 mov\.w 0x1,r1
+ 6a: 89 91 mov\.w 0x89,r0
+ 6c: 1a 91 mov\.w 0x1a,r0
+ 6e: 7f 98 mov\.b 0x7f,r4
+
+00000070 <movhmemgr>:
+ 70: 00 b0 mov\.b 0x7f00,r0
+ 72: ff bf mov\.w 0x7fff,r7
+ 74: 80 b9 mov\.w 0x7f80,r4
+ 76: 7f b6 mov\.b 0x7f7f,r3
+ 78: 01 b3 mov\.w 0x7f01,r1
+ 7a: 62 b7 mov\.w 0x7f62,r3
+ 7c: 87 bf mov\.w 0x7f87,r7
+ 7e: e5 b4 mov\.b 0x7fe5,r2
+
+00000080 <movgrgri>:
+ 80: 00 70 mov\.b r0,\(r0\)
+ 82: f7 71 mov\.w r7,\(r15\)
+ 84: 84 71 mov\.w r4,\(r8\)
+ 86: 73 70 mov\.b r3,\(r7\)
+ 88: 11 71 mov\.w r1,\(r1\)
+ 8a: 46 71 mov\.w r6,\(r4\)
+ 8c: c0 70 mov\.b r0,\(r12\)
+ 8e: 95 71 mov\.w r5,\(r9\)
+
+00000090 <movgrgripostinc>:
+ 90: 00 60 mov\.b r0,\(r0\+\+\)
+ 92: f7 61 mov\.w r7,\(r15\+\+\)
+ 94: 84 61 mov\.w r4,\(r8\+\+\)
+ 96: 73 60 mov\.b r3,\(r7\+\+\)
+ 98: 11 61 mov\.w r1,\(r1\+\+\)
+ 9a: 84 61 mov\.w r4,\(r8\+\+\)
+ 9c: c3 61 mov\.w r3,\(r12\+\+\)
+ 9e: 46 60 mov\.b r6,\(r4\+\+\)
+
+000000a0 <movgrgripredec>:
+ a0: 00 68 mov\.b r0,\(--r0\)
+ a2: f7 69 mov\.w r7,\(--r15\)
+ a4: 84 69 mov\.w r4,\(--r8\)
+ a6: 73 68 mov\.b r3,\(--r7\)
+ a8: 11 69 mov\.w r1,\(--r1\)
+ aa: 95 69 mov\.w r5,\(--r9\)
+ ac: e4 69 mov\.w r4,\(--r14\)
+ ae: 74 68 mov\.b r4,\(--r7\)
+
+000000b0 <movgrigr>:
+ b0: 00 72 mov\.b \(r0\),r0
+ b2: f7 73 mov\.w \(r15\),r7
+ b4: 84 73 mov\.w \(r8\),r4
+ b6: 73 72 mov\.b \(r7\),r3
+ b8: 11 73 mov\.w \(r1\),r1
+ ba: 43 73 mov\.w \(r4\),r3
+ bc: 36 72 mov\.b \(r3\),r6
+ be: 70 73 mov\.w \(r7\),r0
+
+000000c0 <movgripostincgr>:
+ c0: 00 62 mov\.b \(r0\+\+\),r0
+ c2: f7 63 mov\.w \(r15\+\+\),r7
+ c4: 84 63 mov\.w \(r8\+\+\),r4
+ c6: 73 62 mov\.b \(r7\+\+\),r3
+ c8: 11 63 mov\.w \(r1\+\+\),r1
+ ca: c5 63 mov\.w \(r12\+\+\),r5
+ cc: 42 62 mov\.b \(r4\+\+\),r2
+ ce: b6 62 mov\.b \(r11\+\+\),r6
+
+000000d0 <movgripredecgr>:
+ d0: 00 6a mov\.b \(--r0\),r0
+ d2: f7 6b mov\.w \(--r15\),r7
+ d4: 84 6b mov\.w \(--r8\),r4
+ d6: 73 6a mov\.b \(--r7\),r3
+ d8: 11 6b mov\.w \(--r1\),r1
+ da: 83 6a mov\.b \(--r8\),r3
+ dc: b4 6a mov\.b \(--r11\),r4
+ de: 16 6b mov\.w \(--r1\),r6
+
+000000e0 <movgrgrii>:
+ e0: 08 70 00 00 mov\.b r0,\(r0,0\)
+ e4: ff 71 ff 0f mov\.w r7,\(r15,-1\)
+ e8: 8c 71 00 08 mov\.w r4,\(r8,-2048\)
+ ec: 7b 70 ff 07 mov\.b r3,\(r7,2047\)
+ f0: 19 71 01 00 mov\.w r1,\(r1,1\)
+ f4: 8e 71 3c 0e mov\.w r6,\(r8,-452\)
+ f8: bc 71 3c 02 mov\.w r4,\(r11,572\)
+ fc: 19 70 4a 09 mov\.b r1,\(r1,-1718\)
+
+00000100 <movgrgriipostinc>:
+ 100: 08 60 00 00 mov\.b r0,\(r0\+\+,0\)
+ 104: ff 61 ff 0f mov\.w r7,\(r15\+\+,-1\)
+ 108: 8c 61 00 08 mov\.w r4,\(r8\+\+,-2048\)
+ 10c: 7b 60 ff 07 mov\.b r3,\(r7\+\+,2047\)
+ 110: 19 61 01 00 mov\.w r1,\(r1\+\+,1\)
+ 114: 0e 61 c0 0f mov\.w r6,\(r0\+\+,-64\)
+ 118: ff 60 24 04 mov\.b r7,\(r15\+\+,1060\)
+ 11c: 78 60 4f 03 mov\.b r0,\(r7\+\+,847\)
+
+00000120 <movgrgriipredec>:
+ 120: 08 68 00 00 mov\.b r0,\(--r0,0\)
+ 124: ff 69 ff 0f mov\.w r7,\(--r15,-1\)
+ 128: 8c 69 00 08 mov\.w r4,\(--r8,-2048\)
+ 12c: 7b 68 ff 07 mov\.b r3,\(--r7,2047\)
+ 130: 19 69 01 00 mov\.w r1,\(--r1,1\)
+ 134: f8 69 f4 06 mov\.w r0,\(--r15,1780\)
+ 138: 1e 69 e2 05 mov\.w r6,\(--r1,1506\)
+ 13c: 3f 69 0f 08 mov\.w r7,\(--r3,-2033\)
+
+00000140 <movgriigr>:
+ 140: 08 72 00 00 mov\.b \(r0,0\),r0
+ 144: ff 73 ff 0f mov\.w \(r15,-1\),r7
+ 148: 8c 73 00 08 mov\.w \(r8,-2048\),r4
+ 14c: 7b 72 ff 07 mov\.b \(r7,2047\),r3
+ 150: 19 73 01 00 mov\.w \(r1,1\),r1
+ 154: 7d 73 9c 07 mov\.w \(r7,1948\),r5
+ 158: 3c 72 b4 0c mov\.b \(r3,-844\),r4
+ 15c: f8 73 a8 06 mov\.w \(r15,1704\),r0
+
+00000160 <movgriipostincgr>:
+ 160: 08 62 00 00 mov\.b \(r0\+\+,0\),r0
+ 164: ff 63 ff 0f mov\.w \(r15\+\+,-1\),r7
+ 168: 8c 63 00 08 mov\.w \(r8\+\+,-2048\),r4
+ 16c: 7b 62 ff 07 mov\.b \(r7\+\+,2047\),r3
+ 170: 19 63 01 00 mov\.w \(r1\+\+,1\),r1
+ 174: 2f 63 50 0f mov\.w \(r2\+\+,-176\),r7
+ 178: 8c 63 6d 05 mov\.w \(r8\+\+,1389\),r4
+ 17c: 38 62 2f 00 mov\.b \(r3\+\+,47\),r0
+
+00000180 <movgriipredecgr>:
+ 180: 08 6a 00 00 mov\.b \(--r0,0\),r0
+ 184: ff 6b ff 0f mov\.w \(--r15,-1\),r7
+ 188: 8c 6b 00 08 mov\.w \(--r8,-2048\),r4
+ 18c: 7b 6a ff 07 mov\.b \(--r7,2047\),r3
+ 190: 19 6b 01 00 mov\.w \(--r1,1\),r1
+ 194: 8c 6a ec 03 mov\.b \(--r8,1004\),r4
+ 198: ea 6b 5c 0a mov\.w \(--r14,-1444\),r2
+ 19c: 5c 6a 61 0c mov\.b \(--r5,-927\),r4
+
+000001a0 <movgrgr>:
+ 1a0: 00 46 mov r0,r0
+ 1a2: ff 46 mov r15,r15
+ 1a4: 88 46 mov r8,r8
+ 1a6: 77 46 mov r7,r7
+ 1a8: 11 46 mov r1,r1
+ 1aa: e9 46 mov r9,r14
+ 1ac: f7 46 mov r7,r15
+ 1ae: fc 46 mov r12,r15
+
+000001b0 <movimm8>:
+ 1b0: 00 47 mov Rx,#0x0
+ 1b2: ff 47 mov Rx,#0xff
+ 1b4: 80 47 mov Rx,#0x80
+ 1b6: 7f 47 mov Rx,#0x7f
+ 1b8: 01 47 mov Rx,#0x1
+ 1ba: 88 47 mov Rx,#0x88
+ 1bc: 53 47 mov Rx,#0x53
+ 1be: 68 47 mov Rx,#0x68
+
+000001c0 <movwimm8>:
+ 1c0: 00 47 mov Rx,#0x0
+ 1c2: ff 47 mov Rx,#0xff
+ 1c4: 80 47 mov Rx,#0x80
+ 1c6: 7f 47 mov Rx,#0x7f
+ 1c8: 01 47 mov Rx,#0x1
+ 1ca: 5c 47 mov Rx,#0x5c
+ 1cc: 61 47 mov Rx,#0x61
+ 1ce: 04 47 mov Rx,#0x4
+
+000001d0 <movgrimm8>:
+ 1d0: 00 21 mov r0,#0x0
+ 1d2: ff 2f mov r7,#0xff
+ 1d4: 80 29 mov r4,#0x80
+ 1d6: 7f 27 mov r3,#0x7f
+ 1d8: 01 23 mov r1,#0x1
+ 1da: ce 25 mov r2,#0xce
+ 1dc: 37 29 mov r4,#0x37
+ 1de: 03 25 mov r2,#0x3
+
+000001e0 <movwgrimm8>:
+ 1e0: 00 21 mov r0,#0x0
+ 1e2: ff 2f mov r7,#0xff
+ 1e4: 80 29 mov r4,#0x80
+ 1e6: 7f 27 mov r3,#0x7f
+ 1e8: 01 23 mov r1,#0x1
+ 1ea: f3 29 mov r4,#0xf3
+ 1ec: 37 27 mov r3,#0x37
+ 1ee: 6c 25 mov r2,#0x6c
+
+000001f0 <movgrimm16>:
+ 1f0: 00 21 mov r0,#0x0
+ 1f2: 3f 31 ff ff mov r15,#0xffff
+ 1f6: 38 31 00 80 mov r8,#0x8000
+ 1fa: 37 31 ff 7f mov r7,#0x7fff
+ 1fe: 01 23 mov r1,#0x1
+ 200: 34 31 62 4e mov r4,#0x4e62
+ 204: 33 31 16 1c mov r3,#0x1c16
+ 208: 32 31 64 3e mov r2,#0x3e64
+
+0000020c <movwgrimm16>:
+ 20c: 00 21 mov r0,#0x0
+ 20e: 3f 31 ff ff mov r15,#0xffff
+ 212: 38 31 00 80 mov r8,#0x8000
+ 216: 37 31 ff 7f mov r7,#0x7fff
+ 21a: 01 23 mov r1,#0x1
+ 21c: 36 31 08 41 mov r6,#0x4108
+ 220: 38 31 f1 68 mov r8,#0x68f1
+ 224: 3a 31 2a 4e mov r10,#0x4e2a
+
+00000228 <movlowgr>:
+ 228: c0 30 mov\.b r0,RxL
+ 22a: cf 30 mov\.b r15,RxL
+ 22c: c8 30 mov\.b r8,RxL
+ 22e: c7 30 mov\.b r7,RxL
+ 230: c1 30 mov\.b r1,RxL
+ 232: cb 30 mov\.b r11,RxL
+ 234: c5 30 mov\.b r5,RxL
+ 236: c2 30 mov\.b r2,RxL
+
+00000238 <movhighgr>:
+ 238: d0 30 mov\.b r0,RxH
+ 23a: df 30 mov\.b r15,RxH
+ 23c: d8 30 mov\.b r8,RxH
+ 23e: d7 30 mov\.b r7,RxH
+ 240: d1 30 mov\.b r1,RxH
+ 242: d2 30 mov\.b r2,RxH
+ 244: d7 30 mov\.b r7,RxH
+ 246: d2 30 mov\.b r2,RxH
+
+00000248 <movfgrgri>:
+ 248: 00 74 movf\.b r0,\(r0\)
+ 24a: f7 75 movf\.w r7,\(r15\)
+ 24c: 84 75 movf\.w r4,\(r8\)
+ 24e: 73 74 movf\.b r3,\(r7\)
+ 250: 11 75 movf\.w r1,\(r1\)
+ 252: f6 74 movf\.b r6,\(r15\)
+ 254: a1 74 movf\.b r1,\(r10\)
+ 256: 16 74 movf\.b r6,\(r1\)
+
+00000258 <movfgrgripostinc>:
+ 258: 00 64 movf\.b r0,\(r0\+\+\)
+ 25a: f7 65 movf\.w r7,\(r15\+\+\)
+ 25c: 84 65 movf\.w r4,\(r8\+\+\)
+ 25e: 73 64 movf\.b r3,\(r7\+\+\)
+ 260: 11 65 movf\.w r1,\(r1\+\+\)
+ 262: 52 64 movf\.b r2,\(r5\+\+\)
+ 264: a5 65 movf\.w r5,\(r10\+\+\)
+ 266: 57 65 movf\.w r7,\(r5\+\+\)
+
+00000268 <movfgrgripredec>:
+ 268: 00 6c movf\.b r0,\(--r0\)
+ 26a: f7 6d movf\.w r7,\(--r15\)
+ 26c: 84 6d movf\.w r4,\(--r8\)
+ 26e: 73 6c movf\.b r3,\(--r7\)
+ 270: 11 6d movf\.w r1,\(--r1\)
+ 272: a6 6d movf\.w r6,\(--r10\)
+ 274: e1 6c movf\.b r1,\(--r14\)
+ 276: 73 6d movf\.w r3,\(--r7\)
+
+00000278 <movfgrigr>:
+ 278: 00 76 movf\.b \(r0\),r0
+ 27a: f7 77 movf\.w \(r15\),r7
+ 27c: 84 77 movf\.w \(r8\),r4
+ 27e: 73 76 movf\.b \(r7\),r3
+ 280: 11 77 movf\.w \(r1\),r1
+ 282: 54 76 movf\.b \(r5\),r4
+ 284: 34 76 movf\.b \(r3\),r4
+ 286: c3 77 movf\.w \(r12\),r3
+
+00000288 <movfgripostincgr>:
+ 288: 00 66 movf\.b \(r0\+\+\),r0
+ 28a: f7 67 movf\.w \(r15\+\+\),r7
+ 28c: 84 67 movf\.w \(r8\+\+\),r4
+ 28e: 73 66 movf\.b \(r7\+\+\),r3
+ 290: 11 67 movf\.w \(r1\+\+\),r1
+ 292: 95 66 movf\.b \(r9\+\+\),r5
+ 294: a4 67 movf\.w \(r10\+\+\),r4
+ 296: 91 66 movf\.b \(r9\+\+\),r1
+
+00000298 <movfgripredecgr>:
+ 298: 00 6e movf\.b \(--r0\),r0
+ 29a: f7 6f movf\.w \(--r15\),r7
+ 29c: 84 6f movf\.w \(--r8\),r4
+ 29e: 73 6e movf\.b \(--r7\),r3
+ 2a0: 11 6f movf\.w \(--r1\),r1
+ 2a2: 02 6e movf\.b \(--r0\),r2
+ 2a4: b2 6f movf\.w \(--r11\),r2
+ 2a6: a5 6e movf\.b \(--r10\),r5
+
+000002a8 <movfgrgrii>:
+ 2a8: 08 74 00 00 movf\.b r0,\(r0,r0,0\)
+ 2ac: ff 75 ff 7f movf\.w r7,\(r7,r15,-1\)
+ 2b0: 8c 75 00 48 movf\.w r4,\(r4,r8,-2048\)
+ 2b4: 7b 74 ff 37 movf\.b r3,\(r3,r7,2047\)
+ 2b8: 19 75 01 10 movf\.w r1,\(r1,r1,1\)
+ 2bc: 0f 74 c1 75 movf\.b r7,\(r7,r0,1473\)
+ 2c0: 9a 75 0e 0a movf\.w r2,\(r0,r9,-1522\)
+ 2c4: 1a 75 e0 51 movf\.w r2,\(r5,r1,480\)
+
+000002c8 <movfgrgriipostinc>:
+ 2c8: 08 64 00 00 movf\.b r0,\(r0,r0\+\+,0\)
+ 2cc: ff 65 ff 7f movf\.w r7,\(r7,r15\+\+,-1\)
+ 2d0: 8c 65 00 48 movf\.w r4,\(r4,r8\+\+,-2048\)
+ 2d4: 7b 64 ff 37 movf\.b r3,\(r3,r7\+\+,2047\)
+ 2d8: 19 65 01 10 movf\.w r1,\(r1,r1\+\+,1\)
+ 2dc: 29 64 76 05 movf\.b r1,\(r0,r2\+\+,1398\)
+ 2e0: 9c 65 f6 0c movf\.w r4,\(r0,r9\+\+,-778\)
+ 2e4: e9 65 1c 56 movf\.w r1,\(r5,r14\+\+,1564\)
+
+000002e8 <movfgrgriipredec>:
+ 2e8: 08 6c 00 00 movf\.b r0,\(r0,--r0,0\)
+ 2ec: ff 6d ff 7f movf\.w r7,\(r7,--r15,-1\)
+ 2f0: 8c 6d 00 48 movf\.w r4,\(r4,--r8,-2048\)
+ 2f4: 7b 6c ff 37 movf\.b r3,\(r3,--r7,2047\)
+ 2f8: 19 6d 01 10 movf\.w r1,\(r1,--r1,1\)
+ 2fc: 7e 6c fe 00 movf\.b r6,\(r0,--r7,254\)
+ 300: cd 6d 89 46 movf\.w r5,\(r4,--r12,1673\)
+ 304: a8 6c da 0f movf\.b r0,\(r0,--r10,-38\)
+
+00000308 <movfgriigr>:
+ 308: 08 76 00 00 movf\.b \(r0,r0,0\),r0
+ 30c: ff 77 ff 7f movf\.w \(r7,r15,-1\),r7
+ 310: 8c 77 00 48 movf\.w \(r4,r8,-2048\),r4
+ 314: 7b 76 ff 37 movf\.b \(r3,r7,2047\),r3
+ 318: 19 77 01 10 movf\.w \(r1,r1,1\),r1
+ 31c: 2b 77 9c 79 movf\.w \(r7,r2,-1636\),r3
+ 320: c9 77 5a 66 movf\.w \(r6,r12,1626\),r1
+ 324: e8 76 04 36 movf\.b \(r3,r14,1540\),r0
+
+00000328 <movfgriipostincgr>:
+ 328: 08 66 00 00 movf\.b \(r0,r0\+\+,0\),r0
+ 32c: ff 67 ff 7f movf\.w \(r7,r15\+\+,-1\),r7
+ 330: 8c 67 00 48 movf\.w \(r4,r8\+\+,-2048\),r4
+ 334: 7b 66 ff 37 movf\.b \(r3,r7\+\+,2047\),r3
+ 338: 19 67 01 10 movf\.w \(r1,r1\+\+,1\),r1
+ 33c: db 66 d2 71 movf\.b \(r7,r13\+\+,466\),r3
+ 340: bc 66 fa 30 movf\.b \(r3,r11\+\+,250\),r4
+ 344: af 66 38 2a movf\.b \(r2,r10\+\+,-1480\),r7
+
+00000348 <movfgriipredecgr>:
+ 348: 08 6e 00 00 movf\.b \(r0,--r0,0\),r0
+ 34c: ff 6f ff 7f movf\.w \(r7,--r15,-1\),r7
+ 350: 8c 6f 00 48 movf\.w \(r4,--r8,-2048\),r4
+ 354: 7b 6e ff 37 movf\.b \(r3,--r7,2047\),r3
+ 358: 19 6f 01 10 movf\.w \(r1,--r1,1\),r1
+ 35c: a8 6e a0 5d movf\.b \(r5,--r10,-608\),r0
+ 360: bf 6e 3f 13 movf\.b \(r1,--r11,831\),r7
+ 364: fe 6f 0c 78 movf\.w \(r7,--r15,-2036\),r6
+
+00000368 <maskgrgr>:
+ 368: 00 33 mask r0,r0
+ 36a: ff 33 mask r15,r15
+ 36c: 88 33 mask r8,r8
+ 36e: 77 33 mask r7,r7
+ 370: 11 33 mask r1,r1
+ 372: 04 33 mask r4,r0
+ 374: b6 33 mask r6,r11
+ 376: 48 33 mask r8,r4
+
+00000378 <maskgrimm16>:
+ 378: e0 30 00 00 mask r0,#0x0
+ 37c: ef 30 ff ff mask r15,#0xffff
+ 380: e8 30 00 80 mask r8,#0x8000
+ 384: e7 30 ff 7f mask r7,#0x7fff
+ 388: e1 30 01 00 mask r1,#0x1
+ 38c: e7 30 e9 46 mask r7,#0x46e9
+ 390: ef 30 64 1d mask r15,#0x1d64
+ 394: ee 30 2d 86 mask r14,#0x862d
+
+00000398 <pushgr>:
+ 398: 80 00 push r0
+ 39a: 8f 00 push r15
+ 39c: 88 00 push r8
+ 39e: 87 00 push r7
+ 3a0: 81 00 push r1
+ 3a2: 89 00 push r9
+ 3a4: 84 00 push r4
+ 3a6: 83 00 push r3
+
+000003a8 <popgr>:
+ 3a8: 90 00 pop r0
+ 3aa: 9f 00 pop r15
+ 3ac: 98 00 pop r8
+ 3ae: 97 00 pop r7
+ 3b0: 91 00 pop r1
+ 3b2: 93 00 pop r3
+ 3b4: 92 00 pop r2
+ 3b6: 9c 00 pop r12
+
+000003b8 <swpn>:
+ 3b8: 90 30 swpn r0
+ 3ba: 9f 30 swpn r15
+ 3bc: 98 30 swpn r8
+ 3be: 97 30 swpn r7
+ 3c0: 91 30 swpn r1
+ 3c2: 9f 30 swpn r15
+ 3c4: 94 30 swpn r4
+ 3c6: 93 30 swpn r3
+
+000003c8 <swpb>:
+ 3c8: 80 30 swpb r0
+ 3ca: 8f 30 swpb r15
+ 3cc: 88 30 swpb r8
+ 3ce: 87 30 swpb r7
+ 3d0: 81 30 swpb r1
+ 3d2: 82 30 swpb r2
+ 3d4: 8c 30 swpb r12
+ 3d6: 82 30 swpb r2
+
+000003d8 <swpw>:
+ 3d8: 00 32 swpw r0,r0
+ 3da: ff 32 swpw r15,r15
+ 3dc: 88 32 swpw r8,r8
+ 3de: 77 32 swpw r7,r7
+ 3e0: 11 32 swpw r1,r1
+ 3e2: 4c 32 swpw r12,r4
+ 3e4: 28 32 swpw r8,r2
+ 3e6: d5 32 swpw r5,r13
+
+000003e8 <andgrgr>:
+ 3e8: 00 40 and r0,r0
+ 3ea: ff 40 and r15,r15
+ 3ec: 88 40 and r8,r8
+ 3ee: 77 40 and r7,r7
+ 3f0: 11 40 and r1,r1
+ 3f2: 22 40 and r2,r2
+ 3f4: 5f 40 and r15,r5
+ 3f6: 57 40 and r7,r5
+
+000003f8 <andimm8>:
+ 3f8: 00 41 and Rx,#0x0
+ 3fa: ff 41 and Rx,#0xff
+ 3fc: 80 41 and Rx,#0x80
+ 3fe: 7f 41 and Rx,#0x7f
+ 400: 01 41 and Rx,#0x1
+ 402: ce 41 and Rx,#0xce
+ 404: 0b 41 and Rx,#0xb
+ 406: e8 41 and Rx,#0xe8
+
+00000408 <andgrimm16>:
+ 408: 00 31 00 00 and r0,#0x0
+ 40c: 0f 31 ff ff and r15,#0xffff
+ 410: 08 31 00 80 and r8,#0x8000
+ 414: 07 31 ff 7f and r7,#0x7fff
+ 418: 01 31 01 00 and r1,#0x1
+ 41c: 0a 31 4d 43 and r10,#0x434d
+ 420: 0b 31 0b f0 and r11,#0xf00b
+ 424: 05 31 4d b7 and r5,#0xb74d
+
+00000428 <orgrgr>:
+ 428: 00 42 or r0,r0
+ 42a: ff 42 or r15,r15
+ 42c: 88 42 or r8,r8
+ 42e: 77 42 or r7,r7
+ 430: 11 42 or r1,r1
+ 432: 53 42 or r3,r5
+ 434: fe 42 or r14,r15
+ 436: c5 42 or r5,r12
+
+00000438 <orimm8>:
+ 438: 00 43 or Rx,#0x0
+ 43a: ff 43 or Rx,#0xff
+ 43c: 80 43 or Rx,#0x80
+ 43e: 7f 43 or Rx,#0x7f
+ 440: 01 43 or Rx,#0x1
+ 442: 04 43 or Rx,#0x4
+ 444: 26 43 or Rx,#0x26
+ 446: 34 43 or Rx,#0x34
+
+00000448 <orgrimm16>:
+ 448: 10 31 00 00 or r0,#0x0
+ 44c: 1f 31 ff ff or r15,#0xffff
+ 450: 18 31 00 80 or r8,#0x8000
+ 454: 17 31 ff 7f or r7,#0x7fff
+ 458: 11 31 01 00 or r1,#0x1
+ 45c: 12 31 33 fc or r2,#0xfc33
+ 460: 12 31 db 47 or r2,#0x47db
+ 464: 11 31 53 f6 or r1,#0xf653
+
+00000468 <xorgrgr>:
+ 468: 00 44 xor r0,r0
+ 46a: ff 44 xor r15,r15
+ 46c: 88 44 xor r8,r8
+ 46e: 77 44 xor r7,r7
+ 470: 11 44 xor r1,r1
+ 472: 1e 44 xor r14,r1
+ 474: 99 44 xor r9,r9
+ 476: 8c 44 xor r12,r8
+
+00000478 <xorimm8>:
+ 478: 00 45 xor Rx,#0x0
+ 47a: ff 45 xor Rx,#0xff
+ 47c: 80 45 xor Rx,#0x80
+ 47e: 7f 45 xor Rx,#0x7f
+ 480: 01 45 xor Rx,#0x1
+ 482: d0 45 xor Rx,#0xd0
+ 484: 7e 45 xor Rx,#0x7e
+ 486: 37 45 xor Rx,#0x37
+
+00000488 <xorgrimm16>:
+ 488: 20 31 00 00 xor r0,#0x0
+ 48c: 2f 31 ff ff xor r15,#0xffff
+ 490: 28 31 00 80 xor r8,#0x8000
+ 494: 27 31 ff 7f xor r7,#0x7fff
+ 498: 21 31 01 00 xor r1,#0x1
+ 49c: 2f 31 75 dc xor r15,#0xdc75
+ 4a0: 23 31 85 03 xor r3,#0x385
+ 4a4: 22 31 99 90 xor r2,#0x9099
+
+000004a8 <notgr>:
+ 4a8: b0 30 not r0
+ 4aa: bf 30 not r15
+ 4ac: b8 30 not r8
+ 4ae: b7 30 not r7
+ 4b0: b1 30 not r1
+ 4b2: b4 30 not r4
+ 4b4: b3 30 not r3
+ 4b6: b3 30 not r3
+
+000004b8 <addgrgr>:
+ 4b8: 00 49 add r0,r0
+ 4ba: ff 49 add r15,r15
+ 4bc: 88 49 add r8,r8
+ 4be: 77 49 add r7,r7
+ 4c0: 11 49 add r1,r1
+ 4c2: 7c 49 add r12,r7
+ 4c4: a1 49 add r1,r10
+ 4c6: ee 49 add r14,r14
+
+000004c8 <addgrimm4>:
+ 4c8: 00 51 add r0,#0x0
+ 4ca: ff 51 add r15,#0xf
+ 4cc: 88 51 add r8,#0x8
+ 4ce: 77 51 add r7,#0x7
+ 4d0: 11 51 add r1,#0x1
+ 4d2: 07 51 add r7,#0x0
+ 4d4: 9a 51 add r10,#0x9
+ 4d6: 87 51 add r7,#0x8
+
+000004d8 <addimm8>:
+ 4d8: 00 59 add Rx,#0x0
+ 4da: ff 59 add Rx,#0xff
+ 4dc: 80 59 add Rx,#0x80
+ 4de: 7f 59 add Rx,#0x7f
+ 4e0: 01 59 add Rx,#0x1
+ 4e2: 19 59 add Rx,#0x19
+ 4e4: f7 59 add Rx,#0xf7
+ 4e6: dd 59 add Rx,#0xdd
+
+000004e8 <addgrimm16>:
+ 4e8: 00 51 add r0,#0x0
+ 4ea: 4f 31 ff 00 add r15,#0xff
+ 4ee: 48 31 80 00 add r8,#0x80
+ 4f2: 47 31 7f 00 add r7,#0x7f
+ 4f6: 11 51 add r1,#0x1
+ 4f8: 43 31 63 00 add r3,#0x63
+ 4fc: f0 51 add r0,#0xf
+ 4fe: 47 31 d6 00 add r7,#0xd6
+
+00000502 <adcgrgr>:
+ 502: 00 4b adc r0,r0
+ 504: ff 4b adc r15,r15
+ 506: 88 4b adc r8,r8
+ 508: 77 4b adc r7,r7
+ 50a: 11 4b adc r1,r1
+ 50c: d2 4b adc r2,r13
+ 50e: ae 4b adc r14,r10
+ 510: f2 4b adc r2,r15
+
+00000512 <adcgrimm4>:
+ 512: 00 53 adc r0,#0x0
+ 514: ff 53 adc r15,#0xf
+ 516: 88 53 adc r8,#0x8
+ 518: 77 53 adc r7,#0x7
+ 51a: 11 53 adc r1,#0x1
+ 51c: 1f 53 adc r15,#0x1
+ 51e: 31 53 adc r1,#0x3
+ 520: b6 53 adc r6,#0xb
+
+00000522 <adcimm8>:
+ 522: 00 5b adc Rx,#0x0
+ 524: ff 5b adc Rx,#0xff
+ 526: 80 5b adc Rx,#0x80
+ 528: 7f 5b adc Rx,#0x7f
+ 52a: 01 5b adc Rx,#0x1
+ 52c: e1 5b adc Rx,#0xe1
+ 52e: 4b 5b adc Rx,#0x4b
+ 530: 12 5b adc Rx,#0x12
+
+00000532 <adcgrimm16>:
+ 532: 00 53 adc r0,#0x0
+ 534: 5f 31 ff ff adc r15,#0xffff
+ 538: 58 31 00 80 adc r8,#0x8000
+ 53c: 57 31 ff 7f adc r7,#0x7fff
+ 540: 11 53 adc r1,#0x1
+ 542: 5d 31 99 f6 adc r13,#0xf699
+ 546: 53 31 f3 5c adc r3,#0x5cf3
+ 54a: 5b 31 5d c0 adc r11,#0xc05d
+
+0000054e <subgrgr>:
+ 54e: 00 4d sub r0,r0
+ 550: ff 4d sub r15,r15
+ 552: 88 4d sub r8,r8
+ 554: 77 4d sub r7,r7
+ 556: 11 4d sub r1,r1
+ 558: 88 4d sub r8,r8
+ 55a: 99 4d sub r9,r9
+ 55c: f9 4d sub r9,r15
+
+0000055e <subgrimm4>:
+ 55e: 00 55 sub r0,#0x0
+ 560: ff 55 sub r15,#0xf
+ 562: 88 55 sub r8,#0x8
+ 564: 77 55 sub r7,#0x7
+ 566: 11 55 sub r1,#0x1
+ 568: f2 55 sub r2,#0xf
+ 56a: 9c 55 sub r12,#0x9
+ 56c: 48 55 sub r8,#0x4
+
+0000056e <subimm8>:
+ 56e: 00 5d sub Rx,#0x0
+ 570: ff 5d sub Rx,#0xff
+ 572: 80 5d sub Rx,#0x80
+ 574: 7f 5d sub Rx,#0x7f
+ 576: 01 5d sub Rx,#0x1
+ 578: cd 5d sub Rx,#0xcd
+ 57a: 99 5d sub Rx,#0x99
+ 57c: d9 5d sub Rx,#0xd9
+
+0000057e <subgrimm16>:
+ 57e: 00 55 sub r0,#0x0
+ 580: 6f 31 ff ff sub r15,#0xffff
+ 584: 68 31 00 80 sub r8,#0x8000
+ 588: 67 31 ff 7f sub r7,#0x7fff
+ 58c: 11 55 sub r1,#0x1
+ 58e: 63 31 b7 ca sub r3,#0xcab7
+ 592: 6b 31 41 5c sub r11,#0x5c41
+ 596: 6a 31 4a 1e sub r10,#0x1e4a
+
+0000059a <sbcgrgr>:
+ 59a: 00 4f sbc r0,r0
+ 59c: ff 4f sbc r15,r15
+ 59e: 88 4f sbc r8,r8
+ 5a0: 77 4f sbc r7,r7
+ 5a2: 11 4f sbc r1,r1
+ 5a4: 2b 4f sbc r11,r2
+ 5a6: 19 4f sbc r9,r1
+ 5a8: f4 4f sbc r4,r15
+
+000005aa <sbcgrimm4>:
+ 5aa: 00 57 sbc r0,#0x0
+ 5ac: ff 57 sbc r15,#0xf
+ 5ae: 88 57 sbc r8,#0x8
+ 5b0: 77 57 sbc r7,#0x7
+ 5b2: 11 57 sbc r1,#0x1
+ 5b4: ba 57 sbc r10,#0xb
+ 5b6: ab 57 sbc r11,#0xa
+ 5b8: ad 57 sbc r13,#0xa
+
+000005ba <sbcgrimm8>:
+ 5ba: 00 5f sbc Rx,#0x0
+ 5bc: ff 5f sbc Rx,#0xff
+ 5be: 80 5f sbc Rx,#0x80
+ 5c0: 7f 5f sbc Rx,#0x7f
+ 5c2: 01 5f sbc Rx,#0x1
+ 5c4: 89 5f sbc Rx,#0x89
+ 5c6: e0 5f sbc Rx,#0xe0
+ 5c8: 9c 5f sbc Rx,#0x9c
+
+000005ca <sbcgrimm16>:
+ 5ca: 00 57 sbc r0,#0x0
+ 5cc: 7f 31 ff ff sbc r15,#0xffff
+ 5d0: 78 31 00 80 sbc r8,#0x8000
+ 5d4: 77 31 ff 7f sbc r7,#0x7fff
+ 5d8: 11 57 sbc r1,#0x1
+ 5da: 70 31 fb 7e sbc r0,#0x7efb
+ 5de: 77 31 a2 21 sbc r7,#0x21a2
+ 5e2: 7e 31 95 4f sbc r14,#0x4f95
+
+000005e6 <incgr>:
+ 5e6: 00 30 inc r0
+ 5e8: 0f 30 inc r15
+ 5ea: 08 30 inc r8
+ 5ec: 07 30 inc r7
+ 5ee: 01 30 inc r1
+ 5f0: 0d 30 inc r13
+ 5f2: 01 30 inc r1
+ 5f4: 0b 30 inc r11
+
+000005f6 <incgrimm2>:
+ 5f6: 00 30 inc r0
+ 5f8: 3f 30 inc r15,#0x3
+ 5fa: 28 30 inc r8,#0x2
+ 5fc: 17 30 inc r7,#0x1
+ 5fe: 11 30 inc r1,#0x1
+ 600: 1e 30 inc r14,#0x1
+ 602: 05 30 inc r5
+ 604: 3c 30 inc r12,#0x3
+
+00000606 <decgr>:
+ 606: 40 30 dec r0
+ 608: 4f 30 dec r15
+ 60a: 48 30 dec r8
+ 60c: 47 30 dec r7
+ 60e: 41 30 dec r1
+ 610: 4c 30 dec r12
+ 612: 48 30 dec r8
+ 614: 4a 30 dec r10
+
+00000616 <decgrimm2>:
+ 616: 40 30 dec r0
+ 618: 7f 30 dec r15,#0x3
+ 61a: 68 30 dec r8,#0x2
+ 61c: 57 30 dec r7,#0x1
+ 61e: 51 30 dec r1,#0x1
+ 620: 45 30 dec r5
+ 622: 4d 30 dec r13
+ 624: 6d 30 dec r13,#0x2
+
+00000626 <rrcgrgr>:
+ 626: 00 38 rrc r0,r0
+ 628: ff 38 rrc r15,r15
+ 62a: 88 38 rrc r8,r8
+ 62c: 77 38 rrc r7,r7
+ 62e: 11 38 rrc r1,r1
+ 630: 48 38 rrc r8,r4
+ 632: ea 38 rrc r10,r14
+ 634: 9f 38 rrc r15,r9
+
+00000636 <rrcgrimm4>:
+ 636: 00 39 rrc r0,#0x0
+ 638: ff 39 rrc r15,#0xf
+ 63a: 88 39 rrc r8,#0x8
+ 63c: 77 39 rrc r7,#0x7
+ 63e: 11 39 rrc r1,#0x1
+ 640: 3b 39 rrc r11,#0x3
+ 642: ce 39 rrc r14,#0xc
+ 644: f2 39 rrc r2,#0xf
+
+00000646 <rlcgrgr>:
+ 646: 00 3a rlc r0,r0
+ 648: ff 3a rlc r15,r15
+ 64a: 88 3a rlc r8,r8
+ 64c: 77 3a rlc r7,r7
+ 64e: 11 3a rlc r1,r1
+ 650: 3f 3a rlc r15,r3
+ 652: 7f 3a rlc r15,r7
+ 654: af 3a rlc r15,r10
+
+00000656 <rlcgrimm4>:
+ 656: 00 3b rlc r0,#0x0
+ 658: ff 3b rlc r15,#0xf
+ 65a: 88 3b rlc r8,#0x8
+ 65c: 77 3b rlc r7,#0x7
+ 65e: 11 3b rlc r1,#0x1
+ 660: 28 3b rlc r8,#0x2
+ 662: 62 3b rlc r2,#0x6
+ 664: a6 3b rlc r6,#0xa
+
+00000666 <shrgrgr>:
+ 666: 00 3c shr r0,r0
+ 668: ff 3c shr r15,r15
+ 66a: 88 3c shr r8,r8
+ 66c: 77 3c shr r7,r7
+ 66e: 11 3c shr r1,r1
+ 670: 2d 3c shr r13,r2
+ 672: 87 3c shr r7,r8
+ 674: 86 3c shr r6,r8
+
+00000676 <shrgrimm>:
+ 676: 00 3d shr r0,#0x0
+ 678: ff 3d shr r15,#0xf
+ 67a: 88 3d shr r8,#0x8
+ 67c: 77 3d shr r7,#0x7
+ 67e: 11 3d shr r1,#0x1
+ 680: d9 3d shr r9,#0xd
+ 682: 72 3d shr r2,#0x7
+ 684: 88 3d shr r8,#0x8
+
+00000686 <shlgrgr>:
+ 686: 00 3e shl r0,r0
+ 688: ff 3e shl r15,r15
+ 68a: 88 3e shl r8,r8
+ 68c: 77 3e shl r7,r7
+ 68e: 11 3e shl r1,r1
+ 690: 32 3e shl r2,r3
+ 692: 30 3e shl r0,r3
+ 694: 12 3e shl r2,r1
+
+00000696 <shlgrimm>:
+ 696: 00 3f shl r0,#0x0
+ 698: ff 3f shl r15,#0xf
+ 69a: 88 3f shl r8,#0x8
+ 69c: 77 3f shl r7,#0x7
+ 69e: 11 3f shl r1,#0x1
+ 6a0: d6 3f shl r6,#0xd
+ 6a2: 63 3f shl r3,#0x6
+ 6a4: ff 3f shl r15,#0xf
+
+000006a6 <asrgrgr>:
+ 6a6: 00 36 asr r0,r0
+ 6a8: ff 36 asr r15,r15
+ 6aa: 88 36 asr r8,r8
+ 6ac: 77 36 asr r7,r7
+ 6ae: 11 36 asr r1,r1
+ 6b0: a5 36 asr r5,r10
+ 6b2: 53 36 asr r3,r5
+ 6b4: b6 36 asr r6,r11
+
+000006b6 <asrgrimm>:
+ 6b6: 00 37 asr r0,#0x0
+ 6b8: ff 37 asr r15,#0xf
+ 6ba: 88 37 asr r8,#0x8
+ 6bc: 77 37 asr r7,#0x7
+ 6be: 11 37 asr r1,#0x1
+ 6c0: 4d 37 asr r13,#0x4
+ 6c2: d0 37 asr r0,#0xd
+ 6c4: 36 37 asr r6,#0x3
+
+000006c6 <set1grimm>:
+ 6c6: 00 09 set1 r0,#0x0
+ 6c8: ff 09 set1 r15,#0xf
+ 6ca: 88 09 set1 r8,#0x8
+ 6cc: 77 09 set1 r7,#0x7
+ 6ce: 11 09 set1 r1,#0x1
+ 6d0: a6 09 set1 r6,#0xa
+ 6d2: 1d 09 set1 r13,#0x1
+ 6d4: fd 09 set1 r13,#0xf
+
+000006d6 <set1grgr>:
+ 6d6: 00 0b set1 r0,r0
+ 6d8: ff 0b set1 r15,r15
+ 6da: 88 0b set1 r8,r8
+ 6dc: 77 0b set1 r7,r7
+ 6de: 11 0b set1 r1,r1
+ 6e0: 06 0b set1 r6,r0
+ 6e2: 76 0b set1 r6,r7
+ 6e4: 2e 0b set1 r14,r2
+
+000006e6 <set1lmemimm>:
+ 6e6: 00 e1 set1 0x0,#0x0
+ 6e8: ff ef set1 0xff,#0x7
+ 6ea: 80 e9 set1 0x80,#0x4
+ 6ec: 7f e7 set1 0x7f,#0x3
+ 6ee: 01 e3 set1 0x1,#0x1
+ 6f0: f4 e7 set1 0xf4,#0x3
+ 6f2: 37 ef set1 0x37,#0x7
+ 6f4: fc eb set1 0xfc,#0x5
+
+000006f6 <set1hmemimm>:
+ 6f6: 00 f1 set1 0x7f00,#0x0
+ 6f8: ff ff set1 0x7fff,#0x7
+ 6fa: 80 f9 set1 0x7f80,#0x4
+ 6fc: 7f f7 set1 0x7f7f,#0x3
+ 6fe: 01 f3 set1 0x7f01,#0x1
+ 700: 0a f7 set1 0x7f0a,#0x3
+ 702: 63 f9 set1 0x7f63,#0x4
+ 704: 94 f7 set1 0x7f94,#0x3
+
+00000706 <clr1grimm>:
+ 706: 00 08 clr1 r0,#0x0
+ 708: ff 08 clr1 r15,#0xf
+ 70a: 88 08 clr1 r8,#0x8
+ 70c: 77 08 clr1 r7,#0x7
+ 70e: 11 08 clr1 r1,#0x1
+ 710: 0c 08 clr1 r12,#0x0
+ 712: b8 08 clr1 r8,#0xb
+ 714: 77 08 clr1 r7,#0x7
+
+00000716 <clr1grgr>:
+ 716: 00 0a clr1 r0,r0
+ 718: ff 0a clr1 r15,r15
+ 71a: 88 0a clr1 r8,r8
+ 71c: 77 0a clr1 r7,r7
+ 71e: 11 0a clr1 r1,r1
+ 720: 33 0a clr1 r3,r3
+ 722: 10 0a clr1 r0,r1
+ 724: 0f 0a clr1 r15,r0
+
+00000726 <clr1lmemimm>:
+ 726: 00 e0 clr1 0x0,#0x0
+ 728: ff ee clr1 0xff,#0x7
+ 72a: 80 e8 clr1 0x80,#0x4
+ 72c: 7f e6 clr1 0x7f,#0x3
+ 72e: 01 e2 clr1 0x1,#0x1
+ 730: 72 ee clr1 0x72,#0x7
+ 732: e5 e8 clr1 0xe5,#0x4
+ 734: 56 e2 clr1 0x56,#0x1
+
+00000736 <clr1hmemimm>:
+ 736: 00 f0 clr1 0x7f00,#0x0
+ 738: ff fe clr1 0x7fff,#0x7
+ 73a: 80 f8 clr1 0x7f80,#0x4
+ 73c: 7f f6 clr1 0x7f7f,#0x3
+ 73e: 01 f2 clr1 0x7f01,#0x1
+ 740: 2c f6 clr1 0x7f2c,#0x3
+ 742: d4 fa clr1 0x7fd4,#0x5
+ 744: 43 fe clr1 0x7f43,#0x7
+
+00000746 <cbwgr>:
+ 746: a0 30 cbw r0
+ 748: af 30 cbw r15
+ 74a: a8 30 cbw r8
+ 74c: a7 30 cbw r7
+ 74e: a1 30 cbw r1
+ 750: a8 30 cbw r8
+ 752: ab 30 cbw r11
+ 754: a3 30 cbw r3
+
+00000756 <revgr>:
+ 756: f0 30 rev r0
+ 758: ff 30 rev r15
+ 75a: f8 30 rev r8
+ 75c: f7 30 rev r7
+ 75e: f1 30 rev r1
+ 760: f1 30 rev r1
+ 762: f1 30 rev r1
+ 764: fe 30 rev r14
+
+00000766 <bgr>:
+ 766: 20 00 br r0
+ 768: 2f 00 br r15
+ 76a: 28 00 br r8
+ 76c: 27 00 br r7
+ 76e: 21 00 br r1
+ 770: 20 00 br r0
+ 772: 2f 00 br r15
+ 774: 2c 00 br r12
+
+00000776 <jmp>:
+ 776: 40 00 jmp r8,r0
+ 778: 5f 00 jmp r9,r15
+ 77a: 58 00 jmp r9,r8
+ 77c: 47 00 jmp r8,r7
+ 77e: 51 00 jmp r9,r1
+ 780: 57 00 jmp r9,r7
+ 782: 55 00 jmp r9,r5
+ 784: 4c 00 jmp r8,r12
+
+00000786 <jmpf>:
+ 786: 00 02 00 00 jmpf 0x0
+ 78a: ff 02 ff ff jmpf 0xffffff
+ 78e: 00 02 00 80 jmpf 0x800000
+ 792: ff 02 ff 7f jmpf 0x7fffff
+ 796: 01 02 00 00 jmpf 0x1
+ 79a: 6d 02 c0 a3 jmpf 0xa3c06d
+ 79e: 52 02 54 e6 jmpf 0xe65452
+ 7a2: d8 02 56 16 jmpf 0x1656d8
+
+000007a6 <callrgr>:
+ 7a6: 10 00 callr r0
+ 7a8: 1f 00 callr r15
+ 7aa: 18 00 callr r8
+ 7ac: 17 00 callr r7
+ 7ae: 11 00 callr r1
+ 7b0: 11 00 callr r1
+ 7b2: 1c 00 callr r12
+ 7b4: 18 00 callr r8
+
+000007b6 <callgr>:
+ 7b6: a0 00 call r8,r0
+ 7b8: bf 00 call r9,r15
+ 7ba: b8 00 call r9,r8
+ 7bc: a7 00 call r8,r7
+ 7be: b1 00 call r9,r1
+ 7c0: b6 00 call r9,r6
+ 7c2: be 00 call r9,r14
+ 7c4: ac 00 call r8,r12
+
+000007c6 <callfimm>:
+ 7c6: 00 01 00 00 callf 0x0
+ 7ca: ff 01 ff ff callf 0xffffff
+ 7ce: 00 01 00 80 callf 0x800000
+ 7d2: ff 01 ff 7f callf 0x7fffff
+ 7d6: 01 01 00 00 callf 0x1
+ 7da: 56 01 b2 ce callf 0xceb256
+ 7de: df 01 5f a5 callf 0xa55fdf
+ 7e2: b3 01 e6 e7 callf 0xe7e6b3
+
+000007e6 <icallrgr>:
+ 7e6: 30 00 icallr r0
+ 7e8: 3f 00 icallr r15
+ 7ea: 38 00 icallr r8
+ 7ec: 37 00 icallr r7
+ 7ee: 31 00 icallr r1
+ 7f0: 3f 00 icallr r15
+ 7f2: 3c 00 icallr r12
+ 7f4: 39 00 icallr r9
+
+000007f6 <icallgr>:
+ 7f6: 60 00 icall r8,r0
+ 7f8: 7f 00 icall r9,r15
+ 7fa: 78 00 icall r9,r8
+ 7fc: 67 00 icall r8,r7
+ 7fe: 71 00 icall r9,r1
+ 800: 7a 00 icall r9,r10
+ 802: 6f 00 icall r8,r15
+ 804: 6a 00 icall r8,r10
+
+00000806 <icallfimm>:
+ 806: 00 03 00 00 icallf 0x0
+ 80a: ff 03 ff ff icallf 0xffffff
+ 80e: 00 03 00 80 icallf 0x800000
+ 812: ff 03 ff 7f icallf 0x7fffff
+ 816: 01 03 00 00 icallf 0x1
+ 81a: 22 03 3f 93 icallf 0x933f22
+ 81e: 6e 03 35 1e icallf 0x1e356e
+ 822: 48 03 e8 74 icallf 0x74e848
+
+00000826 <iret>:
+ 826: 02 00 iret
+
+00000828 <ret>:
+ 828: 03 00 ret
+
+0000082a <mul>:
+ 82a: d0 00 mul
+
+0000082c <div>:
+ 82c: c0 00 div
+
+0000082e <nop>:
+ 82e: 00 00 nop
+ 830: 03 00 ret
+
+00000832 <halt>:
+ 832: 08 00 halt
+
+00000834 <hold>:
+ 834: 0a 00 hold
+
+00000836 <brk>:
+ 836: 05 00 brk
+
+00000838 <bccgrgr>:
+ 838: 00 0d 00 00 bge r0,r0,0x83c
+ 83c: ff 0d ff ff bz r15,r15,0x83f
+ 840: 88 0d 00 88 bpl r8,r8,0x44
+ 844: 77 0d ff 77 bls r7,r7,0x1047
+ 848: 11 0d 01 10 bnc r1,r1,0x84d
+ 84c: d3 0d 07 37 bc r3,r13,0xf57
+ 850: a1 0d 1d 08 bge r1,r10,0x71
+ 854: 50 0d 94 fb bz r0,r5,0x3ec
+
+00000858 <bccgrimm8>:
+ 858: 00 20 00 00 bge r0,#0x0,0x85c
+ 85c: ff 2e ff ff bz r7,#0xff,0x85f
+ 860: 80 28 00 88 bpl r4,#0x80,0x64
+ 864: 7f 26 ff 77 bls r3,#0x7f,0x1067
+ 868: 01 22 01 10 bnc r1,#0x1,0x86d
+ 86c: 08 26 c1 15 bnc r3,#0x8,0xe31
+ 870: cb 2a 53 c6 bnz\.b r5,#0xcb,0xec7
+ 874: e1 2e d2 33 bc r7,#0xe1,0xc4a
+
+00000878 <bccimm16>:
+ 878: 00 c0 00 00 bge Rx,#0x0,0x87c
+ 87c: ff cf ff ff bz Rx,#0xffff,0x87f
+ 880: 80 c8 00 80 bpl Rx,#0x8000,0x804
+ 884: 7f c7 ff 7f bls Rx,#0x7fff,0x907
+ 888: 01 c1 01 00 bnc Rx,#0x1,0x88d
+ 88c: 04 ce fb 77 bz\.b Rx,#0x77fb,0x894
+ 890: f3 c9 3a f3 bnv Rx,#0xf33a,0x887
+ 894: 6c c9 32 bc bnv Rx,#0xbc32,0x904
+
+00000898 <bngrimm4>:
+ 898: 00 04 00 00 bn r0,#0x0,0x89c
+ 89c: ff 04 ff 0f bn r15,#0xf,0x89f
+ 8a0: 88 04 00 08 bn r8,#0x8,0xa4
+ 8a4: 77 04 ff 07 bn r7,#0x7,0x10a7
+ 8a8: 11 04 01 00 bn r1,#0x1,0x8ad
+ 8ac: 3b 04 49 08 bn r11,#0x3,0xf9
+ 8b0: 4f 04 4b 0b bn r15,#0x4,0x3ff
+ 8b4: 8a 04 9b 06 bn r10,#0x8,0xf53
+
+000008b8 <bngrgr>:
+ 8b8: 00 06 00 00 bn r0,r0,0x8bc
+ 8bc: ff 06 ff 0f bn r15,r15,0x8bf
+ 8c0: 88 06 00 08 bn r8,r8,0xc4
+ 8c4: 77 06 ff 07 bn r7,r7,0x10c7
+ 8c8: 11 06 01 00 bn r1,r1,0x8cd
+ 8cc: 34 06 9d 04 bn r4,r3,0xd6d
+ 8d0: 25 06 4d 00 bn r5,r2,0x921
+ 8d4: 73 06 77 02 bn r3,r7,0xb4f
+
+000008d8 <bnlmemimm>:
+ 8d8: 00 7c 00 00 bn 0x0,#0x0,0x8dc
+ 8dc: ff 7c ff 7f bn 0xff,#0x7,0x8df
+ 8e0: 80 7c 00 48 bn 0x80,#0x4,0xe4
+ 8e4: 7f 7c ff 37 bn 0x7f,#0x3,0x10e7
+ 8e8: 01 7c 01 10 bn 0x1,#0x1,0x8ed
+ 8ec: 99 7c b1 7c bn 0x99,#0x7,0x5a1
+ 8f0: cc 7c a7 08 bn 0xcc,#0x0,0x19b
+ 8f4: f2 7c 74 75 bn 0xf2,#0x7,0xe6c
+
+000008f8 <bnhmemimm>:
+ 8f8: 00 7e 00 00 bn 0x7f00,#0x0,0x8fc
+ 8fc: ff 7e ff 7f bn 0x7fff,#0x7,0x8ff
+ 900: 80 7e 00 48 bn 0x7f80,#0x4,0x104
+ 904: 7f 7e ff 37 bn 0x7f7f,#0x3,0x1107
+ 908: 01 7e 01 10 bn 0x7f01,#0x1,0x90d
+ 90c: b9 7e 9a 3d bn 0x7fb9,#0x3,0x6aa
+ 910: 69 7e 64 1d bn 0x7f69,#0x1,0x678
+ 914: 4f 7e 20 75 bn 0x7f4f,#0x7,0xe38
+
+00000918 <bpgrimm4>:
+ 918: 00 05 00 00 bp r0,#0x0,0x91c
+ 91c: ff 05 ff 0f bp r15,#0xf,0x91f
+ 920: 88 05 00 08 bp r8,#0x8,0x124
+ 924: 77 05 ff 07 bp r7,#0x7,0x1127
+ 928: 11 05 01 00 bp r1,#0x1,0x92d
+ 92c: c0 05 33 04 bp r0,#0xc,0xd63
+ 930: 51 05 27 02 bp r1,#0x5,0xb5b
+ 934: 86 05 34 06 bp r6,#0x8,0xf6c
+
+00000938 <bpgrgr>:
+ 938: 00 07 00 00 bp r0,r0,0x93c
+ 93c: ff 07 ff 0f bp r15,r15,0x93f
+ 940: 88 07 00 08 bp r8,r8,0x144
+ 944: 77 07 ff 07 bp r7,r7,0x1147
+ 948: 11 07 01 00 bp r1,r1,0x94d
+ 94c: 94 07 9a 0d bp r4,r9,0x6ea
+ 950: a9 07 b0 0a bp r9,r10,0x404
+ 954: 14 07 97 01 bp r4,r1,0xaef
+
+00000958 <bplmemimm>:
+ 958: 00 7d 00 00 bp 0x0,#0x0,0x95c
+ 95c: ff 7d ff 7f bp 0xff,#0x7,0x95f
+ 960: 80 7d 00 48 bp 0x80,#0x4,0x164
+ 964: 7f 7d ff 37 bp 0x7f,#0x3,0x1167
+ 968: 01 7d 01 10 bp 0x1,#0x1,0x96d
+ 96c: c1 7d 72 3e bp 0xc1,#0x3,0x7e2
+ 970: fa 7d ef 29 bp 0xfa,#0x2,0x363
+ 974: b4 7d 43 62 bp 0xb4,#0x6,0xbbb
+
+00000978 <bphmemimm>:
+ 978: 00 7f 00 00 bp 0x7f00,#0x0,0x97c
+ 97c: ff 7f ff 7f bp 0x7fff,#0x7,0x97f
+ 980: 80 7f 00 48 bp 0x7f80,#0x4,0x184
+ 984: 7f 7f ff 37 bp 0x7f7f,#0x3,0x1187
+ 988: 01 7f 01 10 bp 0x7f01,#0x1,0x98d
+ 98c: c3 7f 50 1e bp 0x7fc3,#0x1,0x7e0
+ 990: 81 7f 1c 5a bp 0x7f81,#0x5,0x3b0
+ 994: 38 7f bb 36 bp 0x7f38,#0x3,0x1053
+
+00000998 <bcc>:
+ 998: 00 d0 bge 0x99a
+ 99a: ff df bz 0x99b
+ 99c: 80 d8 bpl 0x91e
+ 99e: 7f d7 bls 0xa1f
+ 9a0: 01 d1 bnc 0x9a3
+ 9a2: 30 dc bnz\.b 0x9d4
+ 9a4: f9 d1 bnc 0x99f
+ 9a6: 4a dc bnz\.b 0x9f2
+
+000009a8 <br>:
+ 9a8: 00 10 br 0x9aa
+ 9aa: fe 1f br 0x9aa
+ 9ac: 00 18 br 0x1ae
+ 9ae: fe 17 br 0x11ae
+ 9b0: 00 10 br 0x9b2
+ 9b2: c0 15 br 0xf74
+ 9b4: 52 16 br 0x1008
+ 9b6: d2 13 br 0xd8a
+
+000009b8 <callrimm>:
+ 9b8: 01 10 callr 0x9ba
+ 9ba: ff 1f callr 0x9ba
+ 9bc: 01 18 callr 0x1be
+ 9be: ff 17 callr 0x11be
+ 9c0: 01 10 callr 0x9c2
+ 9c2: c1 15 callr 0xf84
+ 9c4: 53 16 callr 0x1018
+ 9c6: d3 13 callr 0xd9a
Index: gas/testsuite/gas/xstormy16/allinsn.exp
===================================================================
RCS file: allinsn.exp
diff -N allinsn.exp
--- gas/testsuite/gas/xstormy16/allinsn.exp Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/allinsn.exp Fri Dec 7 14:26:56 2001
@@ -0,0 +1,8 @@
+# XSTORMY16 assembler testsuite. -*- Tcl -*-
+
+if [istarget xstormy16*-*-*] {
+ run_dump_test "allinsn"
+ run_dump_test "reloc-1"
+ run_dump_test "reloc-2"
+ run_dump_test "gcc"
+}
Index: gas/testsuite/gas/xstormy16/allinsn.s
===================================================================
RCS file: allinsn.s
diff -N allinsn.s
--- gas/testsuite/gas/xstormy16/allinsn.s Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/allinsn.s Fri Dec 7 14:26:56 2001
@@ -0,0 +1,1346 @@
+ .data
+foodata: .word 42
+ .text
+footext:
+ .text
+ .global movlmemimm
+movlmemimm:
+ mov.b 0,#0
+ mov.w 255,#65535
+ mov.w 128,#32768
+ mov.b 127,#32767
+ mov.w 1,#1
+ mov.w 81,#64681
+ mov.w 247,#42230
+ mov.b 84,#16647
+ .text
+ .global movhmemimm
+movhmemimm:
+ mov.b 0x7f00+0,#0
+ mov.w 0x7f00+255,#65535
+ mov.w 0x7f00+128,#32768
+ mov.b 0x7f00+127,#32767
+ mov.w 0x7f00+1,#1
+ mov.b 0x7f00+165,#1944
+ mov.w 0x7f00+186,#11517
+ mov.b 0x7f00+63,#25556
+ .text
+ .global movlgrmem
+movlgrmem:
+ mov.b r0,0
+ mov.w r7,255
+ mov.w r4,128
+ mov.b r3,127
+ mov.w r1,1
+ mov.w r6,179
+ mov.w r0,183
+ mov.b r3,41
+ .text
+ .global movhgrmem
+movhgrmem:
+ mov.b r0,0x7f00+0
+ mov.w r7,0x7f00+255
+ mov.w r4,0x7f00+128
+ mov.b r3,0x7f00+127
+ mov.w r1,0x7f00+1
+ mov.b r2,0x7f00+114
+ mov.w r2,0x7f00+210
+ mov.w r5,0x7f00+181
+ .text
+ .global movlmemgr
+movlmemgr:
+ mov.b 0,r0
+ mov.w 255,r7
+ mov.w 128,r4
+ mov.b 127,r3
+ mov.w 1,r1
+ mov.w 137,r0
+ mov.w 26,r0
+ mov.b 127,r4
+ .text
+ .global movhmemgr
+movhmemgr:
+ mov.b 0x7f00+0,r0
+ mov.w 0x7f00+255,r7
+ mov.w 0x7f00+128,r4
+ mov.b 0x7f00+127,r3
+ mov.w 0x7f00+1,r1
+ mov.w 0x7f00+98,r3
+ mov.w 0x7f00+135,r7
+ mov.b 0x7f00+229,r2
+ .text
+ .global movgrgri
+movgrgri:
+ mov.b r0,(r0)
+ mov.w r7,(r15)
+ mov.w r4,(r8)
+ mov.b r3,(r7)
+ mov.w r1,(r1)
+ mov.w r6,(r4)
+ mov.b r0,(r12)
+ mov.w r5,(r9)
+ .text
+ .global movgrgripostinc
+movgrgripostinc:
+ mov.b r0,(r0++)
+ mov.w r7,(r15++)
+ mov.w r4,(r8++)
+ mov.b r3,(r7++)
+ mov.w r1,(r1++)
+ mov.w r4,(r8++)
+ mov.w r3,(r12++)
+ mov.b r6,(r4++)
+ .text
+ .global movgrgripredec
+movgrgripredec:
+ mov.b r0,(--r0)
+ mov.w r7,(--r15)
+ mov.w r4,(--r8)
+ mov.b r3,(--r7)
+ mov.w r1,(--r1)
+ mov.w r5,(--r9)
+ mov.w r4,(--r14)
+ mov.b r4,(--r7)
+ .text
+ .global movgrigr
+movgrigr:
+ mov.b (r0),r0
+ mov.w (r15),r7
+ mov.w (r8),r4
+ mov.b (r7),r3
+ mov.w (r1),r1
+ mov.w (r4),r3
+ mov.b (r3),r6
+ mov.w (r7),r0
+ .text
+ .global movgripostincgr
+movgripostincgr:
+ mov.b (r0++),r0
+ mov.w (r15++),r7
+ mov.w (r8++),r4
+ mov.b (r7++),r3
+ mov.w (r1++),r1
+ mov.w (r12++),r5
+ mov.b (r4++),r2
+ mov.b (r11++),r6
+ .text
+ .global movgripredecgr
+movgripredecgr:
+ mov.b (--r0),r0
+ mov.w (--r15),r7
+ mov.w (--r8),r4
+ mov.b (--r7),r3
+ mov.w (--r1),r1
+ mov.b (--r8),r3
+ mov.b (--r11),r4
+ mov.w (--r1),r6
+ .text
+ .global movgrgrii
+movgrgrii:
+ mov.b r0,(r0,0)
+ mov.w r7,(r15,-1)
+ mov.w r4,(r8,-2048)
+ mov.b r3,(r7,2047)
+ mov.w r1,(r1,1)
+ mov.w r6,(r8,-452)
+ mov.w r4,(r11,572)
+ mov.b r1,(r1,-1718)
+ .text
+ .global movgrgriipostinc
+movgrgriipostinc:
+ mov.b r0,(r0++,0)
+ mov.w r7,(r15++,-1)
+ mov.w r4,(r8++,-2048)
+ mov.b r3,(r7++,2047)
+ mov.w r1,(r1++,1)
+ mov.w r6,(r0++,-64)
+ mov.b r7,(r15++,1060)
+ mov.b r0,(r7++,847)
+ .text
+ .global movgrgriipredec
+movgrgriipredec:
+ mov.b r0,(--r0,0)
+ mov.w r7,(--r15,-1)
+ mov.w r4,(--r8,-2048)
+ mov.b r3,(--r7,2047)
+ mov.w r1,(--r1,1)
+ mov.w r0,(--r15,1780)
+ mov.w r6,(--r1,1506)
+ mov.w r7,(--r3,-2033)
+ .text
+ .global movgriigr
+movgriigr:
+ mov.b (r0,0),r0
+ mov.w (r15,-1),r7
+ mov.w (r8,-2048),r4
+ mov.b (r7,2047),r3
+ mov.w (r1,1),r1
+ mov.w (r7,1948),r5
+ mov.b (r3,-844),r4
+ mov.w (r15,1704),r0
+ .text
+ .global movgriipostincgr
+movgriipostincgr:
+ mov.b (r0++,0),r0
+ mov.w (r15++,-1),r7
+ mov.w (r8++,-2048),r4
+ mov.b (r7++,2047),r3
+ mov.w (r1++,1),r1
+ mov.w (r2++,-176),r7
+ mov.w (r8++,1389),r4
+ mov.b (r3++,47),r0
+ .text
+ .global movgriipredecgr
+movgriipredecgr:
+ mov.b (--r0,0),r0
+ mov.w (--r15,-1),r7
+ mov.w (--r8,-2048),r4
+ mov.b (--r7,2047),r3
+ mov.w (--r1,1),r1
+ mov.b (--r8,1004),r4
+ mov.w (--r14,-1444),r2
+ mov.b (--r5,-927),r4
+ .text
+ .global movgrgr
+movgrgr:
+ mov r0,r0
+ mov r15,r15
+ mov r8,r8
+ mov r7,r7
+ mov r1,r1
+ mov r9,r14
+ mov r7,r15
+ mov r12,r15
+ .text
+ .global movimm8
+movimm8:
+ mov Rx,#0
+ mov Rx,#255
+ mov Rx,#128
+ mov Rx,#127
+ mov Rx,#1
+ mov Rx,#136
+ mov Rx,#83
+ mov Rx,#104
+ .text
+ .global movwimm8
+movwimm8:
+ mov.w Rx,#0
+ mov.w Rx,#255
+ mov.w Rx,#128
+ mov.w Rx,#127
+ mov.w Rx,#1
+ mov.w Rx,#92
+ mov.w Rx,#97
+ mov.w Rx,#4
+ .text
+ .global movgrimm8
+movgrimm8:
+ mov r0,#0
+ mov r7,#255
+ mov r4,#128
+ mov r3,#127
+ mov r1,#1
+ mov r2,#206
+ mov r4,#55
+ mov r2,#3
+ .text
+ .global movwgrimm8
+movwgrimm8:
+ mov.w r0,#0
+ mov.w r7,#255
+ mov.w r4,#128
+ mov.w r3,#127
+ mov.w r1,#1
+ mov.w r4,#243
+ mov.w r3,#55
+ mov.w r2,#108
+ .text
+ .global movgrimm16
+movgrimm16:
+ mov r0,#0
+ mov r15,#65535
+ mov r8,#32768
+ mov r7,#32767
+ mov r1,#1
+ mov r4,#20066
+ mov r3,#7190
+ mov r2,#15972
+ .text
+ .global movwgrimm16
+movwgrimm16:
+ mov.w r0,#0
+ mov.w r15,#65535
+ mov.w r8,#32768
+ mov.w r7,#32767
+ mov.w r1,#1
+ mov.w r6,#16648
+ mov.w r8,#26865
+ mov.w r10,#20010
+ .text
+ .global movlowgr
+movlowgr:
+ mov.b r0,RxL
+ mov.b r15,RxL
+ mov.b r8,RxL
+ mov.b r7,RxL
+ mov.b r1,RxL
+ mov.b r11,RxL
+ mov.b r5,RxL
+ mov.b r2,RxL
+ .text
+ .global movhighgr
+movhighgr:
+ mov.b r0,RxH
+ mov.b r15,RxH
+ mov.b r8,RxH
+ mov.b r7,RxH
+ mov.b r1,RxH
+ mov.b r2,RxH
+ mov.b r7,RxH
+ mov.b r2,RxH
+ .text
+ .global movfgrgri
+movfgrgri:
+ movf.b r0,(r0)
+ movf.w r7,(r15)
+ movf.w r4,(r8)
+ movf.b r3,(r7)
+ movf.w r1,(r1)
+ movf.b r6,(r15)
+ movf.b r1,(r10)
+ movf.b r6,(r1)
+ .text
+ .global movfgrgripostinc
+movfgrgripostinc:
+ movf.b r0,(r0++)
+ movf.w r7,(r15++)
+ movf.w r4,(r8++)
+ movf.b r3,(r7++)
+ movf.w r1,(r1++)
+ movf.b r2,(r5++)
+ movf.w r5,(r10++)
+ movf.w r7,(r5++)
+ .text
+ .global movfgrgripredec
+movfgrgripredec:
+ movf.b r0,(--r0)
+ movf.w r7,(--r15)
+ movf.w r4,(--r8)
+ movf.b r3,(--r7)
+ movf.w r1,(--r1)
+ movf.w r6,(--r10)
+ movf.b r1,(--r14)
+ movf.w r3,(--r7)
+ .text
+ .global movfgrigr
+movfgrigr:
+ movf.b (r0),r0
+ movf.w (r15),r7
+ movf.w (r8),r4
+ movf.b (r7),r3
+ movf.w (r1),r1
+ movf.b (r5),r4
+ movf.b (r3),r4
+ movf.w (r12),r3
+ .text
+ .global movfgripostincgr
+movfgripostincgr:
+ movf.b (r0++),r0
+ movf.w (r15++),r7
+ movf.w (r8++),r4
+ movf.b (r7++),r3
+ movf.w (r1++),r1
+ movf.b (r9++),r5
+ movf.w (r10++),r4
+ movf.b (r9++),r1
+ .text
+ .global movfgripredecgr
+movfgripredecgr:
+ movf.b (--r0),r0
+ movf.w (--r15),r7
+ movf.w (--r8),r4
+ movf.b (--r7),r3
+ movf.w (--r1),r1
+ movf.b (--r0),r2
+ movf.w (--r11),r2
+ movf.b (--r10),r5
+ .text
+ .global movfgrgrii
+movfgrgrii:
+ movf.b r0,(r0,r0,0)
+ movf.w r7,(r7,r15,-1)
+ movf.w r4,(r4,r8,-2048)
+ movf.b r3,(r3,r7,2047)
+ movf.w r1,(r1,r1,1)
+ movf.b r7,(r7,r0,1473)
+ movf.w r2,(r0,r9,-1522)
+ movf.w r2,(r5,r1,480)
+ .text
+ .global movfgrgriipostinc
+movfgrgriipostinc:
+ movf.b r0,(r0,r0++,0)
+ movf.w r7,(r7,r15++,-1)
+ movf.w r4,(r4,r8++,-2048)
+ movf.b r3,(r3,r7++,2047)
+ movf.w r1,(r1,r1++,1)
+ movf.b r1,(r0,r2++,1398)
+ movf.w r4,(r0,r9++,-778)
+ movf.w r1,(r5,r14++,1564)
+ .text
+ .global movfgrgriipredec
+movfgrgriipredec:
+ movf.b r0,(r0,--r0,0)
+ movf.w r7,(r7,--r15,-1)
+ movf.w r4,(r4,--r8,-2048)
+ movf.b r3,(r3,--r7,2047)
+ movf.w r1,(r1,--r1,1)
+ movf.b r6,(r0,--r7,254)
+ movf.w r5,(r4,--r12,1673)
+ movf.b r0,(r0,--r10,-38)
+ .text
+ .global movfgriigr
+movfgriigr:
+ movf.b (r0,r0,0),r0
+ movf.w (r7,r15,-1),r7
+ movf.w (r4,r8,-2048),r4
+ movf.b (r3,r7,2047),r3
+ movf.w (r1,r1,1),r1
+ movf.w (r7,r2,-1636),r3
+ movf.w (r6,r12,1626),r1
+ movf.b (r3,r14,1540),r0
+ .text
+ .global movfgriipostincgr
+movfgriipostincgr:
+ movf.b (r0,r0++,0),r0
+ movf.w (r7,r15++,-1),r7
+ movf.w (r4,r8++,-2048),r4
+ movf.b (r3,r7++,2047),r3
+ movf.w (r1,r1++,1),r1
+ movf.b (r7,r13++,466),r3
+ movf.b (r3,r11++,250),r4
+ movf.b (r2,r10++,-1480),r7
+ .text
+ .global movfgriipredecgr
+movfgriipredecgr:
+ movf.b (r0,--r0,0),r0
+ movf.w (r7,--r15,-1),r7
+ movf.w (r4,--r8,-2048),r4
+ movf.b (r3,--r7,2047),r3
+ movf.w (r1,--r1,1),r1
+ movf.b (r5,--r10,-608),r0
+ movf.b (r1,--r11,831),r7
+ movf.w (r7,--r15,-2036),r6
+ .text
+ .global maskgrgr
+maskgrgr:
+ mask r0,r0
+ mask r15,r15
+ mask r8,r8
+ mask r7,r7
+ mask r1,r1
+ mask r4,r0
+ mask r6,r11
+ mask r8,r4
+ .text
+ .global maskgrimm16
+maskgrimm16:
+ mask r0,#0
+ mask r15,#65535
+ mask r8,#32768
+ mask r7,#32767
+ mask r1,#1
+ mask r7,#18153
+ mask r15,#7524
+ mask r14,#34349
+ .text
+ .global pushgr
+pushgr:
+ push r0
+ push r15
+ push r8
+ push r7
+ push r1
+ push r9
+ push r4
+ push r3
+ .text
+ .global popgr
+popgr:
+ pop r0
+ pop r15
+ pop r8
+ pop r7
+ pop r1
+ pop r3
+ pop r2
+ pop r12
+ .text
+ .global swpn
+swpn:
+ swpn r0
+ swpn r15
+ swpn r8
+ swpn r7
+ swpn r1
+ swpn r15
+ swpn r4
+ swpn r3
+ .text
+ .global swpb
+swpb:
+ swpb r0
+ swpb r15
+ swpb r8
+ swpb r7
+ swpb r1
+ swpb r2
+ swpb r12
+ swpb r2
+ .text
+ .global swpw
+swpw:
+ swpw r0,r0
+ swpw r15,r15
+ swpw r8,r8
+ swpw r7,r7
+ swpw r1,r1
+ swpw r12,r4
+ swpw r8,r2
+ swpw r5,r13
+ .text
+ .global andgrgr
+andgrgr:
+ and r0,r0
+ and r15,r15
+ and r8,r8
+ and r7,r7
+ and r1,r1
+ and r2,r2
+ and r15,r5
+ and r7,r5
+ .text
+ .global andimm8
+andimm8:
+ and Rx,#0
+ and Rx,#255
+ and Rx,#128
+ and Rx,#127
+ and Rx,#1
+ and Rx,#206
+ and Rx,#11
+ and Rx,#232
+ .text
+ .global andgrimm16
+andgrimm16:
+ and r0,#0
+ and r15,#65535
+ and r8,#32768
+ and r7,#32767
+ and r1,#1
+ and r10,#17229
+ and r11,#61451
+ and r5,#46925
+ .text
+ .global orgrgr
+orgrgr:
+ or r0,r0
+ or r15,r15
+ or r8,r8
+ or r7,r7
+ or r1,r1
+ or r3,r5
+ or r14,r15
+ or r5,r12
+ .text
+ .global orimm8
+orimm8:
+ or Rx,#0
+ or Rx,#255
+ or Rx,#128
+ or Rx,#127
+ or Rx,#1
+ or Rx,#4
+ or Rx,#38
+ or Rx,#52
+ .text
+ .global orgrimm16
+orgrimm16:
+ or r0,#0
+ or r15,#65535
+ or r8,#32768
+ or r7,#32767
+ or r1,#1
+ or r2,#64563
+ or r2,#18395
+ or r1,#63059
+ .text
+ .global xorgrgr
+xorgrgr:
+ xor r0,r0
+ xor r15,r15
+ xor r8,r8
+ xor r7,r7
+ xor r1,r1
+ xor r14,r1
+ xor r9,r9
+ xor r12,r8
+ .text
+ .global xorimm8
+xorimm8:
+ xor Rx,#0
+ xor Rx,#255
+ xor Rx,#128
+ xor Rx,#127
+ xor Rx,#1
+ xor Rx,#208
+ xor Rx,#126
+ xor Rx,#55
+ .text
+ .global xorgrimm16
+xorgrimm16:
+ xor r0,#0
+ xor r15,#65535
+ xor r8,#32768
+ xor r7,#32767
+ xor r1,#1
+ xor r15,#56437
+ xor r3,#901
+ xor r2,#37017
+ .text
+ .global notgr
+notgr:
+ not r0
+ not r15
+ not r8
+ not r7
+ not r1
+ not r4
+ not r3
+ not r3
+ .text
+ .global addgrgr
+addgrgr:
+ add r0,r0
+ add r15,r15
+ add r8,r8
+ add r7,r7
+ add r1,r1
+ add r12,r7
+ add r1,r10
+ add r14,r14
+ .text
+ .global addgrimm4
+addgrimm4:
+ add r0,#0
+ add r15,#15
+ add r8,#8
+ add r7,#7
+ add r1,#1
+ add r7,#0
+ add r10,#9
+ add r7,#8
+ .text
+ .global addimm8
+addimm8:
+ add Rx,#0
+ add Rx,#255
+ add Rx,#128
+ add Rx,#127
+ add Rx,#1
+ add Rx,#25
+ add Rx,#247
+ add Rx,#221
+ .text
+ .global addgrimm16
+addgrimm16:
+ add r0,#0
+ add r15,#255
+ add r8,#128
+ add r7,#127
+ add r1,#1
+ add r3,#99
+ add r0,#15
+ add r7,#214
+ .text
+ .global adcgrgr
+adcgrgr:
+ adc r0,r0
+ adc r15,r15
+ adc r8,r8
+ adc r7,r7
+ adc r1,r1
+ adc r2,r13
+ adc r14,r10
+ adc r2,r15
+ .text
+ .global adcgrimm4
+adcgrimm4:
+ adc r0,#0
+ adc r15,#15
+ adc r8,#8
+ adc r7,#7
+ adc r1,#1
+ adc r15,#1
+ adc r1,#3
+ adc r6,#11
+ .text
+ .global adcimm8
+adcimm8:
+ adc Rx,#0
+ adc Rx,#255
+ adc Rx,#128
+ adc Rx,#127
+ adc Rx,#1
+ adc Rx,#225
+ adc Rx,#75
+ adc Rx,#18
+ .text
+ .global adcgrimm16
+adcgrimm16:
+ adc r0,#0
+ adc r15,#65535
+ adc r8,#32768
+ adc r7,#32767
+ adc r1,#1
+ adc r13,#63129
+ adc r3,#23795
+ adc r11,#49245
+ .text
+ .global subgrgr
+subgrgr:
+ sub r0,r0
+ sub r15,r15
+ sub r8,r8
+ sub r7,r7
+ sub r1,r1
+ sub r8,r8
+ sub r9,r9
+ sub r9,r15
+ .text
+ .global subgrimm4
+subgrimm4:
+ sub r0,#0
+ sub r15,#15
+ sub r8,#8
+ sub r7,#7
+ sub r1,#1
+ sub r2,#15
+ sub r12,#9
+ sub r8,#4
+ .text
+ .global subimm8
+subimm8:
+ sub Rx,#0
+ sub Rx,#255
+ sub Rx,#128
+ sub Rx,#127
+ sub Rx,#1
+ sub Rx,#205
+ sub Rx,#153
+ sub Rx,#217
+ .text
+ .global subgrimm16
+subgrimm16:
+ sub r0,#0
+ sub r15,#65535
+ sub r8,#32768
+ sub r7,#32767
+ sub r1,#1
+ sub r3,#51895
+ sub r11,#23617
+ sub r10,#7754
+ .text
+ .global sbcgrgr
+sbcgrgr:
+ sbc r0,r0
+ sbc r15,r15
+ sbc r8,r8
+ sbc r7,r7
+ sbc r1,r1
+ sbc r11,r2
+ sbc r9,r1
+ sbc r4,r15
+ .text
+ .global sbcgrimm4
+sbcgrimm4:
+ sbc r0,#0
+ sbc r15,#15
+ sbc r8,#8
+ sbc r7,#7
+ sbc r1,#1
+ sbc r10,#11
+ sbc r11,#10
+ sbc r13,#10
+ .text
+ .global sbcgrimm8
+sbcgrimm8:
+ sbc Rx,#0
+ sbc Rx,#255
+ sbc Rx,#128
+ sbc Rx,#127
+ sbc Rx,#1
+ sbc Rx,#137
+ sbc Rx,#224
+ sbc Rx,#156
+ .text
+ .global sbcgrimm16
+sbcgrimm16:
+ sbc r0,#0
+ sbc r15,#65535
+ sbc r8,#32768
+ sbc r7,#32767
+ sbc r1,#1
+ sbc r0,#32507
+ sbc r7,#8610
+ sbc r14,#20373
+ .text
+ .global incgr
+incgr:
+ inc r0
+ inc r15
+ inc r8
+ inc r7
+ inc r1
+ inc r13
+ inc r1
+ inc r11
+ .text
+ .global incgrimm2
+incgrimm2:
+ inc r0,#0
+ inc r15,#3
+ inc r8,#2
+ inc r7,#1
+ inc r1,#1
+ inc r14,#1
+ inc r5,#0
+ inc r12,#3
+ .text
+ .global decgr
+decgr:
+ dec r0
+ dec r15
+ dec r8
+ dec r7
+ dec r1
+ dec r12
+ dec r8
+ dec r10
+ .text
+ .global decgrimm2
+decgrimm2:
+ dec r0,#0
+ dec r15,#3
+ dec r8,#2
+ dec r7,#1
+ dec r1,#1
+ dec r5,#0
+ dec r13,#0
+ dec r13,#2
+ .text
+ .global rrcgrgr
+rrcgrgr:
+ rrc r0,r0
+ rrc r15,r15
+ rrc r8,r8
+ rrc r7,r7
+ rrc r1,r1
+ rrc r8,r4
+ rrc r10,r14
+ rrc r15,r9
+ .text
+ .global rrcgrimm4
+rrcgrimm4:
+ rrc r0,#0
+ rrc r15,#15
+ rrc r8,#8
+ rrc r7,#7
+ rrc r1,#1
+ rrc r11,#3
+ rrc r14,#12
+ rrc r2,#15
+ .text
+ .global rlcgrgr
+rlcgrgr:
+ rlc r0,r0
+ rlc r15,r15
+ rlc r8,r8
+ rlc r7,r7
+ rlc r1,r1
+ rlc r15,r3
+ rlc r15,r7
+ rlc r15,r10
+ .text
+ .global rlcgrimm4
+rlcgrimm4:
+ rlc r0,#0
+ rlc r15,#15
+ rlc r8,#8
+ rlc r7,#7
+ rlc r1,#1
+ rlc r8,#2
+ rlc r2,#6
+ rlc r6,#10
+ .text
+ .global shrgrgr
+shrgrgr:
+ shr r0,r0
+ shr r15,r15
+ shr r8,r8
+ shr r7,r7
+ shr r1,r1
+ shr r13,r2
+ shr r7,r8
+ shr r6,r8
+ .text
+ .global shrgrimm
+shrgrimm:
+ shr r0,#0
+ shr r15,#15
+ shr r8,#8
+ shr r7,#7
+ shr r1,#1
+ shr r9,#13
+ shr r2,#7
+ shr r8,#8
+ .text
+ .global shlgrgr
+shlgrgr:
+ shl r0,r0
+ shl r15,r15
+ shl r8,r8
+ shl r7,r7
+ shl r1,r1
+ shl r2,r3
+ shl r0,r3
+ shl r2,r1
+ .text
+ .global shlgrimm
+shlgrimm:
+ shl r0,#0
+ shl r15,#15
+ shl r8,#8
+ shl r7,#7
+ shl r1,#1
+ shl r6,#13
+ shl r3,#6
+ shl r15,#15
+ .text
+ .global asrgrgr
+asrgrgr:
+ asr r0,r0
+ asr r15,r15
+ asr r8,r8
+ asr r7,r7
+ asr r1,r1
+ asr r5,r10
+ asr r3,r5
+ asr r6,r11
+ .text
+ .global asrgrimm
+asrgrimm:
+ asr r0,#0
+ asr r15,#15
+ asr r8,#8
+ asr r7,#7
+ asr r1,#1
+ asr r13,#4
+ asr r0,#13
+ asr r6,#3
+ .text
+ .global set1grimm
+set1grimm:
+ set1 r0,#0
+ set1 r15,#15
+ set1 r8,#8
+ set1 r7,#7
+ set1 r1,#1
+ set1 r6,#10
+ set1 r13,#1
+ set1 r13,#15
+ .text
+ .global set1grgr
+set1grgr:
+ set1 r0,r0
+ set1 r15,r15
+ set1 r8,r8
+ set1 r7,r7
+ set1 r1,r1
+ set1 r6,r0
+ set1 r6,r7
+ set1 r14,r2
+ .text
+ .global set1lmemimm
+set1lmemimm:
+ set1 0,#0
+ set1 255,#7
+ set1 128,#4
+ set1 127,#3
+ set1 1,#1
+ set1 244,#3
+ set1 55,#7
+ set1 252,#5
+ .text
+ .global set1hmemimm
+set1hmemimm:
+ set1 0x7f00+0,#0
+ set1 0x7f00+255,#7
+ set1 0x7f00+128,#4
+ set1 0x7f00+127,#3
+ set1 0x7f00+1,#1
+ set1 0x7f00+10,#3
+ set1 0x7f00+99,#4
+ set1 0x7f00+148,#3
+ .text
+ .global clr1grimm
+clr1grimm:
+ clr1 r0,#0
+ clr1 r15,#15
+ clr1 r8,#8
+ clr1 r7,#7
+ clr1 r1,#1
+ clr1 r12,#0
+ clr1 r8,#11
+ clr1 r7,#7
+ .text
+ .global clr1grgr
+clr1grgr:
+ clr1 r0,r0
+ clr1 r15,r15
+ clr1 r8,r8
+ clr1 r7,r7
+ clr1 r1,r1
+ clr1 r3,r3
+ clr1 r0,r1
+ clr1 r15,r0
+ .text
+ .global clr1lmemimm
+clr1lmemimm:
+ clr1 0,#0
+ clr1 255,#7
+ clr1 128,#4
+ clr1 127,#3
+ clr1 1,#1
+ clr1 114,#7
+ clr1 229,#4
+ clr1 86,#1
+ .text
+ .global clr1hmemimm
+clr1hmemimm:
+ clr1 0x7f00+0,#0
+ clr1 0x7f00+255,#7
+ clr1 0x7f00+128,#4
+ clr1 0x7f00+127,#3
+ clr1 0x7f00+1,#1
+ clr1 0x7f00+44,#3
+ clr1 0x7f00+212,#5
+ clr1 0x7f00+67,#7
+ .text
+ .global cbwgr
+cbwgr:
+ cbw r0
+ cbw r15
+ cbw r8
+ cbw r7
+ cbw r1
+ cbw r8
+ cbw r11
+ cbw r3
+ .text
+ .global revgr
+revgr:
+ rev r0
+ rev r15
+ rev r8
+ rev r7
+ rev r1
+ rev r1
+ rev r1
+ rev r14
+ .text
+ .global bgr
+bgr:
+ br r0
+ br r15
+ br r8
+ br r7
+ br r1
+ br r0
+ br r15
+ br r12
+ .text
+ .global jmp
+jmp:
+ jmp r8,r0
+ jmp r9,r15
+ jmp r9,r8
+ jmp r8,r7
+ jmp r9,r1
+ jmp r9,r7
+ jmp r9,r5
+ jmp r8,r12
+ .text
+ .global jmpf
+jmpf:
+ jmpf 0
+ jmpf 16777215
+ jmpf 8388608
+ jmpf 8388607
+ jmpf 1
+ jmpf 10731629
+ jmpf 15094866
+ jmpf 1464024
+ .text
+ .global callrgr
+callrgr:
+ callr r0
+ callr r15
+ callr r8
+ callr r7
+ callr r1
+ callr r1
+ callr r12
+ callr r8
+ .text
+ .global callgr
+callgr:
+ call r8,r0
+ call r9,r15
+ call r9,r8
+ call r8,r7
+ call r9,r1
+ call r9,r6
+ call r9,r14
+ call r8,r12
+ .text
+ .global callfimm
+callfimm:
+ callf 0
+ callf 16777215
+ callf 8388608
+ callf 8388607
+ callf 1
+ callf 13546070
+ callf 10837983
+ callf 15197875
+ .text
+ .global icallrgr
+icallrgr:
+ icallr r0
+ icallr r15
+ icallr r8
+ icallr r7
+ icallr r1
+ icallr r15
+ icallr r12
+ icallr r9
+ .text
+ .global icallgr
+icallgr:
+ icall r8,r0
+ icall r9,r15
+ icall r9,r8
+ icall r8,r7
+ icall r9,r1
+ icall r9,r10
+ icall r8,r15
+ icall r8,r10
+ .text
+ .global icallfimm
+icallfimm:
+ icallf 0
+ icallf 16777215
+ icallf 8388608
+ icallf 8388607
+ icallf 1
+ icallf 9649954
+ icallf 1979758
+ icallf 7661640
+ .text
+ .global iret
+iret:
+ iret
+ .text
+ .global ret
+ret:
+ ret
+ .text
+ .global mul
+mul:
+ mul
+ .text
+ .global div
+div:
+ div
+ .text
+ .global nop
+nop:
+ nop
+ ret
+ .text
+ .global halt
+halt:
+ halt
+ .text
+ .global hold
+hold:
+ hold
+ .text
+ .global brk
+brk:
+ brk
+ .text
+ .global bccgrgr
+bccgrgr:
+ bge r0,r0,0+(.+4)
+ bz r15,r15,-1+(.+4)
+ bpl r8,r8,-2048+(.+4)
+ bls r7,r7,2047+(.+4)
+ bnc r1,r1,1+(.+4)
+ bc r3,r13,1799+(.+4)
+ bge r1,r10,-2019+(.+4)
+ bz r0,r5,-1132+(.+4)
+ .text
+ .global bccgrimm8
+bccgrimm8:
+ bge r0,#0,0+(.+4)
+ bz r7,#255,-1+(.+4)
+ bpl r4,#128,-2048+(.+4)
+ bls r3,#127,2047+(.+4)
+ bnc r1,#1,1+(.+4)
+ bnc r3,#8,1473+(.+4)
+ bnz.b r5,#203,1619+(.+4)
+ bc r7,#225,978+(.+4)
+ .text
+ .global bccimm16
+bccimm16:
+ bge Rx,#0,0+(.+4)
+ bz Rx,#65535,-1+(.+4)
+ bpl Rx,#32768,-128+(.+4)
+ bls Rx,#32767,127+(.+4)
+ bnc Rx,#1,1+(.+4)
+ bz.b Rx,#30715,4+(.+4)
+ bnv Rx,#62266,-13+(.+4)
+ bnv Rx,#48178,108+(.+4)
+ .text
+ .global bngrimm4
+bngrimm4:
+ bn r0,#0,0+(.+4)
+ bn r15,#15,-1+(.+4)
+ bn r8,#8,-2048+(.+4)
+ bn r7,#7,2047+(.+4)
+ bn r1,#1,1+(.+4)
+ bn r11,#3,-1975+(.+4)
+ bn r15,#4,-1205+(.+4)
+ bn r10,#8,1691+(.+4)
+ .text
+ .global bngrgr
+bngrgr:
+ bn r0,r0,0+(.+4)
+ bn r15,r15,-1+(.+4)
+ bn r8,r8,-2048+(.+4)
+ bn r7,r7,2047+(.+4)
+ bn r1,r1,1+(.+4)
+ bn r4,r3,1181+(.+4)
+ bn r5,r2,77+(.+4)
+ bn r3,r7,631+(.+4)
+ .text
+ .global bnlmemimm
+bnlmemimm:
+ bn 0,#0,0+(.+4)
+ bn 255,#7,-1+(.+4)
+ bn 128,#4,-2048+(.+4)
+ bn 127,#3,2047+(.+4)
+ bn 1,#1,1+(.+4)
+ bn 153,#7,-847+(.+4)
+ bn 204,#0,-1881+(.+4)
+ bn 242,#7,1396+(.+4)
+ .text
+ .global bnhmemimm
+bnhmemimm:
+ bn 0x7f00+0,#0,0+(.+4)
+ bn 0x7f00+255,#7,-1+(.+4)
+ bn 0x7f00+128,#4,-2048+(.+4)
+ bn 0x7f00+127,#3,2047+(.+4)
+ bn 0x7f00+1,#1,1+(.+4)
+ bn 0x7f00+185,#3,-614+(.+4)
+ bn 0x7f00+105,#1,-668+(.+4)
+ bn 0x7f00+79,#7,1312+(.+4)
+ .text
+ .global bpgrimm4
+bpgrimm4:
+ bp r0,#0,0+(.+4)
+ bp r15,#15,-1+(.+4)
+ bp r8,#8,-2048+(.+4)
+ bp r7,#7,2047+(.+4)
+ bp r1,#1,1+(.+4)
+ bp r0,#12,1075+(.+4)
+ bp r1,#5,551+(.+4)
+ bp r6,#8,1588+(.+4)
+ .text
+ .global bpgrgr
+bpgrgr:
+ bp r0,r0,0+(.+4)
+ bp r15,r15,-1+(.+4)
+ bp r8,r8,-2048+(.+4)
+ bp r7,r7,2047+(.+4)
+ bp r1,r1,1+(.+4)
+ bp r4,r9,-614+(.+4)
+ bp r9,r10,-1360+(.+4)
+ bp r4,r1,407+(.+4)
+ .text
+ .global bplmemimm
+bplmemimm:
+ bp 0,#0,0+(.+4)
+ bp 255,#7,-1+(.+4)
+ bp 128,#4,-2048+(.+4)
+ bp 127,#3,2047+(.+4)
+ bp 1,#1,1+(.+4)
+ bp 193,#3,-398+(.+4)
+ bp 250,#2,-1553+(.+4)
+ bp 180,#6,579+(.+4)
+ .text
+ .global bphmemimm
+bphmemimm:
+ bp 0x7f00+0,#0,0+(.+4)
+ bp 0x7f00+255,#7,-1+(.+4)
+ bp 0x7f00+128,#4,-2048+(.+4)
+ bp 0x7f00+127,#3,2047+(.+4)
+ bp 0x7f00+1,#1,1+(.+4)
+ bp 0x7f00+195,#1,-432+(.+4)
+ bp 0x7f00+129,#5,-1508+(.+4)
+ bp 0x7f00+56,#3,1723+(.+4)
+ .text
+ .global bcc
+bcc:
+ bge 0+(.+2)
+ bz -1+(.+2)
+ bpl -128+(.+2)
+ bls 127+(.+2)
+ bnc 1+(.+2)
+ bnz.b 48+(.+2)
+ bnc -7+(.+2)
+ bnz.b 74+(.+2)
+ .text
+ .global br
+br:
+ br 0+(.+2)
+ br -2+(.+2)
+ br -2048+(.+2)
+ br 2046+(.+2)
+ br 1+(.+2)
+ br 1472+(.+2)
+ br 1618+(.+2)
+ br 978+(.+2)
+ .text
+ .global callrimm
+callrimm:
+ callr 0+(.+2)
+ callr -2+(.+2)
+ callr -2048+(.+2)
+ callr 2046+(.+2)
+ callr 1+(.+2)
+ callr 1472+(.+2)
+ callr 1618+(.+2)
+ callr 978+(.+2)
Index: gas/testsuite/gas/xstormy16/allinsn.sh
===================================================================
RCS file: allinsn.sh
diff -N allinsn.sh
--- gas/testsuite/gas/xstormy16/allinsn.sh Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/allinsn.sh Fri Dec 7 14:26:56 2001
@@ -0,0 +1,1389 @@
+#/bin/sh
+# Generate test result data for xstormy16 GAS testing.
+# This script is machine generated.
+# It is intended to be run in the testsuite source directory.
+#
+# Syntax: build.sh /path/to/build/gas
+
+if [ $# = 0 ] ; then
+ if [ ! -x ../gas/as-new ] ; then
+ echo "Usage: $0 [/path/to/gas/build]"
+ else
+ BUILD=`pwd`/../gas
+ fi
+else
+ BUILD=$1
+fi
+
+if [ ! -x $BUILD/as-new ] ; then
+ echo "$BUILD is not a gas build directory"
+ exit 1
+fi
+
+# Put results here, so we preserve the existing set for comparison.
+rm -rf tmpdir
+mkdir tmpdir
+cd tmpdir
+
+function gentest {
+ rm -f a.out
+ $BUILD/as-new ${1}.s -o a.out
+ echo "#as:" >${1}.d
+ echo "#objdump: -dr" >>${1}.d
+ echo "#name: $1" >>${1}.d
+ $BUILD/../binutils/objdump -dr a.out | sed -e 's/(/\\(/g' -e 's/)/\\)/g' -e 's/\$/\\$/g' -e 's/\[/\\\[/g' -e 's/\]/\\\]/g' -e 's/[+]/\\+/g' -e 's/[.]/\\./g' -e 's/[*]/\\*/g' | sed -e 's/^.*file format.*$/.*: +file format .*/' >>${1}.d
+ rm -f a.out
+}
+
+# Now come all the testcases.
+cat > allinsn.s <<EOF
+ .data
+foodata: .word 42
+ .text
+footext:
+ .text
+ .global movlmemimm
+movlmemimm:
+ mov.b 0,#0
+ mov.w 255,#65535
+ mov.w 128,#32768
+ mov.b 127,#32767
+ mov.w 1,#1
+ mov.w 81,#64681
+ mov.w 247,#42230
+ mov.b 84,#16647
+ .text
+ .global movhmemimm
+movhmemimm:
+ mov.b 0x7f00+0,#0
+ mov.w 0x7f00+255,#65535
+ mov.w 0x7f00+128,#32768
+ mov.b 0x7f00+127,#32767
+ mov.w 0x7f00+1,#1
+ mov.b 0x7f00+165,#1944
+ mov.w 0x7f00+186,#11517
+ mov.b 0x7f00+63,#25556
+ .text
+ .global movlgrmem
+movlgrmem:
+ mov.b r0,0
+ mov.w r7,255
+ mov.w r4,128
+ mov.b r3,127
+ mov.w r1,1
+ mov.w r6,179
+ mov.w r0,183
+ mov.b r3,41
+ .text
+ .global movhgrmem
+movhgrmem:
+ mov.b r0,0x7f00+0
+ mov.w r7,0x7f00+255
+ mov.w r4,0x7f00+128
+ mov.b r3,0x7f00+127
+ mov.w r1,0x7f00+1
+ mov.b r2,0x7f00+114
+ mov.w r2,0x7f00+210
+ mov.w r5,0x7f00+181
+ .text
+ .global movlmemgr
+movlmemgr:
+ mov.b 0,r0
+ mov.w 255,r7
+ mov.w 128,r4
+ mov.b 127,r3
+ mov.w 1,r1
+ mov.w 137,r0
+ mov.w 26,r0
+ mov.b 127,r4
+ .text
+ .global movhmemgr
+movhmemgr:
+ mov.b 0x7f00+0,r0
+ mov.w 0x7f00+255,r7
+ mov.w 0x7f00+128,r4
+ mov.b 0x7f00+127,r3
+ mov.w 0x7f00+1,r1
+ mov.w 0x7f00+98,r3
+ mov.w 0x7f00+135,r7
+ mov.b 0x7f00+229,r2
+ .text
+ .global movgrgri
+movgrgri:
+ mov.b r0,(r0)
+ mov.w r7,(r15)
+ mov.w r4,(r8)
+ mov.b r3,(r7)
+ mov.w r1,(r1)
+ mov.w r6,(r4)
+ mov.b r0,(r12)
+ mov.w r5,(r9)
+ .text
+ .global movgrgripostinc
+movgrgripostinc:
+ mov.b r0,(r0++)
+ mov.w r7,(r15++)
+ mov.w r4,(r8++)
+ mov.b r3,(r7++)
+ mov.w r1,(r1++)
+ mov.w r4,(r8++)
+ mov.w r3,(r12++)
+ mov.b r6,(r4++)
+ .text
+ .global movgrgripredec
+movgrgripredec:
+ mov.b r0,(--r0)
+ mov.w r7,(--r15)
+ mov.w r4,(--r8)
+ mov.b r3,(--r7)
+ mov.w r1,(--r1)
+ mov.w r5,(--r9)
+ mov.w r4,(--r14)
+ mov.b r4,(--r7)
+ .text
+ .global movgrigr
+movgrigr:
+ mov.b (r0),r0
+ mov.w (r15),r7
+ mov.w (r8),r4
+ mov.b (r7),r3
+ mov.w (r1),r1
+ mov.w (r4),r3
+ mov.b (r3),r6
+ mov.w (r7),r0
+ .text
+ .global movgripostincgr
+movgripostincgr:
+ mov.b (r0++),r0
+ mov.w (r15++),r7
+ mov.w (r8++),r4
+ mov.b (r7++),r3
+ mov.w (r1++),r1
+ mov.w (r12++),r5
+ mov.b (r4++),r2
+ mov.b (r11++),r6
+ .text
+ .global movgripredecgr
+movgripredecgr:
+ mov.b (--r0),r0
+ mov.w (--r15),r7
+ mov.w (--r8),r4
+ mov.b (--r7),r3
+ mov.w (--r1),r1
+ mov.b (--r8),r3
+ mov.b (--r11),r4
+ mov.w (--r1),r6
+ .text
+ .global movgrgrii
+movgrgrii:
+ mov.b r0,(r0,0)
+ mov.w r7,(r15,-1)
+ mov.w r4,(r8,-2048)
+ mov.b r3,(r7,2047)
+ mov.w r1,(r1,1)
+ mov.w r6,(r8,-452)
+ mov.w r4,(r11,572)
+ mov.b r1,(r1,-1718)
+ .text
+ .global movgrgriipostinc
+movgrgriipostinc:
+ mov.b r0,(r0++,0)
+ mov.w r7,(r15++,-1)
+ mov.w r4,(r8++,-2048)
+ mov.b r3,(r7++,2047)
+ mov.w r1,(r1++,1)
+ mov.w r6,(r0++,-64)
+ mov.b r7,(r15++,1060)
+ mov.b r0,(r7++,847)
+ .text
+ .global movgrgriipredec
+movgrgriipredec:
+ mov.b r0,(--r0,0)
+ mov.w r7,(--r15,-1)
+ mov.w r4,(--r8,-2048)
+ mov.b r3,(--r7,2047)
+ mov.w r1,(--r1,1)
+ mov.w r0,(--r15,1780)
+ mov.w r6,(--r1,1506)
+ mov.w r7,(--r3,-2033)
+ .text
+ .global movgriigr
+movgriigr:
+ mov.b (r0,0),r0
+ mov.w (r15,-1),r7
+ mov.w (r8,-2048),r4
+ mov.b (r7,2047),r3
+ mov.w (r1,1),r1
+ mov.w (r7,1948),r5
+ mov.b (r3,-844),r4
+ mov.w (r15,1704),r0
+ .text
+ .global movgriipostincgr
+movgriipostincgr:
+ mov.b (r0++,0),r0
+ mov.w (r15++,-1),r7
+ mov.w (r8++,-2048),r4
+ mov.b (r7++,2047),r3
+ mov.w (r1++,1),r1
+ mov.w (r2++,-176),r7
+ mov.w (r8++,1389),r4
+ mov.b (r3++,47),r0
+ .text
+ .global movgriipredecgr
+movgriipredecgr:
+ mov.b (--r0,0),r0
+ mov.w (--r15,-1),r7
+ mov.w (--r8,-2048),r4
+ mov.b (--r7,2047),r3
+ mov.w (--r1,1),r1
+ mov.b (--r8,1004),r4
+ mov.w (--r14,-1444),r2
+ mov.b (--r5,-927),r4
+ .text
+ .global movgrgr
+movgrgr:
+ mov r0,r0
+ mov r15,r15
+ mov r8,r8
+ mov r7,r7
+ mov r1,r1
+ mov r9,r14
+ mov r7,r15
+ mov r12,r15
+ .text
+ .global movimm8
+movimm8:
+ mov Rx,#0
+ mov Rx,#255
+ mov Rx,#128
+ mov Rx,#127
+ mov Rx,#1
+ mov Rx,#136
+ mov Rx,#83
+ mov Rx,#104
+ .text
+ .global movwimm8
+movwimm8:
+ mov.w Rx,#0
+ mov.w Rx,#255
+ mov.w Rx,#128
+ mov.w Rx,#127
+ mov.w Rx,#1
+ mov.w Rx,#92
+ mov.w Rx,#97
+ mov.w Rx,#4
+ .text
+ .global movgrimm8
+movgrimm8:
+ mov r0,#0
+ mov r7,#255
+ mov r4,#128
+ mov r3,#127
+ mov r1,#1
+ mov r2,#206
+ mov r4,#55
+ mov r2,#3
+ .text
+ .global movwgrimm8
+movwgrimm8:
+ mov.w r0,#0
+ mov.w r7,#255
+ mov.w r4,#128
+ mov.w r3,#127
+ mov.w r1,#1
+ mov.w r4,#243
+ mov.w r3,#55
+ mov.w r2,#108
+ .text
+ .global movgrimm16
+movgrimm16:
+ mov r0,#0
+ mov r15,#65535
+ mov r8,#32768
+ mov r7,#32767
+ mov r1,#1
+ mov r4,#20066
+ mov r3,#7190
+ mov r2,#15972
+ .text
+ .global movwgrimm16
+movwgrimm16:
+ mov.w r0,#0
+ mov.w r15,#65535
+ mov.w r8,#32768
+ mov.w r7,#32767
+ mov.w r1,#1
+ mov.w r6,#16648
+ mov.w r8,#26865
+ mov.w r10,#20010
+ .text
+ .global movlowgr
+movlowgr:
+ mov.b r0,RxL
+ mov.b r15,RxL
+ mov.b r8,RxL
+ mov.b r7,RxL
+ mov.b r1,RxL
+ mov.b r11,RxL
+ mov.b r5,RxL
+ mov.b r2,RxL
+ .text
+ .global movhighgr
+movhighgr:
+ mov.b r0,RxH
+ mov.b r15,RxH
+ mov.b r8,RxH
+ mov.b r7,RxH
+ mov.b r1,RxH
+ mov.b r2,RxH
+ mov.b r7,RxH
+ mov.b r2,RxH
+ .text
+ .global movfgrgri
+movfgrgri:
+ movf.b r0,(r0)
+ movf.w r7,(r15)
+ movf.w r4,(r8)
+ movf.b r3,(r7)
+ movf.w r1,(r1)
+ movf.b r6,(r15)
+ movf.b r1,(r10)
+ movf.b r6,(r1)
+ .text
+ .global movfgrgripostinc
+movfgrgripostinc:
+ movf.b r0,(r0++)
+ movf.w r7,(r15++)
+ movf.w r4,(r8++)
+ movf.b r3,(r7++)
+ movf.w r1,(r1++)
+ movf.b r2,(r5++)
+ movf.w r5,(r10++)
+ movf.w r7,(r5++)
+ .text
+ .global movfgrgripredec
+movfgrgripredec:
+ movf.b r0,(--r0)
+ movf.w r7,(--r15)
+ movf.w r4,(--r8)
+ movf.b r3,(--r7)
+ movf.w r1,(--r1)
+ movf.w r6,(--r10)
+ movf.b r1,(--r14)
+ movf.w r3,(--r7)
+ .text
+ .global movfgrigr
+movfgrigr:
+ movf.b (r0),r0
+ movf.w (r15),r7
+ movf.w (r8),r4
+ movf.b (r7),r3
+ movf.w (r1),r1
+ movf.b (r5),r4
+ movf.b (r3),r4
+ movf.w (r12),r3
+ .text
+ .global movfgripostincgr
+movfgripostincgr:
+ movf.b (r0++),r0
+ movf.w (r15++),r7
+ movf.w (r8++),r4
+ movf.b (r7++),r3
+ movf.w (r1++),r1
+ movf.b (r9++),r5
+ movf.w (r10++),r4
+ movf.b (r9++),r1
+ .text
+ .global movfgripredecgr
+movfgripredecgr:
+ movf.b (--r0),r0
+ movf.w (--r15),r7
+ movf.w (--r8),r4
+ movf.b (--r7),r3
+ movf.w (--r1),r1
+ movf.b (--r0),r2
+ movf.w (--r11),r2
+ movf.b (--r10),r5
+ .text
+ .global movfgrgrii
+movfgrgrii:
+ movf.b r0,(r0,r0,0)
+ movf.w r7,(r7,r15,-1)
+ movf.w r4,(r4,r8,-2048)
+ movf.b r3,(r3,r7,2047)
+ movf.w r1,(r1,r1,1)
+ movf.b r7,(r7,r0,1473)
+ movf.w r2,(r0,r9,-1522)
+ movf.w r2,(r5,r1,480)
+ .text
+ .global movfgrgriipostinc
+movfgrgriipostinc:
+ movf.b r0,(r0,r0++,0)
+ movf.w r7,(r7,r15++,-1)
+ movf.w r4,(r4,r8++,-2048)
+ movf.b r3,(r3,r7++,2047)
+ movf.w r1,(r1,r1++,1)
+ movf.b r1,(r0,r2++,1398)
+ movf.w r4,(r0,r9++,-778)
+ movf.w r1,(r5,r14++,1564)
+ .text
+ .global movfgrgriipredec
+movfgrgriipredec:
+ movf.b r0,(r0,--r0,0)
+ movf.w r7,(r7,--r15,-1)
+ movf.w r4,(r4,--r8,-2048)
+ movf.b r3,(r3,--r7,2047)
+ movf.w r1,(r1,--r1,1)
+ movf.b r6,(r0,--r7,254)
+ movf.w r5,(r4,--r12,1673)
+ movf.b r0,(r0,--r10,-38)
+ .text
+ .global movfgriigr
+movfgriigr:
+ movf.b (r0,r0,0),r0
+ movf.w (r7,r15,-1),r7
+ movf.w (r4,r8,-2048),r4
+ movf.b (r3,r7,2047),r3
+ movf.w (r1,r1,1),r1
+ movf.w (r7,r2,-1636),r3
+ movf.w (r6,r12,1626),r1
+ movf.b (r3,r14,1540),r0
+ .text
+ .global movfgriipostincgr
+movfgriipostincgr:
+ movf.b (r0,r0++,0),r0
+ movf.w (r7,r15++,-1),r7
+ movf.w (r4,r8++,-2048),r4
+ movf.b (r3,r7++,2047),r3
+ movf.w (r1,r1++,1),r1
+ movf.b (r7,r13++,466),r3
+ movf.b (r3,r11++,250),r4
+ movf.b (r2,r10++,-1480),r7
+ .text
+ .global movfgriipredecgr
+movfgriipredecgr:
+ movf.b (r0,--r0,0),r0
+ movf.w (r7,--r15,-1),r7
+ movf.w (r4,--r8,-2048),r4
+ movf.b (r3,--r7,2047),r3
+ movf.w (r1,--r1,1),r1
+ movf.b (r5,--r10,-608),r0
+ movf.b (r1,--r11,831),r7
+ movf.w (r7,--r15,-2036),r6
+ .text
+ .global maskgrgr
+maskgrgr:
+ mask r0,r0
+ mask r15,r15
+ mask r8,r8
+ mask r7,r7
+ mask r1,r1
+ mask r4,r0
+ mask r6,r11
+ mask r8,r4
+ .text
+ .global maskgrimm16
+maskgrimm16:
+ mask r0,#0
+ mask r15,#65535
+ mask r8,#32768
+ mask r7,#32767
+ mask r1,#1
+ mask r7,#18153
+ mask r15,#7524
+ mask r14,#34349
+ .text
+ .global pushgr
+pushgr:
+ push r0
+ push r15
+ push r8
+ push r7
+ push r1
+ push r9
+ push r4
+ push r3
+ .text
+ .global popgr
+popgr:
+ pop r0
+ pop r15
+ pop r8
+ pop r7
+ pop r1
+ pop r3
+ pop r2
+ pop r12
+ .text
+ .global swpn
+swpn:
+ swpn r0
+ swpn r15
+ swpn r8
+ swpn r7
+ swpn r1
+ swpn r15
+ swpn r4
+ swpn r3
+ .text
+ .global swpb
+swpb:
+ swpb r0
+ swpb r15
+ swpb r8
+ swpb r7
+ swpb r1
+ swpb r2
+ swpb r12
+ swpb r2
+ .text
+ .global swpw
+swpw:
+ swpw r0,r0
+ swpw r15,r15
+ swpw r8,r8
+ swpw r7,r7
+ swpw r1,r1
+ swpw r12,r4
+ swpw r8,r2
+ swpw r5,r13
+ .text
+ .global andgrgr
+andgrgr:
+ and r0,r0
+ and r15,r15
+ and r8,r8
+ and r7,r7
+ and r1,r1
+ and r2,r2
+ and r15,r5
+ and r7,r5
+ .text
+ .global andimm8
+andimm8:
+ and Rx,#0
+ and Rx,#255
+ and Rx,#128
+ and Rx,#127
+ and Rx,#1
+ and Rx,#206
+ and Rx,#11
+ and Rx,#232
+ .text
+ .global andgrimm16
+andgrimm16:
+ and r0,#0
+ and r15,#65535
+ and r8,#32768
+ and r7,#32767
+ and r1,#1
+ and r10,#17229
+ and r11,#61451
+ and r5,#46925
+ .text
+ .global orgrgr
+orgrgr:
+ or r0,r0
+ or r15,r15
+ or r8,r8
+ or r7,r7
+ or r1,r1
+ or r3,r5
+ or r14,r15
+ or r5,r12
+ .text
+ .global orimm8
+orimm8:
+ or Rx,#0
+ or Rx,#255
+ or Rx,#128
+ or Rx,#127
+ or Rx,#1
+ or Rx,#4
+ or Rx,#38
+ or Rx,#52
+ .text
+ .global orgrimm16
+orgrimm16:
+ or r0,#0
+ or r15,#65535
+ or r8,#32768
+ or r7,#32767
+ or r1,#1
+ or r2,#64563
+ or r2,#18395
+ or r1,#63059
+ .text
+ .global xorgrgr
+xorgrgr:
+ xor r0,r0
+ xor r15,r15
+ xor r8,r8
+ xor r7,r7
+ xor r1,r1
+ xor r14,r1
+ xor r9,r9
+ xor r12,r8
+ .text
+ .global xorimm8
+xorimm8:
+ xor Rx,#0
+ xor Rx,#255
+ xor Rx,#128
+ xor Rx,#127
+ xor Rx,#1
+ xor Rx,#208
+ xor Rx,#126
+ xor Rx,#55
+ .text
+ .global xorgrimm16
+xorgrimm16:
+ xor r0,#0
+ xor r15,#65535
+ xor r8,#32768
+ xor r7,#32767
+ xor r1,#1
+ xor r15,#56437
+ xor r3,#901
+ xor r2,#37017
+ .text
+ .global notgr
+notgr:
+ not r0
+ not r15
+ not r8
+ not r7
+ not r1
+ not r4
+ not r3
+ not r3
+ .text
+ .global addgrgr
+addgrgr:
+ add r0,r0
+ add r15,r15
+ add r8,r8
+ add r7,r7
+ add r1,r1
+ add r12,r7
+ add r1,r10
+ add r14,r14
+ .text
+ .global addgrimm4
+addgrimm4:
+ add r0,#0
+ add r15,#15
+ add r8,#8
+ add r7,#7
+ add r1,#1
+ add r7,#0
+ add r10,#9
+ add r7,#8
+ .text
+ .global addimm8
+addimm8:
+ add Rx,#0
+ add Rx,#255
+ add Rx,#128
+ add Rx,#127
+ add Rx,#1
+ add Rx,#25
+ add Rx,#247
+ add Rx,#221
+ .text
+ .global addgrimm16
+addgrimm16:
+ add r0,#0
+ add r15,#255
+ add r8,#128
+ add r7,#127
+ add r1,#1
+ add r3,#99
+ add r0,#15
+ add r7,#214
+ .text
+ .global adcgrgr
+adcgrgr:
+ adc r0,r0
+ adc r15,r15
+ adc r8,r8
+ adc r7,r7
+ adc r1,r1
+ adc r2,r13
+ adc r14,r10
+ adc r2,r15
+ .text
+ .global adcgrimm4
+adcgrimm4:
+ adc r0,#0
+ adc r15,#15
+ adc r8,#8
+ adc r7,#7
+ adc r1,#1
+ adc r15,#1
+ adc r1,#3
+ adc r6,#11
+ .text
+ .global adcimm8
+adcimm8:
+ adc Rx,#0
+ adc Rx,#255
+ adc Rx,#128
+ adc Rx,#127
+ adc Rx,#1
+ adc Rx,#225
+ adc Rx,#75
+ adc Rx,#18
+ .text
+ .global adcgrimm16
+adcgrimm16:
+ adc r0,#0
+ adc r15,#65535
+ adc r8,#32768
+ adc r7,#32767
+ adc r1,#1
+ adc r13,#63129
+ adc r3,#23795
+ adc r11,#49245
+ .text
+ .global subgrgr
+subgrgr:
+ sub r0,r0
+ sub r15,r15
+ sub r8,r8
+ sub r7,r7
+ sub r1,r1
+ sub r8,r8
+ sub r9,r9
+ sub r9,r15
+ .text
+ .global subgrimm4
+subgrimm4:
+ sub r0,#0
+ sub r15,#15
+ sub r8,#8
+ sub r7,#7
+ sub r1,#1
+ sub r2,#15
+ sub r12,#9
+ sub r8,#4
+ .text
+ .global subimm8
+subimm8:
+ sub Rx,#0
+ sub Rx,#255
+ sub Rx,#128
+ sub Rx,#127
+ sub Rx,#1
+ sub Rx,#205
+ sub Rx,#153
+ sub Rx,#217
+ .text
+ .global subgrimm16
+subgrimm16:
+ sub r0,#0
+ sub r15,#65535
+ sub r8,#32768
+ sub r7,#32767
+ sub r1,#1
+ sub r3,#51895
+ sub r11,#23617
+ sub r10,#7754
+ .text
+ .global sbcgrgr
+sbcgrgr:
+ sbc r0,r0
+ sbc r15,r15
+ sbc r8,r8
+ sbc r7,r7
+ sbc r1,r1
+ sbc r11,r2
+ sbc r9,r1
+ sbc r4,r15
+ .text
+ .global sbcgrimm4
+sbcgrimm4:
+ sbc r0,#0
+ sbc r15,#15
+ sbc r8,#8
+ sbc r7,#7
+ sbc r1,#1
+ sbc r10,#11
+ sbc r11,#10
+ sbc r13,#10
+ .text
+ .global sbcgrimm8
+sbcgrimm8:
+ sbc Rx,#0
+ sbc Rx,#255
+ sbc Rx,#128
+ sbc Rx,#127
+ sbc Rx,#1
+ sbc Rx,#137
+ sbc Rx,#224
+ sbc Rx,#156
+ .text
+ .global sbcgrimm16
+sbcgrimm16:
+ sbc r0,#0
+ sbc r15,#65535
+ sbc r8,#32768
+ sbc r7,#32767
+ sbc r1,#1
+ sbc r0,#32507
+ sbc r7,#8610
+ sbc r14,#20373
+ .text
+ .global incgr
+incgr:
+ inc r0
+ inc r15
+ inc r8
+ inc r7
+ inc r1
+ inc r13
+ inc r1
+ inc r11
+ .text
+ .global incgrimm2
+incgrimm2:
+ inc r0,#0
+ inc r15,#3
+ inc r8,#2
+ inc r7,#1
+ inc r1,#1
+ inc r14,#1
+ inc r5,#0
+ inc r12,#3
+ .text
+ .global decgr
+decgr:
+ dec r0
+ dec r15
+ dec r8
+ dec r7
+ dec r1
+ dec r12
+ dec r8
+ dec r10
+ .text
+ .global decgrimm2
+decgrimm2:
+ dec r0,#0
+ dec r15,#3
+ dec r8,#2
+ dec r7,#1
+ dec r1,#1
+ dec r5,#0
+ dec r13,#0
+ dec r13,#2
+ .text
+ .global rrcgrgr
+rrcgrgr:
+ rrc r0,r0
+ rrc r15,r15
+ rrc r8,r8
+ rrc r7,r7
+ rrc r1,r1
+ rrc r8,r4
+ rrc r10,r14
+ rrc r15,r9
+ .text
+ .global rrcgrimm4
+rrcgrimm4:
+ rrc r0,#0
+ rrc r15,#15
+ rrc r8,#8
+ rrc r7,#7
+ rrc r1,#1
+ rrc r11,#3
+ rrc r14,#12
+ rrc r2,#15
+ .text
+ .global rlcgrgr
+rlcgrgr:
+ rlc r0,r0
+ rlc r15,r15
+ rlc r8,r8
+ rlc r7,r7
+ rlc r1,r1
+ rlc r15,r3
+ rlc r15,r7
+ rlc r15,r10
+ .text
+ .global rlcgrimm4
+rlcgrimm4:
+ rlc r0,#0
+ rlc r15,#15
+ rlc r8,#8
+ rlc r7,#7
+ rlc r1,#1
+ rlc r8,#2
+ rlc r2,#6
+ rlc r6,#10
+ .text
+ .global shrgrgr
+shrgrgr:
+ shr r0,r0
+ shr r15,r15
+ shr r8,r8
+ shr r7,r7
+ shr r1,r1
+ shr r13,r2
+ shr r7,r8
+ shr r6,r8
+ .text
+ .global shrgrimm
+shrgrimm:
+ shr r0,#0
+ shr r15,#15
+ shr r8,#8
+ shr r7,#7
+ shr r1,#1
+ shr r9,#13
+ shr r2,#7
+ shr r8,#8
+ .text
+ .global shlgrgr
+shlgrgr:
+ shl r0,r0
+ shl r15,r15
+ shl r8,r8
+ shl r7,r7
+ shl r1,r1
+ shl r2,r3
+ shl r0,r3
+ shl r2,r1
+ .text
+ .global shlgrimm
+shlgrimm:
+ shl r0,#0
+ shl r15,#15
+ shl r8,#8
+ shl r7,#7
+ shl r1,#1
+ shl r6,#13
+ shl r3,#6
+ shl r15,#15
+ .text
+ .global asrgrgr
+asrgrgr:
+ asr r0,r0
+ asr r15,r15
+ asr r8,r8
+ asr r7,r7
+ asr r1,r1
+ asr r5,r10
+ asr r3,r5
+ asr r6,r11
+ .text
+ .global asrgrimm
+asrgrimm:
+ asr r0,#0
+ asr r15,#15
+ asr r8,#8
+ asr r7,#7
+ asr r1,#1
+ asr r13,#4
+ asr r0,#13
+ asr r6,#3
+ .text
+ .global set1grimm
+set1grimm:
+ set1 r0,#0
+ set1 r15,#15
+ set1 r8,#8
+ set1 r7,#7
+ set1 r1,#1
+ set1 r6,#10
+ set1 r13,#1
+ set1 r13,#15
+ .text
+ .global set1grgr
+set1grgr:
+ set1 r0,r0
+ set1 r15,r15
+ set1 r8,r8
+ set1 r7,r7
+ set1 r1,r1
+ set1 r6,r0
+ set1 r6,r7
+ set1 r14,r2
+ .text
+ .global set1lmemimm
+set1lmemimm:
+ set1 0,#0
+ set1 255,#7
+ set1 128,#4
+ set1 127,#3
+ set1 1,#1
+ set1 244,#3
+ set1 55,#7
+ set1 252,#5
+ .text
+ .global set1hmemimm
+set1hmemimm:
+ set1 0x7f00+0,#0
+ set1 0x7f00+255,#7
+ set1 0x7f00+128,#4
+ set1 0x7f00+127,#3
+ set1 0x7f00+1,#1
+ set1 0x7f00+10,#3
+ set1 0x7f00+99,#4
+ set1 0x7f00+148,#3
+ .text
+ .global clr1grimm
+clr1grimm:
+ clr1 r0,#0
+ clr1 r15,#15
+ clr1 r8,#8
+ clr1 r7,#7
+ clr1 r1,#1
+ clr1 r12,#0
+ clr1 r8,#11
+ clr1 r7,#7
+ .text
+ .global clr1grgr
+clr1grgr:
+ clr1 r0,r0
+ clr1 r15,r15
+ clr1 r8,r8
+ clr1 r7,r7
+ clr1 r1,r1
+ clr1 r3,r3
+ clr1 r0,r1
+ clr1 r15,r0
+ .text
+ .global clr1lmemimm
+clr1lmemimm:
+ clr1 0,#0
+ clr1 255,#7
+ clr1 128,#4
+ clr1 127,#3
+ clr1 1,#1
+ clr1 114,#7
+ clr1 229,#4
+ clr1 86,#1
+ .text
+ .global clr1hmemimm
+clr1hmemimm:
+ clr1 0x7f00+0,#0
+ clr1 0x7f00+255,#7
+ clr1 0x7f00+128,#4
+ clr1 0x7f00+127,#3
+ clr1 0x7f00+1,#1
+ clr1 0x7f00+44,#3
+ clr1 0x7f00+212,#5
+ clr1 0x7f00+67,#7
+ .text
+ .global cbwgr
+cbwgr:
+ cbw r0
+ cbw r15
+ cbw r8
+ cbw r7
+ cbw r1
+ cbw r8
+ cbw r11
+ cbw r3
+ .text
+ .global revgr
+revgr:
+ rev r0
+ rev r15
+ rev r8
+ rev r7
+ rev r1
+ rev r1
+ rev r1
+ rev r14
+ .text
+ .global bgr
+bgr:
+ br r0
+ br r15
+ br r8
+ br r7
+ br r1
+ br r0
+ br r15
+ br r12
+ .text
+ .global jmp
+jmp:
+ jmp r0,r0
+ jmp r1,r15
+ jmp r1,r8
+ jmp r0,r7
+ jmp r1,r1
+ jmp r1,r7
+ jmp r1,r5
+ jmp r0,r12
+ .text
+ .global jmpf
+jmpf:
+ jmpf 0
+ jmpf 16777215
+ jmpf 8388608
+ jmpf 8388607
+ jmpf 1
+ jmpf 10731629
+ jmpf 15094866
+ jmpf 1464024
+ .text
+ .global callrgr
+callrgr:
+ callr r0
+ callr r15
+ callr r8
+ callr r7
+ callr r1
+ callr r1
+ callr r12
+ callr r8
+ .text
+ .global callgr
+callgr:
+ call r0,r0
+ call r1,r15
+ call r1,r8
+ call r0,r7
+ call r1,r1
+ call r1,r6
+ call r1,r14
+ call r0,r12
+ .text
+ .global callfimm
+callfimm:
+ callf 0
+ callf 16777215
+ callf 8388608
+ callf 8388607
+ callf 1
+ callf 13546070
+ callf 10837983
+ callf 15197875
+ .text
+ .global icallrgr
+icallrgr:
+ icallr r0
+ icallr r15
+ icallr r8
+ icallr r7
+ icallr r1
+ icallr r15
+ icallr r12
+ icallr r9
+ .text
+ .global icallgr
+icallgr:
+ icall r0,r0
+ icall r1,r15
+ icall r1,r8
+ icall r0,r7
+ icall r1,r1
+ icall r1,r10
+ icall r0,r15
+ icall r0,r10
+ .text
+ .global icallfimm
+icallfimm:
+ icallf 0
+ icallf 16777215
+ icallf 8388608
+ icallf 8388607
+ icallf 1
+ icallf 9649954
+ icallf 1979758
+ icallf 7661640
+ .text
+ .global iret
+iret:
+ iret
+ .text
+ .global ret
+ret:
+ ret
+ .text
+ .global mul
+mul:
+ mul
+ .text
+ .global div
+div:
+ div
+ .text
+ .global nop
+nop:
+ nop
+ ret
+ .text
+ .global halt
+halt:
+ halt
+ .text
+ .global hold
+hold:
+ hold
+ .text
+ .global brk
+brk:
+ brk
+ .text
+ .global bccgrgr
+bccgrgr:
+ bge r0,r0,0+(.+4)
+ bz r15,r15,-1+(.+4)
+ bpl r8,r8,-2048+(.+4)
+ bls r7,r7,2047+(.+4)
+ bnc r1,r1,1+(.+4)
+ bc r3,r13,1799+(.+4)
+ bge r1,r10,-2019+(.+4)
+ bz r0,r5,-1132+(.+4)
+ .text
+ .global bccgrimm8
+bccgrimm8:
+ bge r0,#0,0+(.+4)
+ bz r7,#255,-1+(.+4)
+ bpl r4,#128,-2048+(.+4)
+ bls r3,#127,2047+(.+4)
+ bnc r1,#1,1+(.+4)
+ bnc r3,#8,1473+(.+4)
+ bnz.b r5,#203,1619+(.+4)
+ bc r7,#225,978+(.+4)
+ .text
+ .global bccimm16
+bccimm16:
+ bge Rx,#0,0+(.+4)
+ bz Rx,#65535,-1+(.+4)
+ bpl Rx,#32768,-128+(.+4)
+ bls Rx,#32767,127+(.+4)
+ bnc Rx,#1,1+(.+4)
+ bz.b Rx,#30715,4+(.+4)
+ bnv Rx,#62266,-13+(.+4)
+ bnv Rx,#48178,108+(.+4)
+ .text
+ .global bngrimm4
+bngrimm4:
+ bn r0,#0,0+(.+4)
+ bn r15,#15,-1+(.+4)
+ bn r8,#8,-2048+(.+4)
+ bn r7,#7,2047+(.+4)
+ bn r1,#1,1+(.+4)
+ bn r11,#3,-1975+(.+4)
+ bn r15,#4,-1205+(.+4)
+ bn r10,#8,1691+(.+4)
+ .text
+ .global bngrgr
+bngrgr:
+ bn r0,r0,0+(.+4)
+ bn r15,r15,-1+(.+4)
+ bn r8,r8,-2048+(.+4)
+ bn r7,r7,2047+(.+4)
+ bn r1,r1,1+(.+4)
+ bn r4,r3,1181+(.+4)
+ bn r5,r2,77+(.+4)
+ bn r3,r7,631+(.+4)
+ .text
+ .global bnlmemimm
+bnlmemimm:
+ bn 0,#0,0+(.+4)
+ bn 255,#7,-1+(.+4)
+ bn 128,#4,-2048+(.+4)
+ bn 127,#3,2047+(.+4)
+ bn 1,#1,1+(.+4)
+ bn 153,#7,-847+(.+4)
+ bn 204,#0,-1881+(.+4)
+ bn 242,#7,1396+(.+4)
+ .text
+ .global bnhmemimm
+bnhmemimm:
+ bn 0x7f00+0,#0,0+(.+4)
+ bn 0x7f00+255,#7,-1+(.+4)
+ bn 0x7f00+128,#4,-2048+(.+4)
+ bn 0x7f00+127,#3,2047+(.+4)
+ bn 0x7f00+1,#1,1+(.+4)
+ bn 0x7f00+185,#3,-614+(.+4)
+ bn 0x7f00+105,#1,-668+(.+4)
+ bn 0x7f00+79,#7,1312+(.+4)
+ .text
+ .global bpgrimm4
+bpgrimm4:
+ bp r0,#0,0+(.+4)
+ bp r15,#15,-1+(.+4)
+ bp r8,#8,-2048+(.+4)
+ bp r7,#7,2047+(.+4)
+ bp r1,#1,1+(.+4)
+ bp r0,#12,1075+(.+4)
+ bp r1,#5,551+(.+4)
+ bp r6,#8,1588+(.+4)
+ .text
+ .global bpgrgr
+bpgrgr:
+ bp r0,r0,0+(.+4)
+ bp r15,r15,-1+(.+4)
+ bp r8,r8,-2048+(.+4)
+ bp r7,r7,2047+(.+4)
+ bp r1,r1,1+(.+4)
+ bp r4,r9,-614+(.+4)
+ bp r9,r10,-1360+(.+4)
+ bp r4,r1,407+(.+4)
+ .text
+ .global bplmemimm
+bplmemimm:
+ bp 0,#0,0+(.+4)
+ bp 255,#7,-1+(.+4)
+ bp 128,#4,-2048+(.+4)
+ bp 127,#3,2047+(.+4)
+ bp 1,#1,1+(.+4)
+ bp 193,#3,-398+(.+4)
+ bp 250,#2,-1553+(.+4)
+ bp 180,#6,579+(.+4)
+ .text
+ .global bphmemimm
+bphmemimm:
+ bp 0x7f00+0,#0,0+(.+4)
+ bp 0x7f00+255,#7,-1+(.+4)
+ bp 0x7f00+128,#4,-2048+(.+4)
+ bp 0x7f00+127,#3,2047+(.+4)
+ bp 0x7f00+1,#1,1+(.+4)
+ bp 0x7f00+195,#1,-432+(.+4)
+ bp 0x7f00+129,#5,-1508+(.+4)
+ bp 0x7f00+56,#3,1723+(.+4)
+ .text
+ .global bcc
+bcc:
+ bge 0+(.+2)
+ bz -1+(.+2)
+ bpl -128+(.+2)
+ bls 127+(.+2)
+ bnc 1+(.+2)
+ bnz.b 48+(.+2)
+ bnc -7+(.+2)
+ bnz.b 74+(.+2)
+ .text
+ .global br
+br:
+ br 0+(.+2)
+ br -2+(.+2)
+ br -2048+(.+2)
+ br 2046+(.+2)
+ br 1+(.+2)
+ br 1472+(.+2)
+ br 1618+(.+2)
+ br 978+(.+2)
+ .text
+ .global callrimm
+callrimm:
+ callr 0+(.+2)
+ callr -2+(.+2)
+ callr -2048+(.+2)
+ callr 2046+(.+2)
+ callr 1+(.+2)
+ callr 1472+(.+2)
+ callr 1618+(.+2)
+ callr 978+(.+2)
+EOF
+
+# Finally, generate the .d file.
+gentest allinsn
Index: gas/testsuite/gas/xstormy16/gcc.d
===================================================================
RCS file: gcc.d
diff -N gcc.d
--- gas/testsuite/gas/xstormy16/gcc.d Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/gcc.d Fri Dec 7 14:26:56 2001
@@ -0,0 +1,15 @@
+#as:
+#objdump: -dr
+#name: gcc
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: 30 31 ff ff mov r0,#0xffff
+ 4: 30 31 ff ff mov r0,#0xffff
+ 8: 40 31 00 00 add r0,#0x0
+ a: R_XSTORMY16_16 some_external_symbol
+ c: 30 31 00 00 mov r0,#0x0
+ e: R_XSTORMY16_16 some_external_symbol
Index: gas/testsuite/gas/xstormy16/gcc.s
===================================================================
RCS file: gcc.s
diff -N gcc.s
--- gas/testsuite/gas/xstormy16/gcc.s Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/gcc.s Fri Dec 7 14:26:56 2001
@@ -0,0 +1,4 @@
+ mov.w r0,#-1
+ mov.w r0,#0xFFFF
+ add r0,#some_external_symbol
+ mov.w r0,#some_external_symbol
Index: gas/testsuite/gas/xstormy16/gcc.sh
===================================================================
RCS file: gcc.sh
diff -N gcc.sh
--- gas/testsuite/gas/xstormy16/gcc.sh Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/gcc.sh Fri Dec 7 14:26:56 2001
@@ -0,0 +1,45 @@
+#/bin/sh
+# Generate test result data for xstormy16 GAS testing.
+# It is intended to be run in the testsuite source directory.
+#
+# Syntax: build.sh /path/to/build/gas
+
+if [ $# = 0 ] ; then
+ if [ ! -x ../gas/as-new ] ; then
+ echo "Usage: $0 [/path/to/gas/build]"
+ else
+ BUILD=`pwd`/../gas
+ fi
+else
+ BUILD=$1
+fi
+
+if [ ! -x $BUILD/as-new ] ; then
+ echo "$BUILD is not a gas build directory"
+ exit 1
+fi
+
+# Put results here, so we preserve the existing set for comparison.
+rm -rf tmpdir
+mkdir tmpdir
+cd tmpdir
+
+function gentest {
+ rm -f a.out
+ $BUILD/as-new ${1}.s -o a.out
+ echo "#as:" >${1}.d
+ echo "#objdump: -dr" >>${1}.d
+ echo "#name: $1" >>${1}.d
+ $BUILD/../binutils/objdump -dr a.out | sed -e 's/(/\\(/g' -e 's/)/\\)/g' -e 's/\$/\\$/g' -e 's/\[/\\\[/g' -e 's/\]/\\\]/g' -e 's/[+]/\\+/g' -e 's/[.]/\\./g' -e 's/[*]/\\*/g' | sed -e 's/^.*file format.*$/.*: +file format .*/' >>${1}.d
+ rm -f a.out
+}
+
+# Now come all the testcases.
+cat > gcc.s <<EOF
+ mov.w r0,#-1
+ mov.w r0,#0xFFFF
+ add r0,#some_external_symbol
+EOF
+
+# Finally, generate the .d file.
+gentest gcc
Index: gas/testsuite/gas/xstormy16/reloc-1.d
===================================================================
RCS file: reloc-1.d
diff -N reloc-1.d
--- gas/testsuite/gas/xstormy16/reloc-1.d Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/reloc-1.d Fri Dec 7 14:26:56 2001
@@ -0,0 +1,26 @@
+#as:
+#objdump: -rs
+#name: reloc-1
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0*000 R_XSTORMY16_16 global
+0*002 R_XSTORMY16_16 global\+0x00000003
+0*004 R_XSTORMY16_PC16 global\+0xfffffffc
+0*006 R_XSTORMY16_32 global
+0*00a R_XSTORMY16_32 global\+0x00000003
+0*00e R_XSTORMY16_PC32 global\+0xfffffff2
+0*012 R_XSTORMY16_8 global
+0*013 R_XSTORMY16_8 global\+0xffff8100
+0*014 R_XSTORMY16_8 global\+0x00000003
+0*015 R_XSTORMY16_PC8 global\+0xffffffeb
+0*016 R_XSTORMY16_16 dglobal
+0*018 R_XSTORMY16_16 dwglobal
+
+
+Contents of section \.text:
+ 0000 00000000 00000000 00000000 00000000 \................
+ 0010 00000000 00000000 0000 \..........
+Contents of section \.data:
Index: gas/testsuite/gas/xstormy16/reloc-1.s
===================================================================
RCS file: reloc-1.s
diff -N reloc-1.s
--- gas/testsuite/gas/xstormy16/reloc-1.s Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/reloc-1.s Fri Dec 7 14:26:56 2001
@@ -0,0 +1,20 @@
+ .text
+ .hword global
+ .hword global+3
+ .hword global-.
+ .word global
+ .word global+3
+ .word global-.
+ .byte global
+ .byte global-0x7F00
+ .byte global+3
+ .byte global-.
+dglobal:
+dwglobal:
+ .globl dglobal
+ .globl dwglobal
+ .weak dwglobal
+ .hword dglobal
+ .hword dwglobal
+
+
\ No newline at end of file
Index: gas/testsuite/gas/xstormy16/reloc-2.d
===================================================================
RCS file: reloc-2.d
diff -N reloc-2.d
--- gas/testsuite/gas/xstormy16/reloc-2.d Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/reloc-2.d Fri Dec 7 14:26:56 2001
@@ -0,0 +1,56 @@
+#as:
+#objdump: -dr
+#name: reloc-2
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: 10 30 inc r0,#0x1
+ 2: 00 e3 set1 0x0,#0x1
+ 4: 00 7c fc 1f bn 0x0,#0x1,0x4
+ 8: 40 31 01 00 add r0,#0x1
+ c: 08 71 01 00 mov\.w r0,\(r0,1\)
+ 10: 01 79 00 00 mov\.w 0x1,#0x0
+ 14: 01 47 mov Rx,#0x1
+ 16: 00 79 01 00 mov\.w 0x0,#0x1
+ 1a: 01 02 00 00 jmpf 0x1
+ 1e: ff d0 bge 0x1f
+ 20: fd c0 00 00 bge Rx,#0x0,0x21
+ 24: 00 0d fd 0f bge r0,r0,0x25
+ 28: fe 1f br 0x28
+ 2a: 00 79 00 00 mov\.w 0x0,#0x0
+ 2a: R_XSTORMY16_8 global
+ 2e: 00 47 mov Rx,#0x0
+ 2e: R_XSTORMY16_8 global
+ 30: 00 79 00 00 mov\.w 0x0,#0x0
+ 32: R_XSTORMY16_16 global
+ 34: fe d0 bge 0x34
+ 34: R_XSTORMY16_PC8 global
+ 36: fc c0 00 00 bge Rx,#0x0,0x36
+ 36: R_XSTORMY16_PC8 global
+ 3a: 00 0d fc 0f bge r0,r0,0x3a
+ 3c: R_XSTORMY16_REL_12 global
+ 3e: fe 1f br 0x3e
+ 3e: R_XSTORMY16_REL_12 global
+ 40: 0a d0 bge 0x4c
+ 42: 06 c0 00 00 bge Rx,#0x0,0x4c
+ 46: 00 0d 02 00 bge r0,r0,0x4c
+ 4a: 00 10 br 0x4c
+ 4c: fe d0 bge 0x4c
+ 4e: fa c0 00 00 bge Rx,#0x0,0x4c
+ 52: 00 0d f6 0f bge r0,r0,0x4c
+ 56: f4 1f br 0x4c
+ 58: 00 79 00 00 mov\.w 0x0,#0x0
+ 5a: R_XSTORMY16_16 global\+0x4
+ 5c: 00 79 00 00 mov\.w 0x0,#0x0
+ 5e: R_XSTORMY16_16 \.text\+0x4c
+ 60: 00 79 00 00 mov\.w 0x0,#0x0
+ 62: R_XSTORMY16_16 \.text\+0x50
+ 64: 00 79 00 00 mov\.w 0x0,#0x0
+ 66: R_XSTORMY16_PC16 global\+0xffffff9c
+ 68: 00 79 00 00 mov\.w 0x0,#0x0
+ 6a: R_XSTORMY16_PC16 global\+0xffffffb4
+ 6c: 00 02 00 00 jmpf 0x0
+ 6c: R_XSTORMY16_24 global
Index: gas/testsuite/gas/xstormy16/reloc-2.s
===================================================================
RCS file: reloc-2.s
diff -N reloc-2.s
--- gas/testsuite/gas/xstormy16/reloc-2.s Tue May 5 13:32:27 1998
+++ gas/testsuite/gas/xstormy16/reloc-2.s Fri Dec 7 14:26:56 2001
@@ -0,0 +1,48 @@
+ .text
+; check that forward references work for all operands.
+ inc r0,#fwd1
+ set1 0,#fwd1
+ bn 0,#fwd1,.
+ add r0,#fwd1
+ mov r0,(r0,fwd1)
+ mov fwd1,#0
+ mov rx,#fwd1
+ mov 0,#fwd1
+ jmpf fwd1
+ bge fwd1+.
+ bge Rx,#0,fwd1+.
+ bge r0,r0,fwd1+.
+ br fwd1+.
+fwd1 = 1
+
+; check that global references work for those operands that support them
+ .globl global
+
+ mov global,#0
+ mov rx,#global
+ mov 0,#global
+; jmpf global
+ bge global
+ bge Rx,#0,global
+ bge r0,r0,global
+ br global
+
+; check branch operations to local labels
+ bge .L1
+ bge Rx,#0,.L1
+ bge r0,r0,.L1
+ br .L1
+.L1:
+ bge .L1
+ bge Rx,#0,.L1
+ bge r0,r0,.L1
+ br .L1
+
+; check immediate operands thoroughly
+ mov 0,#global+4
+ mov 0,#.L1
+ mov 0,#.L1+4
+ mov 0,#global-.
+ mov 0,#global-.L1
+
+ jmpf global
Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.77
diff -p -u -p -r1.77 Makefile.am
--- ld/Makefile.am 2001/12/05 21:46:39 1.77
+++ ld/Makefile.am 2001/12/07 22:26:57
@@ -160,6 +160,7 @@ ALL_EMULATIONS = \
eelf32ppc.o \
eelf32ppclinux.o \
eelf32ppcsim.o \
+ eelf32xstormy16.o \
eelf_i386.o \
eelf_i386_be.o \
eelf_i386_chaos.o \
@@ -436,6 +437,10 @@ edelta68.c: $(srcdir)/emulparams/delta68
eebmon29k.c: $(srcdir)/emulparams/ebmon29k.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/ebmon29k.sc ${GEN_DEPENDS}
${GENSCRIPTS} ebmon29k "$(tdir_ebmon29k)"
+eelf32xstormy16.c: $(srcdir)/emulparams/elf32xstormy16.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32xstormy16 "$(tdir_xstormy16)"
eelf32fr30.c: $(srcdir)/emulparams/elf32fr30.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32fr30 "$(tdir_fr30)"
Index: ld/configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.69
diff -p -u -p -r1.69 configure.tgt
--- ld/configure.tgt 2001/12/03 23:15:26 1.69
+++ ld/configure.tgt 2001/12/07 22:26:58
@@ -388,6 +388,7 @@ v850-*-*) targ_emul=v850 ;;
v850e-*-*) targ_emul=v850 ;;
v850ea-*-*) targ_emul=v850 ;;
w65-*-*) targ_emul=w65 ;;
+xstormy16-*-*) targ_emul=elf32xstormy16 ;;
fr30-*-*) targ_emul=elf32fr30 ;;
mcore-*-pe) targ_emul=mcorepe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
Index: ld/emulparams/elf32xstormy16.sh
===================================================================
RCS file: elf32xstormy16.sh
diff -N elf32xstormy16.sh
--- ld/emulparams/elf32xstormy16.sh Tue May 5 13:32:27 1998
+++ ld/emulparams/elf32xstormy16.sh Fri Dec 7 14:26:58 2001
@@ -0,0 +1,13 @@
+MACHINE=
+SCRIPT_NAME=xstormy16
+TEMPLATE_NAME=elf32
+EXTRA_EM_FILE=needrelax
+OUTPUT_FORMAT="elf32-xstormy16"
+# See also `include/elf/xstormy16.h'
+ARCH=xstormy16
+ALIGNMENT=2
+ENTRY=_start
+EMBEDDED=yes
+NOP=0
+
+
Index: ld/scripttempl/xstormy16.sc
===================================================================
RCS file: xstormy16.sc
diff -N xstormy16.sc
--- ld/scripttempl/xstormy16.sc Tue May 5 13:32:27 1998
+++ ld/scripttempl/xstormy16.sc Fri Dec 7 14:26:58 2001
@@ -0,0 +1,238 @@
+#
+# Unusual variables checked by this code:
+# NOP - two byte opcode for no-op (defaults to 0)
+# INITIAL_READONLY_SECTIONS - at start of text segment
+# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
+# (e.g., .PARISC.milli)
+# OTHER_TEXT_SECTIONS - these get put in .text when relocating
+# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
+# (e.g., .PARISC.global)
+# OTHER_BSS_SECTIONS - other than .bss .sbss ...
+# OTHER_SECTIONS - at the end
+# EXECUTABLE_SYMBOLS - symbols that must be defined for an
+# executable (e.g., _DYNAMIC_LINK)
+# TEXT_START_SYMBOLS - symbols that appear at the start of the
+# .text section.
+# DATA_START_SYMBOLS - symbols that appear at the start of the
+# .data section.
+# OTHER_GOT_SYMBOLS - symbols defined just before .got.
+# OTHER_GOT_SECTIONS - sections just after .got and .sdata.
+# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
+# .bss section besides __bss_start.
+# INPUT_FILES - INPUT command of files to always include
+# INIT_START, INIT_END - statements just before and just after
+# combination of .init sections.
+# FINI_START, FINI_END - statements just before and just after
+# combination of .fini sections.
+#
+# When adding sections, do note that the names of some sections are used
+# when specifying the start address of the next.
+#
+
+# Many sections come in three flavours. There is the 'real' section,
+# like ".data". Then there are the per-procedure or per-variable
+# sections, generated by -ffunction-sections and -fdata-sections in GCC,
+# and useful for --gc-sections, which for a variable "foo" might be
+# ".data.foo". Then there are the linkonce sections, for which the linker
+# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
+# The exact correspondences are:
+#
+# Section Linkonce section
+# .text .gnu.linkonce.t.foo
+# .rodata .gnu.linkonce.r.foo
+# .data .gnu.linkonce.d.foo
+# .bss .gnu.linkonce.b.foo
+# .sdata .gnu.linkonce.s.foo
+# .sbss .gnu.linkonce.sb.foo
+# .sdata2 .gnu.linkonce.s2.foo
+# .sbss2 .gnu.linkonce.sb2.foo
+#
+# Each of these can also have corresponding .rel.* and .rela.* sections.
+
+test -z "$ENTRY" && ENTRY=_start
+test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
+test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
+if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
+test -z "${ELFSIZE}" && ELFSIZE=32
+test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
+CTOR=".ctors ${CONSTRUCTING-0} :
+ {
+ ${CONSTRUCTING+${CTOR_START}}
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ ${CONSTRUCTING+${CTOR_END}}
+ } > ROM"
+
+DTOR=" .dtors ${CONSTRUCTING-0} :
+ {
+ ${CONSTRUCTING+${DTOR_START}}
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ ${CONSTRUCTING+${DTOR_END}}
+ } > ROM"
+
+cat <<EOF
+OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
+ "${LITTLE_OUTPUT_FORMAT}")
+OUTPUT_ARCH(${OUTPUT_ARCH})
+ENTRY(${ENTRY})
+
+${RELOCATING+${LIB_SEARCH_DIRS}}
+${RELOCATING+${EXECUTABLE_SYMBOLS}}
+${RELOCATING+${INPUT_FILES}}
+${RELOCATING- /* For some reason, the Solaris linker makes bad executables
+ if gld -r is used and the intermediate file has sections starting
+ at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
+ bug. But for now assigning the zero vmas works. */}
+
+/* There are two memory regions we care about, one from 0 through 0x7F00
+ that is RAM and one from 0x8000 up which is ROM. */
+MEMORY
+{
+ RAM (w) : ORIGIN = 0, LENGTH = 0x7F00
+ ROM (!w) : ORIGIN = 0x8000, LENGTH = 0xFF8000
+}
+
+SECTIONS
+{
+ .data ${RELOCATING-0} :
+ {
+ ${RELOCATING+${DATA_START_SYMBOLS}}
+ *(.data)
+ ${RELOCATING+*(.data.*)}
+ ${RELOCATING+*(.gnu.linkonce.d.*)}
+ ${CONSTRUCTING+SORT(CONSTRUCTORS)}
+ } > RAM
+ ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
+ ${RELOCATING+${OTHER_GOT_SYMBOLS}}
+ ${RELOCATING+${OTHER_GOT_SECTIONS}}
+ ${RELOCATING+_edata = .;}
+ ${RELOCATING+PROVIDE (edata = .);}
+ ${RELOCATING+__bss_start = .;}
+ ${RELOCATING+${OTHER_BSS_SYMBOLS}}
+ .bss ${RELOCATING-0} :
+ {
+ *(.dynbss)
+ *(.bss)
+ ${RELOCATING+*(.bss.*)}
+ ${RELOCATING+*(.gnu.linkonce.b.*)}
+ *(COMMON)
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ ${RELOCATING+. = ALIGN(${ALIGNMENT});}
+ } > RAM
+ ${RELOCATING+${OTHER_BSS_SECTIONS}}
+ ${RELOCATING+. = ALIGN(${ALIGNMENT});}
+ ${RELOCATING+__stack = .;}
+ ${RELOCATING+. = . + 4096;}
+ ${RELOCATING+_end = .;}
+ ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
+ ${RELOCATING+PROVIDE (end = .);}
+
+ /* Read-only sections in ROM. */
+ .int_vec ${RELOCATING-0} : { *(.int_vec) } > ROM
+
+ .rodata ${RELOCATING-0} : { *(.rodata) ${RELOCATING+*(.rodata.*)} ${RELOCATING+*(.gnu.linkonce.r.*)} } > ROM
+ ${RELOCATING+${CTOR}}
+ ${RELOCATING+${DTOR}}
+ .eh_frame : { KEEP (*(.eh_frame)) } > ROM
+ .gcc_except_table : { *(.gcc_except_table) } > ROM
+ .plt : { *(.plt) } > ROM
+
+ .text ${RELOCATING-0} :
+ {
+ ${RELOCATING+${TEXT_START_SYMBOLS}}
+ *(.text)
+ ${RELOCATING+*(.text.*)}
+ *(.stub)
+ /* .gnu.warning sections are handled specially by elf32.em. */
+ *(.gnu.warning)
+ ${RELOCATING+*(.gnu.linkonce.t.*)}
+ ${RELOCATING+${OTHER_TEXT_SECTIONS}}
+ } > ROM =${NOP-0}
+ .init ${RELOCATING-0} :
+ {
+ ${RELOCATING+${INIT_START}}
+ KEEP (*(.init))
+ ${RELOCATING+${INIT_END}}
+ } > ROM =${NOP-0}
+ .fini ${RELOCATING-0} :
+ {
+ ${RELOCATING+${FINI_START}}
+ KEEP (*(.fini))
+ ${RELOCATING+${FINI_END}}
+ } > ROM =${NOP-0}
+ ${RELOCATING+PROVIDE (__etext = .);}
+ ${RELOCATING+PROVIDE (_etext = .);}
+ ${RELOCATING+PROVIDE (etext = .);}
+ ${RELOCATING+${OTHER_READONLY_SECTIONS}}
+
+
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+
+ .comment 0 : { *(.comment) }
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ ${RELOCATING+${OTHER_RELOCATING_SECTIONS}}
+
+ /* These must appear regardless of ${RELOCATING}. */
+ ${OTHER_SECTIONS}
+}
+EOF
Index: opcodes/Makefile.am
===================================================================
RCS file: /cvs/src/src/opcodes/Makefile.am,v
retrieving revision 1.37
diff -p -u -p -r1.37 Makefile.am
--- opcodes/Makefile.am 2001/10/30 15:20:14 1.37
+++ opcodes/Makefile.am 2001/12/07 22:26:59
@@ -32,6 +32,7 @@ HFILES = \
ia64-asmtab.h \
ia64-opc.h \
w65-opc.h \
+ xstormy16-desc.h xstormy16-opc.h \
z8k-opc.h
# C source files that correspond to .o's.
@@ -126,6 +127,11 @@ CFILES = \
v850-opc.c \
vax-dis.c \
w65-dis.c \
+ xstormy16-asm.c \
+ xstormy16-desc.c \
+ xstormy16-dis.c \
+ xstormy16-ibld.c \
+ xstormy16-opc.c \
z8k-dis.c \
z8kgen.c
@@ -209,6 +215,11 @@ ALL_MACHINES = \
v850-opc.lo \
vax-dis.lo \
w65-dis.lo \
+ xstormy16-asm.lo \
+ xstormy16-desc.lo \
+ xstormy16-dis.lo \
+ xstormy16-ibld.lo \
+ xstormy16-opc.lo \
z8k-dis.lo
OFILES = @BFD_MACHINES@
@@ -253,6 +264,7 @@ config.status: $(srcdir)/configure $(src
CLEANFILES = \
stamp-m32r stamp-fr30 stamp-openrisc \
+ stamp-xstormy16 \
libopcodes.a stamp-lib dep.sed DEP DEPA DEP1 DEP2
@@ -272,10 +284,12 @@ if CGEN_MAINT
M32R_DEPS = stamp-m32r
FR30_DEPS = stamp-fr30
OPENRISC_DEPS = stamp-openrisc
+XSTORMY16_DEPS = stamp-xstormy16
else
M32R_DEPS =
FR30_DEPS =
OPENRISC_DEPS =
+XSTORMY16_DEPS =
endif
run-cgen:
@@ -300,6 +314,11 @@ $(srcdir)/openrisc-desc.h $(srcdir)/open
@true
stamp-openrisc: $(CGENDEPS) $(CPUDIR)/openrisc.cpu $(CPUDIR)/openrisc.opc
$(MAKE) run-cgen arch=openrisc prefix=openrisc options= extrafiles=
+
+$(srcdir)/xstormy16-desc.h $(srcdir)/xstormy16-desc.c $(srcdir)/xstormy16-opc.h $(srcdir)/xstormy16-opc.c $(srcdir)/xstormy16-ibld.c $(srcdir)/xstormy16-asm.c $(srcdir)/xstormy16-dis.c: $(XSTORMY16_DEPS)
+ @true
+stamp-xstormy16: $(CGENDEPS) $(CPUDIR)/xstormy16.cpu $(CPUDIR)/xstormy16.opc
+ $(MAKE) run-cgen arch=xstormy16 prefix=xstormy16 options= extrafiles=
ia64-gen: ia64-gen.o
$(LINK) ia64-gen.o $(LIBIBERTY)
Index: opcodes/configure.in
===================================================================
RCS file: /cvs/src/src/opcodes/configure.in,v
retrieving revision 1.25
diff -p -u -p -r1.25 configure.in
--- opcodes/configure.in 2001/11/02 19:07:57 1.25
+++ opcodes/configure.in 2001/12/07 22:27:00
@@ -220,6 +220,7 @@ if test x${all_targets} = xfalse ; then
bfd_vax_arch) ta="$ta vax-dis.lo" ;;
bfd_w65_arch) ta="$ta w65-dis.lo" ;;
bfd_we32k_arch) ;;
+ bfd_xstormy16_arch) ta="$ta xstormy16-asm.lo xstormy16-desc.lo xstormy16-dis.lo xstormy16-ibld.lo xstormy16-opc.lo" using_cgen=yes ;;
bfd_z8k_arch) ta="$ta z8k-dis.lo" ;;
"") ;;
Index: opcodes/disassemble.c
===================================================================
RCS file: /cvs/src/src/opcodes/disassemble.c,v
retrieving revision 1.29
diff -p -u -p -r1.29 disassemble.c
--- opcodes/disassemble.c 2001/11/14 03:15:28 1.29
+++ opcodes/disassemble.c 2001/12/07 22:27:00
@@ -62,6 +62,7 @@ Foundation, Inc., 59 Temple Place - Suit
#define ARCH_v850
#define ARCH_vax
#define ARCH_w65
+#define ARCH_xstormy16
#define ARCH_z8k
#endif
@@ -301,6 +302,11 @@ disassembler (abfd)
#ifdef ARCH_w65
case bfd_arch_w65:
disassemble = print_insn_w65;
+ break;
+#endif
+#ifdef ARCH_xstormy16
+ case bfd_arch_xstormy16:
+ disassemble = print_insn_xstormy16;
break;
#endif
#ifdef ARCH_z8k
============================================================