summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog27
-rw-r--r--bfd/Makefile.am4
-rw-r--r--bfd/Makefile.in6
-rw-r--r--bfd/archures.c5
-rw-r--r--bfd/bfd-in2.h24
-rw-r--r--bfd/config.bfd4
-rwxr-xr-xbfd/configure1
-rw-r--r--bfd/configure.in1
-rw-r--r--bfd/cpu-epiphany.c56
-rw-r--r--bfd/elf32-epiphany.c608
-rw-r--r--bfd/libbfd.h7
-rw-r--r--bfd/po/SRC-POTFILES.in3
-rw-r--r--bfd/po/bfd.pot2157
-rw-r--r--bfd/reloc.c29
-rw-r--r--bfd/targets.c2
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/po/binutils.pot1310
-rw-r--r--binutils/readelf.c14
-rw-r--r--cpu/ChangeLog5
-rw-r--r--cpu/epiphany.cpu2935
-rwxr-xr-xcpu/epiphany.opc416
-rw-r--r--gas/ChangeLog19
-rw-r--r--gas/Makefile.am2
-rw-r--r--gas/Makefile.in17
-rw-r--r--gas/NEWS2
-rwxr-xr-xgas/config/tc-epiphany.c1110
-rwxr-xr-xgas/config/tc-epiphany.h102
-rwxr-xr-xgas/configure2
-rw-r--r--gas/configure.in2
-rw-r--r--gas/configure.tgt3
-rw-r--r--gas/doc/Makefile.am3
-rw-r--r--gas/doc/Makefile.in3
-rw-r--r--gas/doc/all.texi1
-rw-r--r--gas/doc/as.texinfo28
-rw-r--r--gas/doc/c-epiphany.texi67
-rw-r--r--gas/po/POTFILES.in2
-rw-r--r--gas/po/gas.pot3030
-rw-r--r--gas/testsuite/ChangeLog18
-rw-r--r--gas/testsuite/gas/epiphany/addr-syntax.d15
-rw-r--r--gas/testsuite/gas/epiphany/addr-syntax.s9
-rw-r--r--gas/testsuite/gas/epiphany/allinsn.d1400
-rw-r--r--gas/testsuite/gas/epiphany/allinsn.exp11
-rw-r--r--gas/testsuite/gas/epiphany/allinsn.s1563
-rw-r--r--gas/testsuite/gas/epiphany/badpostmod.s14
-rw-r--r--gas/testsuite/gas/epiphany/badrelax.d12
-rw-r--r--gas/testsuite/gas/epiphany/badrelax.s5
-rw-r--r--gas/testsuite/gas/epiphany/branch_lit.d11
-rw-r--r--gas/testsuite/gas/epiphany/branch_lit.s1
-rw-r--r--gas/testsuite/gas/epiphany/regression.d300
-rw-r--r--gas/testsuite/gas/epiphany/regression.s240
-rw-r--r--gas/testsuite/gas/epiphany/sample.d221
-rwxr-xr-xgas/testsuite/gas/epiphany/sample.s123
-rw-r--r--include/ChangeLog4
-rw-r--r--include/dis-asm.h1
-rw-r--r--include/elf/ChangeLog5
-rw-r--r--include/elf/common.h2
-rwxr-xr-xinclude/elf/epiphany.h59
-rw-r--r--ld/ChangeLog10
-rw-r--r--ld/Makefile.am4
-rw-r--r--ld/Makefile.in5
-rw-r--r--ld/NEWS8
-rw-r--r--ld/configure.tgt2
-rw-r--r--ld/emulparams/elf32epiphany.sh42
-rw-r--r--ld/po/ld.pot750
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-srec/srec.exp6
-rw-r--r--ld/testsuite/lib/ld-lib.exp1
-rw-r--r--opcodes/ChangeLog23
-rw-r--r--opcodes/Makefile.am22
-rw-r--r--opcodes/Makefile.in27
-rwxr-xr-xopcodes/configure1
-rw-r--r--opcodes/configure.in1
-rw-r--r--opcodes/disassemble.c6
-rw-r--r--opcodes/epiphany-asm.c863
-rw-r--r--opcodes/epiphany-desc.c2271
-rw-r--r--opcodes/epiphany-desc.h402
-rw-r--r--opcodes/epiphany-dis.c698
-rw-r--r--opcodes/epiphany-ibld.c1709
-rw-r--r--opcodes/epiphany-opc.c4035
-rw-r--r--opcodes/epiphany-opc.h226
-rw-r--r--opcodes/po/POTFILES.in8
-rw-r--r--opcodes/po/opcodes.pot341
82 files changed, 23945 insertions, 3551 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9ae63911a3..7e81552e19 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,30 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * Makefile.am (ALL_MACHINES): Add cpu-epiphany.lo.
+ (ALL_MACHINES_CFILES): Add cpu-epiphany.c.
+ (BFD32_BACKENDS): Add elf32-epiphany.lo.
+ (BFD32_BACKENDS_CFILES): Add elf32-epiphany.c.
+ * archures.c (bfd_arch_epiphany): Add.
+ (bfd_mach_epiphany16, bfd_mach_epiphany32): Define.
+ (bfd_epiphany_arch): Declare.
+ (bfd_archures_list): Add &bfd_epiphany_arch.
+ * config.bfd (epiphany-*-elf): New target case.
+ * configure.in (bfd_elf32_epiphany_vec): New target vector case.
+ * reloc.c (BFD_RELOC_EPIPHANY_SIMM8): New relocation.
+ (BFD_RELOC_EPIPHANY_SIMM24, BFD_RELOC_EPIPHANY_HIGH): Likewise.
+ (BFD_RELOC_EPIPHANY_LOW, BFD_RELOC_EPIPHANY_SIMM11): Likewise.
+ (BFD_RELOC_EPIPHANY_IMM11, BFD_RELOC_EPIPHANY_IMM8): Likewise.
+ * targets.c (bfd_elf32_epiphany_vec): Declare.
+ (_bfd_target_vector): Add bfd_elf32_epiphany_vec.
+ * Makefile.in: Regenerate.
+ * bfd-in2.h: Regenerate.
+ * configure: Regenerate.
+ * libbfd.h: Regenerate.
+ * po/SRC-POTFILES.in: Regenerate.
+ * po/bfd.pot: Regenerate.
+ * cpu-epiphany.c: New file.
+ * elf32-epiphany.c: New file.
+
2011-10-24 Maciej W. Rozycki <macro@codesourcery.com>
* elfxx-mips.c (_bfd_mips_elf_symbol_processing): Remove
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 8610d5e361..46e94a5b30 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -83,6 +83,7 @@ ALL_MACHINES = \
cpu-d10v.lo \
cpu-d30v.lo \
cpu-dlx.lo \
+ cpu-epiphany.lo \
cpu-fr30.lo \
cpu-frv.lo \
cpu-h8300.lo \
@@ -158,6 +159,7 @@ ALL_MACHINES_CFILES = \
cpu-d10v.c \
cpu-d30v.c \
cpu-dlx.c \
+ cpu-epiphany.c \
cpu-fr30.c \
cpu-frv.c \
cpu-h8300.c \
@@ -286,6 +288,7 @@ BFD32_BACKENDS = \
elf32-d10v.lo \
elf32-d30v.lo \
elf32-dlx.lo \
+ elf32-epiphany.lo \
elf32-fr30.lo \
elf32-frv.lo \
elf32-gen.lo \
@@ -470,6 +473,7 @@ BFD32_BACKENDS_CFILES = \
elf32-d10v.c \
elf32-d30v.c \
elf32-dlx.c \
+ elf32-epiphany.c \
elf32-fr30.c \
elf32-frv.c \
elf32-gen.c \
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 34196aa9b8..12ec3ee0ba 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -382,6 +382,7 @@ ALL_MACHINES = \
cpu-d10v.lo \
cpu-d30v.lo \
cpu-dlx.lo \
+ cpu-epiphany.lo \
cpu-fr30.lo \
cpu-frv.lo \
cpu-h8300.lo \
@@ -457,6 +458,7 @@ ALL_MACHINES_CFILES = \
cpu-d10v.c \
cpu-d30v.c \
cpu-dlx.c \
+ cpu-epiphany.c \
cpu-fr30.c \
cpu-frv.c \
cpu-h8300.c \
@@ -586,6 +588,7 @@ BFD32_BACKENDS = \
elf32-d10v.lo \
elf32-d30v.lo \
elf32-dlx.lo \
+ elf32-epiphany.lo \
elf32-fr30.lo \
elf32-frv.lo \
elf32-gen.lo \
@@ -770,6 +773,7 @@ BFD32_BACKENDS_CFILES = \
elf32-d10v.c \
elf32-d30v.c \
elf32-dlx.c \
+ elf32-epiphany.c \
elf32-fr30.c \
elf32-frv.c \
elf32-gen.c \
@@ -1260,6 +1264,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-d10v.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-d30v.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-dlx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-epiphany.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-fr30.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-frv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-h8300.Plo@am__quote@
@@ -1346,6 +1351,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-d10v.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-d30v.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-dlx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-epiphany.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-fr30.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-frv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-gen.Plo@am__quote@
diff --git a/bfd/archures.c b/bfd/archures.c
index 44850e75dc..9781f1eec1 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -365,6 +365,9 @@ DESCRIPTION
. bfd_arch_iq2000, {* Vitesse IQ2000. *}
.#define bfd_mach_iq2000 1
.#define bfd_mach_iq10 2
+. bfd_arch_epiphany, {* Adapteva EPIPHANY *}
+.#define bfd_mach_epiphany16 1
+.#define bfd_mach_epiphany32 2
. bfd_arch_mt,
.#define bfd_mach_ms1 1
.#define bfd_mach_mrisc2 2
@@ -496,6 +499,7 @@ extern const bfd_arch_info_type bfd_crx_arch;
extern const bfd_arch_info_type bfd_d10v_arch;
extern const bfd_arch_info_type bfd_d30v_arch;
extern const bfd_arch_info_type bfd_dlx_arch;
+extern const bfd_arch_info_type bfd_epiphany_arch;
extern const bfd_arch_info_type bfd_fr30_arch;
extern const bfd_arch_info_type bfd_frv_arch;
extern const bfd_arch_info_type bfd_h8300_arch;
@@ -576,6 +580,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_d10v_arch,
&bfd_d30v_arch,
&bfd_dlx_arch,
+ &bfd_epiphany_arch,
&bfd_fr30_arch,
&bfd_frv_arch,
&bfd_h8300_arch,
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 91f3531a62..f48d2d40eb 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -2071,6 +2071,9 @@ enum bfd_architecture
bfd_arch_iq2000, /* Vitesse IQ2000. */
#define bfd_mach_iq2000 1
#define bfd_mach_iq10 2
+ bfd_arch_epiphany, /* Adapteva EPIPHANY */
+#define bfd_mach_epiphany16 1
+#define bfd_mach_epiphany32 2
bfd_arch_mt,
#define bfd_mach_ms1 1
#define bfd_mach_mrisc2 2
@@ -5023,6 +5026,27 @@ the dynamic object into the runtime process image. */
BFD_RELOC_TILEGX_TLS_DTPMOD32,
BFD_RELOC_TILEGX_TLS_DTPOFF32,
BFD_RELOC_TILEGX_TLS_TPOFF32,
+
+/* Adapteva EPIPHANY - 8 bit signed pc-relative displacement */
+ BFD_RELOC_EPIPHANY_SIMM8,
+
+/* Adapteva EPIPHANY - 24 bit signed pc-relative displacement */
+ BFD_RELOC_EPIPHANY_SIMM24,
+
+/* Adapteva EPIPHANY - 16 most-significant bits of absolute address */
+ BFD_RELOC_EPIPHANY_HIGH,
+
+/* Adapteva EPIPHANY - 16 least-significant bits of absolute address */
+ BFD_RELOC_EPIPHANY_LOW,
+
+/* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate */
+ BFD_RELOC_EPIPHANY_SIMM11,
+
+/* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement) */
+ BFD_RELOC_EPIPHANY_IMM11,
+
+/* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. */
+ BFD_RELOC_EPIPHANY_IMM8,
BFD_RELOC_UNUSED };
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
reloc_howto_type *bfd_reloc_type_lookup
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 3b9872a2a4..1e86dd48fd 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -361,6 +361,10 @@ case "${targ}" in
targ_defvec=bfd_elf32_d30v_vec
;;
+ epiphany-*-elf)
+ targ_defvec=bfd_elf32_epiphany_vec
+ ;;
+
fido-*-elf* )
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68kcoff_vec ieee_vec"
diff --git a/bfd/configure b/bfd/configure
index 96a8f75861..e6a3a5ab2c 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -15199,6 +15199,7 @@ do
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_dlx_big_vec) tb="$tb elf32-dlx.lo elf32.lo $elf" ;;
+ bfd_elf32_epiphany_vec) tb="$tb elf32-epiphany.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
bfd_elf32_frv_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
bfd_elf32_frvfdpic_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
diff --git a/bfd/configure.in b/bfd/configure.in
index 2088d62e61..f6d3693aa1 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -698,6 +698,7 @@ do
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_dlx_big_vec) tb="$tb elf32-dlx.lo elf32.lo $elf" ;;
+ bfd_elf32_epiphany_vec) tb="$tb elf32-epiphany.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
bfd_elf32_frv_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
bfd_elf32_frvfdpic_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
diff --git a/bfd/cpu-epiphany.c b/bfd/cpu-epiphany.c
new file mode 100644
index 0000000000..54f9580c88
--- /dev/null
+++ b/bfd/cpu-epiphany.c
@@ -0,0 +1,56 @@
+/* BFD support for the Adapteva EPIPHANY processor.
+ Copyright 2011 Free Software Foundation, Inc.
+ Contributed by Embecosm on behalf of Adapteva, 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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+const bfd_arch_info_type bfd_epiphany16_arch =
+{
+ 32, /* Bits per word */
+ 32, /* Bits per address. */
+ 8, /* Bits per byte. */
+ bfd_arch_epiphany, /* Architecture. */
+ bfd_mach_epiphany16, /* Machine. */
+ "epiphany", /* Architecture name. */
+ "epiphany16", /* Machine name. */
+ 1, /* Section align power. */
+ FALSE, /* The default ? */
+ bfd_default_compatible, /* Architecture comparison fn. */
+ bfd_default_scan, /* String to architecture convert fn. */
+ NULL /* Next in list. */
+};
+
+const bfd_arch_info_type bfd_epiphany_arch =
+{
+ 32, /* Bits per word - not really true. */
+ 32, /* Bits per address. */
+ 8, /* Bits per byte. */
+ bfd_arch_epiphany, /* Architecture. */
+ bfd_mach_epiphany32, /* Machine. */
+ "epiphany", /* Architecture name. */
+ "epiphany32", /* Machine name. */
+ 2, /* Section align power. */
+ TRUE, /* The default ? */
+ bfd_default_compatible, /* Architecture comparison fn. */
+ bfd_default_scan, /* String to architecture convert fn. */
+ & bfd_epiphany16_arch /* Next in list. */
+};
diff --git a/bfd/elf32-epiphany.c b/bfd/elf32-epiphany.c
new file mode 100644
index 0000000000..08f3be1798
--- /dev/null
+++ b/bfd/elf32-epiphany.c
@@ -0,0 +1,608 @@
+/* Adapteva epiphany specific support for 32-bit ELF
+ Copyright 2011
+ Free Software Foundation, Inc.
+ Contributed by Embecosm on behalf of Adapteva, 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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/epiphany.h"
+#include "libiberty.h"
+
+/* Struct used to pass miscellaneous paramaters which
+ helps to avoid overly long parameter lists. */
+struct misc
+{
+ Elf_Internal_Shdr * symtab_hdr;
+ Elf_Internal_Rela * irelbase;
+ bfd_byte * contents;
+ Elf_Internal_Sym * isymbuf;
+};
+
+struct epiphany_opcode
+{
+ unsigned short opcode;
+ unsigned short mask;
+};
+
+static bfd_boolean epiphany_relaxed = FALSE;
+
+/* Relocation tables. */
+static reloc_howto_type epiphany_elf_howto_table [] =
+{
+#define AHOW(t,rs,s,bs,pr,bp,co,name,sm,dm) \
+ HOWTO(t, /* type */ \
+ rs, /* rightshift */ \
+ s, /* size (0 = byte, 1 = short, 2 = long) */ \
+ bs, /* bitsize */ \
+ pr, /* pc_relative */ \
+ bp, /* bitpos */ \
+ co, /* complain_on_overflow */ \
+ bfd_elf_generic_reloc,/* special_function */ \
+ name, /* name */ \
+ FALSE, /* partial_inplace */ \
+ sm, /* src_mask */ \
+ dm, /* dst_mask */ \
+ pr) /* pcrel_offset */
+
+ /* This reloc does nothing. */
+ AHOW (R_EPIPHANY_NONE, 0, 0,32, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_NONE", 0, 0),
+
+ /* 8 bit absolute (not likely) */
+ AHOW (R_EPIPHANY_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_8", 0x000000ff, 0x000000ff),
+ /* 16 bit absolute */
+ AHOW (R_EPIPHANY_16, 0, 1,16, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_16", 0x0000ffff, 0x00ff1fe0),
+ /* A 32 bit absolute relocation. */
+ AHOW (R_EPIPHANY_32, 0, 2,32, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_32", 0xffffffff, 0xffffffff),
+
+ /* 8 bit relative relocation */
+ HOWTO ( R_EPIPHANY_8_PCREL, 0, 0, 8, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+ /* 16 bit relative relocation */
+ HOWTO ( R_EPIPHANY_16_PCREL, 0, 1, 16, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+ /* 32 bit relative relocation */
+ HOWTO ( R_EPIPHANY_32_PCREL, 0, 2, 32, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+
+ /* 8 bit pc-relative relocation */
+ AHOW (R_EPIPHANY_SIMM8, 1, 0, 8, TRUE, 8, complain_overflow_signed, "R_EPIPHANY_SIMM8", 0x000000ff, 0x0000ff00),
+ /* 24 bit pc-relative relocation */
+ AHOW (R_EPIPHANY_SIMM24, 1, 2,24, TRUE, 8, complain_overflow_signed, "R_EPIPHANY_SIMM24", 0x00ffffff, 0xffffff00),
+
+ /* %HIGH(EA) */
+ AHOW (R_EPIPHANY_HIGH, 0, 2,16, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_HIGH", 0x0ff01fe0, 0x0ff01fe0),
+
+ /* %LOW(EA) */
+ AHOW (R_EPIPHANY_LOW, 0, 2,16, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_LOW", 0x0ff01fe0, 0x0ff01fe0),
+
+ /* simm11 */
+ AHOW (R_EPIPHANY_SIMM11, 0, 2,11, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_SIMM11", 0x00ff0380, 0x00ff0380),
+ /* imm12 - sign-magnitude */
+ AHOW (R_EPIPHANY_IMM11, 0, 2,11, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_IMM12", 0x00ff0380, 0x00ff0380),
+ /* imm8 */
+ AHOW (R_EPIPHANY_IMM8, 0, 1, 8, FALSE, 8, complain_overflow_signed, "R_EPIPHANY_IMM8", 0x0000ff00, 0x0000ff00)
+
+
+};
+#undef AHOW
+
+/* Map BFD reloc types to EPIPHANY ELF reloc types. */
+
+static reloc_howto_type *
+epiphany_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
+ bfd_reloc_code_real_type code)
+{
+ /* Note that the epiphany_elf_howto_table is indxed by the R_
+ constants. Thus, the order that the howto records appear in the
+ table *must* match the order of the relocation types defined in
+ include/elf/epiphany.h. */
+
+ switch (code)
+ {
+ case BFD_RELOC_NONE:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_NONE];
+
+ case BFD_RELOC_EPIPHANY_SIMM8:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_SIMM8];
+ case BFD_RELOC_EPIPHANY_SIMM24:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_SIMM24];
+
+ case BFD_RELOC_8_PCREL:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_8_PCREL];
+ case BFD_RELOC_16_PCREL:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_16_PCREL];
+ case BFD_RELOC_32_PCREL:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_32_PCREL];
+
+ case BFD_RELOC_8:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_8];
+ case BFD_RELOC_16:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_16];
+ case BFD_RELOC_32:
+ return &epiphany_elf_howto_table[ (int) R_EPIPHANY_32];
+
+ case BFD_RELOC_EPIPHANY_HIGH:
+ return & epiphany_elf_howto_table[ (int) R_EPIPHANY_HIGH];
+ case BFD_RELOC_EPIPHANY_LOW:
+ return & epiphany_elf_howto_table[ (int) R_EPIPHANY_LOW];
+
+ case BFD_RELOC_EPIPHANY_SIMM11:
+ return & epiphany_elf_howto_table[ (int) R_EPIPHANY_SIMM11];
+ case BFD_RELOC_EPIPHANY_IMM11:
+ return & epiphany_elf_howto_table[ (int) R_EPIPHANY_IMM11];
+
+ case BFD_RELOC_EPIPHANY_IMM8:
+ return & epiphany_elf_howto_table[ (int) R_EPIPHANY_IMM8];
+
+ default:
+ /* Pacify gcc -Wall. */
+ return NULL;
+ }
+ return NULL;
+}
+
+static reloc_howto_type *
+epiphany_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (epiphany_elf_howto_table); i++)
+ if (epiphany_elf_howto_table[i].name != NULL
+ && strcasecmp (epiphany_elf_howto_table[i].name, r_name) == 0)
+ return &epiphany_elf_howto_table[i];
+
+ return NULL;
+}
+
+#define PAGENO(ABSADDR) ((ABSADDR) & 0xFFFFC000)
+#define BASEADDR(SEC) ((SEC)->output_section->vma + (SEC)->output_offset)
+
+/* This function handles relaxing for the epiphany.
+ Dummy placeholder for future optimizations. */
+
+static bfd_boolean
+epiphany_elf_relax_section (bfd *abfd, asection *sec,
+ struct bfd_link_info *link_info,
+ bfd_boolean *again)
+{
+ Elf_Internal_Shdr *symtab_hdr;
+ Elf_Internal_Rela *internal_relocs;
+ bfd_byte *contents = NULL;
+ Elf_Internal_Sym *isymbuf = NULL;
+ static asection * first_section = NULL;
+ static unsigned long search_addr;
+ static unsigned long page_start = 0;
+ static unsigned long page_end = 0;
+ static unsigned int pass = 0;
+ static bfd_boolean new_pass = FALSE;
+ static bfd_boolean changed = FALSE;
+ struct misc misc ATTRIBUTE_UNUSED;
+ asection *stab;
+
+ /* Assume nothing changes. */
+ *again = FALSE;
+
+ if (first_section == NULL)
+ {
+ epiphany_relaxed = TRUE;
+ first_section = sec;
+ }
+
+ if (first_section == sec)
+ {
+ pass++;
+ new_pass = TRUE;
+ }
+
+ /* We don't have to do anything for a relocatable link,
+ if this section does not have relocs, or if this is
+ not a code section. */
+ if (link_info->relocatable
+ || (sec->flags & SEC_RELOC) == 0
+ || sec->reloc_count == 0
+ || (sec->flags & SEC_CODE) == 0)
+ return TRUE;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+
+ internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
+ link_info->keep_memory);
+ if (internal_relocs == NULL)
+ goto error_return;
+
+ /* Make sure the stac.rela stuff gets read in. */
+ stab = bfd_get_section_by_name (abfd, ".stab");
+
+ if (stab)
+ {
+ /* So stab does exits. */
+ Elf_Internal_Rela * irelbase ATTRIBUTE_UNUSED;
+
+ irelbase = _bfd_elf_link_read_relocs (abfd, stab, NULL, NULL,
+ link_info->keep_memory);
+ }
+
+ /* Get section contents cached copy if it exists. */
+ if (contents == NULL)
+ {
+ /* Get cached copy if it exists. */
+ if (elf_section_data (sec)->this_hdr.contents != NULL)
+ contents = elf_section_data (sec)->this_hdr.contents;
+ else
+ {
+ /* Go get them off disk. */
+ if (!bfd_malloc_and_get_section (abfd, sec, &contents))
+ goto error_return;
+ }
+ }
+
+ /* Read this BFD's symbols cached copy if it exists. */
+ if (isymbuf == NULL && symtab_hdr->sh_info != 0)
+ {
+ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
+ if (isymbuf == NULL)
+ isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
+ symtab_hdr->sh_info, 0,
+ NULL, NULL, NULL);
+ if (isymbuf == NULL)
+ goto error_return;
+ }
+
+ misc.symtab_hdr = symtab_hdr;
+ misc.isymbuf = isymbuf;
+ misc.irelbase = internal_relocs;
+ misc.contents = contents;
+
+ /* This is where all the relaxation actually get done. */
+ if ((pass == 1) || (new_pass && !changed))
+ {
+ /* On the first pass we simply search for the lowest page that
+ we havn't relaxed yet. Note that the pass count is reset
+ each time a page is complete in order to move on to the next page.
+ If we can't find any more pages then we are finished. */
+ if (new_pass)
+ {
+ pass = 1;
+ new_pass = FALSE;
+ changed = TRUE; /* Pre-initialize to break out of pass 1. */
+ search_addr = 0xFFFFFFFF;
+ }
+
+ if ((BASEADDR (sec) + sec->size < search_addr)
+ && (BASEADDR (sec) + sec->size > page_end))
+ {
+ if (BASEADDR (sec) <= page_end)
+ search_addr = page_end + 1;
+ else
+ search_addr = BASEADDR (sec);
+
+ /* Found a page => more work to do. */
+ *again = TRUE;
+ }
+ }
+ else
+ {
+ if (new_pass)
+ {
+ new_pass = FALSE;
+ changed = FALSE;
+ page_start = PAGENO (search_addr);
+ page_end = page_start | 0x00003FFF;
+ }
+
+ /* Only process sections in range. */
+ if ((BASEADDR (sec) + sec->size >= page_start)
+ && (BASEADDR (sec) <= page_end))
+ {
+#if 0
+ if (!epiphany_elf_relax_section_page (abfd, sec, &changed, &misc,
+ page_start, page_end))
+#endif
+ return FALSE;
+ }
+ *again = TRUE;
+ }
+
+ /* Perform some house keeping after relaxing the section. */
+
+ if (isymbuf != NULL
+ && symtab_hdr->contents != (unsigned char *) isymbuf)
+ {
+ if (! link_info->keep_memory)
+ free (isymbuf);
+ else
+ symtab_hdr->contents = (unsigned char *) isymbuf;
+ }
+
+ if (contents != NULL
+ && elf_section_data (sec)->this_hdr.contents != contents)
+ {
+ if (! link_info->keep_memory)
+ free (contents);
+ else
+ {
+ /* Cache the section contents for elf_link_input_bfd. */
+ elf_section_data (sec)->this_hdr.contents = contents;
+ }
+ }
+
+ if (internal_relocs != NULL
+ && elf_section_data (sec)->relocs != internal_relocs)
+ free (internal_relocs);
+
+ return TRUE;
+
+ error_return:
+ if (isymbuf != NULL
+ && symtab_hdr->contents != (unsigned char *) isymbuf)
+ free (isymbuf);
+ if (contents != NULL
+ && elf_section_data (sec)->this_hdr.contents != contents)
+ free (contents);
+ if (internal_relocs != NULL
+ && elf_section_data (sec)->relocs != internal_relocs)
+ free (internal_relocs);
+ return FALSE;
+}
+
+/* Set the howto pointer for a EPIPHANY ELF reloc. */
+
+static void
+epiphany_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
+ arelent * cache_ptr,
+ Elf_Internal_Rela * dst)
+{
+ unsigned int r_type;
+
+ r_type = ELF32_R_TYPE (dst->r_info);
+ cache_ptr->howto = & epiphany_elf_howto_table [r_type];
+}
+
+/* Perform a single relocation.
+ By default we use the standard BFD routines. */
+
+static bfd_reloc_status_type
+epiphany_final_link_relocate (reloc_howto_type * howto,
+ bfd * input_bfd,
+ asection * input_section,
+ bfd_byte * contents,
+ Elf_Internal_Rela * rel,
+ bfd_vma relocation)
+{
+ switch (howto->type)
+ {
+ /* Handle 16 bit immediates. */
+ case R_EPIPHANY_HIGH:
+ relocation += rel->r_addend;
+ relocation >>= 16;
+ goto common;
+
+ case R_EPIPHANY_LOW:
+ relocation += rel->r_addend;
+ common:
+ relocation = ((relocation & 0xff00L) << 12)
+ | ((relocation & 0x00ffL) << 5);
+ /* Sanity check the address. */
+ if (rel->r_offset > bfd_get_section_limit (input_bfd, input_section))
+ return bfd_reloc_outofrange;
+
+ return _bfd_relocate_contents (howto, input_bfd, relocation,
+ contents + rel->r_offset);
+
+ case R_EPIPHANY_SIMM11:
+ relocation += rel->r_addend;
+ /* Check signed overflow. */
+ if ((int)relocation > 1023 || (int)relocation < -1024)
+ return bfd_reloc_outofrange;
+ goto disp11;
+
+ case R_EPIPHANY_IMM11:
+ relocation += rel->r_addend;
+ if ((unsigned int) relocation > 0x7ff)
+ return bfd_reloc_outofrange;
+ disp11:
+ relocation = ((relocation & 7) << 5)
+ || ((relocation & 0x7f8 ) << 13);
+ return _bfd_relocate_contents (howto, input_bfd, relocation,
+ contents + rel->r_offset);
+
+ /* Pass others through. */
+ default:
+ break;
+ }
+
+ /* Only install relocation if above tests did not disqualify it. */
+ return _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, rel->r_addend);
+}
+
+/* Relocate an EPIPHANY ELF section.
+
+ 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 relocatable
+ 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 relocatable 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 bfd_boolean
+epiphany_elf_relocate_section (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;
+
+ symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (input_bfd);
+ relend = relocs + input_section->reloc_count;
+
+ 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 ATTRIBUTE_UNUSED;
+
+ r_type = ELF32_R_TYPE (rel->r_info);
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ howto = epiphany_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 = BASEADDR (sec) + 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
+ {
+ bfd_boolean warned ATTRIBUTE_UNUSED;
+ bfd_boolean unresolved_reloc ATTRIBUTE_UNUSED;
+
+ RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+ r_symndx, symtab_hdr, sym_hashes,
+ h, sec, relocation,
+ unresolved_reloc, warned);
+
+ name = h->root.root.string;
+ }
+
+ if (sec != NULL && elf_discarded_section (sec))
+ RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+ rel, relend, howto, contents);
+
+ if (info->relocatable)
+ continue;
+
+ /* Finally, the sole EPIPHANY-specific part. */
+ r = epiphany_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel, relocation);
+
+ if (r != bfd_reloc_ok)
+ {
+ const char * msg = NULL;
+
+ switch (r)
+ {
+ case bfd_reloc_overflow:
+ r = info->callbacks->reloc_overflow
+ (info, (h ? &h->root : NULL), 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;
+
+ /* This is how epiphany_final_link_relocate tells us of a
+ non-kosher reference between insn & data address spaces. */
+ case bfd_reloc_notsupported:
+ if (sym != NULL) /* Only if it's not an unresolved symbol. */
+ msg = _("unsupported relocation between data/insn address spaces");
+ 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;
+}
+
+/* We only have a little-endian target. */
+#define TARGET_LITTLE_SYM bfd_elf32_epiphany_vec
+#define TARGET_LITTLE_NAME "elf32-epiphany"
+
+#define ELF_ARCH bfd_arch_epiphany
+#define ELF_MACHINE_CODE EM_ADAPTEVA_EPIPHANY
+
+#define ELF_MAXPAGESIZE 0x8000 /* No pages on the EPIPHANY. */
+
+#define elf_info_to_howto_rel NULL
+#define elf_info_to_howto epiphany_info_to_howto_rela
+
+#define elf_backend_can_gc_sections 1
+#define elf_backend_rela_normal 1
+#define elf_backend_relocate_section epiphany_elf_relocate_section
+
+#define elf_symbol_leading_char '_'
+#define bfd_elf32_bfd_reloc_type_lookup epiphany_reloc_type_lookup
+#define bfd_elf32_bfd_reloc_name_lookup epiphany_reloc_name_lookup
+#define bfd_elf32_bfd_relax_section epiphany_elf_relax_section
+
+#include "elf32-target.h"
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index c2b119d361..ab3e679298 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -2476,6 +2476,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_TILEGX_TLS_DTPMOD32",
"BFD_RELOC_TILEGX_TLS_DTPOFF32",
"BFD_RELOC_TILEGX_TLS_TPOFF32",
+ "BFD_RELOC_EPIPHANY_SIMM8",
+ "BFD_RELOC_EPIPHANY_SIMM24",
+ "BFD_RELOC_EPIPHANY_HIGH",
+ "BFD_RELOC_EPIPHANY_LOW",
+ "BFD_RELOC_EPIPHANY_SIMM11",
+ "BFD_RELOC_EPIPHANY_IMM11",
+ "BFD_RELOC_EPIPHANY_IMM8",
"@@overflow: BFD_RELOC_UNUSED@@",
};
#endif
diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in
index a30fa3caea..71546889e7 100644
--- a/bfd/po/SRC-POTFILES.in
+++ b/bfd/po/SRC-POTFILES.in
@@ -73,6 +73,7 @@ cpu-crx.c
cpu-d10v.c
cpu-d30v.c
cpu-dlx.c
+cpu-epiphany.c
cpu-fr30.c
cpu-frv.c
cpu-h8300.c
@@ -85,6 +86,7 @@ cpu-i960.c
cpu-ia64.c
cpu-ip2k.c
cpu-iq2000.c
+cpu-k1om.c
cpu-l1om.c
cpu-lm32.c
cpu-m10200.c
@@ -161,6 +163,7 @@ elf32-crx.c
elf32-d10v.c
elf32-d30v.c
elf32-dlx.c
+elf32-epiphany.c
elf32-fr30.c
elf32-frv.c
elf32-gen.c
diff --git a/bfd/po/bfd.pot b/bfd/po/bfd.pot
index 38ce82fb1a..b7d5a1eca6 100644
--- a/bfd/po/bfd.pot
+++ b/bfd/po/bfd.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2011-06-02 14:25+0100\n"
+"POT-Creation-Date: 2011-10-25 11:58+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -45,28 +45,28 @@ msgid ""
"%s: can not represent section for symbol `%s' in a.out object file format"
msgstr ""
-#: aoutx.h:1579 vms-alpha.c:7668
+#: aoutx.h:1579 vms-alpha.c:7671
msgid "*unknown*"
msgstr ""
-#: aoutx.h:4017 aoutx.h:4343
+#: aoutx.h:4018 aoutx.h:4344
msgid "%P: %B: unexpected relocation type\n"
msgstr ""
-#: aoutx.h:5374
+#: aoutx.h:5375
#, c-format
msgid "%s: relocatable link from %s to %s not supported"
msgstr ""
-#: archive.c:2194
+#: archive.c:2203
msgid "Warning: writing archive was slow: rewriting timestamp\n"
msgstr ""
-#: archive.c:2482
+#: archive.c:2491
msgid "Reading archive file mod timestamp"
msgstr ""
-#: archive.c:2506
+#: archive.c:2515
msgid "Writing updated armap timestamp"
msgstr ""
@@ -189,13 +189,13 @@ msgstr ""
msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
msgstr ""
-#: bout.c:1146 elf-m10300.c:2075 elf32-avr.c:1654 elf32-frv.c:5731
-#: elfxx-sparc.c:2796 reloc.c:5677 reloc16.c:162 elf32-ia64.c:360
+#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1654 elf32-frv.c:5734
+#: elfxx-sparc.c:2802 reloc.c:6115 reloc16.c:162 elf32-ia64.c:360
#: elf64-ia64.c:360
msgid "%P%F: --relax and -r may not be used together\n"
msgstr ""
-#: cache.c:226
+#: cache.c:227
msgid "reopening %B: %s\n"
msgstr ""
@@ -225,8 +225,8 @@ msgstr ""
msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
msgstr ""
-#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:4079 elf64-alpha.c:4228
-#: elf32-ia64.c:3845 elf64-ia64.c:3845
+#: coff-alpha.c:1575 elf32-m32r.c:2484 elf64-alpha.c:4074 elf64-alpha.c:4224
+#: elf32-ia64.c:3839 elf64-ia64.c:3839
msgid "%B: unknown relocation type %d"
msgstr ""
@@ -240,7 +240,7 @@ msgstr ""
msgid "%B: unable to find ARM glue '%s' for `%s'"
msgstr ""
-#: coff-arm.c:1369 elf32-arm.c:6980
+#: coff-arm.c:1369 elf32-arm.c:7023
#, c-format
msgid ""
"%B(%s): warning: interworking not enabled.\n"
@@ -268,14 +268,14 @@ msgstr ""
msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
msgstr ""
-#: coff-arm.c:2226 elf32-arm.c:15580
+#: coff-arm.c:2226 elf32-arm.c:15621
#, c-format
msgid ""
"error: %B passes floats in float registers, whereas %B passes them in "
"integer registers"
msgstr ""
-#: coff-arm.c:2229 elf32-arm.c:15584
+#: coff-arm.c:2229 elf32-arm.c:15625
#, c-format
msgid ""
"error: %B passes floats in integer registers, whereas %B passes them in "
@@ -296,12 +296,12 @@ msgid ""
"position independent"
msgstr ""
-#: coff-arm.c:2274 elf32-arm.c:15649
+#: coff-arm.c:2274 elf32-arm.c:15690
#, c-format
msgid "Warning: %B supports interworking, whereas %B does not"
msgstr ""
-#: coff-arm.c:2277 elf32-arm.c:15655
+#: coff-arm.c:2277 elf32-arm.c:15696
#, c-format
msgid "Warning: %B does not support interworking, whereas %B does"
msgstr ""
@@ -311,7 +311,7 @@ msgstr ""
msgid "private flags = %x:"
msgstr ""
-#: coff-arm.c:2309 elf32-arm.c:11752
+#: coff-arm.c:2309 elf32-arm.c:11806
#, c-format
msgid " [floats passed in float registers]"
msgstr ""
@@ -321,7 +321,7 @@ msgstr ""
msgid " [floats passed in integer registers]"
msgstr ""
-#: coff-arm.c:2314 elf32-arm.c:11755
+#: coff-arm.c:2314 elf32-arm.c:11809
#, c-format
msgid " [position independent]"
msgstr ""
@@ -346,14 +346,14 @@ msgstr ""
msgid " [interworking not supported]"
msgstr ""
-#: coff-arm.c:2370 elf32-arm.c:10787
+#: coff-arm.c:2370 elf32-arm.c:10841
#, c-format
msgid ""
"Warning: Not setting interworking flag of %B since it has already been "
"specified as non-interworking"
msgstr ""
-#: coff-arm.c:2374 elf32-arm.c:10791
+#: coff-arm.c:2374 elf32-arm.c:10845
#, c-format
msgid "Warning: Clearing the interworking flag of %B due to outside request"
msgstr ""
@@ -368,20 +368,20 @@ msgstr ""
msgid "relocation `%s' not yet implemented"
msgstr ""
-#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5192
+#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5198
msgid "%B: warning: illegal symbol index %ld in relocs"
msgstr ""
-#: coff-i960.c:143 coff-i960.c:506
+#: coff-i960.c:144 coff-i960.c:507
msgid "uncertain calling convention for non-COFF symbol"
msgstr ""
-#: coff-m68k.c:506 elf32-bfin.c:5689 elf32-cr16.c:2897 elf32-m68k.c:4677
+#: coff-m68k.c:506 elf32-bfin.c:5690 elf32-cr16.c:2897 elf32-m68k.c:4677
msgid "unsupported reloc type"
msgstr ""
-#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:2019 elfn32-mips.c:1832
+#: coff-mips.c:688 elf32-mips.c:1516 elf32-score.c:431 elf32-score7.c:330
+#: elf64-mips.c:2618 elfn32-mips.c:2431
msgid "GP relative relocation when _gp not defined"
msgstr ""
@@ -389,17 +389,17 @@ msgstr ""
msgid "Unrecognized reloc"
msgstr ""
-#: coff-rs6000.c:2676
+#: coff-rs6000.c:2720
#, c-format
msgid "%s: unsupported relocation type 0x%02x"
msgstr ""
-#: coff-rs6000.c:2761
+#: coff-rs6000.c:2805
#, c-format
msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
msgstr ""
-#: coff-rs6000.c:3512 coff64-rs6000.c:2111
+#: coff-rs6000.c:3556 coff64-rs6000.c:2111
msgid "%B: symbol `%s' has unrecognized smclas %d"
msgstr ""
@@ -423,76 +423,80 @@ msgstr ""
msgid "ignoring reloc %s\n"
msgstr ""
-#: coffcode.h:991
+#: coffcode.h:997
msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
msgstr ""
#. Generate a warning message rather using the 'unhandled'
#. variable as this will allow some .sys files generate by
#. other toolchains to be processed. See bugzilla issue 196.
-#: coffcode.h:1215
+#: coffcode.h:1221
msgid ""
"%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s"
msgstr ""
-#: coffcode.h:1282
+#: coffcode.h:1288
msgid "%B (%s): Section flag %s (0x%x) ignored"
msgstr ""
-#: coffcode.h:2424
+#: coffcode.h:2430
#, c-format
msgid "Unrecognized TI COFF target id '0x%x'"
msgstr ""
-#: coffcode.h:2738
+#: coffcode.h:2744
msgid "%B: reloc against a non-existant symbol index: %ld"
msgstr ""
-#: coffcode.h:3296
+#: coffcode.h:3302
msgid "%B: too many sections (%d)"
msgstr ""
-#: coffcode.h:3712
+#: coffcode.h:3718
msgid "%B: section %s: string table overflow at offset %ld"
msgstr ""
-#: coffcode.h:4517
+#: coffcode.h:4523
msgid "%B: warning: line number table read failed"
msgstr ""
-#: coffcode.h:4547
+#: coffcode.h:4553
msgid "%B: warning: illegal symbol index %ld in line numbers"
msgstr ""
-#: coffcode.h:4561
+#: coffcode.h:4567
msgid "%B: warning: duplicate line number information for `%s'"
msgstr ""
-#: coffcode.h:4961
+#: coffcode.h:4967
msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
msgstr ""
-#: coffcode.h:5087
+#: coffcode.h:5093
msgid "warning: %B: local symbol `%s' has no section"
msgstr ""
-#: coffcode.h:5231
+#: coffcode.h:5237
msgid "%B: illegal relocation type %d at address 0x%lx"
msgstr ""
-#: coffgen.c:1578
+#: coffgen.c:1595
msgid "%B: bad string table size %lu"
msgstr ""
-#: cofflink.c:533 elflink.c:4353
+#: coffgen.c:2500 elflink.c:12689 linker.c:3122
+msgid "%F%P: already_linked_table: %E\n"
+msgstr ""
+
+#: cofflink.c:533 elflink.c:4323
msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
msgstr ""
-#: cofflink.c:2330
+#: cofflink.c:2329
msgid "%B: relocs in section `%A', but it has no contents"
msgstr ""
-#: cofflink.c:2392 elflink.c:9554
+#: cofflink.c:2391 elflink.c:9545
msgid ""
"%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' "
"of %B\n"
@@ -517,117 +521,117 @@ msgstr ""
msgid "warning: unable to update contents of %s section in %s"
msgstr ""
-#: dwarf2.c:490
+#: dwarf2.c:496
#, c-format
msgid "Dwarf Error: Can't find %s section."
msgstr ""
-#: dwarf2.c:518
+#: dwarf2.c:525
#, c-format
msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)."
msgstr ""
-#: dwarf2.c:940
+#: dwarf2.c:949
#, c-format
msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
msgstr ""
-#: dwarf2.c:1191
+#: dwarf2.c:1200
msgid "Dwarf Error: mangled line number section (bad file number)."
msgstr ""
-#: dwarf2.c:1443
+#: dwarf2.c:1453
#, c-format
msgid "Dwarf Error: Unhandled .debug_line version %d."
msgstr ""
-#: dwarf2.c:1465
+#: dwarf2.c:1475
msgid "Dwarf Error: Invalid maximum operations per instruction."
msgstr ""
-#: dwarf2.c:1652
+#: dwarf2.c:1662
msgid "Dwarf Error: mangled line number section."
msgstr ""
-#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2383
+#: dwarf2.c:1989 dwarf2.c:2109 dwarf2.c:2394
#, c-format
msgid "Dwarf Error: Could not find abbrev number %u."
msgstr ""
-#: dwarf2.c:2344
+#: dwarf2.c:2355
#, c-format
msgid ""
"Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 "
"and 4 information."
msgstr ""
-#: dwarf2.c:2351
+#: dwarf2.c:2362
#, c-format
msgid ""
"Dwarf Error: found address size '%u', this reader can not handle sizes "
"greater than '%u'."
msgstr ""
-#: dwarf2.c:2374
+#: dwarf2.c:2385
#, c-format
msgid "Dwarf Error: Bad abbrev number: %u."
msgstr ""
-#: ecoff.c:1237
+#: ecoff.c:1239
#, c-format
msgid "Unknown basic type %d"
msgstr ""
-#: ecoff.c:1494
+#: ecoff.c:1496
#, c-format
msgid ""
"\n"
" End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1501 ecoff.c:1504
+#: ecoff.c:1503 ecoff.c:1506
#, c-format
msgid ""
"\n"
" First symbol: %ld"
msgstr ""
-#: ecoff.c:1516
+#: ecoff.c:1518
#, c-format
msgid ""
"\n"
" End+1 symbol: %-7ld Type: %s"
msgstr ""
-#: ecoff.c:1523
+#: ecoff.c:1525
#, c-format
msgid ""
"\n"
" Local symbol: %ld"
msgstr ""
-#: ecoff.c:1531
+#: ecoff.c:1533
#, c-format
msgid ""
"\n"
" struct; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1536
+#: ecoff.c:1538
#, c-format
msgid ""
"\n"
" union; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1541
+#: ecoff.c:1543
#, c-format
msgid ""
"\n"
" enum; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1547
+#: ecoff.c:1549
#, c-format
msgid ""
"\n"
@@ -644,16 +648,16 @@ msgstr ""
msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'"
msgstr ""
-#: elf-eh-frame.c:913
+#: elf-eh-frame.c:917
msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"
msgstr ""
-#: elf-eh-frame.c:1165
+#: elf-eh-frame.c:1189
msgid ""
"%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n"
msgstr ""
-#: elf-eh-frame.c:1583
+#: elf-eh-frame.c:1605
msgid "%P: DW_EH_PE_datarel unspecified for this architecture.\n"
msgstr ""
@@ -664,74 +668,73 @@ msgid ""
"pie\n"
msgstr ""
-#: elf-m10200.c:450 elf-m10300.c:1571 elf32-avr.c:1221 elf32-bfin.c:3209
-#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922
-#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4102 elf32-h8300.c:509
-#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168
-#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:535
-#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395
-#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540
-#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522
+#: elf-m10200.c:450 elf-m10300.c:1563 elf32-avr.c:1221 elf32-bfin.c:3213
+#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2081 elf32-crx.c:922
+#: elf32-d10v.c:509 elf32-epiphany.c:556 elf32-fr30.c:609 elf32-frv.c:4105
+#: elf32-h8300.c:509 elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684
+#: elf32-lm32.c:1168 elf32-m32c.c:553 elf32-m32r.c:3106 elf32-m68hc1x.c:1138
+#: elf32-mep.c:535 elf32-microblaze.c:1231 elf32-moxie.c:282
+#: elf32-msp430.c:486 elf32-mt.c:395 elf32-openrisc.c:404 elf32-score.c:2729
+#: elf32-score7.c:2537 elf32-spu.c:5044 elf32-tilepro.c:3214 elf32-v850.c:2143
+#: elf32-xstormy16.c:935 elf64-mmix.c:1590 elfxx-tilegx.c:3577
msgid "internal error: out of range error"
msgstr ""
-#: elf-m10200.c:454 elf-m10300.c:1575 elf32-avr.c:1225 elf32-bfin.c:3213
-#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926
-#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4106 elf32-h8300.c:513
+#: elf-m10200.c:454 elf-m10300.c:1567 elf32-avr.c:1225 elf32-bfin.c:3217
+#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2085 elf32-crx.c:926
+#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4109 elf32-h8300.c:513
#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557
-#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:539
+#: elf32-m32r.c:3110 elf32-m68hc1x.c:1142 elf32-mep.c:539
#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490
-#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544
-#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526
-#: elfxx-mips.c:9193
+#: elf32-openrisc.c:408 elf32-score.c:2733 elf32-score7.c:2541
+#: elf32-spu.c:5048 elf32-tilepro.c:3218 elf32-v850.c:2147
+#: elf32-xstormy16.c:939 elf64-mmix.c:1594 elfxx-mips.c:9465
+#: elfxx-tilegx.c:3581
msgid "internal error: unsupported relocation error"
msgstr ""
#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930
-#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119
-#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739
-#: elf32-score7.c:2548 elf32-spu.c:5050
+#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3114
+#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2737
+#: elf32-score7.c:2545 elf32-spu.c:5052
msgid "internal error: dangerous error"
msgstr ""
-#: elf-m10200.c:462 elf-m10300.c:1591 elf32-avr.c:1233 elf32-bfin.c:3221
-#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934
-#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4114 elf32-h8300.c:521
-#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180
-#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:547
-#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403
-#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552
-#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534
+#: elf-m10200.c:462 elf-m10300.c:1580 elf32-avr.c:1233 elf32-bfin.c:3225
+#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2093 elf32-crx.c:934
+#: elf32-d10v.c:521 elf32-epiphany.c:571 elf32-fr30.c:621 elf32-frv.c:4117
+#: elf32-h8300.c:521 elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696
+#: elf32-lm32.c:1180 elf32-m32c.c:565 elf32-m32r.c:3118 elf32-m68hc1x.c:1150
+#: elf32-mep.c:547 elf32-microblaze.c:1243 elf32-moxie.c:294
+#: elf32-msp430.c:498 elf32-mt.c:403 elf32-openrisc.c:416 elf32-score.c:2746
+#: elf32-score7.c:2549 elf32-spu.c:5056 elf32-tilepro.c:3226 elf32-v850.c:2167
+#: elf32-xstormy16.c:947 elf64-mmix.c:1602 elfxx-tilegx.c:3589
msgid "internal error: unknown error"
msgstr ""
-#: elf-m10300.c:1515 elf32-arm.c:10365 elf32-i386.c:4107 elf32-m32r.c:2604
-#: elf32-m68k.c:4156 elf32-s390.c:3010 elf32-sh.c:4223 elf32-xtensa.c:3067
-#: elf64-s390.c:2985 elf64-sh64.c:1636 elf64-x86-64.c:3882 elfxx-sparc.c:3807
+#: elf-m10300.c:1507 elf32-arm.c:10419 elf32-i386.c:4264 elf32-m32r.c:2599
+#: elf32-m68k.c:4156 elf32-s390.c:3003 elf32-sh.c:4218 elf32-tilepro.c:3117
+#: elf32-xtensa.c:3066 elf64-s390.c:2978 elf64-sh64.c:1640 elf64-x86-64.c:4110
+#: elfxx-sparc.c:3835 elfxx-tilegx.c:3500
msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
msgstr ""
-#: elf-m10300.c:1580
+#: elf-m10300.c:1572
msgid ""
"error: inappropriate relocation type for shared library (did you forget -"
"fpic?)"
msgstr ""
-#: elf-m10300.c:1583
-msgid ""
-"%B: error: taking the address of protected function '%s' cannot be done when "
-"making a shared library"
-msgstr ""
-
-#: elf-m10300.c:1586
+#: elf-m10300.c:1575
msgid "internal error: suspicious relocation type used in shared library"
msgstr ""
-#: elf-m10300.c:4384 elf32-arm.c:12743 elf32-cr16.c:2451 elf32-cris.c:3044
-#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2043 elf32-lm32.c:1868
-#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-s390.c:1652 elf32-sh.c:2931
-#: elf32-tic6x.c:2160 elf32-vax.c:1040 elf64-s390.c:1635 elf64-sh64.c:3377
-#: elf64-x86-64.c:1985 elfxx-sparc.c:2104
+#: elf-m10300.c:4372 elf32-arm.c:12800 elf32-cr16.c:2451 elf32-cris.c:3057
+#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2182 elf32-lm32.c:1868
+#: elf32-m32r.c:1927 elf32-m68k.c:3253 elf32-s390.c:1652 elf32-sh.c:2931
+#: elf32-tic6x.c:2162 elf32-tilepro.c:1940 elf32-vax.c:1041 elf64-s390.c:1635
+#: elf64-sh64.c:3381 elf64-x86-64.c:2176 elfxx-sparc.c:2119
+#: elfxx-tilegx.c:2261
#, c-format
msgid "dynamic variable `%s' is zero size"
msgstr ""
@@ -756,7 +759,7 @@ msgstr ""
msgid "%B: no group info for section %A"
msgstr ""
-#: elf.c:737 elf.c:3121 elflink.c:10144
+#: elf.c:737 elf.c:3121 elflink.c:10135
msgid "%B: warning: sh_link not set for section `%A'"
msgstr ""
@@ -857,421 +860,423 @@ msgstr ""
msgid "%B: section %A lma %#lx adjusted to %#lx"
msgstr ""
-#: elf.c:4774
+#: elf.c:4776
msgid "%B: section `%A' can't be allocated in segment %d"
msgstr ""
-#: elf.c:4822
+#: elf.c:4824
msgid "%B: warning: allocated section `%s' not in segment"
msgstr ""
-#: elf.c:5322
+#: elf.c:5324
msgid "%B: symbol `%s' required but not present"
msgstr ""
-#: elf.c:5660
+#: elf.c:5662
msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n"
msgstr ""
-#: elf.c:6688
+#: elf.c:6692
#, c-format
msgid ""
"Unable to find equivalent output section for symbol '%s' from section '%s'"
msgstr ""
-#: elf.c:7684
+#: elf.c:7692
msgid "%B: unsupported relocation type %s"
msgstr ""
-#: elf32-arm.c:3590
+#: elf32-arm.c:3617
msgid ""
"%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: Thumb call to ARM"
msgstr ""
-#: elf32-arm.c:3637
+#: elf32-arm.c:3664
msgid ""
"%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: ARM call to Thumb"
msgstr ""
-#: elf32-arm.c:3849 elf32-arm.c:5286
+#: elf32-arm.c:3878 elf32-arm.c:5315
#, c-format
msgid "%s: cannot create stub entry %s"
msgstr ""
-#: elf32-arm.c:5402
+#: elf32-arm.c:5431
#, c-format
msgid "unable to find THUMB glue '%s' for '%s'"
msgstr ""
-#: elf32-arm.c:5438
+#: elf32-arm.c:5467
#, c-format
msgid "unable to find ARM glue '%s' for '%s'"
msgstr ""
-#: elf32-arm.c:5964
+#: elf32-arm.c:6005
msgid "%B: BE8 images only valid in big-endian mode."
msgstr ""
#. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:6194
+#: elf32-arm.c:6235
msgid ""
"%B: warning: selected VFP11 erratum workaround is not necessary for target "
"architecture"
msgstr ""
-#: elf32-arm.c:6738 elf32-arm.c:6758
+#: elf32-arm.c:6779 elf32-arm.c:6799
msgid "%B: unable to find VFP11 veneer `%s'"
msgstr ""
-#: elf32-arm.c:6806
+#: elf32-arm.c:6848
#, c-format
msgid "Invalid TARGET2 relocation type '%s'."
msgstr ""
-#: elf32-arm.c:6890
+#: elf32-arm.c:6933
msgid ""
"%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: thumb call to arm"
msgstr ""
-#: elf32-arm.c:7674
+#: elf32-arm.c:7717
msgid "%B(%A+0x%lx):unexpected Thumb instruction '0x%x' in TLS trampoline"
msgstr ""
-#: elf32-arm.c:7713
+#: elf32-arm.c:7756
msgid "%B(%A+0x%lx):unexpected ARM instruction '0x%x' in TLS trampoline"
msgstr ""
-#: elf32-arm.c:8166
+#: elf32-arm.c:8209
msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'."
msgstr ""
-#: elf32-arm.c:8575
+#: elf32-arm.c:8622
msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
msgstr ""
-#: elf32-arm.c:9408
+#: elf32-arm.c:9460
msgid ""
"%B(%A+0x%lx):unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC"
msgstr ""
-#: elf32-arm.c:9431
+#: elf32-arm.c:9483
msgid ""
"%B(%A+0x%lx):unexpected ARM instruction '0x%x' referenced by TLS_GOTDESC"
msgstr ""
-#: elf32-arm.c:9460
+#: elf32-arm.c:9512
msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"
msgstr ""
-#: elf32-arm.c:9675
+#: elf32-arm.c:9727
msgid ""
"%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group "
"relocations"
msgstr ""
-#: elf32-arm.c:9715 elf32-arm.c:9802 elf32-arm.c:9885 elf32-arm.c:9970
+#: elf32-arm.c:9767 elf32-arm.c:9854 elf32-arm.c:9937 elf32-arm.c:10022
msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"
msgstr ""
-#: elf32-arm.c:10209 elf32-sh.c:4112 elf64-sh64.c:1544
+#: elf32-arm.c:10261 elf32-sh.c:4103 elf64-sh64.c:1544
msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section"
msgstr ""
-#: elf32-arm.c:10320 elf32-m68k.c:4191 elf32-xtensa.c:2805
+#: elf32-arm.c:10372 elf32-m68k.c:4191 elf32-xtensa.c:2802
msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
msgstr ""
-#: elf32-arm.c:10321 elf32-m68k.c:4192 elf32-xtensa.c:2806
+#: elf32-arm.c:10373 elf32-m68k.c:4192 elf32-xtensa.c:2803
msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
msgstr ""
-#: elf32-arm.c:10399 elf32-tic6x.c:2751
+#: elf32-arm.c:10453 elf32-tic6x.c:2753
msgid "out of range"
msgstr ""
-#: elf32-arm.c:10403 elf32-tic6x.c:2755
+#: elf32-arm.c:10457 elf32-tic6x.c:2757
msgid "unsupported relocation"
msgstr ""
-#: elf32-arm.c:10411 elf32-tic6x.c:2763
+#: elf32-arm.c:10465 elf32-tic6x.c:2765
msgid "unknown error"
msgstr ""
-#: elf32-arm.c:10836
+#: elf32-arm.c:10890
msgid ""
"Warning: Clearing the interworking flag of %B because non-interworking code "
"in %B has been linked with it"
msgstr ""
-#: elf32-arm.c:10930
+#: elf32-arm.c:10984
msgid "%B: Unknown mandatory EABI object attribute %d"
msgstr ""
-#: elf32-arm.c:10938
+#: elf32-arm.c:10992
msgid "Warning: %B: Unknown EABI object attribute %d"
msgstr ""
-#: elf32-arm.c:11119
+#: elf32-arm.c:11173
msgid "error: %B: Unknown CPU architecture"
msgstr ""
-#: elf32-arm.c:11157
+#: elf32-arm.c:11211
msgid "error: %B: Conflicting CPU architectures %d/%d"
msgstr ""
-#: elf32-arm.c:11206
+#: elf32-arm.c:11260
msgid ""
"Error: %B has both the current and legacy Tag_MPextension_use attributes"
msgstr ""
-#: elf32-arm.c:11231
+#: elf32-arm.c:11285
msgid "error: %B uses VFP register arguments, %B does not"
msgstr ""
-#: elf32-arm.c:11376
+#: elf32-arm.c:11430
msgid "error: %B: unable to merge virtualization attributes with %B"
msgstr ""
-#: elf32-arm.c:11402
+#: elf32-arm.c:11456
msgid "error: %B: Conflicting architecture profiles %c/%c"
msgstr ""
-#: elf32-arm.c:11503
+#: elf32-arm.c:11557
msgid "Warning: %B: Conflicting platform configuration"
msgstr ""
-#: elf32-arm.c:11512
+#: elf32-arm.c:11566
msgid "error: %B: Conflicting use of R9"
msgstr ""
-#: elf32-arm.c:11524
+#: elf32-arm.c:11578
msgid "error: %B: SB relative addressing conflicts with use of R9"
msgstr ""
-#: elf32-arm.c:11537
+#: elf32-arm.c:11591
msgid ""
"warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; "
"use of wchar_t values across objects may fail"
msgstr ""
-#: elf32-arm.c:11568
+#: elf32-arm.c:11622
msgid ""
"warning: %B uses %s enums yet the output is to use %s enums; use of enum "
"values across objects may fail"
msgstr ""
-#: elf32-arm.c:11580
+#: elf32-arm.c:11634
msgid "error: %B uses iWMMXt register arguments, %B does not"
msgstr ""
-#: elf32-arm.c:11597
+#: elf32-arm.c:11651
msgid "error: fp16 format mismatch between %B and %B"
msgstr ""
-#: elf32-arm.c:11621
+#: elf32-arm.c:11675
msgid "DIV usage mismatch between %B and %B"
msgstr ""
-#: elf32-arm.c:11640
+#: elf32-arm.c:11694
msgid "%B has has both the current and legacy Tag_MPextension_use attributes"
msgstr ""
#. Ignore init flag - it may not be set, despite the flags field
#. containing valid data.
#. Ignore init flag - it may not be set, despite the flags field containing valid data.
-#: elf32-arm.c:11728 elf32-bfin.c:5075 elf32-cris.c:4162 elf32-m68hc1x.c:1282
-#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528
-#: elfxx-mips.c:12857
+#: elf32-arm.c:11782 elf32-bfin.c:5079 elf32-cris.c:4169 elf32-m68hc1x.c:1282
+#: elf32-m68k.c:1236 elf32-score.c:3994 elf32-score7.c:3800 elf32-vax.c:529
+#: elfxx-mips.c:14103
#, c-format
msgid "private flags = %lx:"
msgstr ""
-#: elf32-arm.c:11737
+#: elf32-arm.c:11791
#, c-format
msgid " [interworking enabled]"
msgstr ""
-#: elf32-arm.c:11745
+#: elf32-arm.c:11799
#, c-format
msgid " [VFP float format]"
msgstr ""
-#: elf32-arm.c:11747
+#: elf32-arm.c:11801
#, c-format
msgid " [Maverick float format]"
msgstr ""
-#: elf32-arm.c:11749
+#: elf32-arm.c:11803
#, c-format
msgid " [FPA float format]"
msgstr ""
-#: elf32-arm.c:11758
+#: elf32-arm.c:11812
#, c-format
msgid " [new ABI]"
msgstr ""
-#: elf32-arm.c:11761
+#: elf32-arm.c:11815
#, c-format
msgid " [old ABI]"
msgstr ""
-#: elf32-arm.c:11764
+#: elf32-arm.c:11818
#, c-format
msgid " [software FP]"
msgstr ""
-#: elf32-arm.c:11773
+#: elf32-arm.c:11827
#, c-format
msgid " [Version1 EABI]"
msgstr ""
-#: elf32-arm.c:11776 elf32-arm.c:11787
+#: elf32-arm.c:11830 elf32-arm.c:11841
#, c-format
msgid " [sorted symbol table]"
msgstr ""
-#: elf32-arm.c:11778 elf32-arm.c:11789
+#: elf32-arm.c:11832 elf32-arm.c:11843
#, c-format
msgid " [unsorted symbol table]"
msgstr ""
-#: elf32-arm.c:11784
+#: elf32-arm.c:11838
#, c-format
msgid " [Version2 EABI]"
msgstr ""
-#: elf32-arm.c:11792
+#: elf32-arm.c:11846
#, c-format
msgid " [dynamic symbols use segment index]"
msgstr ""
-#: elf32-arm.c:11795
+#: elf32-arm.c:11849
#, c-format
msgid " [mapping symbols precede others]"
msgstr ""
-#: elf32-arm.c:11802
+#: elf32-arm.c:11856
#, c-format
msgid " [Version3 EABI]"
msgstr ""
-#: elf32-arm.c:11806
+#: elf32-arm.c:11860
#, c-format
msgid " [Version4 EABI]"
msgstr ""
-#: elf32-arm.c:11810
+#: elf32-arm.c:11864
#, c-format
msgid " [Version5 EABI]"
msgstr ""
-#: elf32-arm.c:11813
+#: elf32-arm.c:11867
#, c-format
msgid " [BE8]"
msgstr ""
-#: elf32-arm.c:11816
+#: elf32-arm.c:11870
#, c-format
msgid " [LE8]"
msgstr ""
-#: elf32-arm.c:11822
+#: elf32-arm.c:11876
#, c-format
msgid " <EABI version unrecognised>"
msgstr ""
-#: elf32-arm.c:11829
+#: elf32-arm.c:11883
#, c-format
msgid " [relocatable executable]"
msgstr ""
-#: elf32-arm.c:11832
+#: elf32-arm.c:11886
#, c-format
msgid " [has entry point]"
msgstr ""
-#: elf32-arm.c:11837
+#: elf32-arm.c:11891
#, c-format
msgid "<Unrecognised flag bits set>"
msgstr ""
-#: elf32-arm.c:12135 elf32-i386.c:1323 elf32-s390.c:1000 elf32-tic6x.c:2827
-#: elf32-xtensa.c:1009 elf64-s390.c:960 elf64-x86-64.c:1172 elfxx-sparc.c:1370
+#: elf32-arm.c:12189 elf32-i386.c:1461 elf32-s390.c:1000 elf32-tic6x.c:2829
+#: elf32-tilepro.c:1336 elf32-xtensa.c:1009 elf64-s390.c:960
+#: elf64-x86-64.c:1364 elfxx-sparc.c:1371 elfxx-tilegx.c:1586
msgid "%B: bad symbol index: %d"
msgstr ""
-#: elf32-arm.c:12283 elf64-x86-64.c:1370 elf64-x86-64.c:1541 elfxx-mips.c:7949
+#: elf32-arm.c:12337 elf64-x86-64.c:1561 elf64-x86-64.c:1732 elfxx-mips.c:8223
msgid ""
"%B: relocation %s against `%s' can not be used when making a shared object; "
"recompile with -fPIC"
msgstr ""
-#: elf32-arm.c:13412
+#: elf32-arm.c:13460
#, c-format
msgid "Errors encountered processing file %s"
msgstr ""
-#: elf32-arm.c:14795
+#: elf32-arm.c:14837
msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location"
msgstr ""
#. There's not much we can do apart from complain if this
#. happens.
-#: elf32-arm.c:14822
+#: elf32-arm.c:14864
msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)"
msgstr ""
-#: elf32-arm.c:14916 elf32-arm.c:14938
+#: elf32-arm.c:14958 elf32-arm.c:14980
msgid "%B: error: VFP11 veneer out of range"
msgstr ""
-#: elf32-arm.c:15477
+#: elf32-arm.c:15518
msgid "error: %B is already in final BE8 format"
msgstr ""
-#: elf32-arm.c:15553
+#: elf32-arm.c:15594
msgid ""
"error: Source object %B has EABI version %d, but target %B has EABI version "
"%d"
msgstr ""
-#: elf32-arm.c:15569
+#: elf32-arm.c:15610
msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
msgstr ""
-#: elf32-arm.c:15594
+#: elf32-arm.c:15635
msgid "error: %B uses VFP instructions, whereas %B does not"
msgstr ""
-#: elf32-arm.c:15598
+#: elf32-arm.c:15639
msgid "error: %B uses FPA instructions, whereas %B does not"
msgstr ""
-#: elf32-arm.c:15608
+#: elf32-arm.c:15649
msgid "error: %B uses Maverick instructions, whereas %B does not"
msgstr ""
-#: elf32-arm.c:15612
+#: elf32-arm.c:15653
msgid "error: %B does not use Maverick instructions, whereas %B does"
msgstr ""
-#: elf32-arm.c:15631
+#: elf32-arm.c:15672
msgid "error: %B uses software FP, whereas %B uses hardware FP"
msgstr ""
-#: elf32-arm.c:15635
+#: elf32-arm.c:15676
msgid "error: %B uses hardware FP, whereas %B uses software FP"
msgstr ""
-#: elf32-avr.c:1229 elf32-bfin.c:3217 elf32-cris.c:2085 elf32-fr30.c:617
-#: elf32-frv.c:4110 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692
-#: elf32-m32c.c:561 elf32-mep.c:543 elf32-moxie.c:290 elf32-msp430.c:494
-#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949
-#: elf64-mmix.c:1530
+#: elf32-avr.c:1229 elf32-bfin.c:3221 elf32-cris.c:2089 elf32-epiphany.c:567
+#: elf32-fr30.c:617 elf32-frv.c:4113 elf32-i860.c:1219 elf32-ip2k.c:1479
+#: elf32-iq2000.c:692 elf32-m32c.c:561 elf32-mep.c:543 elf32-moxie.c:290
+#: elf32-msp430.c:494 elf32-mt.c:399 elf32-openrisc.c:412 elf32-tilepro.c:3222
+#: elf32-v850.c:2151 elf32-xstormy16.c:943 elf64-mmix.c:1598
+#: elfxx-tilegx.c:3585
msgid "internal error: dangerous relocation"
msgstr ""
@@ -1283,181 +1288,181 @@ msgstr ""
msgid "relocation should be even number"
msgstr ""
-#: elf32-bfin.c:1591
+#: elf32-bfin.c:1593
msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
msgstr ""
-#: elf32-bfin.c:1624 elf32-i386.c:4150 elf32-m68k.c:4233 elf32-s390.c:3062
-#: elf64-s390.c:3037 elf64-x86-64.c:3923
+#: elf32-bfin.c:1626 elf32-i386.c:4307 elf32-m68k.c:4233 elf32-s390.c:3055
+#: elf64-s390.c:3030 elf64-x86-64.c:4151
msgid "%B(%A+0x%lx): reloc against `%s': error %d"
msgstr ""
-#: elf32-bfin.c:2723
+#: elf32-bfin.c:2725
msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend"
msgstr ""
-#: elf32-bfin.c:2737
+#: elf32-bfin.c:2741
msgid "relocation references symbol not defined in the module"
msgstr ""
-#: elf32-bfin.c:2834
+#: elf32-bfin.c:2838
msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
msgstr ""
-#: elf32-bfin.c:2875 elf32-bfin.c:2998
+#: elf32-bfin.c:2879 elf32-bfin.c:3002
msgid "cannot emit fixups in read-only section"
msgstr ""
-#: elf32-bfin.c:2906 elf32-bfin.c:3036 elf32-lm32.c:1103 elf32-sh.c:5021
+#: elf32-bfin.c:2910 elf32-bfin.c:3040 elf32-lm32.c:1103 elf32-sh.c:5016
msgid "cannot emit dynamic relocations in read-only section"
msgstr ""
-#: elf32-bfin.c:2956
+#: elf32-bfin.c:2960
msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
msgstr ""
-#: elf32-bfin.c:3121
+#: elf32-bfin.c:3125
msgid "relocations between different segments are not supported"
msgstr ""
-#: elf32-bfin.c:3122
+#: elf32-bfin.c:3126
msgid "warning: relocation references a different segment"
msgstr ""
-#: elf32-bfin.c:4967
+#: elf32-bfin.c:4971
msgid "%B: unsupported relocation type %i"
msgstr ""
-#: elf32-bfin.c:5121 elf32-frv.c:6805
+#: elf32-bfin.c:5125 elf32-frv.c:6808
#, c-format
msgid "%s: cannot link non-fdpic object file into fdpic executable"
msgstr ""
-#: elf32-bfin.c:5125 elf32-frv.c:6809
+#: elf32-bfin.c:5129 elf32-frv.c:6812
#, c-format
msgid "%s: cannot link fdpic object file into non-fdpic executable"
msgstr ""
-#: elf32-bfin.c:5279
+#: elf32-bfin.c:5283
#, c-format
msgid "*** check this relocation %s"
msgstr ""
-#: elf32-cris.c:1172
+#: elf32-cris.c:1176
msgid "%B, section %A: unresolvable relocation %s against symbol `%s'"
msgstr ""
-#: elf32-cris.c:1234
+#: elf32-cris.c:1238
msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'"
msgstr ""
-#: elf32-cris.c:1236
+#: elf32-cris.c:1240
msgid "%B, section %A: No PLT for relocation %s against symbol `%s'"
msgstr ""
-#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718
-#: elf32-cris.c:1871 elf32-tic6x.c:2660
+#: elf32-cris.c:1246 elf32-cris.c:1379 elf32-cris.c:1639 elf32-cris.c:1722
+#: elf32-cris.c:1875 elf32-tic6x.c:2662
msgid "[whose name is lost]"
msgstr ""
-#: elf32-cris.c:1361 elf32-tic6x.c:2645
+#: elf32-cris.c:1365 elf32-tic6x.c:2647
msgid ""
"%B, section %A: relocation %s with non-zero addend %d against local symbol"
msgstr ""
-#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 elf32-tic6x.c:2653
+#: elf32-cris.c:1373 elf32-cris.c:1716 elf32-cris.c:1869 elf32-tic6x.c:2655
msgid ""
"%B, section %A: relocation %s with non-zero addend %d against symbol `%s'"
msgstr ""
-#: elf32-cris.c:1395
+#: elf32-cris.c:1399
msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'"
msgstr ""
-#: elf32-cris.c:1411
+#: elf32-cris.c:1415
msgid "%B, section %A: relocation %s with no GOT created"
msgstr ""
#. We shouldn't get here for GCC-emitted code.
-#: elf32-cris.c:1626
+#: elf32-cris.c:1630
msgid ""
"%B, section %A: relocation %s has an undefined reference to `%s', perhaps a "
"declaration mixup?"
msgstr ""
-#: elf32-cris.c:1998
+#: elf32-cris.c:2002
msgid ""
"%B, section %A: relocation %s is not allowed for symbol: `%s' which is "
"defined outside the program, perhaps a declaration mixup?"
msgstr ""
-#: elf32-cris.c:2051
+#: elf32-cris.c:2055
msgid "(too many global variables for -fpic: recompile with -fPIC)"
msgstr ""
-#: elf32-cris.c:2058
+#: elf32-cris.c:2062
msgid ""
"(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or "
"-mno-small-tls)"
msgstr ""
-#: elf32-cris.c:3248
+#: elf32-cris.c:3261
msgid ""
"%B, section %A:\n"
" v10/v32 compatible object %s must not contain a PIC relocation"
msgstr ""
-#: elf32-cris.c:3353
+#: elf32-cris.c:3366
msgid ""
"%B, section %A:\n"
" relocation %s not valid in a shared object; typically an option mixup, "
"recompile with -fPIC"
msgstr ""
-#: elf32-cris.c:3567
+#: elf32-cris.c:3580
msgid ""
"%B, section %A:\n"
" relocation %s should not be used in a shared object; recompile with -fPIC"
msgstr ""
-#: elf32-cris.c:3992
+#: elf32-cris.c:4002
msgid ""
"%B, section `%A', to symbol `%s':\n"
" relocation %s should not be used in a shared object; recompile with -fPIC"
msgstr ""
-#: elf32-cris.c:4111
+#: elf32-cris.c:4118
msgid "Unexpected machine number"
msgstr ""
-#: elf32-cris.c:4165
+#: elf32-cris.c:4172
#, c-format
msgid " [symbols have a _ prefix]"
msgstr ""
-#: elf32-cris.c:4168
+#: elf32-cris.c:4175
#, c-format
msgid " [v10 and v32]"
msgstr ""
-#: elf32-cris.c:4171
+#: elf32-cris.c:4178
#, c-format
msgid " [v32]"
msgstr ""
-#: elf32-cris.c:4216
+#: elf32-cris.c:4223
msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols"
msgstr ""
-#: elf32-cris.c:4217
+#: elf32-cris.c:4224
msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols"
msgstr ""
-#: elf32-cris.c:4236
+#: elf32-cris.c:4243
msgid "%B contains CRIS v32 code, incompatible with previous objects"
msgstr ""
-#: elf32-cris.c:4238
+#: elf32-cris.c:4245
msgid "%B contains non-CRIS-v32 code, incompatible with previous objects"
msgstr ""
@@ -1471,6 +1476,11 @@ msgstr ""
msgid "BFD Link Error: jump (PC rel26) to section (%s) not supported"
msgstr ""
+#. Only if it's not an unresolved symbol.
+#: elf32-epiphany.c:563 elf32-ip2k.c:1475
+msgid "unsupported relocation between data/insn address spaces"
+msgstr ""
+
#: elf32-frv.c:1509 elf32-frv.c:1658
msgid "relocation requires zero addend"
msgstr ""
@@ -1479,107 +1489,107 @@ msgstr ""
msgid "%H: relocation to `%s+%v' may have caused the error above\n"
msgstr ""
-#: elf32-frv.c:2902
+#: elf32-frv.c:2905
msgid "%H: relocation references symbol not defined in the module\n"
msgstr ""
-#: elf32-frv.c:2978
+#: elf32-frv.c:2981
msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
msgstr ""
-#: elf32-frv.c:3019
+#: elf32-frv.c:3022
msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
msgstr ""
-#: elf32-frv.c:3090
+#: elf32-frv.c:3093
msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
msgstr ""
-#: elf32-frv.c:3127
+#: elf32-frv.c:3130
msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
msgstr ""
-#: elf32-frv.c:3174
+#: elf32-frv.c:3177
msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
msgstr ""
-#: elf32-frv.c:3258
+#: elf32-frv.c:3261
msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
msgstr ""
-#: elf32-frv.c:3312
+#: elf32-frv.c:3315
msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
msgstr ""
-#: elf32-frv.c:3342
+#: elf32-frv.c:3345
msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
msgstr ""
-#: elf32-frv.c:3371
+#: elf32-frv.c:3374
msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
msgstr ""
-#: elf32-frv.c:3401
+#: elf32-frv.c:3404
msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
msgstr ""
-#: elf32-frv.c:3446
+#: elf32-frv.c:3449
msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
msgstr ""
-#: elf32-frv.c:3473
+#: elf32-frv.c:3476
msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
msgstr ""
-#: elf32-frv.c:3594
+#: elf32-frv.c:3597
msgid "%H: R_FRV_FUNCDESC references dynamic symbol with nonzero addend\n"
msgstr ""
-#: elf32-frv.c:3635 elf32-frv.c:3757
+#: elf32-frv.c:3638 elf32-frv.c:3760
msgid "%H: cannot emit fixups in read-only section\n"
msgstr ""
-#: elf32-frv.c:3666 elf32-frv.c:3800
+#: elf32-frv.c:3669 elf32-frv.c:3803
msgid "%H: cannot emit dynamic relocations in read-only section\n"
msgstr ""
-#: elf32-frv.c:3715
+#: elf32-frv.c:3718
msgid ""
"%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend\n"
msgstr ""
-#: elf32-frv.c:3971
+#: elf32-frv.c:3974
msgid "%H: reloc against `%s' references a different segment\n"
msgstr ""
-#: elf32-frv.c:4121
+#: elf32-frv.c:4124
msgid "%H: reloc against `%s': %s\n"
msgstr ""
-#: elf32-frv.c:6397
+#: elf32-frv.c:6400
msgid "%B: unsupported relocation type %i\n"
msgstr ""
-#: elf32-frv.c:6719
+#: elf32-frv.c:6722
#, c-format
msgid ""
"%s: compiled with %s and linked with modules that use non-pic relocations"
msgstr ""
-#: elf32-frv.c:6772 elf32-iq2000.c:845 elf32-m32c.c:807
+#: elf32-frv.c:6775 elf32-iq2000.c:845 elf32-m32c.c:807
#, c-format
msgid "%s: compiled with %s and linked with modules compiled with %s"
msgstr ""
-#: elf32-frv.c:6784
+#: elf32-frv.c:6787
#, c-format
msgid ""
"%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x"
"%lx)"
msgstr ""
-#: elf32-frv.c:6834 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576
-#: elf32-rx.c:2937
+#: elf32-frv.c:6837 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576
+#: elf32-rx.c:3001
#, c-format
msgid "private flags = 0x%lx:"
msgstr ""
@@ -1588,7 +1598,7 @@ msgstr ""
msgid "%B: Relocations in generic ELF (EM: %d)"
msgstr ""
-#: elf32-hppa.c:850 elf32-hppa.c:3610
+#: elf32-hppa.c:850 elf32-hppa.c:3598
msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections"
msgstr ""
@@ -1598,85 +1608,87 @@ msgid ""
"with -fPIC"
msgstr ""
-#: elf32-hppa.c:2803
+#: elf32-hppa.c:2791
msgid "%B: duplicate export stub %s"
msgstr ""
-#: elf32-hppa.c:3449
+#: elf32-hppa.c:3437
msgid ""
"%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"
msgstr ""
-#: elf32-hppa.c:4296
+#: elf32-hppa.c:4284
msgid "%B(%A+0x%lx): cannot handle %s for %s"
msgstr ""
-#: elf32-hppa.c:4608
+#: elf32-hppa.c:4603
msgid ".got section not immediately after .plt section"
msgstr ""
#. Unknown relocation.
-#: elf32-i386.c:372 elf32-m68k.c:383 elf32-ppc.c:1675 elf32-s390.c:379
-#: elf32-tic6x.c:2682 elf64-ppc.c:2285 elf64-s390.c:403 elf64-x86-64.c:243
+#: elf32-i386.c:373 elf32-m68k.c:384 elf32-ppc.c:1676 elf32-s390.c:379
+#: elf32-tic6x.c:2684 elf64-ppc.c:2300 elf64-s390.c:403 elf64-x86-64.c:265
msgid "%B: invalid relocation type %d"
msgstr ""
-#: elf32-i386.c:1266 elf64-x86-64.c:1116
+#: elf32-i386.c:1404 elf64-x86-64.c:1308
msgid ""
"%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed"
msgstr ""
-#: elf32-i386.c:1411 elf32-i386.c:3090 elf64-x86-64.c:1296 elf64-x86-64.c:2909
-#: elfxx-sparc.c:3077
+#: elf32-i386.c:1549 elf32-i386.c:3244 elf64-x86-64.c:1487 elf64-x86-64.c:3125
+#: elfxx-sparc.c:3083
msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
msgstr ""
-#: elf32-i386.c:1573 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182
-#: elf64-s390.c:1151 elfxx-sparc.c:1547
+#: elf32-i386.c:1711 elf32-s390.c:1182 elf32-sh.c:6362 elf32-tilepro.c:1434
+#: elf32-xtensa.c:1182 elf64-s390.c:1151 elfxx-sparc.c:1548
+#: elfxx-tilegx.c:1701
msgid "%B: `%s' accessed both as normal and thread local symbol"
msgstr ""
-#: elf32-i386.c:2405 elf64-x86-64.c:2320
+#: elf32-i386.c:2539 elf64-x86-64.c:2506
msgid "%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"
msgstr ""
-#: elf32-i386.c:2496 elf64-x86-64.c:2407
+#: elf32-i386.c:2629 elf64-x86-64.c:2593
msgid "%P: %B: warning: relocation in readonly section `%A'.\n"
msgstr ""
-#: elf32-i386.c:2932
+#: elf32-i386.c:3086 elf32-tilepro.c:2557 elfxx-tilegx.c:2871
msgid "%B: unrecognized relocation (0x%x) in section `%A'"
msgstr ""
-#: elf32-i386.c:3339 elf64-x86-64.c:3295
+#: elf32-i386.c:3494 elf64-x86-64.c:3513
msgid "hidden symbol"
msgstr ""
-#: elf32-i386.c:3342 elf64-x86-64.c:3298
+#: elf32-i386.c:3497 elf64-x86-64.c:3516
msgid "internal symbol"
msgstr ""
-#: elf32-i386.c:3345 elf64-x86-64.c:3301
+#: elf32-i386.c:3500 elf64-x86-64.c:3519
msgid "protected symbol"
msgstr ""
-#: elf32-i386.c:3348 elf64-x86-64.c:3304
+#: elf32-i386.c:3503 elf64-x86-64.c:3522
msgid "symbol"
msgstr ""
-#: elf32-i386.c:3353
+#: elf32-i386.c:3508
msgid ""
"%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when "
"making a shared object"
msgstr ""
-#: elf32-i386.c:3363
+#: elf32-i386.c:3518
msgid ""
"%B: relocation R_386_GOTOFF against protected function `%s' can not be used "
"when making a shared object"
msgstr ""
-#: elf32-i386.c:4660 elf64-x86-64.c:4378
+#: elf32-i386.c:4839 elf32-tilepro.c:3467 elf64-x86-64.c:4609
+#: elfxx-tilegx.c:3847
#, c-format
msgid "discarded output section: `%A'"
msgstr ""
@@ -1700,11 +1712,6 @@ msgstr ""
msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
msgstr ""
-#. Only if it's not an unresolved symbol.
-#: elf32-ip2k.c:1475
-msgid "unsupported relocation between data/insn address spaces"
-msgstr ""
-
#: elf32-iq2000.c:858 elf32-m32c.c:819
#, c-format
msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
@@ -1726,30 +1733,30 @@ msgstr ""
msgid "SDA relocation when _SDA_BASE_ not defined"
msgstr ""
-#: elf32-m32r.c:3048
+#: elf32-m32r.c:3043
msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)"
msgstr ""
-#: elf32-m32r.c:3576
+#: elf32-m32r.c:3571
msgid "%B: Instruction set mismatch with previous modules"
msgstr ""
-#: elf32-m32r.c:3597
+#: elf32-m32r.c:3592
#, c-format
msgid "private flags = %lx"
msgstr ""
-#: elf32-m32r.c:3602
+#: elf32-m32r.c:3597
#, c-format
msgid ": m32r instructions"
msgstr ""
-#: elf32-m32r.c:3603
+#: elf32-m32r.c:3598
#, c-format
msgid ": m32rx instructions"
msgstr ""
-#: elf32-m32r.c:3604
+#: elf32-m32r.c:3599
#, c-format
msgid ": m32r2 instructions"
msgstr ""
@@ -1791,7 +1798,7 @@ msgstr ""
msgid "%B: linking files compiled for HCS12 with others compiled for HC12"
msgstr ""
-#: elf32-m68hc1x.c:1257 elf32-ppc.c:4214 elf64-sparc.c:705 elfxx-mips.c:12719
+#: elf32-m68hc1x.c:1257 elf32-ppc.c:4227 elf64-sparc.c:706 elfxx-mips.c:13965
msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
msgstr ""
@@ -1840,19 +1847,19 @@ msgstr ""
msgid " [memory=flat]"
msgstr ""
-#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7311 vms-alpha.c:7326
+#: elf32-m68k.c:1251 elf32-m68k.c:1252 vms-alpha.c:7314 vms-alpha.c:7329
msgid "unknown"
msgstr ""
-#: elf32-m68k.c:1714
+#: elf32-m68k.c:1715
msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d"
msgstr ""
-#: elf32-m68k.c:1720
+#: elf32-m68k.c:1721
msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d"
msgstr ""
-#: elf32-m68k.c:3959
+#: elf32-m68k.c:3957
msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object"
msgstr ""
@@ -1898,7 +1905,8 @@ msgstr ""
msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
msgstr ""
-#: elf32-microblaze.c:1155 elfxx-sparc.c:3451
+#: elf32-microblaze.c:1155 elf32-tilepro.c:2891 elfxx-sparc.c:3457
+#: elfxx-tilegx.c:3230
msgid "%B: probably compiled without -fPIC?"
msgstr ""
@@ -1906,224 +1914,235 @@ msgstr ""
msgid "%B: bad relocation section name `%s'"
msgstr ""
-#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888
+#: elf32-mips.c:1549 elf64-mips.c:2683 elfn32-mips.c:2487
msgid "literal relocation occurs for an external symbol"
msgstr ""
-#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127
-#: elfn32-mips.c:1929
+#: elf32-mips.c:1596 elf32-score.c:570 elf32-score7.c:469 elf64-mips.c:2726
+#: elfn32-mips.c:2528
msgid "32bits gp relative relocation occurs for an external symbol"
msgstr ""
-#: elf32-ppc.c:1740
+#: elf32-ppc.c:1741
#, c-format
msgid "generic linker can't handle %s"
msgstr ""
-#: elf32-ppc.c:2183
+#: elf32-ppc.c:2184
msgid "corrupt %s section in %B"
msgstr ""
-#: elf32-ppc.c:2202
+#: elf32-ppc.c:2203
msgid "unable to read in %s section from %B"
msgstr ""
-#: elf32-ppc.c:2243
+#: elf32-ppc.c:2244
msgid "warning: unable to set size of %s section in %B"
msgstr ""
-#: elf32-ppc.c:2293
+#: elf32-ppc.c:2294
msgid "failed to allocate space for new APUinfo section."
msgstr ""
-#: elf32-ppc.c:2312
+#: elf32-ppc.c:2313
msgid "failed to compute new APUinfo section."
msgstr ""
-#: elf32-ppc.c:2315
+#: elf32-ppc.c:2316
msgid "failed to install new APUinfo section."
msgstr ""
-#: elf32-ppc.c:3343
+#: elf32-ppc.c:3356
msgid "%B: relocation %s cannot be used when making a shared object"
msgstr ""
#. It does not make sense to have a procedure linkage
#. table entry for a local symbol.
-#: elf32-ppc.c:3687
-msgid "%H: %s reloc against local symbol\n"
+#: elf32-ppc.c:3700
+msgid "%P: %H: %s reloc against local symbol\n"
msgstr ""
-#: elf32-ppc.c:4026 elf32-ppc.c:4041 elfxx-mips.c:12423 elfxx-mips.c:12449
-#: elfxx-mips.c:12471 elfxx-mips.c:12497
+#: elf32-ppc.c:4039 elf32-ppc.c:4054 elfxx-mips.c:13651 elfxx-mips.c:13677
+#: elfxx-mips.c:13699 elfxx-mips.c:13725
msgid "Warning: %B uses hard float, %B uses soft float"
msgstr ""
-#: elf32-ppc.c:4029 elf32-ppc.c:4033
+#: elf32-ppc.c:4042 elf32-ppc.c:4046
msgid ""
"Warning: %B uses double-precision hard float, %B uses single-precision hard "
"float"
msgstr ""
-#: elf32-ppc.c:4037
+#: elf32-ppc.c:4050
msgid "Warning: %B uses soft float, %B uses single-precision hard float"
msgstr ""
-#: elf32-ppc.c:4044 elf32-ppc.c:4048 elfxx-mips.c:12403 elfxx-mips.c:12407
+#: elf32-ppc.c:4057 elf32-ppc.c:4061 elfxx-mips.c:13631 elfxx-mips.c:13635
msgid "Warning: %B uses unknown floating point ABI %d"
msgstr ""
-#: elf32-ppc.c:4090 elf32-ppc.c:4094
+#: elf32-ppc.c:4103 elf32-ppc.c:4107
msgid "Warning: %B uses unknown vector ABI %d"
msgstr ""
-#: elf32-ppc.c:4098
+#: elf32-ppc.c:4111
msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\""
msgstr ""
-#: elf32-ppc.c:4115 elf32-ppc.c:4118
+#: elf32-ppc.c:4128 elf32-ppc.c:4131
msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory"
msgstr ""
-#: elf32-ppc.c:4121 elf32-ppc.c:4125
+#: elf32-ppc.c:4134 elf32-ppc.c:4138
msgid "Warning: %B uses unknown small structure return convention %d"
msgstr ""
-#: elf32-ppc.c:4179
+#: elf32-ppc.c:4192
msgid ""
"%B: compiled with -mrelocatable and linked with modules compiled normally"
msgstr ""
-#: elf32-ppc.c:4187
+#: elf32-ppc.c:4200
msgid ""
"%B: compiled normally and linked with modules compiled with -mrelocatable"
msgstr ""
-#: elf32-ppc.c:4275
-msgid "Using bss-plt due to %B"
+#: elf32-ppc.c:4309
+msgid "%P: bss-plt forced due to %B\n"
+msgstr ""
+
+#: elf32-ppc.c:4312
+msgid "%P: bss-plt forced by profiling\n"
msgstr ""
#. Uh oh, we didn't find the expected call. We
#. could just mark this symbol to exclude it
#. from tls optimization but it's safer to skip
#. the entire optimization.
-#: elf32-ppc.c:4771 elf64-ppc.c:7778
+#: elf32-ppc.c:4809 elf64-ppc.c:7858
msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
msgstr ""
-#: elf32-ppc.c:5006 elf64-ppc.c:6494
-#, c-format
-msgid "dynamic variable `%s' is zero size\n"
+#: elf32-ppc.c:5044 elf64-ppc.c:6528
+msgid "%P: dynamic variable `%s' is zero size\n"
msgstr ""
-#: elf32-ppc.c:7204 elf64-ppc.c:12431
-msgid "%B: unknown relocation type %d for symbol %s\n"
+#: elf32-ppc.c:7263 elf64-ppc.c:12675
+msgid "%P: %B: unknown relocation type %d for symbol %s\n"
msgstr ""
-#: elf32-ppc.c:7465
-msgid "%H: non-zero addend on %s reloc against `%s'\n"
+#: elf32-ppc.c:7524
+msgid "%P: %H: non-zero addend on %s reloc against `%s'\n"
msgstr ""
-#: elf32-ppc.c:7661 elf64-ppc.c:12936
-msgid "%H: relocation %s for indirect function %s unsupported\n"
+#: elf32-ppc.c:7720 elf64-ppc.c:13181
+msgid "%P: %H: relocation %s for indirect function %s unsupported\n"
msgstr ""
-#: elf32-ppc.c:7889 elf32-ppc.c:7919 elf32-ppc.c:7966
+#: elf32-ppc.c:7948 elf32-ppc.c:7978 elf32-ppc.c:8025
msgid ""
-"%B: the target (%s) of a %s relocation is in the wrong output section (%s)\n"
+"%P: %B: the target (%s) of a %s relocation is in the wrong output section "
+"(%s)\n"
msgstr ""
-#: elf32-ppc.c:8038
-msgid "%B: relocation %s is not yet supported for symbol %s\n"
+#: elf32-ppc.c:8097
+msgid "%P: %B: relocation %s is not yet supported for symbol %s\n"
msgstr ""
-#: elf32-ppc.c:8097 elf64-ppc.c:13237
-msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+#: elf32-ppc.c:8158 elf64-ppc.c:13467
+msgid "%P: %H: unresolvable %s relocation against symbol `%s'\n"
msgstr ""
-#: elf32-ppc.c:8144 elf64-ppc.c:13282
-msgid "%H: %s reloc against `%s': error %d\n"
+#: elf32-ppc.c:8205 elf64-ppc.c:13512
+msgid "%P: %H: %s reloc against `%s': error %d\n"
msgstr ""
-#: elf32-ppc.c:8635
-#, c-format
-msgid "%s not defined in linker created %s\n"
+#: elf32-ppc.c:8696
+msgid "%P: %s not defined in linker created %s\n"
msgstr ""
-#: elf32-rx.c:553
+#: elf32-rx.c:563
msgid "%B:%A: Warning: deprecated Red Hat reloc "
msgstr ""
-#: elf32-rx.c:1095
+#. Check for unsafe relocs in PID mode. These are any relocs where
+#. an absolute address is being computed. There are special cases
+#. for relocs against symbols that are known to be referenced in
+#. crt0.o before the PID base address register has been initialised.
+#: elf32-rx.c:581
+msgid "%B(%A): unsafe PID relocation %s at 0x%08lx (against %s in %s)"
+msgstr ""
+
+#: elf32-rx.c:1157
msgid "Warning: RX_SYM reloc with an unknown symbol"
msgstr ""
-#: elf32-rx.c:1260
+#: elf32-rx.c:1324
msgid "%B(%A): error: call to undefined function '%s'"
msgstr ""
-#: elf32-rx.c:1274
+#: elf32-rx.c:1338
msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area"
msgstr ""
-#: elf32-rx.c:1278
+#: elf32-rx.c:1342
msgid "%B(%A): internal error: out of range error"
msgstr ""
-#: elf32-rx.c:1282
+#: elf32-rx.c:1346
msgid "%B(%A): internal error: unsupported relocation error"
msgstr ""
-#: elf32-rx.c:1286
+#: elf32-rx.c:1350
msgid "%B(%A): internal error: dangerous relocation"
msgstr ""
-#: elf32-rx.c:1290
+#: elf32-rx.c:1354
msgid "%B(%A): internal error: unknown error"
msgstr ""
-#: elf32-rx.c:2940
+#: elf32-rx.c:3004
#, c-format
msgid " [64-bit doubles]"
msgstr ""
-#: elf32-rx.c:2942
+#: elf32-rx.c:3006
#, c-format
msgid " [dsp]"
msgstr ""
-#: elf32-s390.c:2209 elf64-s390.c:2196
+#: elf32-s390.c:2200 elf64-s390.c:2187
msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s"
msgstr ""
-#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3324
+#: elf32-score.c:1520 elf32-score7.c:1379 elfxx-mips.c:3435
msgid "not enough GOT space for local GOT entries"
msgstr ""
-#: elf32-score.c:2744
+#: elf32-score.c:2742
msgid "address not word align"
msgstr ""
-#: elf32-score.c:2829 elf32-score7.c:2634
+#: elf32-score.c:2827 elf32-score7.c:2631
#, c-format
msgid "%s: Malformed reloc detected for section %s"
msgstr ""
-#: elf32-score.c:2880 elf32-score7.c:2685
+#: elf32-score.c:2878 elf32-score7.c:2682
msgid "%B: CALL15 reloc at 0x%lx not against global symbol"
msgstr ""
-#: elf32-score.c:3999 elf32-score7.c:3806
+#: elf32-score.c:3997 elf32-score7.c:3803
#, c-format
msgid " [pic]"
msgstr ""
-#: elf32-score.c:4003 elf32-score7.c:3810
+#: elf32-score.c:4001 elf32-score7.c:3807
#, c-format
msgid " [fix dep]"
msgstr ""
-#: elf32-score.c:4045 elf32-score7.c:3852
+#: elf32-score.c:4043 elf32-score7.c:3849
msgid "%B: warning: linking PIC files with non-PIC files"
msgstr ""
@@ -2171,76 +2190,76 @@ msgstr ""
msgid "%B: 0x%lx: fatal: reloc overflow while relaxing"
msgstr ""
-#: elf32-sh.c:4057 elf64-sh64.c:1514
+#: elf32-sh.c:4048 elf64-sh64.c:1514
msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
msgstr ""
-#: elf32-sh.c:4304
+#: elf32-sh.c:4299
msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation"
msgstr ""
-#: elf32-sh.c:4337 elf32-sh.c:4352
+#: elf32-sh.c:4332 elf32-sh.c:4347
msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"
msgstr ""
-#: elf32-sh.c:4366
+#: elf32-sh.c:4361
msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32"
msgstr ""
-#: elf32-sh.c:4380
+#: elf32-sh.c:4375
msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32"
msgstr ""
-#: elf32-sh.c:4524 elf32-sh.c:4994
+#: elf32-sh.c:4519 elf32-sh.c:4989
msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section"
msgstr ""
-#: elf32-sh.c:5101
+#: elf32-sh.c:5096
msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\""
msgstr ""
-#: elf32-sh.c:5574
+#: elf32-sh.c:5569
#, c-format
msgid "%X%C: relocation to \"%s\" references a different segment\n"
msgstr ""
-#: elf32-sh.c:5580
+#: elf32-sh.c:5575
#, c-format
msgid "%C: warning: relocation to \"%s\" references a different segment\n"
msgstr ""
-#: elf32-sh.c:6358 elf32-sh.c:6441
+#: elf32-sh.c:6353 elf32-sh.c:6436
msgid "%B: `%s' accessed both as normal and FDPIC symbol"
msgstr ""
-#: elf32-sh.c:6363 elf32-sh.c:6445
+#: elf32-sh.c:6358 elf32-sh.c:6440
msgid "%B: `%s' accessed both as FDPIC and thread local symbol"
msgstr ""
-#: elf32-sh.c:6393
+#: elf32-sh.c:6388
msgid "%B: Function descriptor relocation with non-zero addend"
msgstr ""
-#: elf32-sh.c:6629 elf64-alpha.c:4648
+#: elf32-sh.c:6624 elf64-alpha.c:4652
msgid "%B: TLS local exec code cannot be linked into shared objects"
msgstr ""
-#: elf32-sh64.c:223 elf64-sh64.c:2314
+#: elf32-sh64.c:223 elf64-sh64.c:2318
#, c-format
msgid "%s: compiled as 32-bit object and %s is 64-bit"
msgstr ""
-#: elf32-sh64.c:226 elf64-sh64.c:2317
+#: elf32-sh64.c:226 elf64-sh64.c:2321
#, c-format
msgid "%s: compiled as 64-bit object and %s is 32-bit"
msgstr ""
-#: elf32-sh64.c:228 elf64-sh64.c:2319
+#: elf32-sh64.c:228 elf64-sh64.c:2323
#, c-format
msgid "%s: object size does not match that of target %s"
msgstr ""
-#: elf32-sh64.c:451 elf64-sh64.c:2833
+#: elf32-sh64.c:451 elf64-sh64.c:2837
#, c-format
msgid "%s: encountered datalabel symbol in input"
msgstr ""
@@ -2272,11 +2291,11 @@ msgstr ""
msgid "%s: could not write out sorted .cranges entries"
msgstr ""
-#: elf32-sparc.c:89
+#: elf32-sparc.c:90
msgid "%B: compiled for a 64 bit system and target is 32 bit"
msgstr ""
-#: elf32-sparc.c:102
+#: elf32-sparc.c:103
msgid "%B: linking little endian files with big endian files"
msgstr ""
@@ -2408,7 +2427,7 @@ msgstr ""
msgid "fatal error while creating .fixup"
msgstr ""
-#: elf32-spu.c:5006
+#: elf32-spu.c:5008
msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'"
msgstr ""
@@ -2420,43 +2439,43 @@ msgstr ""
msgid "warning: generating a shared library containing non-PID code"
msgstr ""
-#: elf32-tic6x.c:2539
+#: elf32-tic6x.c:2541
msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
msgstr ""
-#: elf32-tic6x.c:2759
+#: elf32-tic6x.c:2761
msgid "dangerous relocation"
msgstr ""
-#: elf32-tic6x.c:3740
+#: elf32-tic6x.c:3733
msgid "%B: error: unknown mandatory EABI object attribute %d"
msgstr ""
-#: elf32-tic6x.c:3748
+#: elf32-tic6x.c:3741
msgid "%B: warning: unknown EABI object attribute %d"
msgstr ""
-#: elf32-tic6x.c:3860 elf32-tic6x.c:3868
+#: elf32-tic6x.c:3853 elf32-tic6x.c:3861
msgid "error: %B requires more stack alignment than %B preserves"
msgstr ""
-#: elf32-tic6x.c:3878 elf32-tic6x.c:3887
+#: elf32-tic6x.c:3871 elf32-tic6x.c:3880
msgid "error: unknown Tag_ABI_array_object_alignment value in %B"
msgstr ""
-#: elf32-tic6x.c:3896 elf32-tic6x.c:3905
+#: elf32-tic6x.c:3889 elf32-tic6x.c:3898
msgid "error: unknown Tag_ABI_array_object_align_expected value in %B"
msgstr ""
-#: elf32-tic6x.c:3913 elf32-tic6x.c:3920
+#: elf32-tic6x.c:3906 elf32-tic6x.c:3913
msgid "error: %B requires more array alignment than %B preserves"
msgstr ""
-#: elf32-tic6x.c:3942
+#: elf32-tic6x.c:3935
msgid "warning: %B and %B differ in wchar_t size"
msgstr ""
-#: elf32-tic6x.c:3960
+#: elf32-tic6x.c:3953
msgid "warning: %B and %B differ in whether code is compiled for DSBT"
msgstr ""
@@ -2540,44 +2559,44 @@ msgstr ""
msgid "v850e2v3 architecture"
msgstr ""
-#: elf32-vax.c:531
+#: elf32-vax.c:532
#, c-format
msgid " [nonpic]"
msgstr ""
-#: elf32-vax.c:534
+#: elf32-vax.c:535
#, c-format
msgid " [d-float]"
msgstr ""
-#: elf32-vax.c:537
+#: elf32-vax.c:538
#, c-format
msgid " [g-float]"
msgstr ""
-#: elf32-vax.c:654
+#: elf32-vax.c:655
#, c-format
msgid ""
"%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of "
"%ld"
msgstr ""
-#: elf32-vax.c:1587
+#: elf32-vax.c:1585
#, c-format
msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
msgstr ""
-#: elf32-vax.c:1714
+#: elf32-vax.c:1712
#, c-format
msgid "%s: warning: %s relocation against symbol `%s' from %s section"
msgstr ""
-#: elf32-vax.c:1720
+#: elf32-vax.c:1718
#, c-format
msgid "%s: warning: %s relocation to 0x%x from %s section"
msgstr ""
-#: elf32-xstormy16.c:451 elf32-ia64.c:2342 elf64-ia64.c:2342
+#: elf32-xstormy16.c:451 elf32-ia64.c:2336 elf64-ia64.c:2336
msgid "non-zero addend in @fptr reloc"
msgstr ""
@@ -2585,50 +2604,50 @@ msgstr ""
msgid "%B(%A): invalid property table"
msgstr ""
-#: elf32-xtensa.c:2780
+#: elf32-xtensa.c:2777
msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)"
msgstr ""
-#: elf32-xtensa.c:2859 elf32-xtensa.c:2980
+#: elf32-xtensa.c:2856 elf32-xtensa.c:2977
msgid "dynamic relocation in read-only section"
msgstr ""
-#: elf32-xtensa.c:2956
+#: elf32-xtensa.c:2953
msgid "TLS relocation invalid without dynamic sections"
msgstr ""
-#: elf32-xtensa.c:3173
+#: elf32-xtensa.c:3172
msgid "internal inconsistency in size of .got.loc section"
msgstr ""
-#: elf32-xtensa.c:3486
+#: elf32-xtensa.c:3485
msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x"
msgstr ""
-#: elf32-xtensa.c:4715 elf32-xtensa.c:4723
+#: elf32-xtensa.c:4714 elf32-xtensa.c:4722
msgid "Attempt to convert L32R/CALLX to CALL failed"
msgstr ""
-#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525
+#: elf32-xtensa.c:6332 elf32-xtensa.c:6408 elf32-xtensa.c:7524
msgid ""
"%B(%A+0x%lx): could not decode instruction; possible configuration mismatch"
msgstr ""
-#: elf32-xtensa.c:7265
+#: elf32-xtensa.c:7264
msgid ""
"%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY "
"relocation; possible configuration mismatch"
msgstr ""
-#: elf32-xtensa.c:9024
+#: elf32-xtensa.c:9023
msgid "invalid relocation address"
msgstr ""
-#: elf32-xtensa.c:9073
+#: elf32-xtensa.c:9072
msgid "overflow after relaxation"
msgstr ""
-#: elf32-xtensa.c:10205
+#: elf32-xtensa.c:10204
msgid "%B(%A+0x%lx): unexpected fix for %s relocation"
msgstr ""
@@ -2636,27 +2655,27 @@ msgstr ""
msgid "GPDISP relocation did not find ldah and lda instructions"
msgstr ""
-#: elf64-alpha.c:2495
+#: elf64-alpha.c:2497
msgid "%B: .got subsegment exceeds 64K (size %d)"
msgstr ""
-#: elf64-alpha.c:4392 elf64-alpha.c:4404
+#: elf64-alpha.c:4387 elf64-alpha.c:4399
msgid "%B: gp-relative relocation against dynamic symbol %s"
msgstr ""
-#: elf64-alpha.c:4430 elf64-alpha.c:4565
+#: elf64-alpha.c:4425 elf64-alpha.c:4565
msgid "%B: pc-relative relocation against dynamic symbol %s"
msgstr ""
-#: elf64-alpha.c:4458
+#: elf64-alpha.c:4453
msgid "%B: change in gp: BRSGP %s"
msgstr ""
-#: elf64-alpha.c:4483
+#: elf64-alpha.c:4478
msgid "<unknown>"
msgstr ""
-#: elf64-alpha.c:4488
+#: elf64-alpha.c:4483
msgid "%B: !samegp reloc against symbol without .prologue: %s"
msgstr ""
@@ -2668,24 +2687,38 @@ msgstr ""
msgid "%B: pc-relative relocation against undefined weak symbol %s"
msgstr ""
-#: elf64-alpha.c:4632
+#: elf64-alpha.c:4636
msgid "%B: dtp-relative relocation against dynamic symbol %s"
msgstr ""
-#: elf64-alpha.c:4655
+#: elf64-alpha.c:4659
msgid "%B: tp-relative relocation against dynamic symbol %s"
msgstr ""
-#: elf64-hppa.c:2094
+#: elf64-hppa.c:2083
#, c-format
msgid "stub entry for %s cannot load .plt, dp offset = %ld"
msgstr ""
-#: elf64-hppa.c:3292
-msgid "%B(%A+0x%lx): cannot reach %s"
+#: elf64-hppa.c:3275
+msgid "%B(%A+0x"
+msgstr ""
+
+#: elf64-mmix.c:1034
+msgid ""
+"invalid input relocation when producing non-ELF, non-mmo format output.\n"
+" Please use the objcopy program to convert from ELF or mmo,\n"
+" or assemble using \"-no-expand\" (for gcc, \"-Wa,-no-expand\""
+msgstr ""
+
+#: elf64-mmix.c:1218
+msgid ""
+"invalid input relocation when producing non-ELF, non-mmo format output.\n"
+" Please use the objcopy program to convert from ELF or mmo,\n"
+" or compile using the gcc-option \"-mno-base-addresses\"."
msgstr ""
-#: elf64-mmix.c:1177
+#: elf64-mmix.c:1244
#, c-format
msgid ""
"%s: Internal inconsistency error for value for\n"
@@ -2693,135 +2726,133 @@ msgid ""
"%08lx\n"
msgstr ""
-#: elf64-mmix.c:1607
+#: elf64-mmix.c:1670
#, c-format
msgid ""
"%s: base-plus-offset relocation against register symbol: (unknown) in %s"
msgstr ""
-#: elf64-mmix.c:1612
+#: elf64-mmix.c:1675
#, c-format
msgid "%s: base-plus-offset relocation against register symbol: %s in %s"
msgstr ""
-#: elf64-mmix.c:1656
+#: elf64-mmix.c:1719
#, c-format
msgid "%s: register relocation against non-register symbol: (unknown) in %s"
msgstr ""
-#: elf64-mmix.c:1661
+#: elf64-mmix.c:1724
#, c-format
msgid "%s: register relocation against non-register symbol: %s in %s"
msgstr ""
-#: elf64-mmix.c:1698
+#: elf64-mmix.c:1761
#, c-format
msgid "%s: directive LOCAL valid only with a register or absolute value"
msgstr ""
-#: elf64-mmix.c:1726
+#: elf64-mmix.c:1789
#, c-format
msgid ""
"%s: LOCAL directive: Register $%ld is not a local register. First global "
"register is $%ld."
msgstr ""
-#: elf64-mmix.c:2190
+#: elf64-mmix.c:2253
#, c-format
msgid ""
"%s: Error: multiple definition of `%s'; start of %s is set in a earlier "
"linked file\n"
msgstr ""
-#: elf64-mmix.c:2248
+#: elf64-mmix.c:2311
msgid "Register section has contents\n"
msgstr ""
-#: elf64-mmix.c:2440
+#: elf64-mmix.c:2503
#, c-format
msgid ""
"Internal inconsistency: remaining %u != max %u.\n"
" Please report this bug."
msgstr ""
-#: elf64-ppc.c:2744 libbfd.c:1012
-msgid "%B: compiled for a big endian system and target is little endian"
-msgstr ""
-
-#: elf64-ppc.c:2747 libbfd.c:1014
-msgid "%B: compiled for a little endian system and target is big endian"
+#: elf64-ppc.c:4185
+msgid "%P: %B: cannot create stub entry %s\n"
msgstr ""
-#: elf64-ppc.c:4160
-msgid "%B: cannot create stub entry %s\n"
-msgstr ""
-
-#: elf64-ppc.c:6484
-#, c-format
+#: elf64-ppc.c:6518
msgid ""
-"copy reloc against `%s' requires lazy plt linking; avoid setting "
+"%P: copy reloc against `%s' requires lazy plt linking; avoid setting "
"LD_BIND_NOW=1 or upgrade gcc\n"
msgstr ""
-#: elf64-ppc.c:6912
-msgid "dynreloc miscount for %B, section %A\n"
+#: elf64-ppc.c:6788
+msgid "%B: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr ""
+
+#: elf64-ppc.c:6992
+msgid "%P: dynreloc miscount for %B, section %A\n"
msgstr ""
-#: elf64-ppc.c:6996
+#: elf64-ppc.c:7076
msgid "%B: .opd is not a regular array of opd entries"
msgstr ""
-#: elf64-ppc.c:7005
+#: elf64-ppc.c:7085
msgid "%B: unexpected reloc type %u in .opd section"
msgstr ""
-#: elf64-ppc.c:7026
+#: elf64-ppc.c:7106
msgid "%B: undefined sym `%s' in .opd section"
msgstr ""
-#: elf64-ppc.c:7584
+#: elf64-ppc.c:7664
msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
msgstr ""
-#: elf64-ppc.c:7929 elf64-ppc.c:8450
+#: elf64-ppc.c:8003 elf64-ppc.c:8564
#, c-format
msgid "%s defined on removed toc entry"
msgstr ""
-#: elf64-ppc.c:9474
-#, c-format
-msgid "cannot find opd entry toc for %s\n"
+#: elf64-ppc.c:8521
+msgid "%P: %H: %s relocation references optimized away TOC entry\n"
msgstr ""
-#: elf64-ppc.c:9556
-#, c-format
-msgid "long branch stub `%s' offset overflow\n"
+#: elf64-ppc.c:9598
+msgid "%P: cannot find opd entry toc for %s\n"
msgstr ""
-#: elf64-ppc.c:9615
-#, c-format
-msgid "can't find branch stub `%s'\n"
+#: elf64-ppc.c:9680
+msgid "%P: long branch stub `%s' offset overflow\n"
msgstr ""
-#: elf64-ppc.c:9677 elf64-ppc.c:9819
-#, c-format
-msgid "linkage table error against `%s'\n"
+#: elf64-ppc.c:9739
+msgid "%P: can't find branch stub `%s'\n"
msgstr ""
-#: elf64-ppc.c:9993
-#, c-format
-msgid "can't build branch stub `%s'\n"
+#: elf64-ppc.c:9801 elf64-ppc.c:9943
+msgid "%P: linkage table error against `%s'\n"
+msgstr ""
+
+#: elf64-ppc.c:10126
+msgid "%P: can't build branch stub `%s'\n"
msgstr ""
-#: elf64-ppc.c:10814
+#: elf64-ppc.c:10941
msgid "%B section %A exceeds stub group size"
msgstr ""
-#: elf64-ppc.c:11457
-msgid "stubs don't match calculated size\n"
+#: elf64-ppc.c:11666 elf64-ppc.c:11699
+msgid "%P: %s offset too large for .eh_frame sdata4 encoding"
msgstr ""
-#: elf64-ppc.c:11469
+#: elf64-ppc.c:11744
+msgid "%P: stubs don't match calculated size\n"
+msgstr ""
+
+#: elf64-ppc.c:11756
#, c-format
msgid ""
"linker stubs in %u group%s\n"
@@ -2832,106 +2863,106 @@ msgid ""
" plt call %lu"
msgstr ""
-#: elf64-ppc.c:11819
-msgid "%H: %s used with TLS symbol %s\n"
+#: elf64-ppc.c:12042
+msgid "%P: %H: %s used with TLS symbol %s\n"
msgstr ""
-#: elf64-ppc.c:11820
-msgid "%H: %s used with non-TLS symbol %s\n"
+#: elf64-ppc.c:12043
+msgid "%P: %H: %s used with non-TLS symbol %s\n"
msgstr ""
-#: elf64-ppc.c:12318
+#: elf64-ppc.c:12556
msgid ""
-"%H: automatic multiple TOCs not supported using your crt files; recompile "
-"with -mminimal-toc or upgrade gcc\n"
+"%P: %H: automatic multiple TOCs not supported using your crt files; "
+"recompile with -mminimal-toc or upgrade gcc\n"
msgstr ""
-#: elf64-ppc.c:12324
+#: elf64-ppc.c:12562
msgid ""
-"%H: sibling call optimization to `%s' does not allow automatic multiple "
+"%P: %H: sibling call optimization to `%s' does not allow automatic multiple "
"TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `"
"%s' extern\n"
msgstr ""
-#: elf64-ppc.c:13041
-msgid "%B: relocation %s is not supported for symbol %s\n"
+#: elf64-ppc.c:13286
+msgid "%P: %B: relocation %s is not supported for symbol %s\n"
msgstr ""
-#: elf64-ppc.c:13218
-msgid "%H: error: %s not a multiple of %u\n"
+#: elf64-ppc.c:13446
+msgid "%P: %H: error: %s not a multiple of %u\n"
msgstr ""
-#: elf64-sh64.c:1682
+#: elf64-sh64.c:1686
#, c-format
msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
msgstr ""
-#: elf64-sparc.c:445
+#: elf64-sparc.c:446
msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
msgstr ""
-#: elf64-sparc.c:465
+#: elf64-sparc.c:466
msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
msgstr ""
-#: elf64-sparc.c:488
+#: elf64-sparc.c:489
msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
msgstr ""
-#: elf64-sparc.c:533
+#: elf64-sparc.c:534
msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
msgstr ""
-#: elf64-sparc.c:686
+#: elf64-sparc.c:687
msgid "%B: linking UltraSPARC specific with HAL specific code"
msgstr ""
-#: elf64-x86-64.c:1236
+#: elf64-x86-64.c:1427
msgid "%B: relocation %s against symbol `%s' isn't supported in x32 mode"
msgstr ""
-#: elf64-x86-64.c:1465
+#: elf64-x86-64.c:1656
msgid "%B: '%s' accessed both as normal and thread local symbol"
msgstr ""
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:3150
msgid ""
"%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d"
msgstr ""
-#: elf64-x86-64.c:3193
+#: elf64-x86-64.c:3411
msgid ""
"%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be "
"used when making a shared object"
msgstr ""
-#: elf64-x86-64.c:3305
+#: elf64-x86-64.c:3523
msgid "; recompile with -fPIC"
msgstr ""
-#: elf64-x86-64.c:3310
+#: elf64-x86-64.c:3528
msgid ""
"%B: relocation %s against %s `%s' can not be used when making a shared object"
"%s"
msgstr ""
-#: elf64-x86-64.c:3312
+#: elf64-x86-64.c:3530
msgid ""
"%B: relocation %s against undefined %s `%s' can not be used when making a "
"shared object%s"
msgstr ""
-#: elfcode.h:827
+#: elfcode.h:767
#, c-format
msgid "warning: %s has a corrupt string table index - ignoring"
msgstr ""
-#: elfcode.h:1237
+#: elfcode.h:1177
#, c-format
msgid "%s: version count (%ld) does not match symbol count (%ld)"
msgstr ""
-#: elfcode.h:1491
+#: elfcode.h:1431
#, c-format
msgid "%s(%s): relocation %d has invalid symbol index %ld"
msgstr ""
@@ -2940,377 +2971,387 @@ msgstr ""
msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu."
msgstr ""
-#: elflink.c:1119
+#: elflink.c:1117
msgid ""
"%s: TLS definition in %B section %A mismatches non-TLS definition in %B "
"section %A"
msgstr ""
-#: elflink.c:1123
+#: elflink.c:1121
msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
msgstr ""
-#: elflink.c:1127
+#: elflink.c:1125
msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
msgstr ""
-#: elflink.c:1131
+#: elflink.c:1129
msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
msgstr ""
-#: elflink.c:1764
+#: elflink.c:1762
msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
msgstr ""
-#: elflink.c:2077
+#: elflink.c:2063
msgid "%B: version node not found for symbol %s"
msgstr ""
-#: elflink.c:2167
+#: elflink.c:2154
msgid ""
"%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'"
msgstr ""
-#: elflink.c:2178
+#: elflink.c:2165
msgid ""
"%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the "
"object file has no symbol table"
msgstr ""
-#: elflink.c:2368
+#: elflink.c:2355
msgid "%B: relocation size mismatch in %B section %A"
msgstr ""
-#: elflink.c:2663
+#: elflink.c:2639
#, c-format
msgid "warning: type and size of dynamic symbol `%s' are not defined"
msgstr ""
-#: elflink.c:3421
+#: elflink.c:3391
msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n"
msgstr ""
-#: elflink.c:4067
+#: elflink.c:4037
msgid "%B: %s: invalid version %u (max %d)"
msgstr ""
-#: elflink.c:4103
+#: elflink.c:4073
msgid "%B: %s: invalid needed version %d"
msgstr ""
-#: elflink.c:4299
+#: elflink.c:4269
msgid ""
"Warning: alignment %u of common symbol `%s' in %B is greater than the "
"alignment (%u) of its section %A"
msgstr ""
-#: elflink.c:4305
+#: elflink.c:4275
msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
msgstr ""
-#: elflink.c:4320
+#: elflink.c:4290
msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
msgstr ""
-#: elflink.c:4489
+#: elflink.c:4463
msgid "%B: undefined reference to symbol '%s'"
msgstr ""
-#: elflink.c:4492
+#: elflink.c:4466
msgid ""
"note: '%s' is defined in DSO %B so try adding it to the linker command line"
msgstr ""
-#: elflink.c:5795
+#: elflink.c:5781
#, c-format
msgid "%s: undefined version: %s"
msgstr ""
-#: elflink.c:5863
+#: elflink.c:5849
msgid "%B: .preinit_array section is not allowed in DSO"
msgstr ""
-#: elflink.c:7617
+#: elflink.c:7604
#, c-format
msgid "undefined %s reference in complex symbol: %s"
msgstr ""
-#: elflink.c:7771
+#: elflink.c:7758
#, c-format
msgid "unknown operator '%c' in complex symbol"
msgstr ""
-#: elflink.c:8110 elflink.c:8127 elflink.c:8164 elflink.c:8181
+#: elflink.c:8097 elflink.c:8114 elflink.c:8151 elflink.c:8168
msgid "%B: Unable to sort relocs - they are in more than one size"
msgstr ""
-#: elflink.c:8141 elflink.c:8195
+#: elflink.c:8128 elflink.c:8182
msgid "%B: Unable to sort relocs - they are of an unknown size"
msgstr ""
-#: elflink.c:8246
+#: elflink.c:8233
msgid "Not enough memory to sort relocations"
msgstr ""
-#: elflink.c:8439
+#: elflink.c:8426
msgid "%B: Too many sections: %d (>= %d)"
msgstr ""
-#: elflink.c:8686
+#: elflink.c:8675
msgid "%B: internal symbol `%s' in %B is referenced by DSO"
msgstr ""
-#: elflink.c:8688
+#: elflink.c:8677
msgid "%B: hidden symbol `%s' in %B is referenced by DSO"
msgstr ""
-#: elflink.c:8690
+#: elflink.c:8679
msgid "%B: local symbol `%s' in %B is referenced by DSO"
msgstr ""
-#: elflink.c:8785
+#: elflink.c:8776
msgid "%B: could not find output section %A for input section %A"
msgstr ""
-#: elflink.c:8908
+#: elflink.c:8899
msgid "%B: protected symbol `%s' isn't defined"
msgstr ""
-#: elflink.c:8910
+#: elflink.c:8901
msgid "%B: internal symbol `%s' isn't defined"
msgstr ""
-#: elflink.c:8912
+#: elflink.c:8903
msgid "%B: hidden symbol `%s' isn't defined"
msgstr ""
-#: elflink.c:9441
+#: elflink.c:9432
msgid "error: %B: size of section %A is not multiple of address size"
msgstr ""
-#: elflink.c:9488
+#: elflink.c:9479
msgid ""
"error: %B contains a reloc (0x%s) for section %A that references a non-"
"existent global symbol"
msgstr ""
-#: elflink.c:10223
+#: elflink.c:10214
msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
msgstr ""
-#: elflink.c:10228
+#: elflink.c:10219
#, c-format
msgid "%A has both ordered and unordered sections"
msgstr ""
-#: elflink.c:10793
+#: elflink.c:10784
msgid "%B: file class %s incompatible with %s"
msgstr ""
-#: elflink.c:11104 elflink.c:11148
+#: elflink.c:11093 elflink.c:11137
msgid "%B: could not find output section %s"
msgstr ""
-#: elflink.c:11109
+#: elflink.c:11098
#, c-format
msgid "warning: %s section has zero size"
msgstr ""
-#: elflink.c:11214
-msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n"
-msgstr ""
-
-#: elflink.c:11401
-msgid "%P%X: can not read symbols: %E\n"
+#: elflink.c:11143
+#, c-format
+msgid "warning: section '%s' is being made into a note"
msgstr ""
-#: elflink.c:11750
-msgid "Removing unused section '%s' in file '%B'"
+#: elflink.c:11212
+msgid "%P%X: read-only segment has dynamic relocations.\n"
msgstr ""
-#: elflink.c:11962
-msgid "Warning: gc-sections option ignored"
+#: elflink.c:11215
+msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n"
msgstr ""
-#: elflink.c:12511
-msgid "%B: ignoring duplicate section `%A'"
+#: elflink.c:11402
+msgid "%P%X: can not read symbols: %E\n"
msgstr ""
-#: elflink.c:12518 elflink.c:12525
-msgid "%B: duplicate section `%A' has different size"
+#: elflink.c:11792
+msgid "Removing unused section '%s' in file '%B'"
msgstr ""
-#: elflink.c:12533 elflink.c:12538
-msgid "%B: warning: could not read contents of section `%A'"
+#: elflink.c:11998
+msgid "Warning: gc-sections option ignored"
msgstr ""
-#: elflink.c:12542
-msgid "%B: warning: duplicate section `%A' has different contents"
+#: elflink.c:12277
+#, c-format
+msgid "Unrecognized INPUT_SECTION_FLAG %s\n"
msgstr ""
-#: elflink.c:12643 linker.c:3086
-msgid "%F%P: already_linked_table: %E\n"
+#: elfxx-mips.c:1234
+msgid "static procedure (no name)"
msgstr ""
-#: elfxx-mips.c:1221
-msgid "static procedure (no name)"
+#: elfxx-mips.c:5259
+msgid "MIPS16 and microMIPS functions cannot call each other"
msgstr ""
-#: elfxx-mips.c:5628
+#: elfxx-mips.c:5856
msgid ""
"%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider "
"recompiling with interlinking enabled."
msgstr ""
-#: elfxx-mips.c:6288 elfxx-mips.c:6511
+#: elfxx-mips.c:6519 elfxx-mips.c:6742
msgid "%B: Warning: bad `%s' option size %u smaller than its header"
msgstr ""
-#: elfxx-mips.c:7262 elfxx-mips.c:7387
+#: elfxx-mips.c:7495 elfxx-mips.c:7620
msgid "%B: Warning: cannot determine the target function for stub section `%s'"
msgstr ""
-#: elfxx-mips.c:7516
+#: elfxx-mips.c:7749
msgid "%B: Malformed reloc detected for section %s"
msgstr ""
-#: elfxx-mips.c:7556
+#: elfxx-mips.c:7801
msgid "%B: GOT reloc at 0x%lx not expected in executables"
msgstr ""
-#: elfxx-mips.c:7678
+#: elfxx-mips.c:7930
msgid "%B: CALL16 reloc at 0x%lx not against global symbol"
msgstr ""
-#: elfxx-mips.c:8372
+#: elfxx-mips.c:8645
#, c-format
msgid "non-dynamic relocations refer to dynamic symbol %s"
msgstr ""
-#: elfxx-mips.c:9075
+#: elfxx-mips.c:9347
msgid ""
"%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `"
"%A'"
msgstr ""
-#: elfxx-mips.c:9214
+#: elfxx-mips.c:9486
msgid ""
"small-data section exceeds 64KB; lower small-data size limit (see option -G)"
msgstr ""
-#: elfxx-mips.c:12038
+#: elfxx-mips.c:9505
+msgid "JALX to a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:13266
#, c-format
msgid "%s: illegal section name `%s'"
msgstr ""
-#: elfxx-mips.c:12417 elfxx-mips.c:12443
+#: elfxx-mips.c:13645 elfxx-mips.c:13671
msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float"
msgstr ""
-#: elfxx-mips.c:12429 elfxx-mips.c:12485
+#: elfxx-mips.c:13657 elfxx-mips.c:13713
msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64"
msgstr ""
-#: elfxx-mips.c:12455 elfxx-mips.c:12491
+#: elfxx-mips.c:13683 elfxx-mips.c:13719
msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64"
msgstr ""
-#: elfxx-mips.c:12533
+#: elfxx-mips.c:13761
msgid "%B: endianness incompatible with that of the selected emulation"
msgstr ""
-#: elfxx-mips.c:12544
+#: elfxx-mips.c:13772
msgid "%B: ABI is incompatible with that of the selected emulation"
msgstr ""
-#: elfxx-mips.c:12628
+#: elfxx-mips.c:13856
msgid "%B: warning: linking abicalls files with non-abicalls files"
msgstr ""
-#: elfxx-mips.c:12645
+#: elfxx-mips.c:13873
msgid "%B: linking 32-bit code with 64-bit code"
msgstr ""
-#: elfxx-mips.c:12673
+#: elfxx-mips.c:13901
msgid "%B: linking %s module with previous %s modules"
msgstr ""
-#: elfxx-mips.c:12696
+#: elfxx-mips.c:13924
msgid "%B: ABI mismatch: linking %s module with previous %s modules"
msgstr ""
-#: elfxx-mips.c:12860
+#: elfxx-mips.c:13948
+msgid "%B: ASE mismatch: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:14106
#, c-format
msgid " [abi=O32]"
msgstr ""
-#: elfxx-mips.c:12862
+#: elfxx-mips.c:14108
#, c-format
msgid " [abi=O64]"
msgstr ""
-#: elfxx-mips.c:12864
+#: elfxx-mips.c:14110
#, c-format
msgid " [abi=EABI32]"
msgstr ""
-#: elfxx-mips.c:12866
+#: elfxx-mips.c:14112
#, c-format
msgid " [abi=EABI64]"
msgstr ""
-#: elfxx-mips.c:12868
+#: elfxx-mips.c:14114
#, c-format
msgid " [abi unknown]"
msgstr ""
-#: elfxx-mips.c:12870
+#: elfxx-mips.c:14116
#, c-format
msgid " [abi=N32]"
msgstr ""
-#: elfxx-mips.c:12872
+#: elfxx-mips.c:14118
#, c-format
msgid " [abi=64]"
msgstr ""
-#: elfxx-mips.c:12874
+#: elfxx-mips.c:14120
#, c-format
msgid " [no abi set]"
msgstr ""
-#: elfxx-mips.c:12895
+#: elfxx-mips.c:14141
#, c-format
msgid " [unknown ISA]"
msgstr ""
-#: elfxx-mips.c:12906
+#: elfxx-mips.c:14155
#, c-format
msgid " [not 32bitmode]"
msgstr ""
-#: elfxx-sparc.c:595
+#: elfxx-sparc.c:596
#, c-format
msgid "invalid relocation type %d"
msgstr ""
-#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452
+#: elfxx-tilegx.c:3952
+msgid "%B: Cannot link together %s and %s objects."
+msgstr ""
+
+#: i386linux.c:451 m68klinux.c:456 sparclinux.c:450
#, c-format
msgid "Output file requires shared library `%s'\n"
msgstr ""
-#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460
+#: i386linux.c:459 m68klinux.c:464 sparclinux.c:458
#, c-format
msgid "Output file requires shared library `%s.so.%s'\n"
msgstr ""
-#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706
-#: sparclinux.c:650 sparclinux.c:700
+#: i386linux.c:648 i386linux.c:698 m68klinux.c:656 m68klinux.c:704
+#: sparclinux.c:648 sparclinux.c:698
#, c-format
msgid "Symbol %s not defined for fixups\n"
msgstr ""
-#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724
+#: i386linux.c:722 m68klinux.c:728 sparclinux.c:722
msgid "Warning: fixup count mismatch\n"
msgstr ""
@@ -3381,6 +3422,14 @@ msgstr ""
msgid "%B: unable to get decompressed section %A"
msgstr ""
+#: libbfd.c:1012
+msgid "%B: compiled for a big endian system and target is little endian"
+msgstr ""
+
+#: libbfd.c:1014
+msgid "%B: compiled for a little endian system and target is big endian"
+msgstr ""
+
#: libbfd.c:1043
#, c-format
msgid "Deprecated %s called at %s line %d in %s\n"
@@ -3391,140 +3440,148 @@ msgstr ""
msgid "Deprecated %s called\n"
msgstr ""
-#: linker.c:1859
+#: linker.c:1872
msgid "%B: indirect symbol `%s' to `%s' is a loop"
msgstr ""
-#: linker.c:2726
+#: linker.c:2736
#, c-format
msgid "Attempt to do relocatable link with %s input and %s output"
msgstr ""
-#: linker.c:3053
-msgid "%B: warning: ignoring duplicate section `%A'\n"
+#: linker.c:3021
+msgid "%B: ignoring duplicate section `%A'\n"
msgstr ""
-#: linker.c:3067
-msgid "%B: warning: duplicate section `%A' has different size\n"
+#: linker.c:3030 linker.c:3039
+msgid "%B: duplicate section `%A' has different size\n"
msgstr ""
-#: mach-o.c:381
+#: linker.c:3047 linker.c:3052
+msgid "%B: could not read contents of section `%A'\n"
+msgstr ""
+
+#: linker.c:3056
+msgid "%B: duplicate section `%A' has different contents\n"
+msgstr ""
+
+#: mach-o.c:407
msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
msgstr ""
-#: mach-o.c:1253
+#: mach-o.c:1301
#, c-format
msgid "unable to write unknown load command 0x%lx"
msgstr ""
-#: mach-o.c:1654
+#: mach-o.c:1789
#, c-format
msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %lu"
msgstr ""
-#: mach-o.c:1671
+#: mach-o.c:1807
#, c-format
-msgid "bfd_mach_o_read_symtab_symbol: symbol name out of range (%lu >= %lu)"
+msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %lu)"
msgstr ""
-#: mach-o.c:1756
+#: mach-o.c:1892
#, c-format
msgid ""
"bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d "
"(max %lu): setting to undefined"
msgstr ""
-#: mach-o.c:1764
+#: mach-o.c:1900
#, c-format
msgid ""
"bfd_mach_o_read_symtab_symbol: symbol \"%s\" is unsupported 'indirect' "
"reference: setting to undefined"
msgstr ""
-#: mach-o.c:1770
+#: mach-o.c:1906
#, c-format
msgid ""
"bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x"
"%x: setting to undefined"
msgstr ""
-#: mach-o.c:1840
+#: mach-o.c:1979
msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
msgstr ""
-#: mach-o.c:1874
+#: mach-o.c:2014
#, c-format
msgid "bfd_mach_o_read_dysymtab_symbol: unable to read %lu bytes at %lu"
msgstr ""
-#: mach-o.c:2556
+#: mach-o.c:2734
#, c-format
msgid "unable to read unknown load command 0x%lx"
msgstr ""
-#: mach-o.c:2736
+#: mach-o.c:2915
#, c-format
msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
msgstr ""
-#: mach-o.c:2832
+#: mach-o.c:3011
#, c-format
msgid "unknown header byte-order value 0x%lx"
msgstr ""
-#: mach-o.c:3402
+#: mach-o.c:3577
msgid "Mach-O header:\n"
msgstr ""
-#: mach-o.c:3403
+#: mach-o.c:3578
#, c-format
msgid " magic : %08lx\n"
msgstr ""
-#: mach-o.c:3404
+#: mach-o.c:3579
#, c-format
msgid " cputype : %08lx (%s)\n"
msgstr ""
-#: mach-o.c:3406
+#: mach-o.c:3581
#, c-format
msgid " cpusubtype: %08lx\n"
msgstr ""
-#: mach-o.c:3407
+#: mach-o.c:3582
#, c-format
msgid " filetype : %08lx (%s)\n"
msgstr ""
-#: mach-o.c:3410
+#: mach-o.c:3585
#, c-format
msgid " ncmds : %08lx (%lu)\n"
msgstr ""
-#: mach-o.c:3411
+#: mach-o.c:3586
#, c-format
msgid " sizeofcmds: %08lx\n"
msgstr ""
-#: mach-o.c:3412
+#: mach-o.c:3587
#, c-format
msgid " flags : %08lx ("
msgstr ""
-#: mach-o.c:3414 vms-alpha.c:7671
+#: mach-o.c:3589 vms-alpha.c:7674
msgid ")\n"
msgstr ""
-#: mach-o.c:3415
+#: mach-o.c:3590
#, c-format
msgid " reserved : %08x\n"
msgstr ""
-#: mach-o.c:3425
+#: mach-o.c:3600
msgid "Segments and Sections:\n"
msgstr ""
-#: mach-o.c:3426
+#: mach-o.c:3601
msgid " #: Segment name Section name Address\n"
msgstr ""
@@ -3705,7 +3762,7 @@ msgstr ""
msgid "%B: bad pair/reflo after refhi\n"
msgstr ""
-#: pef.c:519
+#: pef.c:520
#, c-format
msgid "bfd_pef_scan: unknown architecture 0x%lx"
msgstr ""
@@ -3741,21 +3798,21 @@ msgstr ""
msgid "%B: Unrecognised import name type; %x"
msgstr ""
-#: peicode.h:1162
+#: peicode.h:1166
msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive"
msgstr ""
-#: peicode.h:1174
+#: peicode.h:1178
msgid ""
"%B: Recognised but unhandled machine type (0x%x) in Import Library Format "
"archive"
msgstr ""
-#: peicode.h:1192
+#: peicode.h:1196
msgid "%B: size field is zero in Import Library Format header"
msgstr ""
-#: peicode.h:1223
+#: peicode.h:1227
msgid "%B: string not null terminated in ILF object file."
msgstr ""
@@ -3808,6 +3865,10 @@ msgstr ""
msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
msgstr ""
+#: reloc.c:6160
+msgid "INPUT_SECTION_FLAGS are not supported.\n"
+msgstr ""
+
#: rs6000-core.c:448
#, c-format
msgid "%s: warning core file truncated"
@@ -3909,1821 +3970,1825 @@ msgstr ""
msgid "SEC_RELOC with no relocs in section %s"
msgstr ""
-#: vms-alpha.c:3822 vms-alpha.c:4053
+#: vms-alpha.c:3822 vms-alpha.c:4049
#, c-format
msgid "Size error in section %s"
msgstr ""
-#: vms-alpha.c:3992
+#: vms-alpha.c:3991
msgid "Spurious ALPHA_R_BSR reloc"
msgstr ""
-#: vms-alpha.c:4040
+#: vms-alpha.c:4036
#, c-format
msgid "Unhandled relocation %s"
msgstr ""
-#: vms-alpha.c:4330
+#: vms-alpha.c:4326
#, c-format
msgid "unknown source command %d"
msgstr ""
-#: vms-alpha.c:4391
+#: vms-alpha.c:4387
msgid "DST__K_SET_LINUM_INCR not implemented"
msgstr ""
-#: vms-alpha.c:4397
+#: vms-alpha.c:4393
msgid "DST__K_SET_LINUM_INCR_W not implemented"
msgstr ""
-#: vms-alpha.c:4403
+#: vms-alpha.c:4399
msgid "DST__K_RESET_LINUM_INCR not implemented"
msgstr ""
-#: vms-alpha.c:4409
+#: vms-alpha.c:4405
msgid "DST__K_BEG_STMT_MODE not implemented"
msgstr ""
-#: vms-alpha.c:4415
+#: vms-alpha.c:4411
msgid "DST__K_END_STMT_MODE not implemented"
msgstr ""
-#: vms-alpha.c:4442
+#: vms-alpha.c:4438
msgid "DST__K_SET_PC not implemented"
msgstr ""
-#: vms-alpha.c:4448
+#: vms-alpha.c:4444
msgid "DST__K_SET_PC_W not implemented"
msgstr ""
-#: vms-alpha.c:4454
+#: vms-alpha.c:4450
msgid "DST__K_SET_PC_L not implemented"
msgstr ""
-#: vms-alpha.c:4460
+#: vms-alpha.c:4456
msgid "DST__K_SET_STMTNUM not implemented"
msgstr ""
-#: vms-alpha.c:4503
+#: vms-alpha.c:4499
#, c-format
msgid "unknown line command %d"
msgstr ""
-#: vms-alpha.c:4957 vms-alpha.c:4974 vms-alpha.c:4988 vms-alpha.c:5003
-#: vms-alpha.c:5015 vms-alpha.c:5026 vms-alpha.c:5038
+#: vms-alpha.c:4953 vms-alpha.c:4970 vms-alpha.c:4984 vms-alpha.c:4999
+#: vms-alpha.c:5011 vms-alpha.c:5022 vms-alpha.c:5034
#, c-format
msgid "Unknown reloc %s + %s"
msgstr ""
-#: vms-alpha.c:5093
+#: vms-alpha.c:5089
#, c-format
msgid "Unknown reloc %s"
msgstr ""
-#: vms-alpha.c:5106
+#: vms-alpha.c:5102
msgid "Invalid section index in ETIR"
msgstr ""
-#: vms-alpha.c:5153
+#: vms-alpha.c:5109
+msgid "Relocation for non-REL psect"
+msgstr ""
+
+#: vms-alpha.c:5156
#, c-format
msgid "Unknown symbol in command %s"
msgstr ""
-#: vms-alpha.c:5668
+#: vms-alpha.c:5671
#, c-format
msgid " EMH %u (len=%u): "
msgstr ""
-#: vms-alpha.c:5677
+#: vms-alpha.c:5680
#, c-format
msgid "Module header\n"
msgstr ""
-#: vms-alpha.c:5678
+#: vms-alpha.c:5681
#, c-format
msgid " structure level: %u\n"
msgstr ""
-#: vms-alpha.c:5679
+#: vms-alpha.c:5682
#, c-format
msgid " max record size: %u\n"
msgstr ""
-#: vms-alpha.c:5682
+#: vms-alpha.c:5685
#, c-format
msgid " module name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5684
+#: vms-alpha.c:5687
#, c-format
msgid " module version : %.*s\n"
msgstr ""
-#: vms-alpha.c:5686
+#: vms-alpha.c:5689
#, c-format
msgid " compile date : %.17s\n"
msgstr ""
-#: vms-alpha.c:5691
+#: vms-alpha.c:5694
#, c-format
msgid "Language Processor Name\n"
msgstr ""
-#: vms-alpha.c:5692
+#: vms-alpha.c:5695
#, c-format
msgid " language name: %.*s\n"
msgstr ""
-#: vms-alpha.c:5699
+#: vms-alpha.c:5702
#, c-format
msgid "Source Files Header\n"
msgstr ""
-#: vms-alpha.c:5700
+#: vms-alpha.c:5703
#, c-format
msgid " file: %.*s\n"
msgstr ""
-#: vms-alpha.c:5707
+#: vms-alpha.c:5710
#, c-format
msgid "Title Text Header\n"
msgstr ""
-#: vms-alpha.c:5708
+#: vms-alpha.c:5711
#, c-format
msgid " title: %.*s\n"
msgstr ""
-#: vms-alpha.c:5715
+#: vms-alpha.c:5718
#, c-format
msgid "Copyright Header\n"
msgstr ""
-#: vms-alpha.c:5716
+#: vms-alpha.c:5719
#, c-format
msgid " copyright: %.*s\n"
msgstr ""
-#: vms-alpha.c:5722
+#: vms-alpha.c:5725
#, c-format
msgid "unhandled emh subtype %u\n"
msgstr ""
-#: vms-alpha.c:5732
+#: vms-alpha.c:5735
#, c-format
msgid " EEOM (len=%u):\n"
msgstr ""
-#: vms-alpha.c:5733
+#: vms-alpha.c:5736
#, c-format
msgid " number of cond linkage pairs: %u\n"
msgstr ""
-#: vms-alpha.c:5735
+#: vms-alpha.c:5738
#, c-format
msgid " completion code: %u\n"
msgstr ""
-#: vms-alpha.c:5739
+#: vms-alpha.c:5742
#, c-format
msgid " transfer addr flags: 0x%02x\n"
msgstr ""
-#: vms-alpha.c:5740
+#: vms-alpha.c:5743
#, c-format
msgid " transfer addr psect: %u\n"
msgstr ""
-#: vms-alpha.c:5742
+#: vms-alpha.c:5745
#, c-format
msgid " transfer address : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5751
+#: vms-alpha.c:5754
msgid " WEAK"
msgstr ""
-#: vms-alpha.c:5753
+#: vms-alpha.c:5756
msgid " DEF"
msgstr ""
-#: vms-alpha.c:5755
+#: vms-alpha.c:5758
msgid " UNI"
msgstr ""
-#: vms-alpha.c:5757 vms-alpha.c:5778
+#: vms-alpha.c:5760 vms-alpha.c:5781
msgid " REL"
msgstr ""
-#: vms-alpha.c:5759
+#: vms-alpha.c:5762
msgid " COMM"
msgstr ""
-#: vms-alpha.c:5761
+#: vms-alpha.c:5764
msgid " VECEP"
msgstr ""
-#: vms-alpha.c:5763
+#: vms-alpha.c:5766
msgid " NORM"
msgstr ""
-#: vms-alpha.c:5765
+#: vms-alpha.c:5768
msgid " QVAL"
msgstr ""
-#: vms-alpha.c:5772
+#: vms-alpha.c:5775
msgid " PIC"
msgstr ""
-#: vms-alpha.c:5774
+#: vms-alpha.c:5777
msgid " LIB"
msgstr ""
-#: vms-alpha.c:5776
+#: vms-alpha.c:5779
msgid " OVR"
msgstr ""
-#: vms-alpha.c:5780
+#: vms-alpha.c:5783
msgid " GBL"
msgstr ""
-#: vms-alpha.c:5782
+#: vms-alpha.c:5785
msgid " SHR"
msgstr ""
-#: vms-alpha.c:5784
+#: vms-alpha.c:5787
msgid " EXE"
msgstr ""
-#: vms-alpha.c:5786
+#: vms-alpha.c:5789
msgid " RD"
msgstr ""
-#: vms-alpha.c:5788
+#: vms-alpha.c:5791
msgid " WRT"
msgstr ""
-#: vms-alpha.c:5790
+#: vms-alpha.c:5793
msgid " VEC"
msgstr ""
-#: vms-alpha.c:5792
+#: vms-alpha.c:5795
msgid " NOMOD"
msgstr ""
-#: vms-alpha.c:5794
+#: vms-alpha.c:5797
msgid " COM"
msgstr ""
-#: vms-alpha.c:5796
+#: vms-alpha.c:5799
msgid " 64B"
msgstr ""
-#: vms-alpha.c:5805
+#: vms-alpha.c:5808
#, c-format
msgid " EGSD (len=%u):\n"
msgstr ""
-#: vms-alpha.c:5817
+#: vms-alpha.c:5820
#, c-format
msgid " EGSD entry %2u (type: %u, len: %u): "
msgstr ""
-#: vms-alpha.c:5829
+#: vms-alpha.c:5832
#, c-format
msgid "PSC - Program section definition\n"
msgstr ""
-#: vms-alpha.c:5830 vms-alpha.c:5847
+#: vms-alpha.c:5833 vms-alpha.c:5850
#, c-format
msgid " alignment : 2**%u\n"
msgstr ""
-#: vms-alpha.c:5831 vms-alpha.c:5848
+#: vms-alpha.c:5834 vms-alpha.c:5851
#, c-format
msgid " flags : 0x%04x"
msgstr ""
-#: vms-alpha.c:5835
+#: vms-alpha.c:5838
#, c-format
msgid " alloc (len): %u (0x%08x)\n"
msgstr ""
-#: vms-alpha.c:5836 vms-alpha.c:5893 vms-alpha.c:5942
+#: vms-alpha.c:5839 vms-alpha.c:5896 vms-alpha.c:5945
#, c-format
msgid " name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5846
+#: vms-alpha.c:5849
#, c-format
msgid "SPSC - Shared Image Program section def\n"
msgstr ""
-#: vms-alpha.c:5852
+#: vms-alpha.c:5855
#, c-format
msgid " alloc (len) : %u (0x%08x)\n"
msgstr ""
-#: vms-alpha.c:5853
+#: vms-alpha.c:5856
#, c-format
msgid " image offset : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5855
+#: vms-alpha.c:5858
#, c-format
msgid " symvec offset : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5857
+#: vms-alpha.c:5860
#, c-format
msgid " name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5870
+#: vms-alpha.c:5873
#, c-format
msgid "SYM - Global symbol definition\n"
msgstr ""
-#: vms-alpha.c:5871 vms-alpha.c:5931 vms-alpha.c:5952 vms-alpha.c:5971
+#: vms-alpha.c:5874 vms-alpha.c:5934 vms-alpha.c:5955 vms-alpha.c:5974
#, c-format
msgid " flags: 0x%04x"
msgstr ""
-#: vms-alpha.c:5874
+#: vms-alpha.c:5877
#, c-format
msgid " psect offset: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5878
+#: vms-alpha.c:5881
#, c-format
msgid " code address: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5880
+#: vms-alpha.c:5883
#, c-format
msgid " psect index for entry point : %u\n"
msgstr ""
-#: vms-alpha.c:5883 vms-alpha.c:5959 vms-alpha.c:5978
+#: vms-alpha.c:5886 vms-alpha.c:5962 vms-alpha.c:5981
#, c-format
msgid " psect index : %u\n"
msgstr ""
-#: vms-alpha.c:5885 vms-alpha.c:5961 vms-alpha.c:5980
+#: vms-alpha.c:5888 vms-alpha.c:5964 vms-alpha.c:5983
#, c-format
msgid " name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5892
+#: vms-alpha.c:5895
#, c-format
msgid "SYM - Global symbol reference\n"
msgstr ""
-#: vms-alpha.c:5904
+#: vms-alpha.c:5907
#, c-format
msgid "IDC - Ident Consistency check\n"
msgstr ""
-#: vms-alpha.c:5905
+#: vms-alpha.c:5908
#, c-format
msgid " flags : 0x%08x"
msgstr ""
-#: vms-alpha.c:5909
+#: vms-alpha.c:5912
#, c-format
msgid " id match : %x\n"
msgstr ""
-#: vms-alpha.c:5911
+#: vms-alpha.c:5914
#, c-format
msgid " error severity: %x\n"
msgstr ""
-#: vms-alpha.c:5914
+#: vms-alpha.c:5917
#, c-format
msgid " entity name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5916
+#: vms-alpha.c:5919
#, c-format
msgid " object name : %.*s\n"
msgstr ""
-#: vms-alpha.c:5919
+#: vms-alpha.c:5922
#, c-format
msgid " binary ident : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5922
+#: vms-alpha.c:5925
#, c-format
msgid " ascii ident : %.*s\n"
msgstr ""
-#: vms-alpha.c:5930
+#: vms-alpha.c:5933
#, c-format
msgid "SYMG - Universal symbol definition\n"
msgstr ""
-#: vms-alpha.c:5934
+#: vms-alpha.c:5937
#, c-format
msgid " symbol vector offset: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5936
+#: vms-alpha.c:5939
#, c-format
msgid " entry point: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5938
+#: vms-alpha.c:5941
#, c-format
msgid " proc descr : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5940
+#: vms-alpha.c:5943
#, c-format
msgid " psect index: %u\n"
msgstr ""
-#: vms-alpha.c:5951
+#: vms-alpha.c:5954
#, c-format
msgid "SYMV - Vectored symbol definition\n"
msgstr ""
-#: vms-alpha.c:5955
+#: vms-alpha.c:5958
#, c-format
msgid " vector : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5957 vms-alpha.c:5976
+#: vms-alpha.c:5960 vms-alpha.c:5979
#, c-format
msgid " psect offset: %u\n"
msgstr ""
-#: vms-alpha.c:5970
+#: vms-alpha.c:5973
#, c-format
msgid "SYMM - Global symbol definition with version\n"
msgstr ""
-#: vms-alpha.c:5974
+#: vms-alpha.c:5977
#, c-format
msgid " version mask: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:5985
+#: vms-alpha.c:5988
#, c-format
msgid "unhandled egsd entry type %u\n"
msgstr ""
-#: vms-alpha.c:6019
+#: vms-alpha.c:6022
#, c-format
msgid " linkage index: %u, replacement insn: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6022
+#: vms-alpha.c:6025
#, c-format
msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6026
+#: vms-alpha.c:6029
#, c-format
msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6031
+#: vms-alpha.c:6034
#, c-format
msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6036
+#: vms-alpha.c:6039
#, c-format
msgid " global name: %.*s\n"
msgstr ""
-#: vms-alpha.c:6046
+#: vms-alpha.c:6049
#, c-format
msgid " %s (len=%u+%u):\n"
msgstr ""
-#: vms-alpha.c:6061
+#: vms-alpha.c:6064
#, c-format
msgid " (type: %3u, size: 4+%3u): "
msgstr ""
-#: vms-alpha.c:6065
+#: vms-alpha.c:6068
#, c-format
msgid "STA_GBL (stack global) %.*s\n"
msgstr ""
-#: vms-alpha.c:6069
+#: vms-alpha.c:6072
#, c-format
msgid "STA_LW (stack longword) 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6073
+#: vms-alpha.c:6076
#, c-format
msgid "STA_QW (stack quadword) 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6078
+#: vms-alpha.c:6081
#, c-format
msgid "STA_PQ (stack psect base + offset)\n"
msgstr ""
-#: vms-alpha.c:6079
+#: vms-alpha.c:6082
#, c-format
msgid " psect: %u, offset: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6085
+#: vms-alpha.c:6088
#, c-format
msgid "STA_LI (stack literal)\n"
msgstr ""
-#: vms-alpha.c:6088
+#: vms-alpha.c:6091
#, c-format
msgid "STA_MOD (stack module)\n"
msgstr ""
-#: vms-alpha.c:6091
+#: vms-alpha.c:6094
#, c-format
msgid "STA_CKARG (compare procedure argument)\n"
msgstr ""
-#: vms-alpha.c:6095
+#: vms-alpha.c:6098
#, c-format
msgid "STO_B (store byte)\n"
msgstr ""
-#: vms-alpha.c:6098
+#: vms-alpha.c:6101
#, c-format
msgid "STO_W (store word)\n"
msgstr ""
-#: vms-alpha.c:6101
+#: vms-alpha.c:6104
#, c-format
msgid "STO_LW (store longword)\n"
msgstr ""
-#: vms-alpha.c:6104
+#: vms-alpha.c:6107
#, c-format
msgid "STO_QW (store quadword)\n"
msgstr ""
-#: vms-alpha.c:6110
+#: vms-alpha.c:6113
#, c-format
msgid "STO_IMMR (store immediate repeat) %u bytes\n"
msgstr ""
-#: vms-alpha.c:6117
+#: vms-alpha.c:6120
#, c-format
msgid "STO_GBL (store global) %.*s\n"
msgstr ""
-#: vms-alpha.c:6121
+#: vms-alpha.c:6124
#, c-format
msgid "STO_CA (store code address) %.*s\n"
msgstr ""
-#: vms-alpha.c:6125
+#: vms-alpha.c:6128
#, c-format
msgid "STO_RB (store relative branch)\n"
msgstr ""
-#: vms-alpha.c:6128
+#: vms-alpha.c:6131
#, c-format
msgid "STO_AB (store absolute branch)\n"
msgstr ""
-#: vms-alpha.c:6131
+#: vms-alpha.c:6134
#, c-format
msgid "STO_OFF (store offset to psect)\n"
msgstr ""
-#: vms-alpha.c:6137
+#: vms-alpha.c:6140
#, c-format
msgid "STO_IMM (store immediate) %u bytes\n"
msgstr ""
-#: vms-alpha.c:6144
+#: vms-alpha.c:6147
#, c-format
msgid "STO_GBL_LW (store global longword) %.*s\n"
msgstr ""
-#: vms-alpha.c:6148
+#: vms-alpha.c:6151
#, c-format
msgid "STO_OFF (store LP with procedure signature)\n"
msgstr ""
-#: vms-alpha.c:6151
+#: vms-alpha.c:6154
#, c-format
msgid "STO_BR_GBL (store branch global) *todo*\n"
msgstr ""
-#: vms-alpha.c:6154
+#: vms-alpha.c:6157
#, c-format
msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
msgstr ""
-#: vms-alpha.c:6158
+#: vms-alpha.c:6161
#, c-format
msgid "OPR_NOP (no-operation)\n"
msgstr ""
-#: vms-alpha.c:6161
+#: vms-alpha.c:6164
#, c-format
msgid "OPR_ADD (add)\n"
msgstr ""
-#: vms-alpha.c:6164
+#: vms-alpha.c:6167
#, c-format
msgid "OPR_SUB (substract)\n"
msgstr ""
-#: vms-alpha.c:6167
+#: vms-alpha.c:6170
#, c-format
msgid "OPR_MUL (multiply)\n"
msgstr ""
-#: vms-alpha.c:6170
+#: vms-alpha.c:6173
#, c-format
msgid "OPR_DIV (divide)\n"
msgstr ""
-#: vms-alpha.c:6173
+#: vms-alpha.c:6176
#, c-format
msgid "OPR_AND (logical and)\n"
msgstr ""
-#: vms-alpha.c:6176
+#: vms-alpha.c:6179
#, c-format
msgid "OPR_IOR (logical inclusive or)\n"
msgstr ""
-#: vms-alpha.c:6179
+#: vms-alpha.c:6182
#, c-format
msgid "OPR_EOR (logical exclusive or)\n"
msgstr ""
-#: vms-alpha.c:6182
+#: vms-alpha.c:6185
#, c-format
msgid "OPR_NEG (negate)\n"
msgstr ""
-#: vms-alpha.c:6185
+#: vms-alpha.c:6188
#, c-format
msgid "OPR_COM (complement)\n"
msgstr ""
-#: vms-alpha.c:6188
+#: vms-alpha.c:6191
#, c-format
msgid "OPR_INSV (insert field)\n"
msgstr ""
-#: vms-alpha.c:6191
+#: vms-alpha.c:6194
#, c-format
msgid "OPR_ASH (arithmetic shift)\n"
msgstr ""
-#: vms-alpha.c:6194
+#: vms-alpha.c:6197
#, c-format
msgid "OPR_USH (unsigned shift)\n"
msgstr ""
-#: vms-alpha.c:6197
+#: vms-alpha.c:6200
#, c-format
msgid "OPR_ROT (rotate)\n"
msgstr ""
-#: vms-alpha.c:6200
+#: vms-alpha.c:6203
#, c-format
msgid "OPR_SEL (select)\n"
msgstr ""
-#: vms-alpha.c:6203
+#: vms-alpha.c:6206
#, c-format
msgid "OPR_REDEF (redefine symbol to curr location)\n"
msgstr ""
-#: vms-alpha.c:6206
+#: vms-alpha.c:6209
#, c-format
msgid "OPR_REDEF (define a literal)\n"
msgstr ""
-#: vms-alpha.c:6210
+#: vms-alpha.c:6213
#, c-format
msgid "STC_LP (store cond linkage pair)\n"
msgstr ""
-#: vms-alpha.c:6214
+#: vms-alpha.c:6217
#, c-format
msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
msgstr ""
-#: vms-alpha.c:6215
+#: vms-alpha.c:6218
#, c-format
msgid " linkage index: %u, procedure: %.*s\n"
msgstr ""
-#: vms-alpha.c:6218
+#: vms-alpha.c:6221
#, c-format
msgid " signature: %.*s\n"
msgstr ""
-#: vms-alpha.c:6221
+#: vms-alpha.c:6224
#, c-format
msgid "STC_GBL (store cond global)\n"
msgstr ""
-#: vms-alpha.c:6222
+#: vms-alpha.c:6225
#, c-format
msgid " linkage index: %u, global: %.*s\n"
msgstr ""
-#: vms-alpha.c:6226
+#: vms-alpha.c:6229
#, c-format
msgid "STC_GCA (store cond code address)\n"
msgstr ""
-#: vms-alpha.c:6227
+#: vms-alpha.c:6230
#, c-format
msgid " linkage index: %u, procedure name: %.*s\n"
msgstr ""
-#: vms-alpha.c:6231
+#: vms-alpha.c:6234
#, c-format
msgid "STC_PS (store cond psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6233
+#: vms-alpha.c:6236
#, c-format
msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:6240
+#: vms-alpha.c:6243
#, c-format
msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
msgstr ""
-#: vms-alpha.c:6244
+#: vms-alpha.c:6247
#, c-format
msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6248
+#: vms-alpha.c:6251
#, c-format
msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
msgstr ""
-#: vms-alpha.c:6252
+#: vms-alpha.c:6255
#, c-format
msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6256
+#: vms-alpha.c:6259
#, c-format
msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
msgstr ""
-#: vms-alpha.c:6260
+#: vms-alpha.c:6263
#, c-format
msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6264
+#: vms-alpha.c:6267
#, c-format
msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
msgstr ""
-#: vms-alpha.c:6268
+#: vms-alpha.c:6271
#, c-format
msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6273
+#: vms-alpha.c:6276
#, c-format
msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
msgstr ""
-#: vms-alpha.c:6277
+#: vms-alpha.c:6280
#, c-format
msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
msgstr ""
-#: vms-alpha.c:6281
+#: vms-alpha.c:6284
#, c-format
msgid "CTL_SETRB (set relocation base)\n"
msgstr ""
-#: vms-alpha.c:6287
+#: vms-alpha.c:6290
#, c-format
msgid "CTL_AUGRB (augment relocation base) %u\n"
msgstr ""
-#: vms-alpha.c:6291
+#: vms-alpha.c:6294
#, c-format
msgid "CTL_DFLOC (define location)\n"
msgstr ""
-#: vms-alpha.c:6294
+#: vms-alpha.c:6297
#, c-format
msgid "CTL_STLOC (set location)\n"
msgstr ""
-#: vms-alpha.c:6297
+#: vms-alpha.c:6300
#, c-format
msgid "CTL_STKDL (stack defined location)\n"
msgstr ""
-#: vms-alpha.c:6300 vms-alpha.c:6714
+#: vms-alpha.c:6303 vms-alpha.c:6717
#, c-format
msgid "*unhandled*\n"
msgstr ""
-#: vms-alpha.c:6330 vms-alpha.c:6369
+#: vms-alpha.c:6333 vms-alpha.c:6372
#, c-format
msgid "cannot read GST record length\n"
msgstr ""
#. Ill-formed.
-#: vms-alpha.c:6351
+#: vms-alpha.c:6354
#, c-format
msgid "cannot find EMH in first GST record\n"
msgstr ""
-#: vms-alpha.c:6377
+#: vms-alpha.c:6380
#, c-format
msgid "cannot read GST record header\n"
msgstr ""
-#: vms-alpha.c:6390
+#: vms-alpha.c:6393
#, c-format
msgid " corrupted GST\n"
msgstr ""
-#: vms-alpha.c:6398
+#: vms-alpha.c:6401
#, c-format
msgid "cannot read GST record\n"
msgstr ""
-#: vms-alpha.c:6427
+#: vms-alpha.c:6430
#, c-format
msgid " unhandled EOBJ record type %u\n"
msgstr ""
-#: vms-alpha.c:6450
+#: vms-alpha.c:6453
#, c-format
msgid " bitcount: %u, base addr: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6463
+#: vms-alpha.c:6466
#, c-format
msgid " bitmap: 0x%08x (count: %u):\n"
msgstr ""
-#: vms-alpha.c:6470
+#: vms-alpha.c:6473
#, c-format
msgid " %08x"
msgstr ""
-#: vms-alpha.c:6495
+#: vms-alpha.c:6498
#, c-format
msgid " image %u (%u entries)\n"
msgstr ""
-#: vms-alpha.c:6500
+#: vms-alpha.c:6503
#, c-format
msgid " offset: 0x%08x, val: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6521
+#: vms-alpha.c:6524
#, c-format
msgid " image %u (%u entries), offsets:\n"
msgstr ""
-#: vms-alpha.c:6528
+#: vms-alpha.c:6531
#, c-format
msgid " 0x%08x"
msgstr ""
#. 64 bits.
-#: vms-alpha.c:6650
+#: vms-alpha.c:6653
#, c-format
msgid "64 bits *unhandled*\n"
msgstr ""
-#: vms-alpha.c:6654
+#: vms-alpha.c:6657
#, c-format
msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6665
+#: vms-alpha.c:6668
#, c-format
msgid "non-contiguous array of %s\n"
msgstr ""
-#: vms-alpha.c:6669
+#: vms-alpha.c:6672
#, c-format
msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
msgstr ""
-#: vms-alpha.c:6673
+#: vms-alpha.c:6676
#, c-format
msgid "arsize: %u, a0: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6677
+#: vms-alpha.c:6680
#, c-format
msgid "Strides:\n"
msgstr ""
-#: vms-alpha.c:6682
+#: vms-alpha.c:6685
#, c-format
msgid "[%u]: %u\n"
msgstr ""
-#: vms-alpha.c:6687
+#: vms-alpha.c:6690
#, c-format
msgid "Bounds:\n"
msgstr ""
-#: vms-alpha.c:6692
+#: vms-alpha.c:6695
#, c-format
msgid "[%u]: Lower: %u, upper: %u\n"
msgstr ""
-#: vms-alpha.c:6704
+#: vms-alpha.c:6707
#, c-format
msgid "unaligned bit-string of %s\n"
msgstr ""
-#: vms-alpha.c:6708
+#: vms-alpha.c:6711
#, c-format
msgid "base: %u, pos: %u\n"
msgstr ""
-#: vms-alpha.c:6728
+#: vms-alpha.c:6731
#, c-format
msgid "vflags: 0x%02x, value: 0x%08x "
msgstr ""
-#: vms-alpha.c:6734
+#: vms-alpha.c:6737
#, c-format
msgid "(no value)\n"
msgstr ""
-#: vms-alpha.c:6737
+#: vms-alpha.c:6740
#, c-format
msgid "(not active)\n"
msgstr ""
-#: vms-alpha.c:6740
+#: vms-alpha.c:6743
#, c-format
msgid "(not allocated)\n"
msgstr ""
-#: vms-alpha.c:6743
+#: vms-alpha.c:6746
#, c-format
msgid "(descriptor)\n"
msgstr ""
-#: vms-alpha.c:6747
+#: vms-alpha.c:6750
#, c-format
msgid "(trailing value)\n"
msgstr ""
-#: vms-alpha.c:6750
+#: vms-alpha.c:6753
#, c-format
msgid "(value spec follows)\n"
msgstr ""
-#: vms-alpha.c:6753
+#: vms-alpha.c:6756
#, c-format
msgid "(at bit offset %u)\n"
msgstr ""
-#: vms-alpha.c:6756
+#: vms-alpha.c:6759
#, c-format
msgid "(reg: %u, disp: %u, indir: %u, kind: "
msgstr ""
-#: vms-alpha.c:6763
+#: vms-alpha.c:6766
msgid "literal"
msgstr ""
-#: vms-alpha.c:6766
+#: vms-alpha.c:6769
msgid "address"
msgstr ""
-#: vms-alpha.c:6769
+#: vms-alpha.c:6772
msgid "desc"
msgstr ""
-#: vms-alpha.c:6772
+#: vms-alpha.c:6775
msgid "reg"
msgstr ""
-#: vms-alpha.c:6847
+#: vms-alpha.c:6850
#, c-format
msgid "Debug symbol table:\n"
msgstr ""
-#: vms-alpha.c:6858
+#: vms-alpha.c:6861
#, c-format
msgid "cannot read DST header\n"
msgstr ""
-#: vms-alpha.c:6863
+#: vms-alpha.c:6866
#, c-format
msgid " type: %3u, len: %3u (at 0x%08x): "
msgstr ""
-#: vms-alpha.c:6877
+#: vms-alpha.c:6880
#, c-format
msgid "cannot read DST symbol\n"
msgstr ""
-#: vms-alpha.c:6920
+#: vms-alpha.c:6923
#, c-format
msgid "standard data: %s\n"
msgstr ""
-#: vms-alpha.c:6923 vms-alpha.c:7007
+#: vms-alpha.c:6926 vms-alpha.c:7010
#, c-format
msgid " name: %.*s\n"
msgstr ""
-#: vms-alpha.c:6930
+#: vms-alpha.c:6933
#, c-format
msgid "modbeg\n"
msgstr ""
-#: vms-alpha.c:6931
+#: vms-alpha.c:6934
#, c-format
msgid " flags: %d, language: %u, major: %u, minor: %u\n"
msgstr ""
-#: vms-alpha.c:6937 vms-alpha.c:7203
+#: vms-alpha.c:6940 vms-alpha.c:7206
#, c-format
msgid " module name: %.*s\n"
msgstr ""
-#: vms-alpha.c:6940
+#: vms-alpha.c:6943
#, c-format
msgid " compiler : %.*s\n"
msgstr ""
-#: vms-alpha.c:6945
+#: vms-alpha.c:6948
#, c-format
msgid "modend\n"
msgstr ""
-#: vms-alpha.c:6952
+#: vms-alpha.c:6955
msgid "rtnbeg\n"
msgstr ""
-#: vms-alpha.c:6953
+#: vms-alpha.c:6956
#, c-format
msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6958
+#: vms-alpha.c:6961
#, c-format
msgid " routine name: %.*s\n"
msgstr ""
-#: vms-alpha.c:6966
+#: vms-alpha.c:6969
#, c-format
msgid "rtnend: size 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6974
+#: vms-alpha.c:6977
#, c-format
msgid "prolog: bkpt address 0x%08x\n"
msgstr ""
-#: vms-alpha.c:6982
+#: vms-alpha.c:6985
#, c-format
msgid "epilog: flags: %u, count: %u\n"
msgstr ""
-#: vms-alpha.c:6991
+#: vms-alpha.c:6994
#, c-format
msgid "blkbeg: address: 0x%08x, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7000
+#: vms-alpha.c:7003
#, c-format
msgid "blkend: size: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7006
+#: vms-alpha.c:7009
#, c-format
msgid "typspec (len: %u)\n"
msgstr ""
-#: vms-alpha.c:7013
+#: vms-alpha.c:7016
#, c-format
msgid "septyp, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7022
+#: vms-alpha.c:7025
#, c-format
msgid "recbeg: name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7029
+#: vms-alpha.c:7032
#, c-format
msgid "recend\n"
msgstr ""
-#: vms-alpha.c:7032
+#: vms-alpha.c:7035
#, c-format
msgid "enumbeg, len: %u, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7036
+#: vms-alpha.c:7039
#, c-format
msgid "enumelt, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7040
+#: vms-alpha.c:7043
#, c-format
msgid "enumend\n"
msgstr ""
-#: vms-alpha.c:7057
+#: vms-alpha.c:7060
#, c-format
msgid "discontiguous range (nbr: %u)\n"
msgstr ""
-#: vms-alpha.c:7059
+#: vms-alpha.c:7062
#, c-format
msgid " address: 0x%08x, size: %u\n"
msgstr ""
-#: vms-alpha.c:7069
+#: vms-alpha.c:7072
#, c-format
msgid "line num (len: %u)\n"
msgstr ""
-#: vms-alpha.c:7086
+#: vms-alpha.c:7089
#, c-format
msgid "delta_pc_w %u\n"
msgstr ""
-#: vms-alpha.c:7093
+#: vms-alpha.c:7096
#, c-format
msgid "incr_linum(b): +%u\n"
msgstr ""
-#: vms-alpha.c:7099
+#: vms-alpha.c:7102
#, c-format
msgid "incr_linum_w: +%u\n"
msgstr ""
-#: vms-alpha.c:7105
+#: vms-alpha.c:7108
#, c-format
msgid "incr_linum_l: +%u\n"
msgstr ""
-#: vms-alpha.c:7111
+#: vms-alpha.c:7114
#, c-format
msgid "set_line_num(w) %u\n"
msgstr ""
-#: vms-alpha.c:7116
+#: vms-alpha.c:7119
#, c-format
msgid "set_line_num_b %u\n"
msgstr ""
-#: vms-alpha.c:7121
+#: vms-alpha.c:7124
#, c-format
msgid "set_line_num_l %u\n"
msgstr ""
-#: vms-alpha.c:7126
+#: vms-alpha.c:7129
#, c-format
msgid "set_abs_pc: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7130
+#: vms-alpha.c:7133
#, c-format
msgid "delta_pc_l: +0x%08x\n"
msgstr ""
-#: vms-alpha.c:7135
+#: vms-alpha.c:7138
#, c-format
msgid "term(b): 0x%02x"
msgstr ""
-#: vms-alpha.c:7137
+#: vms-alpha.c:7140
#, c-format
msgid " pc: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7142
+#: vms-alpha.c:7145
#, c-format
msgid "term_w: 0x%04x"
msgstr ""
-#: vms-alpha.c:7144
+#: vms-alpha.c:7147
#, c-format
msgid " pc: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7150
+#: vms-alpha.c:7153
#, c-format
msgid "delta pc +%-4d"
msgstr ""
-#: vms-alpha.c:7153
+#: vms-alpha.c:7156
#, c-format
msgid " pc: 0x%08x line: %5u\n"
msgstr ""
-#: vms-alpha.c:7158
+#: vms-alpha.c:7161
#, c-format
msgid " *unhandled* cmd %u\n"
msgstr ""
-#: vms-alpha.c:7173
+#: vms-alpha.c:7176
#, c-format
msgid "source (len: %u)\n"
msgstr ""
-#: vms-alpha.c:7187
+#: vms-alpha.c:7190
#, c-format
msgid " declfile: len: %u, flags: %u, fileid: %u\n"
msgstr ""
-#: vms-alpha.c:7191
+#: vms-alpha.c:7194
#, c-format
msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
msgstr ""
-#: vms-alpha.c:7200
+#: vms-alpha.c:7203
#, c-format
msgid " filename : %.*s\n"
msgstr ""
-#: vms-alpha.c:7209
+#: vms-alpha.c:7212
#, c-format
msgid " setfile %u\n"
msgstr ""
-#: vms-alpha.c:7214 vms-alpha.c:7219
+#: vms-alpha.c:7217 vms-alpha.c:7222
#, c-format
msgid " setrec %u\n"
msgstr ""
-#: vms-alpha.c:7224 vms-alpha.c:7229
+#: vms-alpha.c:7227 vms-alpha.c:7232
#, c-format
msgid " setlnum %u\n"
msgstr ""
-#: vms-alpha.c:7234 vms-alpha.c:7239
+#: vms-alpha.c:7237 vms-alpha.c:7242
#, c-format
msgid " deflines %u\n"
msgstr ""
-#: vms-alpha.c:7243
+#: vms-alpha.c:7246
#, c-format
msgid " formfeed\n"
msgstr ""
-#: vms-alpha.c:7247
+#: vms-alpha.c:7250
#, c-format
msgid " *unhandled* cmd %u\n"
msgstr ""
-#: vms-alpha.c:7259
+#: vms-alpha.c:7262
#, c-format
msgid "*unhandled* dst type %u\n"
msgstr ""
-#: vms-alpha.c:7291
+#: vms-alpha.c:7294
#, c-format
msgid "cannot read EIHD\n"
msgstr ""
-#: vms-alpha.c:7294
+#: vms-alpha.c:7297
#, c-format
msgid "EIHD: (size: %u, nbr blocks: %u)\n"
msgstr ""
-#: vms-alpha.c:7297
+#: vms-alpha.c:7300
#, c-format
msgid " majorid: %u, minorid: %u\n"
msgstr ""
-#: vms-alpha.c:7305
+#: vms-alpha.c:7308
msgid "executable"
msgstr ""
-#: vms-alpha.c:7308
+#: vms-alpha.c:7311
msgid "linkable image"
msgstr ""
-#: vms-alpha.c:7314
+#: vms-alpha.c:7317
#, c-format
msgid " image type: %u (%s)"
msgstr ""
-#: vms-alpha.c:7320
+#: vms-alpha.c:7323
msgid "native"
msgstr ""
-#: vms-alpha.c:7323
+#: vms-alpha.c:7326
msgid "CLI"
msgstr ""
-#: vms-alpha.c:7329
+#: vms-alpha.c:7332
#, c-format
msgid ", subtype: %u (%s)\n"
msgstr ""
-#: vms-alpha.c:7335
+#: vms-alpha.c:7338
#, c-format
msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
msgstr ""
-#: vms-alpha.c:7339
+#: vms-alpha.c:7342
#, c-format
msgid " fixup info rva: "
msgstr ""
-#: vms-alpha.c:7341
+#: vms-alpha.c:7344
#, c-format
msgid ", symbol vector rva: "
msgstr ""
-#: vms-alpha.c:7344
+#: vms-alpha.c:7347
#, c-format
msgid ""
"\n"
" version array off: %u\n"
msgstr ""
-#: vms-alpha.c:7348
+#: vms-alpha.c:7351
#, c-format
msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
msgstr ""
-#: vms-alpha.c:7354
+#: vms-alpha.c:7357
#, c-format
msgid " linker flags: %08x:"
msgstr ""
-#: vms-alpha.c:7384
+#: vms-alpha.c:7387
#, c-format
msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
msgstr ""
-#: vms-alpha.c:7390
+#: vms-alpha.c:7393
#, c-format
msgid " BPAGE: %u"
msgstr ""
-#: vms-alpha.c:7396
+#: vms-alpha.c:7399
#, c-format
msgid ", ext fixup offset: %u, no_opt psect off: %u"
msgstr ""
-#: vms-alpha.c:7399
+#: vms-alpha.c:7402
#, c-format
msgid ", alias: %u\n"
msgstr ""
-#: vms-alpha.c:7407
+#: vms-alpha.c:7410
#, c-format
msgid "system version array information:\n"
msgstr ""
-#: vms-alpha.c:7411
+#: vms-alpha.c:7414
#, c-format
msgid "cannot read EIHVN header\n"
msgstr ""
-#: vms-alpha.c:7421
+#: vms-alpha.c:7424
#, c-format
msgid "cannot read EIHVN version\n"
msgstr ""
-#: vms-alpha.c:7424
+#: vms-alpha.c:7427
#, c-format
msgid " %02u "
msgstr ""
-#: vms-alpha.c:7428
+#: vms-alpha.c:7431
msgid "BASE_IMAGE "
msgstr ""
-#: vms-alpha.c:7431
+#: vms-alpha.c:7434
msgid "MEMORY_MANAGEMENT"
msgstr ""
-#: vms-alpha.c:7434
+#: vms-alpha.c:7437
msgid "IO "
msgstr ""
-#: vms-alpha.c:7437
+#: vms-alpha.c:7440
msgid "FILES_VOLUMES "
msgstr ""
-#: vms-alpha.c:7440
+#: vms-alpha.c:7443
msgid "PROCESS_SCHED "
msgstr ""
-#: vms-alpha.c:7443
+#: vms-alpha.c:7446
msgid "SYSGEN "
msgstr ""
-#: vms-alpha.c:7446
+#: vms-alpha.c:7449
msgid "CLUSTERS_LOCKMGR "
msgstr ""
-#: vms-alpha.c:7449
+#: vms-alpha.c:7452
msgid "LOGICAL_NAMES "
msgstr ""
-#: vms-alpha.c:7452
+#: vms-alpha.c:7455
msgid "SECURITY "
msgstr ""
-#: vms-alpha.c:7455
+#: vms-alpha.c:7458
msgid "IMAGE_ACTIVATOR "
msgstr ""
-#: vms-alpha.c:7458
+#: vms-alpha.c:7461
msgid "NETWORKS "
msgstr ""
-#: vms-alpha.c:7461
+#: vms-alpha.c:7464
msgid "COUNTERS "
msgstr ""
-#: vms-alpha.c:7464
+#: vms-alpha.c:7467
msgid "STABLE "
msgstr ""
-#: vms-alpha.c:7467
+#: vms-alpha.c:7470
msgid "MISC "
msgstr ""
-#: vms-alpha.c:7470
+#: vms-alpha.c:7473
msgid "CPU "
msgstr ""
-#: vms-alpha.c:7473
+#: vms-alpha.c:7476
msgid "VOLATILE "
msgstr ""
-#: vms-alpha.c:7476
+#: vms-alpha.c:7479
msgid "SHELL "
msgstr ""
-#: vms-alpha.c:7479
+#: vms-alpha.c:7482
msgid "POSIX "
msgstr ""
-#: vms-alpha.c:7482
+#: vms-alpha.c:7485
msgid "MULTI_PROCESSING "
msgstr ""
-#: vms-alpha.c:7485
+#: vms-alpha.c:7488
msgid "GALAXY "
msgstr ""
-#: vms-alpha.c:7488
+#: vms-alpha.c:7491
msgid "*unknown* "
msgstr ""
-#: vms-alpha.c:7491
+#: vms-alpha.c:7494
#, c-format
msgid ": %u.%u\n"
msgstr ""
-#: vms-alpha.c:7504 vms-alpha.c:7763
+#: vms-alpha.c:7507 vms-alpha.c:7766
#, c-format
msgid "cannot read EIHA\n"
msgstr ""
-#: vms-alpha.c:7507
+#: vms-alpha.c:7510
#, c-format
msgid "Image activation: (size=%u)\n"
msgstr ""
-#: vms-alpha.c:7509
+#: vms-alpha.c:7512
#, c-format
msgid " First address : 0x%08x 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7512
+#: vms-alpha.c:7515
#, c-format
msgid " Second address: 0x%08x 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7515
+#: vms-alpha.c:7518
#, c-format
msgid " Third address : 0x%08x 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7518
+#: vms-alpha.c:7521
#, c-format
msgid " Fourth address: 0x%08x 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7521
+#: vms-alpha.c:7524
#, c-format
msgid " Shared image : 0x%08x 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7532
+#: vms-alpha.c:7535
#, c-format
msgid "cannot read EIHI\n"
msgstr ""
-#: vms-alpha.c:7535
+#: vms-alpha.c:7538
#, c-format
msgid "Image identification: (major: %u, minor: %u)\n"
msgstr ""
-#: vms-alpha.c:7538
+#: vms-alpha.c:7541
#, c-format
msgid " image name : %.*s\n"
msgstr ""
-#: vms-alpha.c:7540
+#: vms-alpha.c:7543
#, c-format
msgid " link time : %s\n"
msgstr ""
-#: vms-alpha.c:7542
+#: vms-alpha.c:7545
#, c-format
msgid " image ident : %.*s\n"
msgstr ""
-#: vms-alpha.c:7544
+#: vms-alpha.c:7547
#, c-format
msgid " linker ident : %.*s\n"
msgstr ""
-#: vms-alpha.c:7546
+#: vms-alpha.c:7549
#, c-format
msgid " image build ident: %.*s\n"
msgstr ""
-#: vms-alpha.c:7556
+#: vms-alpha.c:7559
#, c-format
msgid "cannot read EIHS\n"
msgstr ""
-#: vms-alpha.c:7559
+#: vms-alpha.c:7562
#, c-format
msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
msgstr ""
-#: vms-alpha.c:7564
+#: vms-alpha.c:7567
#, c-format
msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
msgstr ""
-#: vms-alpha.c:7568
+#: vms-alpha.c:7571
#, c-format
msgid " global symbol table: vbn: %u, records: %u\n"
msgstr ""
-#: vms-alpha.c:7572
+#: vms-alpha.c:7575
#, c-format
msgid " debug module table : vbn: %u, size: %u\n"
msgstr ""
-#: vms-alpha.c:7585
+#: vms-alpha.c:7588
#, c-format
msgid "cannot read EISD\n"
msgstr ""
-#: vms-alpha.c:7595
+#: vms-alpha.c:7598
#, c-format
msgid ""
"Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
msgstr ""
-#: vms-alpha.c:7602
+#: vms-alpha.c:7605
#, c-format
msgid " section: base: 0x%08x%08x size: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7607
+#: vms-alpha.c:7610
#, c-format
msgid " flags: 0x%04x"
msgstr ""
-#: vms-alpha.c:7644
+#: vms-alpha.c:7647
#, c-format
msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
msgstr ""
-#: vms-alpha.c:7650
+#: vms-alpha.c:7653
msgid "NORMAL"
msgstr ""
-#: vms-alpha.c:7653
+#: vms-alpha.c:7656
msgid "SHRFXD"
msgstr ""
-#: vms-alpha.c:7656
+#: vms-alpha.c:7659
msgid "PRVFXD"
msgstr ""
-#: vms-alpha.c:7659
+#: vms-alpha.c:7662
msgid "SHRPIC"
msgstr ""
-#: vms-alpha.c:7662
+#: vms-alpha.c:7665
msgid "PRVPIC"
msgstr ""
-#: vms-alpha.c:7665
+#: vms-alpha.c:7668
msgid "USRSTACK"
msgstr ""
-#: vms-alpha.c:7673
+#: vms-alpha.c:7676
#, c-format
msgid " ident: 0x%08x, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7683
+#: vms-alpha.c:7686
#, c-format
msgid "cannot read DMT\n"
msgstr ""
-#: vms-alpha.c:7687
+#: vms-alpha.c:7690
#, c-format
msgid "Debug module table:\n"
msgstr ""
-#: vms-alpha.c:7696
+#: vms-alpha.c:7699
#, c-format
msgid "cannot read DMT header\n"
msgstr ""
-#: vms-alpha.c:7701
+#: vms-alpha.c:7704
#, c-format
msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
msgstr ""
-#: vms-alpha.c:7711
+#: vms-alpha.c:7714
#, c-format
msgid "cannot read DMT psect\n"
msgstr ""
-#: vms-alpha.c:7714
+#: vms-alpha.c:7717
#, c-format
msgid " psect start: 0x%08x, length: %u\n"
msgstr ""
-#: vms-alpha.c:7727
+#: vms-alpha.c:7730
#, c-format
msgid "cannot read DST\n"
msgstr ""
-#: vms-alpha.c:7737
+#: vms-alpha.c:7740
#, c-format
msgid "cannot read GST\n"
msgstr ""
-#: vms-alpha.c:7741
+#: vms-alpha.c:7744
#, c-format
msgid "Global symbol table:\n"
msgstr ""
-#: vms-alpha.c:7769
+#: vms-alpha.c:7772
#, c-format
msgid "Image activator fixup: (major: %u, minor: %u)\n"
msgstr ""
-#: vms-alpha.c:7772
+#: vms-alpha.c:7775
#, c-format
msgid " iaflink : 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:7775
+#: vms-alpha.c:7778
#, c-format
msgid " fixuplnk: 0x%08x %08x\n"
msgstr ""
-#: vms-alpha.c:7778
+#: vms-alpha.c:7781
#, c-format
msgid " size : %u\n"
msgstr ""
-#: vms-alpha.c:7780
+#: vms-alpha.c:7783
#, c-format
msgid " flags: 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7784
+#: vms-alpha.c:7787
#, c-format
msgid " qrelfixoff: %5u, lrelfixoff: %5u\n"
msgstr ""
-#: vms-alpha.c:7788
+#: vms-alpha.c:7791
#, c-format
msgid " qdotadroff: %5u, ldotadroff: %5u\n"
msgstr ""
-#: vms-alpha.c:7792
+#: vms-alpha.c:7795
#, c-format
msgid " codeadroff: %5u, lpfixoff : %5u\n"
msgstr ""
-#: vms-alpha.c:7795
+#: vms-alpha.c:7798
#, c-format
msgid " chgprtoff : %5u\n"
msgstr ""
-#: vms-alpha.c:7798
+#: vms-alpha.c:7801
#, c-format
msgid " shlstoff : %5u, shrimgcnt : %5u\n"
msgstr ""
-#: vms-alpha.c:7800
+#: vms-alpha.c:7803
#, c-format
msgid " shlextra : %5u, permctx : %5u\n"
msgstr ""
-#: vms-alpha.c:7803
+#: vms-alpha.c:7806
#, c-format
msgid " base_va : 0x%08x\n"
msgstr ""
-#: vms-alpha.c:7805
+#: vms-alpha.c:7808
#, c-format
msgid " lppsbfixoff: %5u\n"
msgstr ""
-#: vms-alpha.c:7813
+#: vms-alpha.c:7816
#, c-format
msgid " Shareable images:\n"
msgstr ""
-#: vms-alpha.c:7817
+#: vms-alpha.c:7820
#, c-format
msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n"
msgstr ""
-#: vms-alpha.c:7824
+#: vms-alpha.c:7827
#, c-format
msgid " quad-word relocation fixups:\n"
msgstr ""
-#: vms-alpha.c:7829
+#: vms-alpha.c:7832
#, c-format
msgid " long-word relocation fixups:\n"
msgstr ""
-#: vms-alpha.c:7834
+#: vms-alpha.c:7837
#, c-format
msgid " quad-word .address reference fixups:\n"
msgstr ""
-#: vms-alpha.c:7839
+#: vms-alpha.c:7842
#, c-format
msgid " long-word .address reference fixups:\n"
msgstr ""
-#: vms-alpha.c:7844
+#: vms-alpha.c:7847
#, c-format
msgid " Code Address Reference Fixups:\n"
msgstr ""
-#: vms-alpha.c:7849
+#: vms-alpha.c:7852
#, c-format
msgid " Linkage Pairs Referece Fixups:\n"
msgstr ""
-#: vms-alpha.c:7858
+#: vms-alpha.c:7861
#, c-format
msgid " Change Protection (%u entries):\n"
msgstr ""
-#: vms-alpha.c:7863
+#: vms-alpha.c:7866
#, c-format
msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
msgstr ""
#. FIXME: we do not yet support relocatable link. It is not obvious
#. how to do it for debug infos.
-#: vms-alpha.c:8694
+#: vms-alpha.c:8706
msgid "%P: relocatable link is not supported\n"
msgstr ""
-#: vms-alpha.c:8764
+#: vms-alpha.c:8776
msgid "%P: multiple entry points: in modules %B and %B\n"
msgstr ""
-#: vms-lib.c:1421
+#: vms-lib.c:1423
#, c-format
msgid "could not open shared image '%s' from '%s'"
msgstr ""
@@ -5788,23 +5853,23 @@ msgstr ""
msgid "warning: attempt to export undefined symbol `%s'"
msgstr ""
-#: xcofflink.c:3681
+#: xcofflink.c:3678
msgid "error: undefined symbol __rtinit"
msgstr ""
-#: xcofflink.c:4060
+#: xcofflink.c:4057
msgid "%B: loader reloc in unrecognized section `%s'"
msgstr ""
-#: xcofflink.c:4071
+#: xcofflink.c:4068
msgid "%B: `%s' in loader reloc but not loader sym"
msgstr ""
-#: xcofflink.c:4087
+#: xcofflink.c:4084
msgid "%B: loader reloc in read-only section %A"
msgstr ""
-#: xcofflink.c:5109
+#: xcofflink.c:5106
#, c-format
msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
msgstr ""
@@ -5815,77 +5880,77 @@ msgid ""
"branch."
msgstr ""
-#: elf32-ia64.c:2290 elf64-ia64.c:2290
+#: elf32-ia64.c:2284 elf64-ia64.c:2284
msgid "@pltoff reloc against local symbol"
msgstr ""
-#: elf32-ia64.c:3693 elf64-ia64.c:3693
+#: elf32-ia64.c:3687 elf64-ia64.c:3687
#, c-format
msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
msgstr ""
-#: elf32-ia64.c:3704 elf64-ia64.c:3704
+#: elf32-ia64.c:3698 elf64-ia64.c:3698
#, c-format
msgid "%s: __gp does not cover short data segment"
msgstr ""
-#: elf32-ia64.c:3971 elf64-ia64.c:3971
+#: elf32-ia64.c:3965 elf64-ia64.c:3965
msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
msgstr ""
-#: elf32-ia64.c:4038 elf64-ia64.c:4038
+#: elf32-ia64.c:4032 elf64-ia64.c:4032
msgid "%B: @gprel relocation against dynamic symbol %s"
msgstr ""
-#: elf32-ia64.c:4101 elf64-ia64.c:4101
+#: elf32-ia64.c:4095 elf64-ia64.c:4095
msgid "%B: linking non-pic code in a position independent executable"
msgstr ""
-#: elf32-ia64.c:4238 elf64-ia64.c:4238
+#: elf32-ia64.c:4232 elf64-ia64.c:4232
msgid "%B: @internal branch to dynamic symbol %s"
msgstr ""
-#: elf32-ia64.c:4240 elf64-ia64.c:4240
+#: elf32-ia64.c:4234 elf64-ia64.c:4234
msgid "%B: speculation fixup to dynamic symbol %s"
msgstr ""
-#: elf32-ia64.c:4242 elf64-ia64.c:4242
+#: elf32-ia64.c:4236 elf64-ia64.c:4236
msgid "%B: @pcrel relocation against dynamic symbol %s"
msgstr ""
-#: elf32-ia64.c:4439 elf64-ia64.c:4439
+#: elf32-ia64.c:4433 elf64-ia64.c:4433
msgid "unsupported reloc"
msgstr ""
-#: elf32-ia64.c:4477 elf64-ia64.c:4477
+#: elf32-ia64.c:4471 elf64-ia64.c:4471
msgid ""
"%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `"
"%A'."
msgstr ""
-#: elf32-ia64.c:4492 elf64-ia64.c:4492
+#: elf32-ia64.c:4486 elf64-ia64.c:4486
msgid ""
"%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> "
"0x1000000)."
msgstr ""
-#: elf32-ia64.c:4754 elf64-ia64.c:4754
+#: elf32-ia64.c:4748 elf64-ia64.c:4748
msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
msgstr ""
-#: elf32-ia64.c:4763 elf64-ia64.c:4763
+#: elf32-ia64.c:4757 elf64-ia64.c:4757
msgid "%B: linking big-endian files with little-endian files"
msgstr ""
-#: elf32-ia64.c:4772 elf64-ia64.c:4772
+#: elf32-ia64.c:4766 elf64-ia64.c:4766
msgid "%B: linking 64-bit files with 32-bit files"
msgstr ""
-#: elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf32-ia64.c:4775 elf64-ia64.c:4775
msgid "%B: linking constant-gp files with non-constant-gp files"
msgstr ""
-#: elf32-ia64.c:4791 elf64-ia64.c:4791
+#: elf32-ia64.c:4785 elf64-ia64.c:4785
msgid "%B: linking auto-pic files with non-auto-pic files"
msgstr ""
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 6ac7148902..4329649936 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -5960,6 +5960,35 @@ ENUMX
ENUMDOC
Tilera TILE-Gx Relocations.
+ENUM
+ BFD_RELOC_EPIPHANY_SIMM8
+ENUMDOC
+ Adapteva EPIPHANY - 8 bit signed pc-relative displacement
+ENUM
+ BFD_RELOC_EPIPHANY_SIMM24
+ENUMDOC
+ Adapteva EPIPHANY - 24 bit signed pc-relative displacement
+ENUM
+ BFD_RELOC_EPIPHANY_HIGH
+ENUMDOC
+ Adapteva EPIPHANY - 16 most-significant bits of absolute address
+ENUM
+ BFD_RELOC_EPIPHANY_LOW
+ENUMDOC
+ Adapteva EPIPHANY - 16 least-significant bits of absolute address
+ENUM
+ BFD_RELOC_EPIPHANY_SIMM11
+ENUMDOC
+ Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
+ENUM
+ BFD_RELOC_EPIPHANY_IMM11
+ENUMDOC
+ Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
+ENUM
+ BFD_RELOC_EPIPHANY_IMM8
+ENUMDOC
+ Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
+
ENDSENUM
BFD_RELOC_UNUSED
diff --git a/bfd/targets.c b/bfd/targets.c
index 46c2c9442e..b6d8116f87 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -607,6 +607,7 @@ extern const bfd_target bfd_elf32_crx_vec;
extern const bfd_target bfd_elf32_d10v_vec;
extern const bfd_target bfd_elf32_d30v_vec;
extern const bfd_target bfd_elf32_dlx_big_vec;
+extern const bfd_target bfd_elf32_epiphany_vec;
extern const bfd_target bfd_elf32_fr30_vec;
extern const bfd_target bfd_elf32_frv_vec;
extern const bfd_target bfd_elf32_frvfdpic_vec;
@@ -968,6 +969,7 @@ static const bfd_target * const _bfd_target_vector[] =
&bfd_elf32_d10v_vec,
&bfd_elf32_d30v_vec,
&bfd_elf32_dlx_big_vec,
+ &bfd_elf32_epiphany_vec,
&bfd_elf32_fr30_vec,
&bfd_elf32_frv_vec,
&bfd_elf32_frvfdpic_vec,
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index b54213b55c..43937986dd 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * readelf.c: Include "elf/epiphany.h".
+ (guess_is_rela, dump_relocation): Handle EM_ADAPTEVA_EPIPHANY.
+ (get_machine_name, is_32bit_abs_reloc, is_32bit_pcrel_reloc): Likewise.
+ (is_16bit_abs_reloc, is_none_reloc): Likewise.
+ * po/binutils.pot: Regenerate.
+
2011-10-25 Kai Tietz <ktietz@redhat.com>
* winduni.h (unicode_from_ascii_len): New prototype.
diff --git a/binutils/po/binutils.pot b/binutils/po/binutils.pot
index be2df718b5..0d0839782f 100644
--- a/binutils/po/binutils.pot
+++ b/binutils/po/binutils.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2011-10-13 16:24+0100\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -55,7 +55,7 @@ msgstr ""
#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
-#: readelf.c:3207 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
#: windmc.c:228 windres.c:695
#, c-format
msgid "Report bugs to %s\n"
@@ -621,7 +621,7 @@ msgstr ""
msgid "Symbol %s, tag %d, number %d"
msgstr ""
-#: coffdump.c:345 readelf.c:12201 readelf.c:12275
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
#, c-format
msgid "Type"
msgstr ""
@@ -1528,7 +1528,7 @@ msgstr ""
msgid "Wrong size in print_dwarf_vma"
msgstr ""
-#: dwarf.c:256 dwarf.c:3026
+#: dwarf.c:256 dwarf.c:3027
msgid "badly formed extended line op encountered!\n"
msgstr ""
@@ -1554,7 +1554,7 @@ msgstr ""
msgid " define new File Table entry\n"
msgstr ""
-#: dwarf.c:281 dwarf.c:2554
+#: dwarf.c:281 dwarf.c:2555
#, c-format
msgid " Entry\tDir\tTime\tSize\tName\n"
msgstr ""
@@ -1754,247 +1754,247 @@ msgstr ""
msgid "(location list)"
msgstr ""
-#: dwarf.c:1761 dwarf.c:4044
+#: dwarf.c:1761 dwarf.c:4045
#, c-format
msgid " [without DW_AT_frame_base]"
msgstr ""
-#: dwarf.c:1776
+#: dwarf.c:1777
#, c-format
msgid ""
"Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is "
"too big.\n"
msgstr ""
-#: dwarf.c:1786
+#: dwarf.c:1787
#, c-format
msgid "[Abbrev Number: %ld"
msgstr ""
-#: dwarf.c:1977
+#: dwarf.c:1978
#, c-format
msgid "Unknown AT value: %lx"
msgstr ""
-#: dwarf.c:2048
+#: dwarf.c:2049
#, c-format
msgid "Reserved length value (0x%s) found in section %s\n"
msgstr ""
-#: dwarf.c:2060
+#: dwarf.c:2061
#, c-format
msgid "Corrupt unit length (0x%s) found in section %s\n"
msgstr ""
-#: dwarf.c:2068
+#: dwarf.c:2069
#, c-format
msgid "No comp units in %s section ?"
msgstr ""
-#: dwarf.c:2077
+#: dwarf.c:2078
#, c-format
msgid "Not enough memory for a debug info array of %u entries"
msgstr ""
-#: dwarf.c:2086 dwarf.c:3295 dwarf.c:3389 dwarf.c:3550 dwarf.c:3778
-#: dwarf.c:3910 dwarf.c:4080 dwarf.c:4149 dwarf.c:4353
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
#, c-format
msgid ""
"Contents of the %s section:\n"
"\n"
msgstr ""
-#: dwarf.c:2094
+#: dwarf.c:2095
#, c-format
msgid "Unable to locate %s section!\n"
msgstr ""
-#: dwarf.c:2175
+#: dwarf.c:2176
#, c-format
msgid " Compilation Unit @ offset 0x%s:\n"
msgstr ""
-#: dwarf.c:2177
+#: dwarf.c:2178
#, c-format
msgid " Length: 0x%s (%s)\n"
msgstr ""
-#: dwarf.c:2180
+#: dwarf.c:2181
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: dwarf.c:2181
+#: dwarf.c:2182
#, c-format
msgid " Abbrev Offset: %s\n"
msgstr ""
-#: dwarf.c:2183
+#: dwarf.c:2184
#, c-format
msgid " Pointer Size: %d\n"
msgstr ""
-#: dwarf.c:2187
+#: dwarf.c:2188
#, c-format
msgid " Signature: "
msgstr ""
-#: dwarf.c:2191
+#: dwarf.c:2192
#, c-format
msgid " Type Offset: 0x%s\n"
msgstr ""
-#: dwarf.c:2199
+#: dwarf.c:2200
#, c-format
msgid ""
"Debug info is corrupted, length of CU at %s extends beyond end of section "
"(length = %s)\n"
msgstr ""
-#: dwarf.c:2212
+#: dwarf.c:2213
#, c-format
msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
msgstr ""
-#: dwarf.c:2223
+#: dwarf.c:2224
#, c-format
msgid ""
"Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section "
"size (%lx)\n"
msgstr ""
-#: dwarf.c:2273
+#: dwarf.c:2274
#, c-format
msgid ""
"Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
msgstr ""
-#: dwarf.c:2277
+#: dwarf.c:2278
msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
msgstr ""
-#: dwarf.c:2296
+#: dwarf.c:2297
#, c-format
msgid " <%d><%lx>: Abbrev Number: %lu"
msgstr ""
-#: dwarf.c:2300
+#: dwarf.c:2301
#, c-format
msgid " <%d><%lx>: ...\n"
msgstr ""
-#: dwarf.c:2319
+#: dwarf.c:2320
#, c-format
msgid ""
"DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
msgstr ""
-#: dwarf.c:2421
+#: dwarf.c:2422
#, c-format
msgid ""
"Raw dump of debug contents of section %s:\n"
"\n"
msgstr ""
-#: dwarf.c:2459
+#: dwarf.c:2460
#, c-format
msgid ""
"The information in section %s appears to be corrupt - the section is too "
"small\n"
msgstr ""
-#: dwarf.c:2471 dwarf.c:2839
+#: dwarf.c:2472 dwarf.c:2840
msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
msgstr ""
-#: dwarf.c:2485 dwarf.c:2854
+#: dwarf.c:2486 dwarf.c:2855
msgid "Invalid maximum operations per insn.\n"
msgstr ""
-#: dwarf.c:2504 dwarf.c:3573
+#: dwarf.c:2505 dwarf.c:3574
#, c-format
msgid " Offset: 0x%lx\n"
msgstr ""
-#: dwarf.c:2505
+#: dwarf.c:2506
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: dwarf.c:2506
+#: dwarf.c:2507
#, c-format
msgid " DWARF Version: %d\n"
msgstr ""
-#: dwarf.c:2507
+#: dwarf.c:2508
#, c-format
msgid " Prologue Length: %d\n"
msgstr ""
-#: dwarf.c:2508
+#: dwarf.c:2509
#, c-format
msgid " Minimum Instruction Length: %d\n"
msgstr ""
-#: dwarf.c:2510
+#: dwarf.c:2511
#, c-format
msgid " Maximum Ops per Instruction: %d\n"
msgstr ""
-#: dwarf.c:2511
+#: dwarf.c:2512
#, c-format
msgid " Initial value of 'is_stmt': %d\n"
msgstr ""
-#: dwarf.c:2512
+#: dwarf.c:2513
#, c-format
msgid " Line Base: %d\n"
msgstr ""
-#: dwarf.c:2513
+#: dwarf.c:2514
#, c-format
msgid " Line Range: %d\n"
msgstr ""
-#: dwarf.c:2514
+#: dwarf.c:2515
#, c-format
msgid " Opcode Base: %d\n"
msgstr ""
-#: dwarf.c:2523
+#: dwarf.c:2524
#, c-format
msgid ""
"\n"
" Opcodes:\n"
msgstr ""
-#: dwarf.c:2526
+#: dwarf.c:2527
#, c-format
msgid " Opcode %d has %d args\n"
msgstr ""
-#: dwarf.c:2532
+#: dwarf.c:2533
#, c-format
msgid ""
"\n"
" The Directory Table is empty.\n"
msgstr ""
-#: dwarf.c:2535
+#: dwarf.c:2536
#, c-format
msgid ""
"\n"
" The Directory Table:\n"
msgstr ""
-#: dwarf.c:2550
+#: dwarf.c:2551
#, c-format
msgid ""
"\n"
" The File Name Table is empty.\n"
msgstr ""
-#: dwarf.c:2553
+#: dwarf.c:2554
#, c-format
msgid ""
"\n"
@@ -2002,569 +2002,569 @@ msgid ""
msgstr ""
#. Now display the statements.
-#: dwarf.c:2583
+#: dwarf.c:2584
#, c-format
msgid ""
"\n"
" Line Number Statements:\n"
msgstr ""
-#: dwarf.c:2602
+#: dwarf.c:2603
#, c-format
msgid " Special opcode %d: advance Address by %s to 0x%s"
msgstr ""
-#: dwarf.c:2616
+#: dwarf.c:2617
#, c-format
msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
msgstr ""
-#: dwarf.c:2624
+#: dwarf.c:2625
#, c-format
msgid " and Line by %s to %d\n"
msgstr ""
-#: dwarf.c:2634
+#: dwarf.c:2635
#, c-format
msgid " Copy\n"
msgstr ""
-#: dwarf.c:2644
+#: dwarf.c:2645
#, c-format
msgid " Advance PC by %s to 0x%s\n"
msgstr ""
-#: dwarf.c:2657
+#: dwarf.c:2658
#, c-format
msgid " Advance PC by %s to 0x%s[%d]\n"
msgstr ""
-#: dwarf.c:2668
+#: dwarf.c:2669
#, c-format
msgid " Advance Line by %s to %d\n"
msgstr ""
-#: dwarf.c:2676
+#: dwarf.c:2677
#, c-format
msgid " Set File Name to entry %s in the File Name Table\n"
msgstr ""
-#: dwarf.c:2684
+#: dwarf.c:2685
#, c-format
msgid " Set column to %s\n"
msgstr ""
-#: dwarf.c:2692
+#: dwarf.c:2693
#, c-format
msgid " Set is_stmt to %s\n"
msgstr ""
-#: dwarf.c:2697
+#: dwarf.c:2698
#, c-format
msgid " Set basic block\n"
msgstr ""
-#: dwarf.c:2707
+#: dwarf.c:2708
#, c-format
msgid " Advance PC by constant %s to 0x%s\n"
msgstr ""
-#: dwarf.c:2720
+#: dwarf.c:2721
#, c-format
msgid " Advance PC by constant %s to 0x%s[%d]\n"
msgstr ""
-#: dwarf.c:2732
+#: dwarf.c:2733
#, c-format
msgid " Advance PC by fixed size amount %s to 0x%s\n"
msgstr ""
-#: dwarf.c:2738
+#: dwarf.c:2739
#, c-format
msgid " Set prologue_end to true\n"
msgstr ""
-#: dwarf.c:2742
+#: dwarf.c:2743
#, c-format
msgid " Set epilogue_begin to true\n"
msgstr ""
-#: dwarf.c:2748
+#: dwarf.c:2749
#, c-format
msgid " Set ISA to %s\n"
msgstr ""
-#: dwarf.c:2752 dwarf.c:3167
+#: dwarf.c:2753 dwarf.c:3168
#, c-format
msgid " Unknown opcode %d with operands: "
msgstr ""
-#: dwarf.c:2786
+#: dwarf.c:2787
#, c-format
msgid ""
"Decoded dump of debug contents of section %s:\n"
"\n"
msgstr ""
-#: dwarf.c:2827
+#: dwarf.c:2828
msgid "The line info appears to be corrupt - the section is too small\n"
msgstr ""
-#: dwarf.c:2959
+#: dwarf.c:2960
#, c-format
msgid "CU: %s:\n"
msgstr ""
-#: dwarf.c:2960 dwarf.c:2971
+#: dwarf.c:2961 dwarf.c:2972
#, c-format
msgid "File name Line number Starting address\n"
msgstr ""
-#: dwarf.c:2967
+#: dwarf.c:2968
#, c-format
msgid "CU: %s/%s:\n"
msgstr ""
-#: dwarf.c:3058
+#: dwarf.c:3059
#, c-format
msgid "UNKNOWN: length %d\n"
msgstr ""
-#: dwarf.c:3163
+#: dwarf.c:3164
#, c-format
msgid " Set ISA to %lu\n"
msgstr ""
-#: dwarf.c:3329 dwarf.c:4194
+#: dwarf.c:3330 dwarf.c:4195
#, c-format
msgid ""
".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
msgstr ""
-#: dwarf.c:3343
+#: dwarf.c:3344
msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
msgstr ""
-#: dwarf.c:3350
+#: dwarf.c:3351
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: dwarf.c:3352
+#: dwarf.c:3353
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: dwarf.c:3354
+#: dwarf.c:3355
#, c-format
msgid " Offset into .debug_info section: 0x%lx\n"
msgstr ""
-#: dwarf.c:3356
+#: dwarf.c:3357
#, c-format
msgid " Size of area in .debug_info section: %ld\n"
msgstr ""
-#: dwarf.c:3359
+#: dwarf.c:3360
#, c-format
msgid ""
"\n"
" Offset\tName\n"
msgstr ""
-#: dwarf.c:3410
+#: dwarf.c:3411
#, c-format
msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
msgstr ""
-#: dwarf.c:3416
+#: dwarf.c:3417
#, c-format
msgid " DW_MACINFO_end_file\n"
msgstr ""
-#: dwarf.c:3424
+#: dwarf.c:3425
#, c-format
msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3433
+#: dwarf.c:3434
#, c-format
msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3445
+#: dwarf.c:3446
#, c-format
msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
msgstr ""
-#: dwarf.c:3565
+#: dwarf.c:3566
#, c-format
msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
msgstr ""
-#: dwarf.c:3575
+#: dwarf.c:3576
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: dwarf.c:3576
+#: dwarf.c:3577
#, c-format
msgid " Offset size: %d\n"
msgstr ""
-#: dwarf.c:3581
+#: dwarf.c:3582
#, c-format
msgid " Offset into .debug_line: 0x%lx\n"
msgstr ""
-#: dwarf.c:3592
+#: dwarf.c:3593
#, c-format
msgid " Extension opcode arguments:\n"
msgstr ""
-#: dwarf.c:3600
+#: dwarf.c:3601
#, c-format
msgid " DW_MACRO_GNU_%02x has no arguments\n"
msgstr ""
-#: dwarf.c:3603
+#: dwarf.c:3604
#, c-format
msgid " DW_MACRO_GNU_%02x arguments: "
msgstr ""
-#: dwarf.c:3627
+#: dwarf.c:3628
#, c-format
msgid "Invalid extension opcode form %s\n"
msgstr ""
-#: dwarf.c:3644
+#: dwarf.c:3645
msgid ".debug_macro section not zero terminated\n"
msgstr ""
-#: dwarf.c:3665
+#: dwarf.c:3666
msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
msgstr ""
-#: dwarf.c:3671
+#: dwarf.c:3672
#, c-format
msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
msgstr ""
-#: dwarf.c:3674
+#: dwarf.c:3675
#, c-format
msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
msgstr ""
-#: dwarf.c:3682
+#: dwarf.c:3683
#, c-format
msgid " DW_MACRO_GNU_end_file\n"
msgstr ""
-#: dwarf.c:3690
+#: dwarf.c:3691
#, c-format
msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3699
+#: dwarf.c:3700
#, c-format
msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3709
+#: dwarf.c:3710
#, c-format
msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3719
+#: dwarf.c:3720
#, c-format
msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
msgstr ""
-#: dwarf.c:3726
+#: dwarf.c:3727
#, c-format
msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
msgstr ""
-#: dwarf.c:3733
+#: dwarf.c:3734
#, c-format
msgid " Unknown macro opcode %02x seen\n"
msgstr ""
-#: dwarf.c:3745
+#: dwarf.c:3746
#, c-format
msgid " DW_MACRO_GNU_%02x\n"
msgstr ""
-#: dwarf.c:3748
+#: dwarf.c:3749
#, c-format
msgid " DW_MACRO_GNU_%02x -"
msgstr ""
-#: dwarf.c:3789
+#: dwarf.c:3790
#, c-format
msgid " Number TAG\n"
msgstr ""
-#: dwarf.c:3798
+#: dwarf.c:3799
msgid "has children"
msgstr ""
-#: dwarf.c:3798
+#: dwarf.c:3799
msgid "no children"
msgstr ""
-#: dwarf.c:3849 dwarf.c:4076 dwarf.c:4310
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
#, c-format
msgid ""
"\n"
"The %s section is empty.\n"
msgstr ""
-#: dwarf.c:3855 dwarf.c:4316
+#: dwarf.c:3856 dwarf.c:4317
#, c-format
msgid ""
"Unable to load/parse the .debug_info section, so cannot interpret the %s "
"section.\n"
msgstr ""
-#: dwarf.c:3899
+#: dwarf.c:3900
msgid "No location lists in .debug_info section!\n"
msgstr ""
-#: dwarf.c:3904
+#: dwarf.c:3905
#, c-format
msgid "Location lists in %s section start at 0x%s\n"
msgstr ""
-#: dwarf.c:3911
+#: dwarf.c:3912
#, c-format
msgid " Offset Begin End Expression\n"
msgstr ""
-#: dwarf.c:3960
+#: dwarf.c:3961
#, c-format
msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
msgstr ""
-#: dwarf.c:3964
+#: dwarf.c:3965
#, c-format
msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
msgstr ""
-#: dwarf.c:3972
+#: dwarf.c:3973
#, c-format
msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
msgstr ""
-#: dwarf.c:3981 dwarf.c:4016 dwarf.c:4026
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
#, c-format
msgid "Location list starting at offset 0x%lx is not terminated.\n"
msgstr ""
-#: dwarf.c:4000 dwarf.c:4404
+#: dwarf.c:4001 dwarf.c:4405
#, c-format
msgid "<End of list>\n"
msgstr ""
-#: dwarf.c:4010
+#: dwarf.c:4011
#, c-format
msgid "(base address)\n"
msgstr ""
-#: dwarf.c:4047
+#: dwarf.c:4048
msgid " (start == end)"
msgstr ""
-#: dwarf.c:4049
+#: dwarf.c:4050
msgid " (start > end)"
msgstr ""
-#: dwarf.c:4059
+#: dwarf.c:4060
#, c-format
msgid "There are %ld unused bytes at the end of section %s\n"
msgstr ""
-#: dwarf.c:4205
+#: dwarf.c:4206
msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
msgstr ""
-#: dwarf.c:4209
+#: dwarf.c:4210
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: dwarf.c:4211
+#: dwarf.c:4212
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: dwarf.c:4212
+#: dwarf.c:4213
#, c-format
msgid " Offset into .debug_info: 0x%lx\n"
msgstr ""
-#: dwarf.c:4214
+#: dwarf.c:4215
#, c-format
msgid " Pointer Size: %d\n"
msgstr ""
-#: dwarf.c:4215
+#: dwarf.c:4216
#, c-format
msgid " Segment Size: %d\n"
msgstr ""
-#: dwarf.c:4221
+#: dwarf.c:4222
#, c-format
msgid "Invalid address size in %s section!\n"
msgstr ""
-#: dwarf.c:4231
+#: dwarf.c:4232
msgid "Pointer size + Segment size is not a power of two.\n"
msgstr ""
-#: dwarf.c:4236
+#: dwarf.c:4237
#, c-format
msgid ""
"\n"
" Address Length\n"
msgstr ""
-#: dwarf.c:4238
+#: dwarf.c:4239
#, c-format
msgid ""
"\n"
" Address Length\n"
msgstr ""
-#: dwarf.c:4326
+#: dwarf.c:4327
msgid "No range lists in .debug_info section!\n"
msgstr ""
-#: dwarf.c:4350
+#: dwarf.c:4351
#, c-format
msgid "Range lists in %s section start at 0x%lx\n"
msgstr ""
-#: dwarf.c:4354
+#: dwarf.c:4355
#, c-format
msgid " Offset Begin End\n"
msgstr ""
-#: dwarf.c:4375
+#: dwarf.c:4376
#, c-format
msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
msgstr ""
-#: dwarf.c:4379
+#: dwarf.c:4380
#, c-format
msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
msgstr ""
-#: dwarf.c:4422
+#: dwarf.c:4423
msgid "(start == end)"
msgstr ""
-#: dwarf.c:4424
+#: dwarf.c:4425
msgid "(start > end)"
msgstr ""
-#: dwarf.c:4677
+#: dwarf.c:4678
msgid "bad register: "
msgstr ""
#. The documentation for the format of this file is in gdb/dwarf2read.c.
-#: dwarf.c:4680 dwarf.c:5489
+#: dwarf.c:4681 dwarf.c:5490
#, c-format
msgid "Contents of the %s section:\n"
msgstr ""
-#: dwarf.c:5450
+#: dwarf.c:5451
#, c-format
msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
msgstr ""
-#: dwarf.c:5452
+#: dwarf.c:5453
#, c-format
msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
msgstr ""
-#: dwarf.c:5493
+#: dwarf.c:5494
#, c-format
msgid "Truncated header in the %s section.\n"
msgstr ""
-#: dwarf.c:5498
+#: dwarf.c:5499
#, c-format
msgid "Version %ld\n"
msgstr ""
-#: dwarf.c:5505
+#: dwarf.c:5506
msgid "The address table data in version 3 may be wrong.\n"
msgstr ""
-#: dwarf.c:5508
+#: dwarf.c:5509
msgid "Version 4 does not support case insensitive lookups.\n"
msgstr ""
-#: dwarf.c:5513
+#: dwarf.c:5514
#, c-format
msgid "Unsupported version %lu.\n"
msgstr ""
-#: dwarf.c:5529
+#: dwarf.c:5530
#, c-format
msgid "Corrupt header in the %s section.\n"
msgstr ""
-#: dwarf.c:5544
+#: dwarf.c:5545
#, c-format
msgid ""
"\n"
"CU table:\n"
msgstr ""
-#: dwarf.c:5550
+#: dwarf.c:5551
#, c-format
msgid "[%3u] 0x%lx - 0x%lx\n"
msgstr ""
-#: dwarf.c:5555
+#: dwarf.c:5556
#, c-format
msgid ""
"\n"
"TU table:\n"
msgstr ""
-#: dwarf.c:5562
+#: dwarf.c:5563
#, c-format
msgid "[%3u] 0x%lx 0x%lx "
msgstr ""
-#: dwarf.c:5569
+#: dwarf.c:5570
#, c-format
msgid ""
"\n"
"Address table:\n"
msgstr ""
-#: dwarf.c:5578
+#: dwarf.c:5579
#, c-format
msgid "%lu\n"
msgstr ""
-#: dwarf.c:5581
+#: dwarf.c:5582
#, c-format
msgid ""
"\n"
"Symbol table:\n"
msgstr ""
-#: dwarf.c:5615
+#: dwarf.c:5616
#, c-format
msgid "Displaying the debug contents of section %s is not yet supported.\n"
msgstr ""
-#: dwarf.c:5751 dwarf.c:5821
+#: dwarf.c:5752 dwarf.c:5822
#, c-format
msgid "Unrecognized debug option '%s'\n"
msgstr ""
@@ -2584,11 +2584,11 @@ msgstr ""
msgid "Unhandled data length: %d\n"
msgstr ""
-#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3676 readelf.c:3984
-#: readelf.c:4027 readelf.c:4101 readelf.c:4180 readelf.c:4958 readelf.c:4982
-#: readelf.c:7390 readelf.c:7436 readelf.c:7635 readelf.c:8856 readelf.c:8870
-#: readelf.c:9416 readelf.c:9432 readelf.c:9475 readelf.c:9500 readelf.c:11890
-#: readelf.c:12082 readelf.c:12915
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
msgid "Out of memory\n"
msgstr ""
@@ -2597,7 +2597,7 @@ msgstr ""
msgid "%s: failed to seek to first archive header\n"
msgstr ""
-#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13404
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
#, c-format
msgid "%s: failed to read archive header\n"
msgstr ""
@@ -2670,7 +2670,7 @@ msgstr ""
msgid "%s: failed to seek to next file name\n"
msgstr ""
-#: elfcomm.c:616 elfedit.c:347 readelf.c:13410
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
#, c-format
msgid "%s: did not find a valid archive header\n"
msgstr ""
@@ -2731,12 +2731,12 @@ msgstr ""
msgid "%s: Failed to seek to ELF header\n"
msgstr ""
-#: elfedit.c:331 readelf.c:13396
+#: elfedit.c:331 readelf.c:13410
#, c-format
msgid "%s: failed to seek to next archive header\n"
msgstr ""
-#: elfedit.c:362 elfedit.c:371 readelf.c:13424 readelf.c:13433
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
#, c-format
msgid "%s: bad archive file name\n"
msgstr ""
@@ -2751,22 +2751,22 @@ msgstr ""
msgid "%s: failed to seek to archive member\n"
msgstr ""
-#: elfedit.c:454 readelf.c:13519
+#: elfedit.c:454 readelf.c:13533
#, c-format
msgid "'%s': No such file\n"
msgstr ""
-#: elfedit.c:456 readelf.c:13521
+#: elfedit.c:456 readelf.c:13535
#, c-format
msgid "Could not locate '%s'. System error message: %s\n"
msgstr ""
-#: elfedit.c:463 readelf.c:13528
+#: elfedit.c:463 readelf.c:13542
#, c-format
msgid "'%s' is not an ordinary file\n"
msgstr ""
-#: elfedit.c:489 readelf.c:13541
+#: elfedit.c:489 readelf.c:13555
#, c-format
msgid "%s: Failed to read file's magic number\n"
msgstr ""
@@ -3337,17 +3337,17 @@ msgstr ""
msgid "%s: invalid output format"
msgstr ""
-#: nm.c:346 readelf.c:8609 readelf.c:8654
+#: nm.c:346 readelf.c:8616 readelf.c:8661
#, c-format
msgid "<processor specific>: %d"
msgstr ""
-#: nm.c:348 readelf.c:8618 readelf.c:8672
+#: nm.c:348 readelf.c:8625 readelf.c:8679
#, c-format
msgid "<OS specific>: %d"
msgstr ""
-#: nm.c:350 readelf.c:8621 readelf.c:8675
+#: nm.c:350 readelf.c:8628 readelf.c:8682
#, c-format
msgid "<unknown>: %d"
msgstr ""
@@ -4694,250 +4694,250 @@ msgstr ""
msgid "Last stabs entries before error:\n"
msgstr ""
-#: readelf.c:267
+#: readelf.c:268
msgid "<none>"
msgstr ""
-#: readelf.c:268
+#: readelf.c:269
msgid "<no-name>"
msgstr ""
-#: readelf.c:269 readelf.c:5076 readelf.c:5587 readelf.c:8125 readelf.c:8243
-#: readelf.c:9226 readelf.c:9320 readelf.c:9381 readelf.c:12377
-#: readelf.c:12380
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
msgid "<corrupt>"
msgstr ""
-#: readelf.c:308
+#: readelf.c:309
#, c-format
msgid "Unable to seek to 0x%lx for %s\n"
msgstr ""
-#: readelf.c:323
+#: readelf.c:324
#, c-format
msgid "Out of memory allocating 0x%lx bytes for %s\n"
msgstr ""
-#: readelf.c:333
+#: readelf.c:334
#, c-format
msgid "Unable to read in 0x%lx bytes of %s\n"
msgstr ""
-#: readelf.c:636
+#: readelf.c:638
msgid "Don't know about relocations on this machine architecture\n"
msgstr ""
-#: readelf.c:657 readelf.c:755
+#: readelf.c:659 readelf.c:757
msgid "32-bit relocation data"
msgstr ""
-#: readelf.c:669 readelf.c:699 readelf.c:766 readelf.c:795
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
msgid "out of memory parsing relocs\n"
msgstr ""
-#: readelf.c:687 readelf.c:784
+#: readelf.c:689 readelf.c:786
msgid "64-bit relocation data"
msgstr ""
-#: readelf.c:900
+#: readelf.c:902
#, c-format
msgid ""
" Offset Info Type Sym. Value Symbol's Name + Addend\n"
msgstr ""
-#: readelf.c:902
+#: readelf.c:904
#, c-format
msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
msgstr ""
-#: readelf.c:907
+#: readelf.c:909
#, c-format
msgid " Offset Info Type Sym. Value Symbol's Name\n"
msgstr ""
-#: readelf.c:909
+#: readelf.c:911
#, c-format
msgid " Offset Info Type Sym.Value Sym. Name\n"
msgstr ""
-#: readelf.c:917
+#: readelf.c:919
#, c-format
msgid ""
" Offset Info Type Symbol's Value "
"Symbol's Name + Addend\n"
msgstr ""
-#: readelf.c:919
+#: readelf.c:921
#, c-format
msgid ""
" Offset Info Type Sym. Value Sym. Name + "
"Addend\n"
msgstr ""
-#: readelf.c:924
+#: readelf.c:926
#, c-format
msgid ""
" Offset Info Type Symbol's Value "
"Symbol's Name\n"
msgstr ""
-#: readelf.c:926
+#: readelf.c:928
#, c-format
msgid ""
" Offset Info Type Sym. Value Sym. Name\n"
msgstr ""
-#: readelf.c:1239 readelf.c:1399 readelf.c:1407
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
#, c-format
msgid "unrecognized: %-7lx"
msgstr ""
-#: readelf.c:1264
+#: readelf.c:1270
#, c-format
msgid "<unknown addend: %lx>"
msgstr ""
-#: readelf.c:1271
+#: readelf.c:1277
#, c-format
msgid " bad symbol index: %08lx"
msgstr ""
-#: readelf.c:1357
+#: readelf.c:1363
#, c-format
msgid "<string table index: %3ld>"
msgstr ""
-#: readelf.c:1359
+#: readelf.c:1365
#, c-format
msgid "<corrupt string table index: %3ld>"
msgstr ""
-#: readelf.c:1752
+#: readelf.c:1758
#, c-format
msgid "Processor Specific: %lx"
msgstr ""
-#: readelf.c:1776
+#: readelf.c:1782
#, c-format
msgid "Operating System specific: %lx"
msgstr ""
-#: readelf.c:1780 readelf.c:2851
+#: readelf.c:1786 readelf.c:2858
#, c-format
msgid "<unknown>: %lx"
msgstr ""
-#: readelf.c:1793
+#: readelf.c:1799
msgid "NONE (None)"
msgstr ""
-#: readelf.c:1794
+#: readelf.c:1800
msgid "REL (Relocatable file)"
msgstr ""
-#: readelf.c:1795
+#: readelf.c:1801
msgid "EXEC (Executable file)"
msgstr ""
-#: readelf.c:1796
+#: readelf.c:1802
msgid "DYN (Shared object file)"
msgstr ""
-#: readelf.c:1797
+#: readelf.c:1803
msgid "CORE (Core file)"
msgstr ""
-#: readelf.c:1801
+#: readelf.c:1807
#, c-format
msgid "Processor Specific: (%x)"
msgstr ""
-#: readelf.c:1803
+#: readelf.c:1809
#, c-format
msgid "OS Specific: (%x)"
msgstr ""
-#: readelf.c:1805
+#: readelf.c:1811
#, c-format
msgid "<unknown>: %x"
msgstr ""
-#: readelf.c:1817
+#: readelf.c:1823
msgid "None"
msgstr ""
-#: readelf.c:1987
+#: readelf.c:1994
#, c-format
msgid "<unknown>: 0x%x"
msgstr ""
-#: readelf.c:2173
+#: readelf.c:2180
msgid ", <unknown>"
msgstr ""
-#: readelf.c:2259 readelf.c:7478
+#: readelf.c:2266 readelf.c:7485
msgid "unknown"
msgstr ""
-#: readelf.c:2260
+#: readelf.c:2267
msgid "unknown mac"
msgstr ""
-#: readelf.c:2324
+#: readelf.c:2331
msgid ", relocatable"
msgstr ""
-#: readelf.c:2327
+#: readelf.c:2334
msgid ", relocatable-lib"
msgstr ""
-#: readelf.c:2350
+#: readelf.c:2357
msgid ", unknown v850 architecture variant"
msgstr ""
-#: readelf.c:2407
+#: readelf.c:2414
msgid ", unknown CPU"
msgstr ""
-#: readelf.c:2422
+#: readelf.c:2429
msgid ", unknown ABI"
msgstr ""
-#: readelf.c:2445 readelf.c:2479
+#: readelf.c:2452 readelf.c:2486
msgid ", unknown ISA"
msgstr ""
-#: readelf.c:2656
+#: readelf.c:2663
msgid "Standalone App"
msgstr ""
-#: readelf.c:2665
+#: readelf.c:2672
msgid "Bare-metal C6000"
msgstr ""
-#: readelf.c:2675 readelf.c:3464 readelf.c:3480
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
#, c-format
msgid "<unknown: %x>"
msgstr ""
#. This message is probably going to be displayed in a 15
#. character wide field, so put the hex value first.
-#: readelf.c:3101
+#: readelf.c:3108
#, c-format
msgid "%08x: <unknown>"
msgstr ""
-#: readelf.c:3156
+#: readelf.c:3163
#, c-format
msgid "Usage: readelf <option(s)> elf-file(s)\n"
msgstr ""
-#: readelf.c:3157
+#: readelf.c:3164
#, c-format
msgid " Display information about the contents of ELF format files\n"
msgstr ""
-#: readelf.c:3158
+#: readelf.c:3165
#, c-format
msgid ""
" Options are:\n"
@@ -4980,7 +4980,7 @@ msgid ""
" Display the contents of DWARF2 debug sections\n"
msgstr ""
-#: readelf.c:3190
+#: readelf.c:3197
#, c-format
msgid ""
" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
@@ -4988,14 +4988,14 @@ msgid ""
" or deeper\n"
msgstr ""
-#: readelf.c:3195
+#: readelf.c:3202
#, c-format
msgid ""
" -i --instruction-dump=<number|name>\n"
" Disassemble the contents of section <number|name>\n"
msgstr ""
-#: readelf.c:3199
+#: readelf.c:3206
#, c-format
msgid ""
" -I --histogram Display histogram of bucket list lengths\n"
@@ -5005,421 +5005,421 @@ msgid ""
" -v --version Display the version number of readelf\n"
msgstr ""
-#: readelf.c:3228 readelf.c:3257 readelf.c:3261 readelf.c:13609
+#: readelf.c:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
msgid "Out of memory allocating dump request table.\n"
msgstr ""
-#: readelf.c:3433
+#: readelf.c:3440
#, c-format
msgid "Invalid option '-%c'\n"
msgstr ""
-#: readelf.c:3448
+#: readelf.c:3455
msgid "Nothing to do.\n"
msgstr ""
-#: readelf.c:3460 readelf.c:3476 readelf.c:8061
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
msgid "none"
msgstr ""
-#: readelf.c:3477
+#: readelf.c:3484
msgid "2's complement, little endian"
msgstr ""
-#: readelf.c:3478
+#: readelf.c:3485
msgid "2's complement, big endian"
msgstr ""
-#: readelf.c:3496
+#: readelf.c:3503
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr ""
-#: readelf.c:3506
+#: readelf.c:3513
#, c-format
msgid "ELF Header:\n"
msgstr ""
-#: readelf.c:3507
+#: readelf.c:3514
#, c-format
msgid " Magic: "
msgstr ""
-#: readelf.c:3511
+#: readelf.c:3518
#, c-format
msgid " Class: %s\n"
msgstr ""
-#: readelf.c:3513
+#: readelf.c:3520
#, c-format
msgid " Data: %s\n"
msgstr ""
-#: readelf.c:3515
+#: readelf.c:3522
#, c-format
msgid " Version: %d %s\n"
msgstr ""
-#: readelf.c:3520
+#: readelf.c:3527
#, c-format
msgid "<unknown: %lx>"
msgstr ""
-#: readelf.c:3522
+#: readelf.c:3529
#, c-format
msgid " OS/ABI: %s\n"
msgstr ""
-#: readelf.c:3524
+#: readelf.c:3531
#, c-format
msgid " ABI Version: %d\n"
msgstr ""
-#: readelf.c:3526
+#: readelf.c:3533
#, c-format
msgid " Type: %s\n"
msgstr ""
-#: readelf.c:3528
+#: readelf.c:3535
#, c-format
msgid " Machine: %s\n"
msgstr ""
-#: readelf.c:3530
+#: readelf.c:3537
#, c-format
msgid " Version: 0x%lx\n"
msgstr ""
-#: readelf.c:3533
+#: readelf.c:3540
#, c-format
msgid " Entry point address: "
msgstr ""
-#: readelf.c:3535
+#: readelf.c:3542
#, c-format
msgid ""
"\n"
" Start of program headers: "
msgstr ""
-#: readelf.c:3537
+#: readelf.c:3544
#, c-format
msgid ""
" (bytes into file)\n"
" Start of section headers: "
msgstr ""
-#: readelf.c:3539
+#: readelf.c:3546
#, c-format
msgid " (bytes into file)\n"
msgstr ""
-#: readelf.c:3541
+#: readelf.c:3548
#, c-format
msgid " Flags: 0x%lx%s\n"
msgstr ""
-#: readelf.c:3544
+#: readelf.c:3551
#, c-format
msgid " Size of this header: %ld (bytes)\n"
msgstr ""
-#: readelf.c:3546
+#: readelf.c:3553
#, c-format
msgid " Size of program headers: %ld (bytes)\n"
msgstr ""
-#: readelf.c:3548
+#: readelf.c:3555
#, c-format
msgid " Number of program headers: %ld"
msgstr ""
-#: readelf.c:3555
+#: readelf.c:3562
#, c-format
msgid " Size of section headers: %ld (bytes)\n"
msgstr ""
-#: readelf.c:3557
+#: readelf.c:3564
#, c-format
msgid " Number of section headers: %ld"
msgstr ""
-#: readelf.c:3562
+#: readelf.c:3569
#, c-format
msgid " Section header string table index: %ld"
msgstr ""
-#: readelf.c:3569
+#: readelf.c:3576
#, c-format
msgid " <corrupt: out of range>"
msgstr ""
-#: readelf.c:3603 readelf.c:3637
+#: readelf.c:3610 readelf.c:3644
msgid "program headers"
msgstr ""
-#: readelf.c:3704
+#: readelf.c:3711
msgid ""
"possibly corrupt ELF header - it has a non-zero program header offset, but "
"no program headers"
msgstr ""
-#: readelf.c:3707
+#: readelf.c:3714
#, c-format
msgid ""
"\n"
"There are no program headers in this file.\n"
msgstr ""
-#: readelf.c:3713
+#: readelf.c:3720
#, c-format
msgid ""
"\n"
"Elf file type is %s\n"
msgstr ""
-#: readelf.c:3714
+#: readelf.c:3721
#, c-format
msgid "Entry point "
msgstr ""
-#: readelf.c:3716
+#: readelf.c:3723
#, c-format
msgid ""
"\n"
"There are %d program headers, starting at offset "
msgstr ""
-#: readelf.c:3728 readelf.c:3730
+#: readelf.c:3735 readelf.c:3737
#, c-format
msgid ""
"\n"
"Program Headers:\n"
msgstr ""
-#: readelf.c:3734
+#: readelf.c:3741
#, c-format
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
msgstr ""
-#: readelf.c:3737
+#: readelf.c:3744
#, c-format
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align\n"
msgstr ""
-#: readelf.c:3741
+#: readelf.c:3748
#, c-format
msgid " Type Offset VirtAddr PhysAddr\n"
msgstr ""
-#: readelf.c:3743
+#: readelf.c:3750
#, c-format
msgid " FileSiz MemSiz Flags Align\n"
msgstr ""
-#: readelf.c:3836
+#: readelf.c:3843
msgid "more than one dynamic segment\n"
msgstr ""
-#: readelf.c:3855
+#: readelf.c:3862
msgid "no .dynamic section in the dynamic segment\n"
msgstr ""
-#: readelf.c:3870
+#: readelf.c:3877
msgid "the .dynamic section is not contained within the dynamic segment\n"
msgstr ""
-#: readelf.c:3873
+#: readelf.c:3880
msgid "the .dynamic section is not the first section in the dynamic segment.\n"
msgstr ""
-#: readelf.c:3881
+#: readelf.c:3888
msgid "Unable to find program interpreter name\n"
msgstr ""
-#: readelf.c:3888
+#: readelf.c:3895
msgid ""
"Internal error: failed to create format string to display program "
"interpreter\n"
msgstr ""
-#: readelf.c:3892
+#: readelf.c:3899
msgid "Unable to read program interpreter name\n"
msgstr ""
-#: readelf.c:3895
+#: readelf.c:3902
#, c-format
msgid ""
"\n"
" [Requesting program interpreter: %s]"
msgstr ""
-#: readelf.c:3907
+#: readelf.c:3914
#, c-format
msgid ""
"\n"
" Section to Segment mapping:\n"
msgstr ""
-#: readelf.c:3908
+#: readelf.c:3915
#, c-format
msgid " Segment Sections...\n"
msgstr ""
-#: readelf.c:3944
+#: readelf.c:3951
msgid "Cannot interpret virtual addresses without program headers.\n"
msgstr ""
-#: readelf.c:3960
+#: readelf.c:3967
#, c-format
msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
msgstr ""
-#: readelf.c:3975 readelf.c:4018
+#: readelf.c:3982 readelf.c:4025
msgid "section headers"
msgstr ""
-#: readelf.c:4067 readelf.c:4147
+#: readelf.c:4074 readelf.c:4154
msgid "sh_entsize is zero\n"
msgstr ""
-#: readelf.c:4075 readelf.c:4155
+#: readelf.c:4082 readelf.c:4162
msgid "Invalid sh_entsize\n"
msgstr ""
-#: readelf.c:4080 readelf.c:4160
+#: readelf.c:4087 readelf.c:4167
msgid "symbols"
msgstr ""
-#: readelf.c:4092 readelf.c:4171
+#: readelf.c:4099 readelf.c:4178
msgid "symbol table section indicies"
msgstr ""
-#: readelf.c:4432
+#: readelf.c:4439
#, c-format
msgid "UNKNOWN (%*.*lx)"
msgstr ""
-#: readelf.c:4454
+#: readelf.c:4461
msgid ""
"possibly corrupt ELF file header - it has a non-zero section header offset, "
"but no section headers\n"
msgstr ""
-#: readelf.c:4457
+#: readelf.c:4464
#, c-format
msgid ""
"\n"
"There are no sections in this file.\n"
msgstr ""
-#: readelf.c:4463
+#: readelf.c:4470
#, c-format
msgid "There are %d section headers, starting at offset 0x%lx:\n"
msgstr ""
-#: readelf.c:4484 readelf.c:5072 readelf.c:5484 readelf.c:5790 readelf.c:6203
-#: readelf.c:7086 readelf.c:9206
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
msgid "string table"
msgstr ""
-#: readelf.c:4551
+#: readelf.c:4558
#, c-format
msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
msgstr ""
-#: readelf.c:4571
+#: readelf.c:4578
msgid "File contains multiple dynamic symbol tables\n"
msgstr ""
-#: readelf.c:4583
+#: readelf.c:4590
msgid "File contains multiple dynamic string tables\n"
msgstr ""
-#: readelf.c:4589
+#: readelf.c:4596
msgid "dynamic strings"
msgstr ""
-#: readelf.c:4596
+#: readelf.c:4603
msgid "File contains multiple symtab shndx tables\n"
msgstr ""
-#: readelf.c:4667
+#: readelf.c:4674
#, c-format
msgid ""
"\n"
"Section Headers:\n"
msgstr ""
-#: readelf.c:4669
+#: readelf.c:4676
#, c-format
msgid ""
"\n"
"Section Header:\n"
msgstr ""
-#: readelf.c:4675 readelf.c:4686 readelf.c:4697
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
#, c-format
msgid " [Nr] Name\n"
msgstr ""
-#: readelf.c:4676
+#: readelf.c:4683
#, c-format
msgid " Type Addr Off Size ES Lk Inf Al\n"
msgstr ""
-#: readelf.c:4680
+#: readelf.c:4687
#, c-format
msgid ""
" [Nr] Name Type Addr Off Size ES Flg Lk "
"Inf Al\n"
msgstr ""
-#: readelf.c:4687
+#: readelf.c:4694
#, c-format
msgid " Type Address Off Size ES Lk Inf Al\n"
msgstr ""
-#: readelf.c:4691
+#: readelf.c:4698
#, c-format
msgid ""
" [Nr] Name Type Address Off Size ES "
"Flg Lk Inf Al\n"
msgstr ""
-#: readelf.c:4698
+#: readelf.c:4705
#, c-format
msgid " Type Address Offset Link\n"
msgstr ""
-#: readelf.c:4699
+#: readelf.c:4706
#, c-format
msgid " Size EntSize Info Align\n"
msgstr ""
-#: readelf.c:4703
+#: readelf.c:4710
#, c-format
msgid " [Nr] Name Type Address Offset\n"
msgstr ""
-#: readelf.c:4704
+#: readelf.c:4711
#, c-format
msgid " Size EntSize Flags Link Info Align\n"
msgstr ""
-#: readelf.c:4709
+#: readelf.c:4716
#, c-format
msgid " Flags\n"
msgstr ""
-#: readelf.c:4789
+#: readelf.c:4796
#, c-format
msgid "section %u: sh_link value of %u is larger than the number of sections\n"
msgstr ""
-#: readelf.c:4889
+#: readelf.c:4896
#, c-format
msgid ""
"Key to Flags:\n"
@@ -5428,7 +5428,7 @@ msgid ""
" O (extra OS processing required) o (OS specific), p (processor specific)\n"
msgstr ""
-#: readelf.c:4894
+#: readelf.c:4901
#, c-format
msgid ""
"Key to Flags:\n"
@@ -5437,830 +5437,830 @@ msgid ""
" O (extra OS processing required) o (OS specific), p (processor specific)\n"
msgstr ""
-#: readelf.c:4916
+#: readelf.c:4923
#, c-format
msgid "[<unknown>: 0x%x] "
msgstr ""
-#: readelf.c:4942
+#: readelf.c:4949
#, c-format
msgid ""
"\n"
"There are no sections to group in this file.\n"
msgstr ""
-#: readelf.c:4949
+#: readelf.c:4956
msgid "Section headers are not available!\n"
msgstr ""
-#: readelf.c:4973
+#: readelf.c:4980
#, c-format
msgid ""
"\n"
"There are no section groups in this file.\n"
msgstr ""
-#: readelf.c:5011
+#: readelf.c:5018
#, c-format
msgid "Bad sh_link in group section `%s'\n"
msgstr ""
-#: readelf.c:5025
+#: readelf.c:5032
#, c-format
msgid "Corrupt header in group section `%s'\n"
msgstr ""
-#: readelf.c:5031 readelf.c:5042
+#: readelf.c:5038 readelf.c:5049
#, c-format
msgid "Bad sh_info in group section `%s'\n"
msgstr ""
-#: readelf.c:5081
+#: readelf.c:5088
msgid "section data"
msgstr ""
-#: readelf.c:5092
+#: readelf.c:5099
#, c-format
msgid ""
"\n"
"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
msgstr ""
-#: readelf.c:5095
+#: readelf.c:5102
#, c-format
msgid " [Index] Name\n"
msgstr ""
-#: readelf.c:5109
+#: readelf.c:5116
#, c-format
msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
msgstr ""
-#: readelf.c:5118
+#: readelf.c:5125
#, c-format
msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
msgstr ""
-#: readelf.c:5131
+#: readelf.c:5138
#, c-format
msgid "section 0 in group section [%5u]\n"
msgstr ""
-#: readelf.c:5198
+#: readelf.c:5205
msgid "dynamic section image fixups"
msgstr ""
-#: readelf.c:5210
+#: readelf.c:5217
#, c-format
msgid ""
"\n"
"Image fixups for needed library #%d: %s - ident: %lx\n"
msgstr ""
-#: readelf.c:5213
+#: readelf.c:5220
#, c-format
msgid "Seg Offset Type SymVec DataType\n"
msgstr ""
-#: readelf.c:5245
+#: readelf.c:5252
msgid "dynamic section image relocations"
msgstr ""
-#: readelf.c:5249
+#: readelf.c:5256
#, c-format
msgid ""
"\n"
"Image relocs\n"
msgstr ""
-#: readelf.c:5251
+#: readelf.c:5258
#, c-format
msgid ""
"Seg Offset Type Addend Seg Sym Off\n"
msgstr ""
-#: readelf.c:5306
+#: readelf.c:5313
msgid "dynamic string section"
msgstr ""
-#: readelf.c:5407
+#: readelf.c:5414
#, c-format
msgid ""
"\n"
"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
msgstr ""
-#: readelf.c:5422
+#: readelf.c:5429
#, c-format
msgid ""
"\n"
"There are no dynamic relocations in this file.\n"
msgstr ""
-#: readelf.c:5446
+#: readelf.c:5453
#, c-format
msgid ""
"\n"
"Relocation section "
msgstr ""
-#: readelf.c:5453 readelf.c:5883 readelf.c:6220
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
#, c-format
msgid " at offset 0x%lx contains %lu entries:\n"
msgstr ""
-#: readelf.c:5503
+#: readelf.c:5510
#, c-format
msgid ""
"\n"
"There are no relocations in this file.\n"
msgstr ""
-#: readelf.c:5641
+#: readelf.c:5648
#, c-format
msgid "\tUnknown version.\n"
msgstr ""
-#: readelf.c:5694 readelf.c:6067
+#: readelf.c:5701 readelf.c:6074
msgid "unwind table"
msgstr ""
-#: readelf.c:5736 readelf.c:6149 readelf.c:6408
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
#, c-format
msgid "Skipping unexpected relocation type %s\n"
msgstr ""
-#: readelf.c:5798 readelf.c:6211 readelf.c:7094 readelf.c:7141
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
#, c-format
msgid ""
"\n"
"There are no unwind sections in this file.\n"
msgstr ""
-#: readelf.c:5861
+#: readelf.c:5868
#, c-format
msgid ""
"\n"
"Could not find unwind info section for "
msgstr ""
-#: readelf.c:5866 readelf.c:5881 readelf.c:6218
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
#, c-format
msgid "'%s'"
msgstr ""
-#: readelf.c:5873
+#: readelf.c:5880
msgid "unwind info"
msgstr ""
-#: readelf.c:5876 readelf.c:6217
+#: readelf.c:5883 readelf.c:6224
#, c-format
msgid ""
"\n"
"Unwind section "
msgstr ""
-#: readelf.c:6326
+#: readelf.c:6333
msgid "unwind data"
msgstr ""
-#: readelf.c:6379
+#: readelf.c:6386
#, c-format
msgid "Skipping unexpected relocation at offset 0x%lx\n"
msgstr ""
-#: readelf.c:6483
+#: readelf.c:6490
#, c-format
msgid "[Truncated opcode]\n"
msgstr ""
-#: readelf.c:6527 readelf.c:6727
+#: readelf.c:6534 readelf.c:6734
#, c-format
msgid "Refuse to unwind"
msgstr ""
-#: readelf.c:6550
+#: readelf.c:6557
#, c-format
msgid " [Reserved]"
msgstr ""
-#: readelf.c:6578
+#: readelf.c:6585
#, c-format
msgid " finish"
msgstr ""
-#: readelf.c:6583 readelf.c:6669
+#: readelf.c:6590 readelf.c:6676
#, c-format
msgid "[Spare]"
msgstr ""
-#: readelf.c:6690 readelf.c:6824
+#: readelf.c:6697 readelf.c:6831
#, c-format
msgid " [unsupported opcode]"
msgstr ""
-#: readelf.c:6774
+#: readelf.c:6781
#, c-format
msgid "pop frame {"
msgstr ""
-#: readelf.c:6785
+#: readelf.c:6792
msgid "[pad]"
msgstr ""
-#: readelf.c:6813
+#: readelf.c:6820
#, c-format
msgid "sp = sp + %ld"
msgstr ""
-#: readelf.c:6871
+#: readelf.c:6878
#, c-format
msgid " Personality routine: "
msgstr ""
-#: readelf.c:6889
+#: readelf.c:6896
#, c-format
msgid " [Truncated data]\n"
msgstr ""
-#: readelf.c:6904
+#: readelf.c:6911
#, c-format
msgid " Compact model %d\n"
msgstr ""
-#: readelf.c:6940
+#: readelf.c:6947
#, c-format
msgid " Restore stack from frame pointer\n"
msgstr ""
-#: readelf.c:6942
+#: readelf.c:6949
#, c-format
msgid " Stack increment %d\n"
msgstr ""
-#: readelf.c:6943
+#: readelf.c:6950
#, c-format
msgid " Registers restored: "
msgstr ""
-#: readelf.c:6948
+#: readelf.c:6955
#, c-format
msgid " Return register: %s\n"
msgstr ""
-#: readelf.c:7031
+#: readelf.c:7038
#, c-format
msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
msgstr ""
-#: readelf.c:7100
+#: readelf.c:7107
#, c-format
msgid ""
"\n"
"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
msgstr ""
-#: readelf.c:7152
+#: readelf.c:7159
#, c-format
msgid "NONE\n"
msgstr ""
-#: readelf.c:7178
+#: readelf.c:7185
#, c-format
msgid "Interface Version: %s\n"
msgstr ""
-#: readelf.c:7180
+#: readelf.c:7187
#, c-format
msgid "<corrupt: %ld>\n"
msgstr ""
-#: readelf.c:7193
+#: readelf.c:7200
#, c-format
msgid "Time Stamp: %s\n"
msgstr ""
-#: readelf.c:7370 readelf.c:7416
+#: readelf.c:7377 readelf.c:7423
msgid "dynamic section"
msgstr ""
-#: readelf.c:7494
+#: readelf.c:7501
#, c-format
msgid ""
"\n"
"There is no dynamic section in this file.\n"
msgstr ""
-#: readelf.c:7532
+#: readelf.c:7539
msgid "Unable to seek to end of file!\n"
msgstr ""
-#: readelf.c:7545
+#: readelf.c:7552
msgid "Unable to determine the number of symbols to load\n"
msgstr ""
-#: readelf.c:7578
+#: readelf.c:7585
msgid "Unable to seek to end of file\n"
msgstr ""
-#: readelf.c:7585
+#: readelf.c:7592
msgid "Unable to determine the length of the dynamic string table\n"
msgstr ""
-#: readelf.c:7591
+#: readelf.c:7598
msgid "dynamic string table"
msgstr ""
-#: readelf.c:7628
+#: readelf.c:7635
msgid "symbol information"
msgstr ""
-#: readelf.c:7653
+#: readelf.c:7660
#, c-format
msgid ""
"\n"
"Dynamic section at offset 0x%lx contains %u entries:\n"
msgstr ""
-#: readelf.c:7656
+#: readelf.c:7663
#, c-format
msgid " Tag Type Name/Value\n"
msgstr ""
-#: readelf.c:7692
+#: readelf.c:7699
#, c-format
msgid "Auxiliary library"
msgstr ""
-#: readelf.c:7696
+#: readelf.c:7703
#, c-format
msgid "Filter library"
msgstr ""
-#: readelf.c:7700
+#: readelf.c:7707
#, c-format
msgid "Configuration file"
msgstr ""
-#: readelf.c:7704
+#: readelf.c:7711
#, c-format
msgid "Dependency audit library"
msgstr ""
-#: readelf.c:7708
+#: readelf.c:7715
#, c-format
msgid "Audit library"
msgstr ""
-#: readelf.c:7726 readelf.c:7754 readelf.c:7782
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
#, c-format
msgid "Flags:"
msgstr ""
-#: readelf.c:7729 readelf.c:7757 readelf.c:7784
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
#, c-format
msgid " None\n"
msgstr ""
-#: readelf.c:7905
+#: readelf.c:7912
#, c-format
msgid "Shared library: [%s]"
msgstr ""
-#: readelf.c:7908
+#: readelf.c:7915
#, c-format
msgid " program interpreter"
msgstr ""
-#: readelf.c:7912
+#: readelf.c:7919
#, c-format
msgid "Library soname: [%s]"
msgstr ""
-#: readelf.c:7916
+#: readelf.c:7923
#, c-format
msgid "Library rpath: [%s]"
msgstr ""
-#: readelf.c:7920
+#: readelf.c:7927
#, c-format
msgid "Library runpath: [%s]"
msgstr ""
-#: readelf.c:7953
+#: readelf.c:7960
#, c-format
msgid " (bytes)\n"
msgstr ""
-#: readelf.c:7983
+#: readelf.c:7990
#, c-format
msgid "Not needed object: [%s]\n"
msgstr ""
-#: readelf.c:8083
+#: readelf.c:8090
msgid "| <unknown>"
msgstr ""
-#: readelf.c:8116
+#: readelf.c:8123
#, c-format
msgid ""
"\n"
"Version definition section '%s' contains %u entries:\n"
msgstr ""
-#: readelf.c:8119
+#: readelf.c:8126
#, c-format
msgid " Addr: 0x"
msgstr ""
-#: readelf.c:8121 readelf.c:8239 readelf.c:8383
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
#, c-format
msgid " Offset: %#08lx Link: %u (%s)\n"
msgstr ""
-#: readelf.c:8129
+#: readelf.c:8136
msgid "version definition section"
msgstr ""
-#: readelf.c:8162
+#: readelf.c:8169
#, c-format
msgid " %#06x: Rev: %d Flags: %s"
msgstr ""
-#: readelf.c:8165
+#: readelf.c:8172
#, c-format
msgid " Index: %d Cnt: %d "
msgstr ""
-#: readelf.c:8181
+#: readelf.c:8188
#, c-format
msgid "Name: %s\n"
msgstr ""
-#: readelf.c:8183
+#: readelf.c:8190
#, c-format
msgid "Name index: %ld\n"
msgstr ""
-#: readelf.c:8205
+#: readelf.c:8212
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr ""
-#: readelf.c:8208
+#: readelf.c:8215
#, c-format
msgid " %#06x: Parent %d, name index: %ld\n"
msgstr ""
-#: readelf.c:8213
+#: readelf.c:8220
#, c-format
msgid " Version def aux past end of section\n"
msgstr ""
-#: readelf.c:8219
+#: readelf.c:8226
#, c-format
msgid " Version definition past end of section\n"
msgstr ""
-#: readelf.c:8234
+#: readelf.c:8241
#, c-format
msgid ""
"\n"
"Version needs section '%s' contains %u entries:\n"
msgstr ""
-#: readelf.c:8237
+#: readelf.c:8244
#, c-format
msgid " Addr: 0x"
msgstr ""
-#: readelf.c:8248
+#: readelf.c:8255
msgid "Version Needs section"
msgstr ""
-#: readelf.c:8276
+#: readelf.c:8283
#, c-format
msgid " %#06x: Version: %d"
msgstr ""
-#: readelf.c:8279
+#: readelf.c:8286
#, c-format
msgid " File: %s"
msgstr ""
-#: readelf.c:8281
+#: readelf.c:8288
#, c-format
msgid " File: %lx"
msgstr ""
-#: readelf.c:8283
+#: readelf.c:8290
#, c-format
msgid " Cnt: %d\n"
msgstr ""
-#: readelf.c:8308
+#: readelf.c:8315
#, c-format
msgid " %#06x: Name: %s"
msgstr ""
-#: readelf.c:8311
+#: readelf.c:8318
#, c-format
msgid " %#06x: Name index: %lx"
msgstr ""
-#: readelf.c:8314
+#: readelf.c:8321
#, c-format
msgid " Flags: %s Version: %d\n"
msgstr ""
-#: readelf.c:8327
+#: readelf.c:8334
msgid "Missing Version Needs auxillary information\n"
msgstr ""
-#: readelf.c:8333
+#: readelf.c:8340
msgid "Missing Version Needs information\n"
msgstr ""
-#: readelf.c:8371
+#: readelf.c:8378
msgid "version string table"
msgstr ""
-#: readelf.c:8378
+#: readelf.c:8385
#, c-format
msgid ""
"\n"
"Version symbols section '%s' contains %d entries:\n"
msgstr ""
-#: readelf.c:8381
+#: readelf.c:8388
#, c-format
msgid " Addr: "
msgstr ""
-#: readelf.c:8392
+#: readelf.c:8399
msgid "version symbol data"
msgstr ""
-#: readelf.c:8420
+#: readelf.c:8427
msgid " 0 (*local*) "
msgstr ""
-#: readelf.c:8424
+#: readelf.c:8431
msgid " 1 (*global*) "
msgstr ""
-#: readelf.c:8435
+#: readelf.c:8442
msgid "invalid index into symbol array\n"
msgstr ""
-#: readelf.c:8469 readelf.c:9272
+#: readelf.c:8476 readelf.c:9279
msgid "version need"
msgstr ""
-#: readelf.c:8480
+#: readelf.c:8487
msgid "version need aux (2)"
msgstr ""
-#: readelf.c:8501 readelf.c:8563
+#: readelf.c:8508 readelf.c:8570
msgid "*invalid*"
msgstr ""
-#: readelf.c:8531 readelf.c:9350
+#: readelf.c:8538 readelf.c:9357
msgid "version def"
msgstr ""
-#: readelf.c:8557 readelf.c:9372
+#: readelf.c:8564 readelf.c:9379
msgid "version def aux"
msgstr ""
-#: readelf.c:8592
+#: readelf.c:8599
#, c-format
msgid ""
"\n"
"No version information found in this file.\n"
msgstr ""
-#: readelf.c:8800
+#: readelf.c:8807
#, c-format
msgid "<other>: %x"
msgstr ""
-#: readelf.c:8862
+#: readelf.c:8869
msgid "Unable to read in dynamic data\n"
msgstr ""
-#: readelf.c:8912
+#: readelf.c:8919
#, c-format
msgid " <corrupt: %14ld>"
msgstr ""
-#: readelf.c:8955 readelf.c:9007 readelf.c:9031 readelf.c:9061 readelf.c:9085
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
msgid "Unable to seek to start of dynamic information\n"
msgstr ""
-#: readelf.c:8961 readelf.c:9013
+#: readelf.c:8968 readelf.c:9020
msgid "Failed to read in number of buckets\n"
msgstr ""
-#: readelf.c:8967
+#: readelf.c:8974
msgid "Failed to read in number of chains\n"
msgstr ""
-#: readelf.c:9069
+#: readelf.c:9076
msgid "Failed to determine last chain length\n"
msgstr ""
-#: readelf.c:9113
+#: readelf.c:9120
#, c-format
msgid ""
"\n"
"Symbol table for image:\n"
msgstr ""
-#: readelf.c:9115 readelf.c:9133
+#: readelf.c:9122 readelf.c:9140
#, c-format
msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:9117 readelf.c:9135
+#: readelf.c:9124 readelf.c:9142
#, c-format
msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:9131
+#: readelf.c:9138
#, c-format
msgid ""
"\n"
"Symbol table of `.gnu.hash' for image:\n"
msgstr ""
-#: readelf.c:9175
+#: readelf.c:9182
#, c-format
msgid ""
"\n"
"Symbol table '%s' has a sh_entsize of zero!\n"
msgstr ""
-#: readelf.c:9180
+#: readelf.c:9187
#, c-format
msgid ""
"\n"
"Symbol table '%s' contains %lu entries:\n"
msgstr ""
-#: readelf.c:9185
+#: readelf.c:9192
#, c-format
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:9187
+#: readelf.c:9194
#, c-format
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:9242
+#: readelf.c:9249
msgid "version data"
msgstr ""
-#: readelf.c:9291
+#: readelf.c:9298
msgid "version need aux (3)"
msgstr ""
-#: readelf.c:9325
+#: readelf.c:9332
msgid "bad dynamic symbol\n"
msgstr ""
-#: readelf.c:9397
+#: readelf.c:9404
#, c-format
msgid ""
"\n"
"Dynamic symbol information is not available for displaying symbols.\n"
msgstr ""
-#: readelf.c:9409
+#: readelf.c:9416
#, c-format
msgid ""
"\n"
"Histogram for bucket list length (total of %lu buckets):\n"
msgstr ""
-#: readelf.c:9411 readelf.c:9481
+#: readelf.c:9418 readelf.c:9488
#, c-format
msgid " Length Number %% of total Coverage\n"
msgstr ""
-#: readelf.c:9479
+#: readelf.c:9486
#, c-format
msgid ""
"\n"
"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
msgstr ""
-#: readelf.c:9545
+#: readelf.c:9552
#, c-format
msgid ""
"\n"
"Dynamic info segment at offset 0x%lx contains %d entries:\n"
msgstr ""
-#: readelf.c:9548
+#: readelf.c:9555
#, c-format
msgid " Num: Name BoundTo Flags\n"
msgstr ""
-#: readelf.c:9557
+#: readelf.c:9564
#, c-format
msgid "<corrupt: %19ld>"
msgstr ""
-#: readelf.c:9639
+#: readelf.c:9646
msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
msgstr ""
-#: readelf.c:9804
+#: readelf.c:9813
#, c-format
msgid ""
"Missing knowledge of 32-bit reloc types used in DWARF sections of machine "
"number %d\n"
msgstr ""
-#: readelf.c:10124
+#: readelf.c:10138
#, c-format
msgid "unable to apply unsupported reloc type %d to section %s\n"
msgstr ""
-#: readelf.c:10132
+#: readelf.c:10146
#, c-format
msgid "skipping invalid relocation offset 0x%lx in section %s\n"
msgstr ""
-#: readelf.c:10141
+#: readelf.c:10155
#, c-format
msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
msgstr ""
-#: readelf.c:10163
+#: readelf.c:10177
#, c-format
msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
msgstr ""
-#: readelf.c:10209
+#: readelf.c:10223
#, c-format
msgid ""
"\n"
"Assembly dump of section %s\n"
msgstr ""
-#: readelf.c:10230
+#: readelf.c:10244
#, c-format
msgid ""
"\n"
"Section '%s' has no data to dump.\n"
msgstr ""
-#: readelf.c:10236
+#: readelf.c:10250
msgid "section contents"
msgstr ""
-#: readelf.c:10255
+#: readelf.c:10269
#, c-format
msgid ""
"\n"
"String dump of section '%s':\n"
msgstr ""
-#: readelf.c:10273
+#: readelf.c:10287
#, c-format
msgid ""
" Note: This section has relocations against it, but these have NOT been "
"applied to this dump.\n"
msgstr ""
-#: readelf.c:10304
+#: readelf.c:10318
#, c-format
msgid " No strings found in this section."
msgstr ""
-#: readelf.c:10326
+#: readelf.c:10340
#, c-format
msgid ""
"\n"
"Hex dump of section '%s':\n"
msgstr ""
-#: readelf.c:10350
+#: readelf.c:10364
#, c-format
msgid ""
" NOTE: This section has relocations against it, but these have NOT been "
"applied to this dump.\n"
msgstr ""
-#: readelf.c:10484
+#: readelf.c:10498
#, c-format
msgid "%s section data"
msgstr ""
-#: readelf.c:10554
+#: readelf.c:10568
#, c-format
msgid ""
"\n"
@@ -6271,820 +6271,820 @@ msgstr ""
#. which has the NOBITS type - the bits in the file will be random.
#. This can happen when a file containing a .eh_frame section is
#. stripped with the --only-keep-debug command line option.
-#: readelf.c:10563
+#: readelf.c:10577
#, c-format
msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
msgstr ""
-#: readelf.c:10599
+#: readelf.c:10613
#, c-format
msgid "Unrecognized debug section: %s\n"
msgstr ""
-#: readelf.c:10627
+#: readelf.c:10641
#, c-format
msgid "Section '%s' was not dumped because it does not exist!\n"
msgstr ""
-#: readelf.c:10668
+#: readelf.c:10682
#, c-format
msgid "Section %d was not dumped because it does not exist!\n"
msgstr ""
-#: readelf.c:10846 readelf.c:10860 readelf.c:10879 readelf.c:11279
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
#, c-format
msgid "None\n"
msgstr ""
-#: readelf.c:10847
+#: readelf.c:10861
#, c-format
msgid "Application\n"
msgstr ""
-#: readelf.c:10848
+#: readelf.c:10862
#, c-format
msgid "Realtime\n"
msgstr ""
-#: readelf.c:10849
+#: readelf.c:10863
#, c-format
msgid "Microcontroller\n"
msgstr ""
-#: readelf.c:10850
+#: readelf.c:10864
#, c-format
msgid "Application or Realtime\n"
msgstr ""
-#: readelf.c:10861 readelf.c:10881 readelf.c:11333 readelf.c:11351
-#: readelf.c:11426 readelf.c:11447
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
#, c-format
msgid "8-byte\n"
msgstr ""
-#: readelf.c:10862 readelf.c:11429 readelf.c:11450
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
#, c-format
msgid "4-byte\n"
msgstr ""
-#: readelf.c:10866 readelf.c:10885
+#: readelf.c:10880 readelf.c:10899
#, c-format
msgid "8-byte and up to %d-byte extended\n"
msgstr ""
-#: readelf.c:10880
+#: readelf.c:10894
#, c-format
msgid "8-byte, except leaf SP\n"
msgstr ""
-#: readelf.c:10896 readelf.c:10986 readelf.c:11465
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
#, c-format
msgid "flag = %d, vendor = %s\n"
msgstr ""
-#: readelf.c:10902
+#: readelf.c:10916
#, c-format
msgid "True\n"
msgstr ""
-#: readelf.c:11031 readelf.c:11217
+#: readelf.c:11045 readelf.c:11231
#, c-format
msgid "Hard or soft float\n"
msgstr ""
-#: readelf.c:11034
+#: readelf.c:11048
#, c-format
msgid "Hard float\n"
msgstr ""
-#: readelf.c:11037 readelf.c:11226
+#: readelf.c:11051 readelf.c:11240
#, c-format
msgid "Soft float\n"
msgstr ""
-#: readelf.c:11040
+#: readelf.c:11054
#, c-format
msgid "Single-precision hard float\n"
msgstr ""
-#: readelf.c:11057 readelf.c:11083
+#: readelf.c:11071 readelf.c:11097
#, c-format
msgid "Any\n"
msgstr ""
-#: readelf.c:11060
+#: readelf.c:11074
#, c-format
msgid "Generic\n"
msgstr ""
-#: readelf.c:11089
+#: readelf.c:11103
#, c-format
msgid "Memory\n"
msgstr ""
-#: readelf.c:11220
+#: readelf.c:11234
#, c-format
msgid "Hard float (double precision)\n"
msgstr ""
-#: readelf.c:11223
+#: readelf.c:11237
#, c-format
msgid "Hard float (single precision)\n"
msgstr ""
-#: readelf.c:11229
+#: readelf.c:11243
#, c-format
msgid "Hard float (MIPS32r2 64-bit FPU)\n"
msgstr ""
-#: readelf.c:11312
+#: readelf.c:11326
#, c-format
msgid "Not used\n"
msgstr ""
-#: readelf.c:11315
+#: readelf.c:11329
#, c-format
msgid "2 bytes\n"
msgstr ""
-#: readelf.c:11318
+#: readelf.c:11332
#, c-format
msgid "4 bytes\n"
msgstr ""
-#: readelf.c:11336 readelf.c:11354 readelf.c:11432 readelf.c:11453
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
#, c-format
msgid "16-byte\n"
msgstr ""
-#: readelf.c:11369
+#: readelf.c:11383
#, c-format
msgid "DSBT addressing not used\n"
msgstr ""
-#: readelf.c:11372
+#: readelf.c:11386
#, c-format
msgid "DSBT addressing used\n"
msgstr ""
-#: readelf.c:11387
+#: readelf.c:11401
#, c-format
msgid "Data addressing position-dependent\n"
msgstr ""
-#: readelf.c:11390
+#: readelf.c:11404
#, c-format
msgid "Data addressing position-independent, GOT near DP\n"
msgstr ""
-#: readelf.c:11393
+#: readelf.c:11407
#, c-format
msgid "Data addressing position-independent, GOT far from DP\n"
msgstr ""
-#: readelf.c:11408
+#: readelf.c:11422
#, c-format
msgid "Code addressing position-dependent\n"
msgstr ""
-#: readelf.c:11411
+#: readelf.c:11425
#, c-format
msgid "Code addressing position-independent\n"
msgstr ""
-#: readelf.c:11517
+#: readelf.c:11531
msgid "attributes"
msgstr ""
-#: readelf.c:11538
+#: readelf.c:11552
#, c-format
msgid "ERROR: Bad section length (%d > %d)\n"
msgstr ""
-#: readelf.c:11544
+#: readelf.c:11558
#, c-format
msgid "Attribute Section: %s\n"
msgstr ""
-#: readelf.c:11569
+#: readelf.c:11583
#, c-format
msgid "ERROR: Bad subsection length (%d > %d)\n"
msgstr ""
-#: readelf.c:11581
+#: readelf.c:11595
#, c-format
msgid "File Attributes\n"
msgstr ""
-#: readelf.c:11584
+#: readelf.c:11598
#, c-format
msgid "Section Attributes:"
msgstr ""
-#: readelf.c:11587
+#: readelf.c:11601
#, c-format
msgid "Symbol Attributes:"
msgstr ""
-#: readelf.c:11602
+#: readelf.c:11616
#, c-format
msgid "Unknown tag: %d\n"
msgstr ""
#. ??? Do something sensible, like dump hex.
-#: readelf.c:11621
+#: readelf.c:11635
#, c-format
msgid " Unknown section contexts\n"
msgstr ""
-#: readelf.c:11628
+#: readelf.c:11642
#, c-format
msgid "Unknown format '%c'\n"
msgstr ""
-#: readelf.c:11679 readelf.c:11701
+#: readelf.c:11693 readelf.c:11715
msgid "<unknown>"
msgstr ""
-#: readelf.c:11796 readelf.c:12330
+#: readelf.c:11810 readelf.c:12344
msgid "liblist section data"
msgstr ""
-#: readelf.c:11799
+#: readelf.c:11813
#, c-format
msgid ""
"\n"
"Section '.liblist' contains %lu entries:\n"
msgstr ""
-#: readelf.c:11801
+#: readelf.c:11815
msgid ""
" Library Time Stamp Checksum Version Flags\n"
msgstr ""
-#: readelf.c:11827
+#: readelf.c:11841
#, c-format
msgid "<corrupt: %9ld>"
msgstr ""
-#: readelf.c:11832
+#: readelf.c:11846
msgid " NONE"
msgstr ""
-#: readelf.c:11883
+#: readelf.c:11897
msgid "options"
msgstr ""
-#: readelf.c:11914
+#: readelf.c:11928
#, c-format
msgid ""
"\n"
"Section '%s' contains %d entries:\n"
msgstr ""
-#: readelf.c:12075
+#: readelf.c:12089
msgid "conflict list found without a dynamic symbol table\n"
msgstr ""
-#: readelf.c:12092 readelf.c:12107
+#: readelf.c:12106 readelf.c:12121
msgid "conflict"
msgstr ""
-#: readelf.c:12117
+#: readelf.c:12131
#, c-format
msgid ""
"\n"
"Section '.conflict' contains %lu entries:\n"
msgstr ""
-#: readelf.c:12119
+#: readelf.c:12133
msgid " Num: Index Value Name"
msgstr ""
-#: readelf.c:12131 readelf.c:12220 readelf.c:12291
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
#, c-format
msgid "<corrupt: %14ld>"
msgstr ""
-#: readelf.c:12153
+#: readelf.c:12167
msgid "Global Offset Table data"
msgstr ""
-#: readelf.c:12157
+#: readelf.c:12171
#, c-format
msgid ""
"\n"
"Primary GOT:\n"
msgstr ""
-#: readelf.c:12158
+#: readelf.c:12172
#, c-format
msgid " Canonical gp value: "
msgstr ""
-#: readelf.c:12162 readelf.c:12262
+#: readelf.c:12176 readelf.c:12276
#, c-format
msgid " Reserved entries:\n"
msgstr ""
-#: readelf.c:12163
+#: readelf.c:12177
#, c-format
msgid " %*s %10s %*s Purpose\n"
msgstr ""
-#: readelf.c:12164 readelf.c:12181 readelf.c:12197 readelf.c:12264
-#: readelf.c:12273
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
msgid "Address"
msgstr ""
-#: readelf.c:12164 readelf.c:12181 readelf.c:12198
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
msgid "Access"
msgstr ""
-#: readelf.c:12165 readelf.c:12182 readelf.c:12199 readelf.c:12264
-#: readelf.c:12274
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
msgid "Initial"
msgstr ""
-#: readelf.c:12167
+#: readelf.c:12181
#, c-format
msgid " Lazy resolver\n"
msgstr ""
-#: readelf.c:12173
+#: readelf.c:12187
#, c-format
msgid " Module pointer (GNU extension)\n"
msgstr ""
-#: readelf.c:12179
+#: readelf.c:12193
#, c-format
msgid " Local entries:\n"
msgstr ""
-#: readelf.c:12195
+#: readelf.c:12209
#, c-format
msgid " Global entries:\n"
msgstr ""
-#: readelf.c:12200 readelf.c:12275
+#: readelf.c:12214 readelf.c:12289
msgid "Sym.Val."
msgstr ""
#. Note for translators: "Ndx" = abbreviated form of "Index".
-#: readelf.c:12203 readelf.c:12275
+#: readelf.c:12217 readelf.c:12289
msgid "Ndx"
msgstr ""
-#: readelf.c:12203 readelf.c:12275
+#: readelf.c:12217 readelf.c:12289
msgid "Name"
msgstr ""
-#: readelf.c:12257
+#: readelf.c:12271
msgid "Procedure Linkage Table data"
msgstr ""
-#: readelf.c:12263
+#: readelf.c:12277
#, c-format
msgid " %*s %*s Purpose\n"
msgstr ""
-#: readelf.c:12266
+#: readelf.c:12280
#, c-format
msgid " PLT lazy resolver\n"
msgstr ""
-#: readelf.c:12268
+#: readelf.c:12282
#, c-format
msgid " Module pointer\n"
msgstr ""
-#: readelf.c:12271
+#: readelf.c:12285
#, c-format
msgid " Entries:\n"
msgstr ""
-#: readelf.c:12338
+#: readelf.c:12352
msgid "liblist string table"
msgstr ""
-#: readelf.c:12348
+#: readelf.c:12362
#, c-format
msgid ""
"\n"
"Library list section '%s' contains %lu entries:\n"
msgstr ""
-#: readelf.c:12352
+#: readelf.c:12366
msgid " Library Time Stamp Checksum Version Flags"
msgstr ""
-#: readelf.c:12402
+#: readelf.c:12416
msgid "NT_AUXV (auxiliary vector)"
msgstr ""
-#: readelf.c:12404
+#: readelf.c:12418
msgid "NT_PRSTATUS (prstatus structure)"
msgstr ""
-#: readelf.c:12406
+#: readelf.c:12420
msgid "NT_FPREGSET (floating point registers)"
msgstr ""
-#: readelf.c:12408
+#: readelf.c:12422
msgid "NT_PRPSINFO (prpsinfo structure)"
msgstr ""
-#: readelf.c:12410
+#: readelf.c:12424
msgid "NT_TASKSTRUCT (task structure)"
msgstr ""
-#: readelf.c:12412
+#: readelf.c:12426
msgid "NT_PRXFPREG (user_xfpregs structure)"
msgstr ""
-#: readelf.c:12414
+#: readelf.c:12428
msgid "NT_PPC_VMX (ppc Altivec registers)"
msgstr ""
-#: readelf.c:12416
+#: readelf.c:12430
msgid "NT_PPC_VSX (ppc VSX registers)"
msgstr ""
-#: readelf.c:12418
+#: readelf.c:12432
msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
msgstr ""
-#: readelf.c:12420
+#: readelf.c:12434
msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
msgstr ""
-#: readelf.c:12422
+#: readelf.c:12436
msgid "NT_S390_TIMER (s390 timer register)"
msgstr ""
-#: readelf.c:12424
+#: readelf.c:12438
msgid "NT_S390_TODCMP (s390 TOD comparator register)"
msgstr ""
-#: readelf.c:12426
+#: readelf.c:12440
msgid "NT_S390_TODPREG (s390 TOD programmable register)"
msgstr ""
-#: readelf.c:12428
+#: readelf.c:12442
msgid "NT_S390_CTRS (s390 control registers)"
msgstr ""
-#: readelf.c:12430
+#: readelf.c:12444
msgid "NT_S390_PREFIX (s390 prefix register)"
msgstr ""
-#: readelf.c:12432
+#: readelf.c:12446
msgid "NT_ARM_VFP (arm VFP registers)"
msgstr ""
-#: readelf.c:12434
+#: readelf.c:12448
msgid "NT_PSTATUS (pstatus structure)"
msgstr ""
-#: readelf.c:12436
+#: readelf.c:12450
msgid "NT_FPREGS (floating point registers)"
msgstr ""
-#: readelf.c:12438
+#: readelf.c:12452
msgid "NT_PSINFO (psinfo structure)"
msgstr ""
-#: readelf.c:12440
+#: readelf.c:12454
msgid "NT_LWPSTATUS (lwpstatus_t structure)"
msgstr ""
-#: readelf.c:12442
+#: readelf.c:12456
msgid "NT_LWPSINFO (lwpsinfo_t structure)"
msgstr ""
-#: readelf.c:12444
+#: readelf.c:12458
msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
msgstr ""
-#: readelf.c:12452
+#: readelf.c:12466
msgid "NT_VERSION (version)"
msgstr ""
-#: readelf.c:12454
+#: readelf.c:12468
msgid "NT_ARCH (architecture)"
msgstr ""
-#: readelf.c:12459 readelf.c:12482 readelf.c:12561 readelf.c:12619
-#: readelf.c:12696
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
#, c-format
msgid "Unknown note type: (0x%08x)"
msgstr ""
-#: readelf.c:12471
+#: readelf.c:12485
msgid "NT_GNU_ABI_TAG (ABI version tag)"
msgstr ""
-#: readelf.c:12473
+#: readelf.c:12487
msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
msgstr ""
-#: readelf.c:12475
+#: readelf.c:12489
msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
msgstr ""
-#: readelf.c:12477
+#: readelf.c:12491
msgid "NT_GNU_GOLD_VERSION (gold version)"
msgstr ""
-#: readelf.c:12495
+#: readelf.c:12509
#, c-format
msgid " Build ID: "
msgstr ""
-#: readelf.c:12534
+#: readelf.c:12548
#, c-format
msgid " OS: %s, ABI: %ld.%ld.%ld\n"
msgstr ""
#. NetBSD core "procinfo" structure.
-#: readelf.c:12551
+#: readelf.c:12565
msgid "NetBSD procinfo structure"
msgstr ""
-#: readelf.c:12578 readelf.c:12592
+#: readelf.c:12592 readelf.c:12606
msgid "PT_GETREGS (reg structure)"
msgstr ""
-#: readelf.c:12580 readelf.c:12594
+#: readelf.c:12594 readelf.c:12608
msgid "PT_GETFPREGS (fpreg structure)"
msgstr ""
-#: readelf.c:12613
+#: readelf.c:12627
msgid "NT_STAPSDT (SystemTap probe descriptors)"
msgstr ""
-#: readelf.c:12646
+#: readelf.c:12660
#, c-format
msgid " Provider: %s\n"
msgstr ""
-#: readelf.c:12647
+#: readelf.c:12661
#, c-format
msgid " Name: %s\n"
msgstr ""
-#: readelf.c:12648
+#: readelf.c:12662
#, c-format
msgid " Location: "
msgstr ""
-#: readelf.c:12650
+#: readelf.c:12664
#, c-format
msgid ", Base: "
msgstr ""
-#: readelf.c:12652
+#: readelf.c:12666
#, c-format
msgid ", Semaphore: "
msgstr ""
-#: readelf.c:12655
+#: readelf.c:12669
#, c-format
msgid " Arguments: %s\n"
msgstr ""
-#: readelf.c:12668
+#: readelf.c:12682
msgid "NT_VMS_MHD (module header)"
msgstr ""
-#: readelf.c:12670
+#: readelf.c:12684
msgid "NT_VMS_LNM (language name)"
msgstr ""
-#: readelf.c:12672
+#: readelf.c:12686
msgid "NT_VMS_SRC (source files)"
msgstr ""
-#: readelf.c:12676
+#: readelf.c:12690
msgid "NT_VMS_EIDC (consistency check)"
msgstr ""
-#: readelf.c:12678
+#: readelf.c:12692
msgid "NT_VMS_FPMODE (FP mode)"
msgstr ""
-#: readelf.c:12682
+#: readelf.c:12696
msgid "NT_VMS_IMGNAM (image name)"
msgstr ""
-#: readelf.c:12684
+#: readelf.c:12698
msgid "NT_VMS_IMGID (image id)"
msgstr ""
-#: readelf.c:12686
+#: readelf.c:12700
msgid "NT_VMS_LINKID (link id)"
msgstr ""
-#: readelf.c:12688
+#: readelf.c:12702
msgid "NT_VMS_IMGBID (build id)"
msgstr ""
-#: readelf.c:12690
+#: readelf.c:12704
msgid "NT_VMS_GSTNAM (sym table name)"
msgstr ""
-#: readelf.c:12710
+#: readelf.c:12724
#, c-format
msgid " Creation date : %.17s\n"
msgstr ""
-#: readelf.c:12711
+#: readelf.c:12725
#, c-format
msgid " Last patch date: %.17s\n"
msgstr ""
-#: readelf.c:12712
+#: readelf.c:12726
#, c-format
msgid " Module name : %s\n"
msgstr ""
-#: readelf.c:12713
+#: readelf.c:12727
#, c-format
msgid " Module version : %s\n"
msgstr ""
-#: readelf.c:12716
+#: readelf.c:12730
#, c-format
msgid " Invalid size\n"
msgstr ""
-#: readelf.c:12719
+#: readelf.c:12733
#, c-format
msgid " Language: %s\n"
msgstr ""
-#: readelf.c:12723
+#: readelf.c:12737
#, c-format
msgid " Floating Point mode: "
msgstr ""
-#: readelf.c:12728
+#: readelf.c:12742
#, c-format
msgid " Link time: "
msgstr ""
-#: readelf.c:12734
+#: readelf.c:12748
#, c-format
msgid " Patch time: "
msgstr ""
-#: readelf.c:12740
+#: readelf.c:12754
#, c-format
msgid " Major id: %u, minor id: %u\n"
msgstr ""
-#: readelf.c:12743
+#: readelf.c:12757
#, c-format
msgid " Last modified : "
msgstr ""
-#: readelf.c:12746
+#: readelf.c:12760
#, c-format
msgid ""
"\n"
" Link flags : "
msgstr ""
-#: readelf.c:12749
+#: readelf.c:12763
#, c-format
msgid " Header flags: 0x%08x\n"
msgstr ""
-#: readelf.c:12751
+#: readelf.c:12765
#, c-format
msgid " Image id : %s\n"
msgstr ""
-#: readelf.c:12755
+#: readelf.c:12769
#, c-format
msgid " Image name: %s\n"
msgstr ""
-#: readelf.c:12758
+#: readelf.c:12772
#, c-format
msgid " Global symbol table name: %s\n"
msgstr ""
-#: readelf.c:12761
+#: readelf.c:12775
#, c-format
msgid " Image id: %s\n"
msgstr ""
-#: readelf.c:12764
+#: readelf.c:12778
#, c-format
msgid " Linker id: %s\n"
msgstr ""
-#: readelf.c:12839
+#: readelf.c:12853
msgid "notes"
msgstr ""
-#: readelf.c:12845
+#: readelf.c:12859
#, c-format
msgid ""
"\n"
"Notes at offset 0x%08lx with length 0x%08lx:\n"
msgstr ""
-#: readelf.c:12847
+#: readelf.c:12861
#, c-format
msgid " %-20s %10s\tDescription\n"
msgstr ""
-#: readelf.c:12847
+#: readelf.c:12861
msgid "Owner"
msgstr ""
-#: readelf.c:12847
+#: readelf.c:12861
msgid "Data size"
msgstr ""
-#: readelf.c:12885 readelf.c:12898
+#: readelf.c:12899 readelf.c:12912
#, c-format
msgid "corrupt note found at offset %lx into core notes\n"
msgstr ""
-#: readelf.c:12887 readelf.c:12900
+#: readelf.c:12901 readelf.c:12914
#, c-format
msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
msgstr ""
-#: readelf.c:12996
+#: readelf.c:13010
#, c-format
msgid "No note segments present in the core file.\n"
msgstr ""
-#: readelf.c:13088
+#: readelf.c:13102
msgid ""
"This instance of readelf has been built without support for a\n"
"64 bit data type and so it cannot read 64 bit ELF files.\n"
msgstr ""
-#: readelf.c:13135
+#: readelf.c:13149
#, c-format
msgid "%s: Failed to read file header\n"
msgstr ""
-#: readelf.c:13149
+#: readelf.c:13163
#, c-format
msgid ""
"\n"
"File: %s\n"
msgstr ""
-#: readelf.c:13321
+#: readelf.c:13335
#, c-format
msgid "%s: unable to dump the index as none was found\n"
msgstr ""
-#: readelf.c:13327
+#: readelf.c:13341
#, c-format
msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
msgstr ""
-#: readelf.c:13345
+#: readelf.c:13359
#, c-format
msgid "Binary %s contains:\n"
msgstr ""
-#: readelf.c:13353
+#: readelf.c:13367
#, c-format
msgid "%s: end of the symbol table reached before the end of the index\n"
msgstr ""
-#: readelf.c:13364
+#: readelf.c:13378
#, c-format
msgid ""
"%s: symbols remain in the index symbol table, but without corresponding "
"entries in the index table\n"
msgstr ""
-#: readelf.c:13369
+#: readelf.c:13383
#, c-format
msgid "%s: failed to seek back to start of object files in the archive\n"
msgstr ""
-#: readelf.c:13452 readelf.c:13535
+#: readelf.c:13466 readelf.c:13549
#, c-format
msgid "Input file '%s' is not readable.\n"
msgstr ""
-#: readelf.c:13474
+#: readelf.c:13488
#, c-format
msgid "%s: failed to seek to archive member.\n"
msgstr ""
-#: readelf.c:13553
+#: readelf.c:13567
#, c-format
msgid "File %s is not an archive so its index cannot be displayed.\n"
msgstr ""
diff --git a/binutils/readelf.c b/binutils/readelf.c
index f6fd38d2f8..873ed8b394 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -103,6 +103,7 @@
#include "elf/d10v.h"
#include "elf/d30v.h"
#include "elf/dlx.h"
+#include "elf/epiphany.h"
#include "elf/fr30.h"
#include "elf/frv.h"
#include "elf/h8.h"
@@ -552,6 +553,7 @@ guess_is_rela (unsigned int e_machine)
/* Targets that use RELA relocations. */
case EM_68K:
case EM_860:
+ case EM_ADAPTEVA_EPIPHANY:
case EM_ALPHA:
case EM_ALTERA_NIOS2:
case EM_AVR:
@@ -1168,6 +1170,10 @@ dump_relocations (FILE * file,
rtype = elf_vax_reloc_type (type);
break;
+ case EM_ADAPTEVA_EPIPHANY:
+ rtype = elf_epiphany_reloc_type (type);
+ break;
+
case EM_IP2K:
case EM_IP2K_OLD:
rtype = elf_ip2k_reloc_type (type);
@@ -1911,6 +1917,7 @@ get_machine_name (unsigned e_machine)
case EM_OR32: return "OpenRISC";
case EM_ARC_A5: return "ARC International ARCompact processor";
case EM_CRX: return "National Semiconductor CRX microprocessor";
+ case EM_ADAPTEVA_EPIPHANY: return "Adapteva EPIPHANY";
case EM_DLX: return "OpenDLX";
case EM_IP2K_OLD:
case EM_IP2K: return "Ubicom IP2xxx 8-bit microcontrollers";
@@ -9680,6 +9687,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
case EM_AVR_OLD:
case EM_AVR:
return reloc_type == 1;
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 3;
case EM_BLACKFIN:
return reloc_type == 0x12; /* R_byte4_data. */
case EM_CRIS:
@@ -9820,6 +9829,8 @@ is_32bit_pcrel_reloc (unsigned int reloc_type)
return reloc_type == 2; /* R_386_PC32. */
case EM_68K:
return reloc_type == 4; /* R_68K_PC32. */
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 6;
case EM_ALPHA:
return reloc_type == 10; /* R_ALPHA_SREL32. */
case EM_ARM:
@@ -9961,6 +9972,8 @@ is_16bit_abs_reloc (unsigned int reloc_type)
case EM_AVR_OLD:
case EM_AVR:
return reloc_type == 4; /* R_AVR_16. */
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 5;
case EM_CYGNUS_D10V:
case EM_D10V:
return reloc_type == 3; /* R_D10V_16. */
@@ -10006,6 +10019,7 @@ is_none_reloc (unsigned int reloc_type)
case EM_MIPS: /* R_MIPS_NONE. */
case EM_PARISC: /* R_PARISC_NONE. */
case EM_ALPHA: /* R_ALPHA_NONE. */
+ case EM_ADAPTEVA_EPIPHANY:
case EM_PPC: /* R_PPC_NONE. */
case EM_PPC64: /* R_PPC64_NONE. */
case EM_ARM: /* R_ARM_NONE. */
diff --git a/cpu/ChangeLog b/cpu/ChangeLog
index 0ab89be9e2..857a81ea3e 100644
--- a/cpu/ChangeLog
+++ b/cpu/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * cpu/epiphany.cpu: New file.
+ * cpu/epiphany.opc: New file.
+
2011-08-22 Nick Clifton <nickc@redhat.com>
* fr30.cpu: Newly contributed file.
diff --git a/cpu/epiphany.cpu b/cpu/epiphany.cpu
new file mode 100644
index 0000000000..8d4a57b55b
--- /dev/null
+++ b/cpu/epiphany.cpu
@@ -0,0 +1,2935 @@
+; Adapteva EPIPHANY CPU description. -*- Scheme -*-
+; Copyright 2011
+; Free Software Foundation, Inc.
+;
+; Contributed by Embecosm on behalf of Adapteva, Inc.
+; This file is part of the GNU Binutils and of GDB.
+;
+; 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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+; MA 02110-1301, USA.
+
+(include "simplify.inc")
+ ; define-arch must appear first
+
+(define-arch
+ (name epiphany) ; name of cpu family
+ (comment "Adapteva, Inc. EPIPHANY family")
+ (default-alignment aligned)
+ (insn-lsb0? #t)
+
+ ; - a 16/32 bit instruction machine (the default)
+
+ (machs epiphany32)
+ (isas epiphany)
+ )
+
+ ; Attributes.
+
+(define-attr
+ (for insn)
+ (type boolean)
+ (name SHORT-INSN)
+ (comment "instruction is a 16 bit form")
+ )
+
+;; 3 bit add/sub immediate forms - useful for relaxing into 11 bit form
+(define-attr
+ (for insn)
+ (type boolean)
+ (name IMM3)
+ (comment "instruction has a 3 bit immediate form")
+ )
+
+;; 8 bit mov immediate forms - useful for relaxing into 16 bit form
+(define-attr
+ (for insn)
+ (type boolean)
+ (name IMM8)
+ (comment "instruction has a 8 bit immediate form")
+ )
+
+ ; Instruction set parameters.
+
+(define-isa
+ (name epiphany)
+ (comment "Adapteva, Inc. EPIPHANY32 ISA")
+
+ (default-insn-word-bitsize 32)
+ (default-insn-bitsize 32)
+ (base-insn-bitsize 32)
+ (decode-assist (3 2 1 0)) ; CGEN can figure this out
+ (liw-insns 1) ; # instructions fetched at once
+ )
+
+ ; Cpu family definitions.
+
+
+(define-cpu
+ ; cpu names must be distinct from the architecture name and machine names.
+ (name epiphanybf)
+ (comment "Adapteva, Inc. EPIPHANY Family")
+ (endian little)
+ (word-bitsize 32)
+ )
+
+(define-cpu
+ (name epiphanymf)
+ (comment "Adapteva, Inc. EPIPHANY Family")
+ (endian little)
+ (word-bitsize 32)
+ )
+
+
+(define-mach
+ (name epiphany32)
+ (comment "Adapteva EPIPHANY")
+ (cpu epiphanybf)
+ )
+
+
+ ; Model descriptions.
+
+(define-model
+ (name epiphany32) (comment "Adapteva EPIPHANY 32/16") (attrs)
+ (mach epiphany32)
+
+ (unit u-exec "Execution Unit" ()
+ 1 1 ; issue done
+ () ; state
+ () ; inputs
+ () ; outputs
+ () ; profile action (default)
+ )
+ )
+
+
+
+ ; Instruction fields.
+ ;
+ ; Attributes:
+ ; XXX: what EPIPHANY attrs
+ ; PCREL-ADDR: pc relative value (for reloc and disassembly purposes)
+ ; ABS-ADDR: absolute address (for reloc and disassembly purposes?)
+ ; RESERVED: bits are not used to decode insn, must be all 0
+ ; RELOC: there is a relocation associated with this field
+
+(define-attr
+ (for ifield operand)
+ (type boolean)
+ (name RELOC)
+ (comment "there is a reloc associated with this field (experiment)")
+ )
+
+;; define the fields of the instruction.
+;; name description ATTR MSB LEN
+(dnf f-opc "primary opcode" () 3 4)
+(dnf f-opc-4-1 "secondary opcode" () 4 1)
+(dnf f-opc-6-3 "secondary opcode" () 6 3) ;;
+(dnf f-opc-8-5 "tertiary opcode" () 8 5) ;;
+(dnf f-opc-19-4 "additional opcode bits" () 19 4)
+(dnf f-condcode "condition codes" () 7 4)
+(dnf f-secondary-ccs "flag for secondary ccs" () 7 1)
+(dnf f-shift "shift amount" () 9 5)
+(dnf f-wordsize "load/store size" () 6 2)
+(dnf f-store "load/store flag" () 4 1) ;; 0==load,1==store
+(dnf f-opc-8-1 "opcode bits" () 8 1)
+(dnf f-opc-31-32 "all opcode set" () 31 32)
+
+(df f-simm8 "branch displacement" (PCREL-ADDR RELOC) 15 8 INT
+ ((value pc) (sra SI (sub SI value pc) 1))
+ ((value pc) (add SI (sll SI value 1) pc)))
+
+(df f-simm24 "branch displacement" (PCREL-ADDR RELOC) 31 24 INT
+ ((value pc) (sra SI (sub SI value pc) 1))
+ ((value pc) (add SI (sll SI value 1) pc)))
+
+(df f-sdisp3 "signed immediate 3 bit" () 9 3 INT #f #f)
+
+(dnf f-disp3 "address offset" () 9 3)
+(dnf f-disp8 "address offset" () 23 8)
+
+(dnf f-imm8 "move/add/sub imm8" () 12 8)
+(dnf f-imm-27-8 "move/add/sub imm16" () 27 8)
+(dnf f-addsubx "+/- index address" () 20 1)
+(dnf f-subd "+/- displ address" () 24 1)
+(dnf f-pm "post-modify immediate" () 25 1)
+
+(dnf f-rm "short rm" () 9 3) ;; RM
+(dnf f-rn "short rn" () 12 3) ;; RN
+(dnf f-rd "short rd" () 15 3) ;; RD
+
+(dnf f-rm-x "extension rm" () 25 3) ;; RM
+(dnf f-rn-x "extension rn" () 28 3) ;; RN
+(dnf f-rd-x "extension rd" () 31 3) ;; RD
+
+(dnf f-dc-9-1 "DC" (RESERVED) 9 1)
+
+(dnf f-sn "short sn" () 12 3) ;; SN
+(dnf f-sd "short sd" () 15 3) ;; SD
+
+(dnf f-sn-x "extension sn" () 28 3) ;; SN
+(dnf f-sd-x "extension sd" () 31 3) ;; SD
+
+
+
+(dnf f-dc-7-4 "movts zeros" () 7 4)
+(dnf f-trap-swi-9-1 "trap or swi" () 9 1)
+(dnf f-gien-gidis-9-1 "gien or gidis" () 9 1)
+
+
+(dnf f-dc-15-3 "DC" (RESERVED) 15 3)
+(dnf f-dc-15-7 "DC" (RESERVED) 15 7)
+(dnf f-dc-15-6 "DC" () 15 6)
+(dnf f-trap-num "trap number" () 15 6)
+
+(dnf f-dc-20-1 "DC" (RESERVED) 20 1)
+
+(dnf f-dc-21-1 "DC" (RESERVED) 21 1)
+(dnf f-dc-21-2 "DC" (RESERVED) 21 2)
+
+(dnf f-dc-22-3 "DC" (RESERVED) 22 3)
+(dnf f-dc-22-2 "DC" (RESERVED) 22 2)
+(dnf f-dc-22-1 "DC" (RESERVED) 22 1)
+
+(dnf f-dc-25-6 "DC" (RESERVED) 25 6)
+(dnf f-dc-25-4 "DC" (RESERVED) 25 4)
+(dnf f-dc-25-2 "DC" (RESERVED) 25 2)
+(dnf f-dc-25-1 "DC" (RESERVED) 25 1)
+
+(dnf f-dc-28-1 "DC" (RESERVED) 28 1)
+(dnf f-dc-31-3 "DC" (RESERVED) 31 3)
+
+(dnmf f-disp11 "Unsigned offset for load/store" () UINT (f-disp3 f-disp8)
+ (sequence ()
+ (set (ifield f-disp8) (and (srl (ifield f-disp11) 3) (const 255)))
+ (set (ifield f-disp3) (and (ifield f-disp11) 7)))
+ (sequence ()
+ (set (ifield f-disp11) (or (sll (ifield f-disp8) 3)
+ (ifield f-disp3)))
+ )
+ )
+
+
+(dnmf f-sdisp11 "Signed offset for load/store" () INT (f-disp3 f-disp8)
+ (sequence () ;encode
+ (set (ifield f-disp8) (and #xff (srl SI (ifield f-sdisp11) 3)))
+ (set (ifield f-disp3) (and SI (ifield f-sdisp11) 7)))
+ (sequence () ;decode
+ (set (ifield f-sdisp11)
+ (sra SI (sll SI (or SI (sll (ifield f-disp8) 3)
+ (ifield f-disp3))
+ 21)
+ 21)))
+ )
+
+(dnmf f-imm16 "Short immediate for move/add/sub" () UINT (f-imm8 f-imm-27-8)
+ (sequence ()
+ (set (ifield f-imm8) (and (ifield f-imm16) #xff))
+ (set (ifield f-imm-27-8) (srl (ifield f-imm16) 8)))
+ (sequence ()
+ (set (ifield f-imm16) (or (sll (ifield f-imm-27-8) 8)
+ (ifield f-imm8))))
+ )
+
+
+;; 32 bit instructions have the register number broken into two non-contiguous fields
+
+(define-pmacro (x-reg-field reg)
+ (define-multi-ifield
+ (name (.sym "f-" reg "6"))
+ (mode UINT)
+ (subfields (.sym "f-" reg "-x") (.sym "f-" reg))
+ (insert (sequence ()
+ (set (ifield (.sym "f-" reg)) (and (ifield (.sym "f-" reg "6"))
+ (const 7)))
+ (set (ifield (.sym "f-" reg "-x")) (srl (ifield (.sym "f-" reg "6"))
+ (const 3)))
+ ))
+ (extract (sequence ()
+ (set (ifield (.sym "f-" reg "6")) (or (sll (ifield (.sym "f-" reg "-x"))
+ (const 3))
+ (ifield (.sym "f-" reg))))
+ ))
+ )
+ )
+
+(x-reg-field rd) ; f-rd6
+(x-reg-field rn) ; f-rn6
+(x-reg-field rm) ; f-rm6
+(x-reg-field sd) ; f-sd6
+(x-reg-field sn) ; f-sn6
+
+
+;;;;;;;;;;
+ ; Enums. ;
+;;;;;;;;;;
+
+ ; insn-opc: bits 3..0 - major family selector
+(define-normal-insn-enum insn-opc "opc enums" () OP4_ f-opc
+ (
+ BRANCH16 ;; 0000
+ LDSTR16X ;; 0001
+ FLOW16 ;; 0010
+ IMM16 ;; 0011
+ LDSTR16D ;; 0100
+ LDSTR16P ;; 0101
+ LSHIFT16 ;; 0110 - logical shift
+ DSP16 ;; 0111 - 3 reg DSP 16 bit insns
+ BRANCH ;; 1000
+ LDSTRX ;; 1001
+ ALU16 ;; 1010 - 3 reg 16 bit
+ IMM32 ;; 1011
+ LDSTRD ;; 1100
+ LDSTRP ;; 1101
+ ASHIFT16 ;; 1110 ASR, BITR
+ MISC ;; 1111 - 32 bit shifts, 3 reg ALU, 3 reg DSP, FLOW, BITR
+ )
+ )
+
+(define-normal-insn-enum insn-wordsize "memory access width" () OPW_ f-wordsize
+ ; specifies the size of a memory load/store operation
+ (BYTE SHORT WORD DOUBLE)
+ )
+
+(define-normal-insn-enum insn-memory-access "memory access direction" () OP_ f-store
+ ; load=0, store=1
+ (LOAD STORE)
+ )
+
+ ; enum for trap codes used by simulator
+(define-normal-insn-enum trap-codes "trap instruction dispatch code" () TRAP_ f-trap-num
+ (write read open exit pass fail close other)
+ )
+
+ ; cond branch: bits 7..4
+ ;
+(define-normal-insn-enum insn-cond "branch conditions" () OPC_ f-condcode
+ (EQ NE GTU GTEU LTEU LTU GT GTE LT LTE BEQ BNE BLT BLTE B BL))
+
+ ; dsp 3 operand opcodes
+(define-normal-insn-enum insn-bop "binary operator subcodes" () OPB_ f-opc-6-3
+ (EOR ADD LSL SUB LSR AND ASR ORR))
+
+ ; dsp 3 operand opcodes
+(define-normal-insn-enum insn-bopext "binary operator subcodes" () OPBE_ f-opc-6-3
+ (FEXT FDEP LFSR - - - - -))
+
+
+(define-normal-insn-enum insn-fop "floating operators" () OPF_ f-opc-6-3
+ (ADD SUB MUL MADD MSUB FLOAT FIX FABS))
+
+(define-normal-insn-enum insn-fopexn "extended floating operators" () OPF_ f-opc-6-3
+ (FRECIP FSQRT - - - - - -))
+
+
+
+
+; Immediate operation secondary opcodes
+(define-normal-insn-enum insn-immop "immediate operators" () OPI_ f-opc-6-3
+ (- ADD - SUB - - - TRAP) ; TRAP is special extension for simulator
+ )
+
+ ; don't care fields
+(define-normal-insn-enum insn-dc-25-2 "don't cares" () OPI_25_2_ f-dc-25-2
+ (MBZ))
+
+; General Register keyword names.
+(define-keyword
+ (name gr-names)
+ (print-name h-registers)
+ (prefix "")
+ (values
+; some preferred aliases
+ (sb 9) (sl 10) (fp 11) (ip 12) (sp 13) (lr 14)
+; the default register names
+ (r0 0) (r1 1) (r2 2) (r3 3) (r4 4) (r5 5) (r6 6) (r7 7)
+ (r8 8) (r9 9) (r10 10) (r11 11) (r12 12) (r13 13) (r14 14) (r15 15)
+ (r16 16) (r17 17) (r18 18) (r19 19) (r20 20) (r21 21) (r22 22) (r23 23)
+ (r24 24) (r25 25) (r26 26) (r27 27) (r28 28) (r29 29) (r30 30) (r31 31)
+ (r32 32) (r33 33) (r34 34) (r35 35) (r36 36) (r37 37) (r38 38) (r39 39)
+ (r40 40) (r41 41) (r42 42) (r43 43) (r44 44) (r45 45) (r46 46) (r47 47)
+ (r48 48) (r49 49) (r50 50) (r51 51) (r52 52) (r53 53) (r54 54) (r55 55)
+ (r56 56) (r57 57) (r58 58) (r59 59) (r60 60) (r61 61) (r62 62) (r63 63)
+; some less popular aliases
+ (a1 0) (a2 1) (a3 2) (a4 3) (v1 4) (v2 5) (v3 6) (v4 7)
+ (v5 8) (v6 9) (v7 10) (v8 11)
+ )
+ )
+
+(define-normal-insn-enum post-index "+/- index register" () DIR_ f-addsubx (POSTINC POSTDEC))
+
+(define-normal-insn-enum disp-post-modify "postmodify displacement" () PMOD_ f-pm (DISP POST))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; Hardware pieces.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; 64 general-purpose registers
+(define-hardware
+ (name h-registers)
+ (comment "all addressable registers")
+ (type register SI (64))
+ (attrs PROFILE CACHE-ADDR)
+ (indices extern-keyword gr-names)
+ )
+
+
+
+;; Same 64 registers as floating point registers
+(define-hardware
+ (name h-fpregisters)
+ (comment "all GPRs as float values")
+ (type register SF (64))
+ (attrs PROFILE VIRTUAL)
+ (indices extern-keyword gr-names)
+ (get (index) (subword SF (reg h-registers index) 0))
+ (set (index newval) (set (reg h-registers index) (subword SI newval 0)))
+ )
+
+;; define processor status bits as physical hardware
+
+(define-pmacro (psw-h-bit name cmt)
+ (dsh name cmt () (register BI)))
+
+(psw-h-bit h-zbit "integer zero bit")
+(psw-h-bit h-nbit "integer neg bit")
+(psw-h-bit h-cbit "integer carry bit")
+(psw-h-bit h-vbit "integer overflow bit")
+(psw-h-bit h-vsbit "integer overflow sticky")
+
+
+(psw-h-bit h-bzbit "floating point zero bit")
+(psw-h-bit h-bnbit "floating point neg bit")
+(psw-h-bit h-bvbit "floating point ovfl bit")
+(psw-h-bit h-bubit "floating point underfl bit")
+(psw-h-bit h-bibit "floating point invalid bit")
+(psw-h-bit h-bcbit "floating point carry bit")
+
+(psw-h-bit h-bvsbit "floating point overflow sticky")
+(psw-h-bit h-bisbit "floating point invalid sticky")
+(psw-h-bit h-busbit "floating point underflow sticky")
+
+(psw-h-bit h-expcause0bit "exceprion cause bit0")
+(psw-h-bit h-expcause1bit "exceprion cause bit1")
+(psw-h-bit h-expcause2bit "external load stalled bit")
+(psw-h-bit h-extFstallbit "external fetch stalled bit")
+
+(psw-h-bit h-trmbit "0=round to nearest, 1=trunacte select bit")
+(psw-h-bit h-invExcEnbit "invalid exception enable bit")
+(psw-h-bit h-ovfExcEnbit "overflow exception enable bit")
+(psw-h-bit h-unExcEnbit "underflow exception enablebit ")
+
+(psw-h-bit h-timer0bit0 "timer 0 mode selection 0")
+(psw-h-bit h-timer0bit1 "timer 0 mode selection 1")
+(psw-h-bit h-timer0bit2 "timer 0 mode selection 2")
+(psw-h-bit h-timer0bit3 "timer 0 mode selection 3")
+(psw-h-bit h-timer1bit0 "timer 1 mode selection 0")
+(psw-h-bit h-timer1bit1 "timer 1 mode selection 1")
+(psw-h-bit h-timer1bit2 "timer 1 mode selection 2")
+(psw-h-bit h-timer1bit3 "timer 1 mode selection 3")
+
+(psw-h-bit h-mbkptEnbit "multicore bkpt enable")
+(psw-h-bit h-clockGateEnbit "clock gating enable bkpt enable")
+
+
+(psw-h-bit h-coreCfgResBit12 "core config bit 12")
+(psw-h-bit h-coreCfgResBit13 "core config bit 13")
+(psw-h-bit h-coreCfgResBit14 "core config bit 14")
+(psw-h-bit h-coreCfgResBit15 "core config bit 15")
+(psw-h-bit h-coreCfgResBit16 "core config bit 16")
+
+
+(psw-h-bit h-coreCfgResBit20 "core config bit 20")
+(psw-h-bit h-coreCfgResBit21 "core config bit 21")
+
+(psw-h-bit h-coreCfgResBit24 "core config bit 24")
+(psw-h-bit h-coreCfgResBit25 "core config bit 25")
+(psw-h-bit h-coreCfgResBit26 "core config bit 26")
+(psw-h-bit h-coreCfgResBit27 "core config bit 27")
+(psw-h-bit h-coreCfgResBit28 "core config bit 28")
+(psw-h-bit h-coreCfgResBit29 "core config bit 29")
+(psw-h-bit h-coreCfgResBit30 "core config bit 30")
+(psw-h-bit h-coreCfgResBit31 "core config bit 31")
+
+
+(psw-h-bit h-arithmetic-modebit0 "arithmetic mode bit0")
+(psw-h-bit h-arithmetic-modebit1 "arithmetic mode bit1")
+(psw-h-bit h-arithmetic-modebit2 "arithmetic mode bit2")
+
+
+(psw-h-bit h-gidisablebit "global interrupt disable bit")
+(psw-h-bit h-kmbit "kernel mode bit")
+(psw-h-bit h-caibit "core active indicator mode bit")
+(psw-h-bit h-sflagbit "sflag bit")
+
+
+ ; Define operands for each of the physical bits
+(define-pmacro (psw-bit name hname cmt)
+ (dnop name cmt (SEM-ONLY) hname f-nil)
+ )
+
+(psw-bit zbit h-zbit "integer zero bit")
+(psw-bit nbit h-nbit "integer neg bit")
+(psw-bit cbit h-cbit "integer carry bit")
+(psw-bit vbit h-vbit "integer overflow bit")
+
+(psw-bit bzbit h-bzbit "floating point zero bit")
+(psw-bit bnbit h-bnbit "floating point neg bit")
+(psw-bit bvbit h-bvbit "floating point ovfl bit")
+(psw-bit bcbit h-bcbit "floating point carry bit")
+
+(psw-bit bubit h-bubit "floating point underfl bit")
+(psw-bit bibit h-bibit "floating point invalid bit")
+
+
+(psw-bit vsbit h-vsbit "integer overflow sticky")
+(psw-bit bvsbit h-bvsbit "floating point overflow sticky")
+(psw-bit bisbit h-bisbit "floating point invalid sticky")
+(psw-bit busbit h-busbit "floating point underflow sticky")
+(psw-bit expcause0bit h-expcause0bit "exceprion cause bit0")
+(psw-bit expcause1bit h-expcause1bit "exceprion cause bit1")
+
+
+(psw-bit expcause2bit h-expcause2bit "external load stalled bit")
+(psw-bit extFstallbit h-extFstallbit "external fetch stalled bit")
+
+(psw-bit trmbit h-trmbit "0=round to nearest, 1=trunacte selct bit")
+(psw-bit invExcEnbit h-invExcEnbit "invalid exception enable bit")
+(psw-bit ovfExcEnbit h-ovfExcEnbit "overflow exception enable bit")
+(psw-bit unExcEnbit h-unExcEnbit "underflow exception enable bit")
+
+(psw-bit timer0bit0 h-timer0bit0 "timer 0 mode selection 0")
+(psw-bit timer0bit1 h-timer0bit1 "timer 0 mode selection 1")
+(psw-bit timer0bit2 h-timer0bit2 "timer 0 mode selection 2")
+(psw-bit timer0bit3 h-timer0bit3 "timer 0 mode selection 3")
+
+(psw-bit timer1bit0 h-timer1bit0 "timer 1 mode selection 0")
+(psw-bit timer1bit1 h-timer1bit1 "timer 1 mode selection 1")
+(psw-bit timer1bit2 h-timer1bit2 "timer 1 mode selection 2")
+(psw-bit timer1bit3 h-timer1bit3 "timer 1 mode selection 3")
+
+(psw-bit mbkptEnbit h-mbkptEnbit "multicore bkpt enable")
+(psw-bit clockGateEnbit h-clockGateEnbit "clock gate enable enable")
+
+(psw-bit arithmetic-modebit0 h-arithmetic-modebit0 "arithmetic mode bit0")
+(psw-bit arithmetic-modebit1 h-arithmetic-modebit1 "arithmetic mode bit1")
+(psw-bit arithmetic-modebit2 h-arithmetic-modebit2 "arithmetic mode bit2")
+
+(psw-bit coreCfgResBit12 h-coreCfgResBit12 "core config bit 12")
+(psw-bit coreCfgResBit13 h-coreCfgResBit13 "core config bit 13")
+(psw-bit coreCfgResBit14 h-coreCfgResBit14 "core config bit 14")
+(psw-bit coreCfgResBit15 h-coreCfgResBit15 "core config bit 15")
+(psw-bit coreCfgResBit16 h-coreCfgResBit16 "core config bit 16")
+
+(psw-bit coreCfgResBit20 h-coreCfgResBit20 "core config bit 20")
+(psw-bit coreCfgResBit21 h-coreCfgResBit21 "core config bit 21")
+
+(psw-bit coreCfgResBit24 h-coreCfgResBit24 "core config bit 24")
+(psw-bit coreCfgResBit25 h-coreCfgResBit25 "core config bit 25")
+(psw-bit coreCfgResBit26 h-coreCfgResBit26 "core config bit 26")
+(psw-bit coreCfgResBit27 h-coreCfgResBit27 "core config bit 27")
+(psw-bit coreCfgResBit28 h-coreCfgResBit28 "core config bit 28")
+(psw-bit coreCfgResBit29 h-coreCfgResBit29 "core config bit 29")
+(psw-bit coreCfgResBit30 h-coreCfgResBit30 "core config bit 30")
+(psw-bit coreCfgResBit31 h-coreCfgResBit31 "core config bit 31")
+
+
+(psw-bit gidisablebit h-gidisablebit "global interrupt disable bit")
+(psw-bit kmbit h-kmbit "kernel mode bit")
+(psw-bit caibit h-caibit "core actibe indicator bit")
+(psw-bit sflagbit h-sflagbit "sflag bit")
+
+
+
+
+;; Special registers - accessed via MOVTS and MOVFS.
+;;
+;; "Core control and status" in group MR0=0, MR1=0
+
+(define-keyword
+ (name cr-names)
+ (print-name h-core-registers)
+ (prefix "")
+ (values (config 0)
+ (status 1) ; unified condition codes
+ (pc 2) ; virtualized PC
+ (debug 3);
+ (iab 4)
+ (lc 5);loop counter Not impemented
+ (ls 6);loop start address Not impemented
+ (le 7);loop end address Not impemented
+ (iret 8)
+ (imask 9)
+ (ilat 10)
+ (ilatst 11)
+ (ilatcl 12)
+ (ipend 13)
+ (ctimer0 14)
+ (ctimer1 15)
+ (hstatus 16)
+ )
+ )
+;; DMA registers in group MR0=1, MR1=0
+
+(define-keyword
+ (name crdma-names)
+ (print-name h-coredma-registers)
+ (prefix "")
+ (values
+
+
+ (dma0config 0)
+ (dma0stride 1)
+ (dma0count 2)
+
+ (dma0srcaddr 3)
+ (dma0dstaddr 4)
+
+ (dma0auto0 5)
+ (dma0auto1 6)
+
+ (dma0status 7)
+
+ (dma1config 8)
+ (dma1stride 9)
+ (dma1count 10)
+
+ (dma1srcaddr 11)
+ (dma1dstaddr 12)
+
+ (dma1auto0 13)
+ (dma1auto1 14)
+
+ (dma1status 15)
+
+ )
+ )
+;; mem configuration registers in group MR0=0, MR1=1
+
+(define-keyword
+ (name crmem-names)
+ (print-name h-coremem-registers)
+ (prefix "")
+ (values
+ (memconfig 0)
+ (memstatus 1)
+ (memprotect 2)
+ (memreserve 3)
+ )
+ )
+
+;; mesh configuration registers in group MR0=1, MR1=1
+
+(define-keyword
+ (name crmesh-names)
+ (print-name h-coremesh-registers)
+ (prefix "")
+
+ (values
+
+
+ (meshconfig 0)
+ (coreid 1)
+ (meshmulticast 2)
+ (swreset 3)
+ )
+ )
+
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; PC is a byte-addressed register
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(dnh h-pc "program counter" (PC PROFILE) (pc) () () ())
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; Memory Effective Address wants to be visible
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(dnh h-memaddr "memory effective address" (PROFILE) (register SI) () () ())
+(dnop memaddr "memory effective address" (SEM-ONLY) h-memaddr f-nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; Special Core Registers
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; STATUS
+;; [0]=core active indicator
+;; [1]=global interrupt disable
+;; [2]=processor mode(1=user mode, 0=kernel mode)
+;; [3]=wired AND global flag
+
+;; [4]=integer zero zbit
+;; [5]=integer negative nbit
+;; [6]=integer carry cbit
+;; [7]=integer overflow vbit
+
+;; [8]=fpu zero flag bzbit
+;; [9]=fpu negative flag bnbit
+;; [10]=fpu overflow flag bvbit
+;; [11]=fpu carry flag(not used) bcbit
+
+;; [12]=ialu overflow flag(sticky) vsbit
+;; [13]=fpu invalid flag(sticky) bisbit
+;; [14]=fpu overflow flag(sticky) bvsbit
+;; [15]=fpu underflow flag(sticky) busbit
+
+;; [17:16]=exception cause 00=no exception 01=load-store exception 10=fpu exception 11=unimplemented instruction
+;; expcause1bit
+;; expcause0bit
+
+;; [18]=external load stalled expcause2bit
+;; [19]=external fetch stalled extFstallbit
+
+;; [31:20]=RESERVED
+
+
+
+
+
+(define-hardware
+ (name h-core-registers)
+ (comment "Special Core Registers")
+ (type register USI (17))
+ (attrs)
+ (indices extern-keyword cr-names)
+ (get (index)
+ (cond USI
+ ((eq index (const 1)) ; STATUS reg ?
+ (or (or (or (or (sll USI kmbit (const 2))
+ (sll USI gidisablebit (const 1)))
+ (or (or (sll USI expcause1bit (const 17))
+ (sll USI expcause0bit (const 16)))
+ (or (sll USI expcause2bit (const 18))
+ (sll USI extFstallbit (const 19)))))
+ (or (or (or (sll USI busbit (const 15))
+ (sll USI bisbit (const 13)))
+ (or (sll USI bvsbit (const 14))
+ (sll USI vsbit (const 12))))
+ (or (or (sll USI bvbit (const 10))
+ (sll USI bcbit (const 11)))
+ (or (sll USI bnbit (const 9))
+ (sll USI bzbit (const 8))))))
+ (or (or (or (sll USI vbit (const 7))
+ (sll USI cbit (const 6)))
+ (or (sll USI nbit (const 5))
+ (sll USI zbit (const 4))))
+ (or (sll USI sflagbit (const 3))
+ (sll USI (const 1) (const 0)))))) ;caibit
+ ((eq index (const 0)) ; Config reg ?
+ (or (or (or (or (or (or (sll USI timer0bit2 (const 6))
+ (sll USI timer0bit3 (const 7)))
+ (or (or (sll USI coreCfgResBit28 (const 28))
+ (sll USI coreCfgResBit29 (const 29)))
+ (or (sll USI coreCfgResBit30 (const 30))
+ (sll USI coreCfgResBit31 (const 31)))))
+ (or (or (sll USI coreCfgResBit24 (const 24))
+ (sll USI coreCfgResBit25 (const 25)))
+ (or (sll USI coreCfgResBit26 (const 26))
+ (sll USI coreCfgResBit27 (const 27)))))
+ (or (or (sll USI timer0bit0 (const 4))
+ (sll USI timer0bit1 (const 5)))
+ (or (sll USI coreCfgResBit14 (const 14))
+ (sll USI coreCfgResBit15 (const 15)))))
+ (or (or (or (or (sll USI timer1bit2 (const 10))
+ (sll USI timer1bit3 (const 11)))
+ (or (sll USI coreCfgResBit12 (const 12))
+ (sll USI coreCfgResBit13 (const 13))))
+ (or (sll USI clockGateEnbit (const 22))
+ (sll USI mbkptEnbit (const 23))))
+ (or (or (sll USI timer1bit0 (const 8))
+ (sll USI timer1bit1 (const 9)))
+ (or (sll USI coreCfgResBit20 (const 20))
+ (sll USI coreCfgResBit21 (const 21))))))
+ (or (or (sll USI invExcEnbit (const 1))
+ (sll USI ovfExcEnbit (const 2)))
+ (or (or (sll USI trmbit (const 0))
+ (sll USI unExcEnbit (const 3)))
+ (or (or (sll USI arithmetic-modebit0 (const 17))
+ (sll USI arithmetic-modebit1 (const 18)))
+ (or (sll USI arithmetic-modebit2 (const 19))
+ (sll USI coreCfgResBit16 (const 16)))))))) ;config reg
+
+ ((eq index (const 2)) (raw-reg USI h-pc)) ;PC reg
+
+ (else (raw-reg USI h-core-registers index))))
+
+ (set (index val)
+ (cond VOID
+ ((eq index (const 0)) ; CONFIG reg
+ (sequence ()
+ (set trmbit (and (const 1) (srl val (const 0))))
+ (set invExcEnbit (and (const 1) (srl val (const 1))))
+ (set ovfExcEnbit (and (const 1) (srl val (const 2))))
+ (set unExcEnbit (and (const 1) (srl val (const 3))))
+ (set timer0bit0 (and (const 1) (srl val (const 4))))
+ (set timer0bit1 (and (const 1) (srl val (const 5))))
+ (set timer0bit2 (and (const 1) (srl val (const 6))))
+ (set timer0bit3 (and (const 1) (srl val (const 7))))
+ (set timer1bit0 (and (const 1) (srl val (const 8))))
+ (set timer1bit1 (and (const 1) (srl val (const 9))))
+ (set timer1bit2 (and (const 1) (srl val (const 10))))
+ (set timer1bit3 (and (const 1) (srl val (const 11))))
+
+ (set coreCfgResBit12 (and (const 1) (srl val (const 12))))
+ (set coreCfgResBit13 (and (const 1) (srl val (const 13))))
+ (set coreCfgResBit14 (and (const 1) (srl val (const 14))))
+ (set coreCfgResBit15 (and (const 1) (srl val (const 15))))
+ (set coreCfgResBit16 (and (const 1) (srl val (const 16))))
+
+ (set arithmetic-modebit0 (and (const 1) (srl val (const 17))))
+ (set arithmetic-modebit1 (and (const 1) (srl val (const 18))))
+ (set arithmetic-modebit2 (and (const 1) (srl val (const 19))))
+
+ (set coreCfgResBit20 (and (const 1) (srl val (const 20))))
+ (set coreCfgResBit21 (and (const 1) (srl val (const 21))))
+
+ (set clockGateEnbit (and (const 1) (srl val (const 22))))
+ (set mbkptEnbit (and (const 1) (srl val (const 23))))
+
+ (set coreCfgResBit24 (and (const 1) (srl val (const 24))))
+ (set coreCfgResBit25 (and (const 1) (srl val (const 25))))
+ (set coreCfgResBit26 (and (const 1) (srl val (const 26))))
+ (set coreCfgResBit27 (and (const 1) (srl val (const 27))))
+ (set coreCfgResBit28 (and (const 1) (srl val (const 28))))
+ (set coreCfgResBit29 (and (const 1) (srl val (const 29))))
+ (set coreCfgResBit30 (and (const 1) (srl val (const 30))))
+ (set coreCfgResBit31 (and (const 1) (srl val (const 31))))
+
+ (set (raw-reg USI h-core-registers index) val)
+ ;; check LSB of CONFIG for rounding mode
+ (c-call "epiphany_set_rounding_mode" val)
+ )
+ )
+ ((eq index (const 1)) ;STATUS reg ; TODO check which bits can be set or clear
+ (sequence ((USI newval))
+ (set newval (and val (const #xfff2)))
+ (set extFstallbit (and (const 1) (srl newval (const 19))))
+ (set expcause2bit (and (const 1) (srl newval (const 18))))
+ (set expcause1bit (and (const 1) (srl newval (const 17))))
+ (set expcause0bit (and (const 1) (srl newval (const 16))))
+ (set busbit (and (const 1) (srl newval (const 15))))
+ (set bisbit (and (const 1) (srl newval (const 13))))
+ (set bvsbit (and (const 1) (srl newval (const 14))))
+ (set vsbit (and (const 1) (srl newval (const 12))))
+ (set bvbit (and (const 1) (srl newval (const 10))))
+ (set bcbit (and (const 1) (srl newval (const 11))))
+ (set bnbit (and (const 1) (srl newval (const 9))))
+ (set bzbit (and (const 1) (srl newval (const 8))))
+ (set vbit (and (const 1) (srl newval (const 7))))
+ (set cbit (and (const 1) (srl newval (const 6))))
+ (set nbit (and (const 1) (srl newval (const 5))))
+ (set zbit (and (const 1) (srl newval (const 4))))
+ (set sflagbit (and (const 1) (srl newval (const 3))))
+ (set kmbit (and (const 1) (srl newval (const 2))))
+ ;;(set gie (and (const 1) (srl newval (const 1))))
+ (set (raw-reg SI h-core-registers (const 1)) newval)
+ ))
+ ;; causes simulator errors
+ ;; ((eq index (const 2)) ;PC reg
+ ;; (set pc val))
+
+ (else (set (raw-reg USI h-core-registers index) val))
+ ))
+)
+ ; (define-pmacro (hcr-config) (reg h-core-registers 0)) etc.
+(.splice begin (.unsplice (.map
+ (.pmacro (xname xnum)
+ (define-pmacro ((.sym hcr- xname)) (reg h-core-registers xnum)))
+
+ (
+ config
+ status
+ pc
+ debug
+ iab
+ lc
+ ls
+ le
+ iret
+ imask
+ ilat
+ ilatst
+ ilatcl
+ ipend
+ ctimer0
+ ctimer1
+ hstatus
+
+
+
+ )
+
+ (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+ )
+ )))
+
+
+
+;; DMA registers in MMR space
+(define-hardware
+ (name h-coredma-registers)
+ (comment "DMA registers in MMR space")
+ (type register USI (16))
+ (attrs)
+ (indices extern-keyword crdma-names)
+ )
+
+;; MEM registers in MMR space
+(define-hardware
+ (name h-coremem-registers)
+ (comment "MEM registers in MMR space")
+ (type register USI (4))
+ (attrs)
+ (indices extern-keyword crmem-names)
+ )
+
+;; MEM registers in MMR space
+(define-hardware
+ (name h-coremesh-registers)
+ (comment "MESH registers in MMR space")
+ (type register USI (4))
+ (attrs)
+ (indices extern-keyword crmesh-names)
+ )
+
+
+
+ ; Operands
+
+ ; Branch displacements
+(define-operand
+ (name simm24)
+ (comment "branch address pc-relative")
+ (attrs RELAX)
+ (type h-iaddr)
+ (index f-simm24)
+ (handlers (parse "branch_addr")))
+
+(define-operand
+ (name simm8)
+ (comment "branch address pc-relative")
+ (attrs RELAX)
+ (type h-iaddr)
+ (index f-simm8)
+ (handlers (parse "branch_addr")))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; Register operands
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-pmacro (short-regs nm group hw cmt)
+ (define-operand
+ (name nm)
+ (comment cmt)
+ (attrs)
+ (type hw)
+ (index (.sym "f-r" group))
+ (handlers (parse "shortregs") (print "keyword"))
+ )
+ )
+
+(define-pmacro (short-regs-core nm group hw cmt)
+ (define-operand
+ (name nm)
+ (comment cmt)
+ (attrs)
+ (type hw)
+ (index (.sym "f-s" group))
+ (handlers (parse "shortregs") (print "keyword"))
+ )
+ )
+
+
+ ; short regs (0-7)
+(short-regs rd d h-registers "destination register")
+(short-regs rn n h-registers "source register")
+(short-regs rm m h-registers "source register")
+
+(short-regs frd d h-fpregisters "fp destination register")
+(short-regs frn n h-fpregisters "fp source register")
+(short-regs frm m h-fpregisters "fp source register")
+
+ ; long regs (0-63)
+(dnop rd6 "destination register" () h-registers f-rd6)
+(dnop rn6 "source register" () h-registers f-rn6)
+(dnop rm6 "source register" () h-registers f-rm6)
+
+(dnop frd6 "fp destination register" () h-fpregisters f-rd6)
+(dnop frn6 "fp source register" () h-fpregisters f-rn6)
+(dnop frm6 "fp source register" () h-fpregisters f-rm6)
+
+ ; special regs (0-7)
+(short-regs-core sd d h-core-registers "special destination")
+(short-regs-core sn n h-core-registers "special source")
+
+ ; special regs (long form)
+(dnop sd6 "special destination register" () h-core-registers f-sd6)
+(dnop sn6 "special source register" () h-core-registers f-sn6)
+
+(dnop sddma "dma register" () h-coredma-registers f-sd6)
+(dnop sndma "dma register" () h-coredma-registers f-sn6)
+(dnop sdmem "mem register" () h-coremem-registers f-sd6)
+(dnop snmem "mem register" () h-coremem-registers f-sn6)
+(dnop sdmesh "mesh register" () h-coremesh-registers f-sd6)
+(dnop snmesh "mesh register" () h-coremesh-registers f-sn6)
+
+ ; Immediate literals - but don't allow register names!
+(define-pmacro (dimmop nm cmt hwtype idx)
+ (define-operand (name nm) (comment cmt) (type hwtype) (index idx)
+ (attrs RELAX)
+ (handlers (parse "simm_not_reg")
+ (print "simm_not_reg")))
+ )
+
+(dimmop simm3 "signed 3-bit literal" h-sint f-sdisp3)
+(dimmop simm11 "signed 11-bit literal" h-sint f-sdisp11)
+(dnop disp3 "short data displacement" () h-uint f-disp3)
+(dnop trapnum6 "parameter for swi or trap" () h-uint f-trap-num)
+
+(define-pmacro (duimmop nm cmt hwtype idx)
+ (define-operand (name nm) (comment cmt) (type hwtype) (index idx)
+ (attrs)
+ (handlers (parse "uimm_not_reg")
+ (print "uimm_not_reg")))
+ )
+
+(duimmop swi_num "unsigned 6-bit swi#" h-uint f-trap-num)
+(duimmop disp11 "sign-magnitude data displacement" h-uint f-disp11)
+
+(dnop shift "immediate shift amount" () h-uint f-shift)
+
+(define-operand (name imm16) (comment "16-bit unsigned literal") (attrs RELAX)
+ (type h-addr) (index f-imm16) (handlers (parse "imm16")))
+(define-operand (name imm8) (comment "8-bit unsigned literal") (attrs RELAX)
+ (type h-addr) (index f-imm8) (handlers (parse "imm8")))
+
+(define-operand
+ (name direction)
+ (comment "+/- indexing")
+ (attrs)
+ (type h-uint)
+ (index f-addsubx)
+ (handlers (parse "postindex")
+ (print "postindex")))
+
+(define-operand
+ (name dpmi)
+ (comment "+/- magnitude immediate displacement")
+ (attrs)
+ (type h-uint)
+ (index f-subd)
+ (handlers (parse "postindex")
+ (print "postindex")))
+
+
+
+;; call exception macro - no check for imask
+(define-pmacro (call-exception vaddr bit-in-ilat)
+ (if (eq gidisablebit 0)
+ (if (eq (and (hcr-imask) bit-in-ilat) 0)
+ (sequence ()
+ (set kmbit 1)
+ (set gidisablebit 1)
+ (set (hcr-iret) (add pc (const 2)))
+ (set (hcr-ipend) (or (hcr-ipend) (const bit-in-ilat)))
+ (set pc (const vaddr))
+
+ )
+ ;; schedule interrupt
+ (set (hcr-ilat) (or (hcr-ilat) (const bit-in-ilat)))
+ )
+ )
+ )
+
+
+;; (lc 5);loop counter Not impemented
+;; (ls 6);loop start address Not impemented
+;; (le 7);loop end address Not impemented
+
+;;have callback to adjust pc in case od events ( HW loops ... )
+(define-pmacro (dni_wrapper isnid stdrdesc attr_ strassembl iopcode proceed null_b)
+ (begin
+ (dni isnid stdrdesc attr_ strassembl iopcode
+ (sequence () proceed
+ (sequence ((USI tmpPC))
+ ;;(set tmpPC (c-call USI "epiphany_post_isn_callback" pc))
+
+ (if (eq pc (hcr-le))
+ (set (hcr-lc) (sub (hcr-lc) #x1)))
+ (if (and
+ (eq pc (hcr-le))
+ (not (eq (hcr-lc) #x0)))
+ (set pc (hcr-ls)))
+ )
+ )
+ null_b)
+ )
+ )
+
+
+
+
+
+;; Some handy macros
+;;
+
+;; define instructions
+;; Short (16 bit forms) must appear first so that instruction
+;; selection can reject them and match long forms when registers
+;; or immediates exceed the values in the 16 bit instructions
+
+
+;; B<COND> SIMM8
+;; B<COND> SIMM24
+
+(define-pmacro (br-insn name cond g-op)
+ (begin
+ ; the 16-bit versions of branch
+ (dni (.sym "b" name "16")
+ (.str "Conditional Branch - 16 bit" name)
+ (COND-CTI SHORT-INSN)
+ (.str "b" name ".s $simm8")
+ (+ OP4_BRANCH16 (.sym "OPC_" cond) simm8)
+ (if (g-op)
+ (set pc simm8)
+ )
+ ()
+ )
+
+ (dnmi (.sym "b" name "16r") "relaxable conditional branch"
+ (COND-CTI RELAXABLE)
+ (.str "b" name " $simm8")
+ (emit (.sym "b" name "16") simm8)
+ )
+
+ (dni (.sym "b" name)
+ (.str "Conditional Branch " name)
+ (COND-CTI)
+ (.str "b" name ".l $simm24")
+ (+ OP4_BRANCH (.sym "OPC_" cond) simm24)
+ (if (g-op)
+ (set pc simm24)
+ )
+ ()
+ )
+
+ (dnmi (.sym "b" name "32r") "relaxable conditional branch"
+ (COND-CTI RELAXED)
+ (.str "b" name " $simm24")
+ (emit (.sym "b" name) simm24)
+ )
+ )
+ )
+
+
+ ; basic conditional branches for integer arithmetic
+(br-insn "eq" EQ (.pmacro () (eq zbit #x1)))
+(br-insn "ne" NE (.pmacro () (eq zbit #x0)))
+(br-insn "gtu" GTU (.pmacro () (and BI cbit (not BI zbit))))
+(br-insn "gteu" GTEU (.pmacro () (eq cbit #x1)))
+(br-insn "lteu" LTEU (.pmacro () (or BI (not BI cbit) zbit)))
+(br-insn "ltu" LTU (.pmacro () (eq cbit #x0)))
+(br-insn "gt" GT (.pmacro () (and BI (not BI zbit) (eq vbit nbit))))
+(br-insn "gte" GTE (.pmacro () (eq vbit nbit)))
+(br-insn "lt" LT (.pmacro () (xor BI vbit nbit)))
+(br-insn "lte" LTE (.pmacro () (or BI zbit (xor vbit nbit))))
+
+
+ ; floating point condition codes (floating point instructions)
+(br-insn "beq" BEQ (.pmacro () (or BI bzbit bzbit)))
+(br-insn "bne" BNE (.pmacro () (not BI bzbit)))
+(br-insn "blt" BLT (.pmacro () (and BI bnbit (not bzbit))))
+(br-insn "blte" BLTE (.pmacro () (or BI bnbit bzbit)))
+
+ ; unconditional branches
+(dni b16 "short unconditional branch" (UNCOND-CTI SHORT-INSN)
+ "b.s $simm8"
+ (+ OP4_BRANCH16 OPC_B simm8)
+ (set pc simm8)
+ ()
+ )
+
+(dnmi b16r "relaxable b16"
+ (UNCOND-CTI RELAXABLE)
+ "b $simm8"
+ (emit b16 simm8)
+ )
+
+(dni b "long unconditional branch" (UNCOND-CTI)
+ "b.l $simm24"
+ (+ OP4_BRANCH OPC_B simm24)
+ (set pc simm24)
+ ()
+ )
+
+(dnmi b32r "relaxable b"
+ (UNCOND-CTI RELAXED)
+ "b $simm24"
+ (emit b simm24))
+
+;; BL R,ADDR
+
+(dni bl16 "branch and link"
+ (UNCOND-CTI SHORT-INSN)
+ ("bl.s $simm8")
+ (+ OP4_BRANCH16 OPC_BL simm8)
+ (sequence ()
+ (set (reg h-registers 14) (add pc (const 2)))
+ (set pc simm8))
+ ()
+ )
+
+(dnmi bl16r "bl16 relaxable"
+ (UNCOND-CTI RELAXABLE)
+ "bl $simm8"
+ (emit bl16 simm8))
+
+(dni bl "branch and link"
+ (UNCOND-CTI)
+ ("bl.l $simm24")
+ (+ OP4_BRANCH OPC_BL simm24)
+ (sequence ()
+ (set (reg h-registers 14) (add pc (const 4)))
+ (set pc simm24))
+ ()
+ )
+
+(dnmi blr "bl relaxable"
+ (UNCOND-CTI RELAXED)
+ "bl $simm24"
+ (emit bl simm24))
+
+;; JUMP <RN>
+(dni jr16 "unconditional jump 16"
+ (UNCOND-CTI SHORT-INSN)
+ ("jr $rn")
+ (+ OP4_FLOW16 (f-opc-8-5 #x14) (f-dc-15-3 #x0) (f-dc-9-1 #x0) rn)
+ (set pc rn)
+ ()
+ )
+
+;; RTS / JR
+;; ??? Putting a constant into a multi-ifield does not work -
+;; the constant gets inserted in full into each part.
+ ;(dnmi rts "return from subroutine"
+ ; (UNCOND-CTI)
+ ; ("rts")
+ ; (emit jr (rn6 14)) ; jr lr / jr r14
+ ;)
+;; RTS / JR
+(dni rts "return from subroutine"
+ (ALIAS UNCOND-CTI)
+ ("rts")
+ (+ OP4_MISC (f-opc-8-5 #x14) (f-opc-19-4 #x2) (f-rn 6) (f-rn-x 1)
+ (f-dc-9-1 #x0)
+ (f-dc-15-3 #x0)
+ (f-dc-25-6 #x0)
+ (f-dc-31-3 #x0)
+ )
+ (set pc (reg h-registers 14))
+ ()
+ )
+
+(dni jr "unconditional jump"
+ (UNCOND-CTI)
+ ("jr $rn6")
+ (+ OP4_MISC (f-opc-8-5 #x14) (f-opc-19-4 #x2) rn6
+ (f-dc-9-1 #x0)
+ (f-dc-15-3 #x0)
+ (f-dc-25-6 #x0)
+ (f-dc-31-3 #x0)
+ )
+ (set pc rn6)
+ ()
+ )
+
+
+;; JALR <RN>
+(dni jalr16 "jump and link register"
+ (UNCOND-CTI SHORT-INSN)
+ ("jalr $rn")
+ (+ OP4_FLOW16 (f-opc-8-5 #x15) (f-dc-15-3 #x0) (f-dc-9-1 #x0) rn)
+ (sequence ()
+ (set (reg h-registers 14) (add pc (const 2)))
+ (set pc rn)
+ )
+ ()
+ )
+
+(dni jalr "jump and link register"
+ (UNCOND-CTI)
+ ("jalr $rn6")
+ (+ OP4_MISC
+ (f-opc-8-5 #x15)
+ (f-opc-19-4 #x2)
+ rn6
+ (f-dc-9-1 #x0)
+ (f-dc-15-3 #x0)
+ (f-dc-25-6 #x0)
+ (f-dc-31-3 #x0)
+
+ )
+ (sequence ()
+ (set (reg h-registers 14) (add pc (const 4)))
+ (set pc rn6))
+ ()
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ; Load/Store Memory Instructions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+(define-pmacro (callMisaligmentExceptionIfNeeded sel addr isAligmentAccess)
+ (sequence ((BI scale))
+ (set isAligmentAccess
+ (case BI sel
+ ((OPW_BYTE) (eq (and addr #x0) #x0))
+ ((OPW_SHORT) (eq (and addr #x1) #x0))
+ ((OPW_WORD) (eq (and addr #x3) #x0))
+ (else (eq (and addr #x7) #x0))))
+ (if (not BI isAligmentAccess)
+ (call-exception #x4 #x2))
+ )
+)
+
+
+
+;; helper to convert size selector OPW_<mode> into a literal scale factor
+(define-pmacro (ConvertSelectorToShift sel scale)
+ (set scale
+ (case SI sel
+ ((OPW_BYTE) (const 0))
+ ((OPW_SHORT) (const 1))
+ ((OPW_WORD) (const 2))
+ (else (const 3))))
+)
+
+;; common load macros from effective address, handling 8/16/32/64 bits
+(define-pmacro (load-double-from-ea regnum eff-addr mode sel)
+ (sequence ((SI loadaddr) (BI isAligmentAccess))
+ (set loadaddr eff-addr)
+ (callMisaligmentExceptionIfNeeded sel loadaddr isAligmentAccess)
+
+ (if (not (not BI isAligmentAccess))
+ (sequence ()
+ (set memaddr loadaddr)
+ (set regnum (mem SI loadaddr))
+ (set loadaddr (add loadaddr (const 4)))
+ (set memaddr loadaddr)
+ (set (reg h-registers
+ (add (index-of regnum)
+ (const 1)))
+ (mem SI loadaddr))
+
+ )
+ )
+ )
+ )
+
+(define-pmacro (load-from-ea regnum eff-addr mode sel)
+ (sequence ((BI isAligmentAccess))
+
+ (callMisaligmentExceptionIfNeeded sel eff-addr isAligmentAccess)
+ (if (not (not BI isAligmentAccess))
+ (sequence ()
+ (set memaddr eff-addr)
+ (set regnum (zext SI (mem mode eff-addr)))
+ )
+ )
+ )
+ ) ;; 8/16/32 bit cases
+
+
+;; common store to effective address, handling 8/16/32/64 bit data
+(define-pmacro (store-double-to-ea eff-addr regnum mode sel)
+ (sequence ((SI storeaddr) (BI isAligmentAccess))
+ (set storeaddr eff-addr)
+ (callMisaligmentExceptionIfNeeded sel storeaddr isAligmentAccess)
+ (if (not (not BI isAligmentAccess))
+ (sequence ()
+ (set memaddr storeaddr)
+ (set (mem SI storeaddr) regnum)
+ (set storeaddr (add storeaddr (const 4)))
+ (set memaddr storeaddr)
+ (set (mem SI storeaddr)
+ (reg h-registers (add (index-of regnum) (const 1))))
+ )
+ )
+ )
+ )
+
+(define-pmacro (store-to-ea eff-addr regnum mode sel)
+ (sequence ((BI isAligmentAccess))
+ (callMisaligmentExceptionIfNeeded sel eff-addr isAligmentAccess)
+ (if (not (not BI isAligmentAccess))
+ (sequence ()
+ (set memaddr eff-addr)
+ (set (mem mode eff-addr) regnum)
+ )
+ )
+ )
+ ) ;8/16/32 bit cases
+
+
+(define-pmacro (load-insn name mode sel sem-op)
+ (begin
+ (dni_wrapper (.sym name "x16.s")
+ (.str "load " mode " indexed")
+ (SHORT-INSN)
+ (.str name " $rd,[$rn,$rm]")
+ (+ OP4_LDSTR16X sel OP_LOAD rd rn rm)
+ (sequence ()
+ (sem-op rd (add rn rm) mode sel))
+ ()
+ )
+
+
+ (dni_wrapper (.sym name "p16.s")
+ (.str "load " mode " postmodify")
+ (SHORT-INSN)
+ (.str name " $rd,[$rn],$rm")
+ (+ OP4_LDSTR16P sel OP_LOAD rd rn rm)
+ (sequence ((SI tmprm))
+ (set tmprm rm)
+ (sem-op rd rn mode sel)
+ (set rn (add rn tmprm)))
+ ()
+ )
+
+
+ (dni_wrapper (.sym name "x.l")
+ (.str "load " mode " indexed")
+ ()
+ (.str name " $rd6,[$rn6,$direction$rm6]")
+ (+ OP4_LDSTRX sel OP_LOAD (f-opc-19-4 #x0) (f-dc-22-1 #x0) (f-dc-21-1 #x0) rd6 rn6 direction rm6)
+ (sequence ()
+ (if (ifield f-addsubx)
+ (sem-op rd6 (sub rn6 rm6) mode sel)
+ (sem-op rd6 (add rn6 rm6) mode sel)))
+ ()
+ )
+
+ (dnmi (.sym name "x")
+ (.str "load " mode " indexed")
+ ()
+ (.str name ".l $rd6,[$rn6,$direction$rm6]")
+ (emit (.sym name "x.l") rd6 rn6 direction rm6)
+ )
+
+
+
+ (dni_wrapper (.sym name "p.l")
+ (.str "load " mode " postmodify")
+ ()
+ (.str name " $rd6,[$rn6],$direction$rm6")
+ (+ OP4_LDSTRP sel OP_LOAD (f-opc-19-4 #x0) (f-dc-22-2 #x0) rd6 rn6 direction rm6)
+ (sequence ((SI tmprm))
+ (set tmprm rm6)
+ (sem-op rd6 rn6 mode sel)
+ (if (ifield f-addsubx)
+ (set rn6 (sub rn6 tmprm))
+ (set rn6 (add rn6 tmprm)))
+ )
+ ()
+ )
+
+
+ (dnmi (.sym name "p")
+ (.str "load " mode " postmodify")
+ ()
+ (.str name ".l $rd6,[$rn6],$direction$rm6")
+ (emit (.sym name "p.l") rd6 rn6 direction rm6)
+ )
+
+
+ ;;immediate modes last so reg forms found first.
+ (dni_wrapper (.sym name "d16.s")
+ (.str "load " mode " displacement")
+ (SHORT-INSN IMM3)
+ (.str name " $rd,[$rn,$disp3]")
+ (+ OP4_LDSTR16D sel OP_LOAD rd rn disp3) ;; convert size to 'B'
+ (sequence ((SI effa)
+ (SI scale))
+ (ConvertSelectorToShift sel scale)
+ (set effa (add rn (sll disp3 scale)))
+ (sem-op rd effa mode sel)
+ )
+ ()
+ )
+
+
+ (dni_wrapper (.sym name "d.l")
+ (.str "load " mode " displacement")
+ ()
+ (.str name " $rd6,[$rn6,$dpmi$disp11]")
+ (+ OP4_LDSTRD sel OP_LOAD PMOD_DISP rd6 rn6 dpmi disp11)
+ (sequence ((SI effa)
+ (SI scale))
+ (ConvertSelectorToShift sel scale)
+ (if dpmi
+ (set effa (sub rn6 (sll disp11 scale)))
+ (set effa (add rn6 (sll disp11 scale)))
+ )
+ (sem-op rd6 effa mode sel)
+ )
+ ()
+ )
+
+ (dnmi (.sym name "d")
+ (.str "load " mode " displacement")
+ ()
+ (.str name ".l $rd6,[$rn6,$dpmi$disp11]")
+ (emit (.sym name "d.l") rd6 rn6 dpmi disp11)
+ )
+
+
+
+ (dni_wrapper (.sym name "dpm.l")
+ (.str "load " mode " displacement post-modify")
+ ()
+ (.str name " $rd6,[$rn6],$dpmi$disp11")
+ (+ OP4_LDSTRD sel OP_LOAD PMOD_POST rd6 rn6 dpmi disp11)
+ (sequence ((SI scale))
+ (ConvertSelectorToShift sel scale)
+ (sem-op rd6 rn6 mode sel)
+ (if dpmi
+ (set rn6 (sub rn6 (sll disp11 scale)))
+ (set rn6 (add rn6 (sll disp11 scale)))
+ )
+ )
+ ()
+ )
+
+ (dnmi (.sym name "dpm")
+ (.str "load " mode " displacement post-modify")
+ ()
+ (.str name ".l $rd6,[$rn6],$dpmi$disp11")
+ (emit (.sym name "dpm.l") rd6 rn6 dpmi disp11)
+ )
+
+
+ ;; ;; macro form with a zero displacement
+ (dnmi (.sym name "ds0") "load with 0 disp"
+ (SHORT-INSN IMM3)
+ (.str name " $rd,[$rn]")
+ (emit (.sym name "d16.s") rd rn (disp3 0))
+ )
+ (dnmi (.sym name "dl0") "load with 0 disp"
+ ()
+ (.str name " $rd6,[$rn6]")
+ (emit (.sym name "d.l") rd6 rn6 (dpmi 0) (disp11 0))
+ )
+ (dnmi (.sym name "dl0.l") "load with 0 disp"
+ ()
+ (.str name ".l $rd6,[$rn6]")
+ (emit (.sym name "d.l") rd6 rn6 (dpmi 0) (disp11 0))
+ )
+
+
+ )
+ )
+
+(load-insn ldrb QI OPW_BYTE load-from-ea)
+(load-insn ldrh HI OPW_SHORT load-from-ea)
+(load-insn ldr SI OPW_WORD load-from-ea)
+(load-insn ldrd DI OPW_DOUBLE load-double-from-ea)
+
+
+
+
+;; TMP = MEM[RD+RM]; /* Copy content of memory to tmp. */
+;; if (~TMP) /* Check if memory location is zero. */
+;; MEM[RD+RM] = RD; /* If zero, write RD to memory. */
+;; RD = TMP; /* Always write tmp into RD (NOTE it's destructive). */
+
+
+(define-pmacro (testset-insn name mode sel)
+ (begin
+
+
+ (dni_wrapper (.sym name "t")
+ (.str "testset " mode " indexed")
+ ()
+ (.str name " $rd6,[$rn6,$direction$rm6]")
+ (+ OP4_LDSTRX sel OP_LOAD (f-opc-19-4 #x0) (f-dc-22-1 #x0) (f-dc-21-1 #x1)
+ rd6 rn6 direction rm6)
+ (sequence ((SI tmemaddr) (SI tmpValReg))
+
+ ;;back up register
+ (set tmpValReg rd6)
+
+ (if (ifield f-addsubx)
+ (set tmemaddr (sub rn6 rm6))
+ (set tmemaddr (add rn6 rm6))
+ )
+ ;;always update rd
+ (load-from-ea rd6 tmemaddr mode sel)
+ ;;if zero
+ (if rd6
+ (nop)
+ (set (mem mode tmemaddr) tmpValReg)
+ )
+
+ )
+ ()
+ )
+
+
+ (dnmi (.sym name "t.l")
+ (.str "testset " mode ".l indexed")
+ ()
+ (.str name ".l $rd6,[$rn6,$direction$rm6]")
+ (emit (.sym name "t") rd6 rn6 direction rm6)
+ )
+
+
+ )
+ )
+
+(testset-insn testsetb QI OPW_BYTE)
+(testset-insn testseth HI OPW_SHORT)
+(testset-insn testset SI OPW_WORD)
+;;no double mode support, since we have to send the src address, data
+;;(testset-insn testsetd DI OPW_DOUBLE load-double-from-ea)
+
+
+
+;; need 16 bit forms too
+(define-pmacro (store-insn name mode sel sem-op)
+ (begin
+ (dni_wrapper (.sym name "x16")
+ (.str "store" mode " indexed")
+ (SHORT-INSN)
+ (.str name " $rd,[$rn,$rm]")
+ (+ OP4_LDSTR16X sel OP_STORE rd rn rm)
+ (sequence ()
+ (sem-op (add rn rm) rd mode sel)
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym name "x")
+ (.str "store" mode " indexed")
+ ()
+ (.str name " $rd6,[$rn6,$direction$rm6]")
+ (+ OP4_LDSTRX sel OP_STORE (f-opc-19-4 #x0) (f-dc-22-1 #x0) (f-dc-21-1 #x0) rd6 rn6 direction rm6)
+ (sequence ()
+ (if (ifield f-addsubx)
+ (sem-op (sub rn6 rm6) rd6 mode sel)
+ (sem-op (add rn6 rm6) rd6 mode sel)
+ ))
+ ()
+ )
+
+ (dnmi (.sym name "x.l")
+ (.str "store" mode " indexed")
+ ()
+ (.str name ".l $rd6,[$rn6,$direction$rm6]")
+ (emit (.sym name "x") rd6 rn6 direction rm6)
+ )
+
+
+
+
+
+ (dni_wrapper (.sym name "p16")
+ (.str "store " mode " postmodify")
+ (SHORT-INSN)
+ (.str name " $rd,[$rn],$rm")
+ (+ OP4_LDSTR16P sel OP_STORE rd rn rm)
+ (sequence ()
+ (sem-op rn rd mode sel)
+ (set rn (add rn rm))
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym name "p")
+ (.str "store " mode " postmodify")
+ ()
+ (.str name " $rd6,[$rn6],$direction$rm6")
+ (+ OP4_LDSTRP sel OP_STORE (f-opc-19-4 #x0) (f-dc-22-2 #x0) rd6 rn6 direction rm6)
+ (sequence ()
+ (sem-op rn6 rd6 mode sel)
+ (if (ifield f-addsubx)
+ (set rn6 (sub rn6 rm6))
+ (set rn6 (add rn6 rm6)))
+ )
+ ()
+ )
+ (dnmi (.sym name "p.l")
+ (.str "store " mode " postmodify")
+ ()
+ (.str name ".l $rd6,[$rn6],$direction$rm6")
+ (emit (.sym name "p") rd6 rn6 direction rm6)
+ )
+
+ (dni_wrapper (.sym name "d16")
+ (.str "store " mode " displacement")
+ (SHORT-INSN IMM3)
+ (.str name " $rd,[$rn,$disp3]")
+ (+ OP4_LDSTR16D sel OP_STORE rd rn disp3) ;; convert size to 'B'
+ (sequence ((SI effa)
+ (SI scale))
+ (ConvertSelectorToShift sel scale)
+ (set effa (add rn (sll disp3 scale)))
+ (sem-op effa rd mode sel)
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym name "d")
+ (.str "store " mode " displacement")
+ ()
+ (.str name " $rd6,[$rn6,$dpmi$disp11]")
+ (+ OP4_LDSTRD sel OP_STORE PMOD_DISP rd6 rn6 dpmi disp11)
+ (sequence ((SI effa)
+ (SI scale))
+ (ConvertSelectorToShift sel scale)
+ (if dpmi
+ (set effa (sub rn6 (sll disp11 scale)))
+ (set effa (add rn6 (sll disp11 scale)))
+ )
+ (sem-op effa rd6 mode sel)
+ )
+ ()
+ )
+
+ (dnmi (.sym name "d.l")
+ (.str "store " mode " displacement")
+ ()
+ (.str name ".l $rd6,[$rn6,$dpmi$disp11]")
+ (emit (.sym name "d") rd6 rn6 dpmi disp11)
+ )
+
+
+ (dni_wrapper (.sym name "dpm")
+ (.str "store " mode " displacement post-modify")
+ ()
+ (.str name " $rd6,[$rn6],$dpmi$disp11")
+ (+ OP4_LDSTRD sel OP_STORE PMOD_POST rd6 rn6 dpmi disp11) ;; convert size to 'B'
+ (sequence ((SI scale))
+ (ConvertSelectorToShift sel scale)
+ (sem-op rn6 rd6 mode sel)
+ (if dpmi
+ (set rn6 (sub rn6 (sll disp11 scale)))
+ (set rn6 (add rn6 (sll disp11 scale)))
+ )
+ )
+ ()
+ )
+ (dnmi (.sym name "dpm.l")
+ (.str "store " mode " displacement post-modify")
+ ()
+ (.str name ".l $rd6,[$rn6],$dpmi$disp11")
+ (emit (.sym name "dpm") rd6 rn6 dpmi disp11)
+ )
+
+ ;; macro form with a zero displacement
+ (dnmi (.sym name "ds0") "store w 0 disp"
+ (SHORT-INSN IMM3)
+ (.str name " $rd,[$rn]")
+ (emit (.sym name "d16") rd rn (disp3 0))
+ )
+
+ (dnmi (.sym name "dl0") "store w 0 disp"
+ ()
+ (.str name " $rd6,[$rn6]")
+ (emit (.sym name "d") rd6 rn6 (dpmi 0) (disp11 0))
+ )
+
+ (dnmi (.sym name "dl0.l") "store w 0 disp"
+ ()
+ (.str name ".l $rd6,[$rn6]")
+ (emit (.sym name "d") rd6 rn6 (dpmi 0) (disp11 0))
+ )
+
+
+
+ )
+ )
+
+(store-insn strb QI OPW_BYTE store-to-ea)
+(store-insn strh HI OPW_SHORT store-to-ea)
+(store-insn str SI OPW_WORD store-to-ea)
+(store-insn strd DI OPW_DOUBLE store-double-to-ea)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; MOV<COND> RD,RN
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-pmacro (move-insns name cond g-op)
+ (begin
+ (dni_wrapper (.sym "cmov16" cond)
+ (.str "move register " cond)
+ (SHORT-INSN)
+ (.str "mov" name " $rd,$rn")
+ (+ OP4_FLOW16 (.sym "OPC_" cond) (f-opc-8-1 #x0) (f-dc-9-1 #x0) rd rn)
+ (if (g-op)
+ (set rd rn))
+ ()
+ )
+
+ (dni_wrapper (.sym "cmov" cond)
+ (.str "move register " cond)
+ ()
+ (.str "mov" name " $rd6,$rn6")
+ (+ OP4_MISC (.sym "OPC_" cond) (f-opc-8-1 #x0) (f-dc-9-1 #x0) (f-opc-19-4 #x2) (f-dc-25-6 #x0) rd6 rn6)
+ (if (g-op)
+ (set rd6 rn6))
+ ()
+ )
+ (dnmi (.sym "cmov.l" cond)
+ (.str "move register " cond)
+ ()
+ (.str "mov" name ".l $rd6,$rn6")
+ (emit (.sym "cmov" cond) rd6 rn6)
+ )
+
+
+
+ )
+ )
+
+ ; basic conditional moves
+(move-insns "eq" EQ (.pmacro () (eq zbit #x1)))
+(move-insns "ne" NE (.pmacro () (eq zbit #x0)))
+(move-insns "gtu" GTU (.pmacro () (and BI cbit (not BI zbit))))
+(move-insns "gteu" GTEU (.pmacro () (eq cbit #x1)))
+(move-insns "lteu" LTEU (.pmacro () (or BI (not BI cbit) zbit)))
+(move-insns "ltu" LTU (.pmacro () (eq cbit #x0)))
+(move-insns "gt" GT (.pmacro () (and BI (not BI zbit) (eq vbit nbit))))
+(move-insns "gte" GTE (.pmacro () (eq vbit nbit)))
+(move-insns "lt" LT (.pmacro () (xor BI vbit nbit)))
+(move-insns "lte" LTE (.pmacro () (or BI zbit (xor vbit nbit))))
+
+ ; unconditional move
+(move-insns "" B (.pmacro () #x1))
+
+
+ ; floating point condition codes (floating point instructions)
+(move-insns "beq" BEQ (.pmacro () (or BI bzbit bzbit)))
+(move-insns "bne" BNE (.pmacro () (not BI bzbit)))
+(move-insns "blt" BLT (.pmacro () (and BI bnbit (not bzbit))))
+(move-insns "blte" BLTE (.pmacro () (or BI bnbit bzbit)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; MOVTS RD,RN
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; 16 bits form exists for group zero ( M1 and M0 equals to zero ) only
+
+(dni_wrapper movts16
+ "move to special reg"
+ (SHORT-INSN)
+ "movts $sn,$rd"
+ (+ OP4_FLOW16 (f-opc-8-5 #x10) (f-dc-9-1 #x0) rd sn) ;; rd is source for movts
+ (set sn rd)
+ ()
+ )
+
+(define-pmacro (op-mmr-movts name sdreg code)
+ (begin
+
+ (dni_wrapper (.sym "movts" name)
+ (.str "move to " name)
+ ()
+ (.str "movts $" sdreg ",$rd6")
+ (+ OP4_MISC (f-dc-7-4 #x0) (f-opc-8-1 #x1) (f-dc-9-1 #x0) (f-opc-19-4 #x2) (f-dc-25-4 #x0) (f-dc-21-2 code) sdreg rd6);; rd is source for movts
+ (set sdreg rd6)
+ ()
+ )
+
+ (dnmi (.sym "movts.l" name)
+ (.str "move to " name)
+ ()
+ (.str "movts.l $" sdreg ",$rd6")
+ (emit (.sym "movts" name) sdreg rd6)
+ )
+
+
+
+
+ )
+ )
+
+(op-mmr-movts 6 sn6 #x0)
+(op-mmr-movts dma sndma #x1)
+(op-mmr-movts mem snmem #x2)
+(op-mmr-movts mesh snmesh #x3)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; MOVFS
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper movfs16
+ "move from special register"
+ (SHORT-INSN)
+ "movfs $rd,$sn"
+ (+ OP4_FLOW16 (f-opc-8-5 #x11) (f-dc-9-1 #x0) rd sn)
+ (set rd sn)
+ ()
+ )
+
+
+
+(define-pmacro (op-mmr-movfs name snreg code)
+ (begin
+
+ (dni_wrapper (.sym "movfs" name)
+ (.str "move from " name)
+ ()
+ (.str "movfs $rd6,$" snreg)
+ (+ OP4_MISC (f-dc-7-4 #x1) (f-opc-8-1 #x1) (f-dc-9-1 #x0) (f-opc-19-4 #x2) (f-dc-25-4 #x0) (f-dc-21-2 code) rd6 snreg)
+ (set rd6 snreg)
+ ()
+ )
+
+ (dnmi (.sym "movfs.l" name)
+ (.str "move from " name)
+ ()
+ (.str "movfs.l $rd6,$" snreg)
+ (emit (.sym "movfs" name) rd6 snreg)
+ )
+
+
+
+ )
+ )
+
+(op-mmr-movfs 6 sn6 #x0)
+(op-mmr-movfs dma sndma #x1)
+(op-mmr-movfs mem snmem #x2)
+(op-mmr-movfs mesh snmesh #x3)
+
+
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NOP 0x1a2
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper nop
+ "no-operation"
+ (SHORT-INSN)
+ "nop"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1a) (f-dc-15-7 #x0))
+ (nop)
+ ()
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; SNOP 0x3a2
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper snop
+ "no-operation"
+ (SHORT-INSN)
+ "snop"
+ (+ OP4_FLOW16 (f-opc-8-5 #x3a) (f-dc-15-7 #x0))
+ (nop)
+ ()
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; UNIMPL
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper unimpl
+ "not-implemented"
+ ()
+ "unimpl"
+ (+ (f-opc-31-32 #x000F000F))
+ (nop)
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; IDLE
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(dni idle "idle until interrupt" () "idle"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1b) (f-dc-15-7 #x0))
+ ;; (set pc pc) ;; should branch to self until interrupt, but not modeling interrupts
+ (sequence ()
+ (set caibit 0)
+ (c-code "sim_engine_halt (CPU_STATE (current_cpu), current_cpu, NULL, \
+ pc, sim_exited, 0);"))
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BKPT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(dni bkpt
+ "breakpoint"
+ (SHORT-INSN)
+ "bkpt"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1c) (f-dc-15-7 #x0))
+ (sequence ()
+ (c-call "epiphany_break" pc)
+ (set pc pc)
+ )
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; MBKPT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(dni mbkpt
+ "multicorebreakpoint"
+ (SHORT-INSN)
+ "mbkpt"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1c) (f-dc-15-7 #x1))
+ ;;;(c-call "epiphany_break" pc)
+ (nop) ;; ignore the multi core break point in the simulator
+ ()
+ )
+
+;;;;;;;;;;;;;;;;
+;; RTI
+;;;;;;;;;;;;;;;;
+
+(dni rti "return from interrupt" (SHORT-INSN UNCOND-CTI)
+ "rti"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1d) (f-dc-15-7 #x0))
+ (sequence ()
+ ;; (set (hcr-ipend)
+ ;; (xor (hcr-ipend)
+ ;; (sll (const 1)
+ ;; (sub (c-raw-call SI "ffs" (and (hcr-ipend) (not (hcr-imask))))
+ ;; (const 1)))))
+
+ (set (hcr-ipend)
+ (c-call SI "epiphany_rti" (hcr-ipend) (hcr-imask)))
+ (set gidisablebit 0)
+ (set kmbit 0)
+ ;(set caibit 1)
+ (set pc (hcr-iret)))
+ ()
+ )
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; WAND is a wired flag that runs around the chip
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper wand "wand"
+ (SHORT-INSN)
+ "wand"
+ (+ OP4_FLOW16 (f-opc-8-5 #x18) (f-dc-15-7 #x0))
+ (set sflagbit 1)
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Sync likes wand, but wired OR
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper sync "sync"
+ (SHORT-INSN)
+ "sync"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1f) (f-dc-15-7 #x0))
+ (nop);;TODO
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; GIE
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper gien "global interrupt enable"
+ (SHORT-INSN)
+ "gie"
+ (+ OP4_FLOW16 (f-gien-gidis-9-1 #x0) (f-opc-8-5 #x19) (f-dc-15-6 #x0))
+ (set gidisablebit 0)
+ ()
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; GIDIS
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(dni_wrapper gidis "global interrupt disable"
+ (SHORT-INSN)
+ "gid"
+ (+ OP4_FLOW16 (f-gien-gidis-9-1 #x1) (f-opc-8-5 #x19) (f-dc-15-6 #x0))
+ (set gidisablebit 1)
+ ()
+ )
+
+
+
+;;;;;;;;;;;;;;;;
+;; SWI
+;;;;;;;;;;;;;;;;
+
+;; Model only immediate 'fire' exception, if gien cleared or masked don't fire and don't check later - no ilat like behavior
+(dni swi_num "software interrupt" (SHORT-INSN UNCOND-CTI)
+ "swi $swi_num"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1e) (f-trap-swi-9-1 #x0) swi_num)
+ (sequence () (call-exception #x24 #x80))
+ ;; (if (eq gie 1)
+ ;; (sequence ()
+ ;; (set kmbit 1)
+ ;; (set gie 0)
+ ;; (set (hcr-iret) (add pc (const 2)))
+ ;; (set (hcr-ipend) (or (hcr-ipend) (const #x80)))
+ ;; (set pc (const #x1c))
+
+ ;; )
+ ;; ;; schedule interrupt
+ ;; (set (hcr-ilat) (or (hcr-ilat) (const #x80)))
+ ;; )
+ ()
+ )
+(dni swi "software interrupt" (ALIAS SHORT-INSN UNCOND-CTI)
+ "swi"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1e) (f-trap-swi-9-1 #x0) (f-dc-15-6 #x0))
+ (sequence () (call-exception #x24 #x80))
+ ()
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; TRAP #disp3 - simulator only and chip as well - make the same grouop as swi
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Only defining 16-bit form of this instruction. It exists to support the
+;; simulator, by giving us a simple input/output mechanism beyond returning values
+;; in registers or memory.
+;; TRAP #N - special sw trap for simulator support; allows simple i/o using fixed arguments
+;; TRAP #0 - write (r0=i/o channel, r1=addr, r2=len) returns status in r0
+;; TRAP #1 - read (r0=i/o channel, r1=addr, r2=len) returns length or -<code> on error
+;; TRAP #2 - open (r0=string path, r1=mode) returns channel# or -<code> on error
+;; TRAP #3 - exit (r0=status code) never returns.
+;; TRAP #4 - print "pass\n" and exit
+;; TRAP #5 - print "fail\n" and exit
+;; TRAP #6 - close (r0=i/o channel)
+
+(dni trap16 "trap to simulator"
+ (SHORT-INSN UNCOND-CTI)
+ "trap $trapnum6"
+ (+ OP4_FLOW16 (f-opc-8-5 #x1e) (f-trap-swi-9-1 #x1) trapnum6) ;; (+ OP4_IMM16 OPI_TRAP (f-rd 0) (f-rn 0) disp3)
+ (set (reg SI h-registers 0) (c-call SI "epiphany_trap" pc trapnum6))
+ ()
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Integer arithmetic instructions 3 address forms
+;; both 16 and 32 bit forms
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-pmacro (op-rrr name sem-op cond-op)
+ (begin
+ (dni_wrapper (.sym name "16")
+ (.str name)
+ (SHORT-INSN)
+ (.str name " $rd,$rn,$rm")
+ (+ OP4_ALU16 (.sym "OPB_" (.upcase (.str name))) rd rn rm)
+ (sequence ()
+ (cond-op rn rm)
+ (set rd (sem-op SI rn rm))
+ (set zbit (zflag rd))
+ (set nbit (nflag rd))
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym name)
+ (.str name)
+ ()
+ (.str name " $rd6,$rn6,$rm6")
+ (+ OP4_MISC (.sym "OPB_" (.upcase (.str name))) (f-opc-19-4 #xa) (f-dc-22-3 #x0) rd6 rn6 rm6)
+ (sequence ()
+ (cond-op rn6 rm6)
+ (set rd6 (sem-op SI rn6 rm6))
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ )
+ ()
+ )
+
+ (dnmi (.sym name ".l")
+ (.str name)
+ ()
+ (.str name ".l $rd6,$rn6,$rm6")
+ (emit (.sym name) rd6 rn6 rm6)
+ )
+
+
+
+ )
+ )
+
+;; submacros to set condition codes
+;; NZ are always set to reflect the sign and value of the result
+;; CV are a function of the operator
+(define-pmacro (add-vc a b) (sequence ()
+ (set cbit (add-cflag SI a b 0))
+ (set vbit (add-oflag SI a b 0))
+ (set vsbit (or BI vsbit vbit))
+ ))
+
+(define-pmacro (sub-vc a b) (sequence ()
+ (set cbit (not (sub-cflag SI a b 0)))
+ (set vbit (sub-oflag SI a b 0))
+ (set vsbit (or vsbit vbit))
+ ))
+
+(define-pmacro (logic-vc a b) (sequence ()
+ (set cbit 0)
+ (set vbit 0)
+ ))
+
+(op-rrr add add add-vc)
+(op-rrr sub sub sub-vc)
+(op-rrr and and logic-vc)
+(op-rrr orr or logic-vc)
+(op-rrr eor xor logic-vc)
+
+;; Integer arithmetic immediate forms
+
+(define-pmacro (op-rri name code cond-op)
+ (begin
+ (dni_wrapper (.sym name "i16")
+ (.str name)
+ (SHORT-INSN IMM3)
+ (.str name ".s $rd,$rn,$simm3")
+ (+ OP4_IMM16 code rd rn simm3)
+ (sequence ()
+ (cond-op rn simm3)
+ (set rd (name SI rn simm3))
+ (set zbit (zflag rd))
+ (set nbit (nflag rd))
+ )
+ ()
+ )
+
+
+ (dni_wrapper (.sym name "i")
+ (.str name)
+ ()
+ (.str name ".l $rd6,$rn6,$simm11")
+ (+ OP4_IMM32 code OPI_25_2_MBZ rd6 rn6 simm11)
+ (sequence ()
+ (cond-op rn6 simm11)
+ (set rd6 (name SI rn6 simm11))
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ )
+ ()
+ )
+
+ ;; (dnmi (.sym name "ri") "relaxed arithmetic immediate" (RELAXED)
+ ;; (.str name " $rd6,$rn6,$simm11")
+ ;; (emit (.sym name "i") rd6 rn6 simm11))
+ )
+ )
+
+(op-rri add OPI_ADD add-vc)
+(op-rri sub OPI_SUB sub-vc)
+
+(dnmi addir "relaxable short immediate add" (RELAXABLE IMM3)
+ "add $rd,$rn,$simm3"
+ (emit addi16 rd rn simm3))
+
+(dnmi addi32r "relaxed long immediate add" (RELAXED)
+ "add $rd6,$rn6,$simm11"
+ (emit addi rd6 rn6 simm11))
+
+;; Again, but not relaxable so that full sized registers are handled
+(dnmi addi32m "relaxed long immediate add" ()
+ "add $rd6,$rn6,$simm11"
+ (emit addi rd6 rn6 simm11))
+
+
+(dnmi subir "relaxable short immediate sub" (RELAXABLE IMM3)
+ "sub $rd,$rn,$simm3"
+ (emit subi16 rd rn simm3))
+
+(dnmi subi32r "relaxed long immediate sub" (RELAXED)
+ "sub $rd6,$rn6,$simm11"
+ (emit subi rd6 rn6 simm11))
+
+(dnmi subi32m "relaxed long immediate sub" ()
+ "sub $rd6,$rn6,$simm11"
+ (emit subi rd6 rn6 simm11))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Shift instructions 3 address forms
+;; both 16 and 32 bit forms
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-pmacro (shift-rrr name sem-op)
+ (begin
+ (dni_wrapper (.sym name "16")
+ (.str name)
+ (SHORT-INSN)
+ (.str name " $rd,$rn,$rm")
+ (+ OP4_ALU16 (.sym "OPB_" (.upcase (.str name))) rd rn rm)
+ (sequence ()
+ (logic-vc rn rm)
+ (set rd (sem-op SI rn (and rm (const 31))))
+ (set zbit (zflag rd))
+ (set nbit (nflag rd))
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym name)
+ (.str name)
+ ()
+ (.str name " $rd6,$rn6,$rm6")
+ (+ OP4_MISC (.sym "OPB_" (.upcase (.str name))) (f-opc-19-4 #xa) (f-dc-22-3 #x0) rd6 rn6 rm6)
+ (sequence ()
+ (logic-vc rn6 rm6)
+ (set rd6 (sem-op SI rn6 (and rm6 (const 31))))
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ )
+ ()
+ )
+
+ (dnmi (.sym name ".l")
+ (.str name)
+ ()
+ (.str name ".l $rd6,$rn6,$rm6")
+ (emit (.sym name) rd6 rn6 rm6)
+ )
+ )
+ )
+
+(shift-rrr asr sra)
+(shift-rrr lsr srl)
+(shift-rrr lsl sll)
+
+(define-pmacro (op-shift-rri name shortcode f5 longcode sem-op)
+ (begin
+ (dni_wrapper (.sym name "i16")
+ (.str name)
+ (SHORT-INSN)
+ (.str name " $rd,$rn,$shift")
+ (+ shortcode (f-opc-4-1 f5) rd rn shift)
+ (sequence ()
+ (logic-vc rn shift)
+ (set rd (sem-op SI rn shift))
+ (set zbit (zflag rd))
+ (set nbit (nflag rd))
+ )
+ ()
+ )
+ (dni_wrapper (.sym name "i32")
+ (.str name)
+ ()
+ (.str name " $rd6,$rn6,$shift")
+ (+ OP4_MISC (f-opc-4-1 f5) (f-opc-19-4 longcode) (f-dc-25-6 0) rd6 rn6 shift)
+ (sequence ()
+ (logic-vc rn6 shift)
+ (set rd6 (sem-op SI rn6 shift))
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ )
+ ()
+ )
+
+ (dnmi (.sym name "i32.l")
+ (.str name)
+ ()
+ (.str name ".l $rd6,$rn6,$shift")
+ (emit (.sym name "i32") rd6 rn6 shift)
+ )
+
+
+ )
+ )
+
+(op-shift-rri lsr OP4_LSHIFT16 0 #x6 srl)
+(op-shift-rri lsl OP4_LSHIFT16 1 #x6 sll)
+(op-shift-rri asr OP4_ASHIFT16 0 #xe sra)
+
+;; BITR - bitreversal (FFT)
+;;
+;; From Dr Dobbs et al.
+;;
+;; unsigned int v;
+;; v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1); ;; swap odd-even bits
+;; v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2); ;; swap pairs
+;; v = ((v >> 4) & 0x0f0f0f0f) | ((v & 0x0f0f0f0f) << 4); ;; swap nibbles
+;; v = ((v >> 8) & 0x00ff00ff) | ((v & 0x00ff00ff) << 8); ;; swap bytes
+;; v = (v >> 16) | (v << 16); ;; swap halves
+(define-pmacro (bit-reversal dest src)
+ (sequence ((SI v))
+ (set v src)
+ (set v (or (and (srl v 1) #x55555555) (sll (and v #x55555555) 1)))
+ (set v (or (and (srl v 2) #x33333333) (sll (and v #x33333333) 2)))
+ (set v (or (and (srl v 4) #x0f0f0f0f) (sll (and v #x0f0f0f0f) 4)))
+ (set v (or (and (srl v 8) #x00ff00ff) (sll (and v #x00ff00ff) 8)))
+ (set v (or (srl v 16) (sll v 16)))
+ (set dest v)
+ ))
+
+(dni_wrapper bitr16 "bit reverse short"
+ (SHORT-INSN)
+ ("bitr $rd,$rn")
+ (+ OP4_ASHIFT16 (f-opc-4-1 1) rd rn (f-shift 0))
+ (sequence ()
+ (bit-reversal rd rn)
+ (set zbit (zflag rd))
+ (set nbit (nflag rd))
+ (set cbit 0)
+ (set vbit 0)
+ )
+ ()
+ )
+
+(dni_wrapper bitr "bit reverse"
+ ()
+ ("bitr $rd6,$rn6")
+ (+ OP4_MISC (f-opc-4-1 1) (f-opc-19-4 #xe) (f-dc-25-6 0) rd6 rn6 (f-shift 0))
+ (sequence ()
+ (bit-reversal rd6 rn6)
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ (set cbit 0)
+ (set vbit 0)
+ )
+ ()
+ )
+(dnmi bitrl "bit reverse l"
+ ()
+ ("bitr.l $rd6,$rn6")
+ (emit bitr rd6 rn6)
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Integer arithmetic instructions
+;; Extended operation
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-pmacro (op-iextrrr name cond-op)
+ (begin
+
+ (dni_wrapper (.sym name)
+ (.str name)
+ ()
+ (.str name " $rd6,$rn6,$rm6")
+ (+ OP4_MISC (.sym "OPBE_" (.upcase (.str name))) (f-opc-19-4 #xa) (f-dc-22-2 #x0) (f-dc-20-1 #x1)
+ rd6 rn6 rm6)
+ (sequence ()
+ ;; TODO cond operation (cond-op rn6 rm6)
+ ;;(set rd6 (sem-op SI rn6 rm6))
+ (set zbit (zflag rd6))
+ (set nbit (nflag rd6))
+ )
+ ()
+ )
+
+ (dnmi (.sym name ".l")
+ (.str name)
+ ()
+ (.str name ".l $rd6,$rn6,$rm6")
+ (emit (.sym name) rd6 rn6 rm6)
+ )
+ )
+ )
+
+(op-iextrrr fext sub-vc)
+(op-iextrrr fdep sub-vc)
+(op-iextrrr lfsr sub-vc)
+
+
+
+;; Immediate moves. The 8 bit form is relaxed if it doesn't fit or is external
+;; Move RD,#IMM
+(dni_wrapper mov8
+ "mov imm8"
+ (SHORT-INSN)
+ "mov.b $rd,$imm8"
+ (+ OP4_IMM16 (f-opc-4-1 #x0) rd imm8)
+ (set rd (zext SI imm8))
+ ()
+ )
+
+(dnmi mov8r "mov imm8 relaxable"
+ (RELAXABLE)
+ "mov $rd,$imm8"
+ (emit mov8 rd imm8))
+
+(dni_wrapper mov16
+ "mov imm16"
+ ()
+ "mov.l $rd6,$imm16"
+ (+ OP4_IMM32 (f-opc-4-1 #x0) (f-opc-19-4 #x2) (f-dc-28-1 #x0) rd6 imm16)
+ (set rd6 (zext SI imm16))
+ ()
+ )
+
+(dnmi mov16r "mov imm16 relaxable"
+ ()
+ "mov $rd6,$imm16"
+ (emit mov16 rd6 imm16))
+
+;; MOVE TO HIGH WORD
+(dni_wrapper movt
+ "movt imm16"
+ ()
+ "movt $rd6,$imm16"
+ (+ OP4_IMM32 (f-opc-4-1 #x0) (f-opc-19-4 #x2) (f-dc-28-1 #x1) rd6 imm16)
+ (set rd6 (or (and SI rd6 (const #xffff)) ; keep low bits of rd
+ (sll SI imm16 (const 16)))) ; replacing just high bits
+ ()
+ )
+(dnmi movtl
+ "movt imm16"
+ ()
+ "movt.l $rd6,$imm16"
+ (emit movt rd6 imm16)
+ )
+
+
+
+;; FLOATING POINT OPERATIONS
+;; TWO operands
+(define-pmacro (op-two_operands-float name code)
+ (begin
+ (dni_wrapper
+ (.sym "f_" name "f16")
+ (.str "f_" name)
+ (SHORT-INSN)
+ (.str "f" name " $rd,$rn,$rm")
+ (+ OP4_DSP16 code rd rn rm)
+ (sequence ()
+ (if
+ (eq arithmetic-modebit2 0)
+ (sequence ((SF fptemp) (SI sdtmp))
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd rn rm))
+
+ ;;All bits are calculated in C
+ (set bzbit (c-call BI "get_epiphany_fzeroflag" sdtmp))
+ (set bnbit (c-call BI "get_epiphany_fnegativeflag" sdtmp))
+ (set bvbit (c-call BI "get_epiphany_foverflowflag" sdtmp))
+ (set bubit (c-call BI "get_epiphany_funderflowflag" sdtmp))
+ (set bibit (c-call BI "get_epiphany_finvalidflag" sdtmp))
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+ (set rd sdtmp)
+ (if (or (and invExcEnbit bisbit)
+ (or (and ovfExcEnbit bvsbit) (and unExcEnbit busbit)))
+ (sequence ()
+ (set expcause0bit (const 1))
+ (set expcause1bit (const 1))
+ (call-exception #x4 #x2)))
+ ))
+ (if (eq arithmetic-modebit2 1)
+ (sequence ((SI sdtmp))
+ (set sdtmp (c-call SI (.str "epiphany_i" name) rd rn rm))
+ ;; carry is not connected inb the design (set bcbit bcbit)
+ (set bzbit (zflag sdtmp))
+ (set bnbit (nflag sdtmp))
+ (set rd sdtmp)))
+ )
+
+ ()
+ )
+ (dnmi (.sym "i_" name "f16")
+ (.str "i_" name)
+ (SHORT-INSN NO-DIS)
+ (.str "i" name " $rd,$rn,$rm")
+ (emit (.sym "f_" name "f16") rd rn rm)
+ )
+
+
+ (dni_wrapper
+ (.sym "f_" name "f32")
+ (.str "f_" name)
+ ()
+ (.str "f" name " $rd6,$rn6,$rm6")
+ (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-3 #x0) rd6 rn6 rm6)
+ (sequence ()
+ (if
+ (eq arithmetic-modebit2 0)
+ (sequence ((SF fptemp) (SI sdtmp))
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd6 rn6 rm6))
+
+ ;;All bits are calculated in C
+ (set bzbit (c-call BI "get_epiphany_fzeroflag" sdtmp))
+ (set bnbit (c-call BI "get_epiphany_fnegativeflag" sdtmp))
+ (set bvbit (c-call BI "get_epiphany_foverflowflag" sdtmp))
+ (set bubit (c-call BI "get_epiphany_funderflowflag" sdtmp))
+ (set bibit (c-call BI "get_epiphany_finvalidflag" sdtmp))
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd6 sdtmp)
+
+ (if (or (and invExcEnbit bisbit)
+ (or (and ovfExcEnbit bvsbit) (and unExcEnbit busbit)))
+ (sequence ()
+ (set expcause0bit (const 1))
+ (set expcause1bit (const 1))
+ (call-exception #x4 #x2)))
+ )
+ )
+ (if (eq arithmetic-modebit2 1)
+ (sequence ((SI sdtmp))
+ (set sdtmp (c-call SI (.str "epiphany_i" name) rd6 rn6 rm6))
+ ;; carry is not connected inb the design (set bcbit bcbit)
+ (set bzbit (zflag sdtmp))
+ (set bnbit (nflag sdtmp))
+ (set rd6 sdtmp)
+ )
+ )
+ )
+ ()
+ )
+
+ (dnmi (.sym "f_" name "f32.l")
+ (.str "f_" name)
+ ()
+ (.str "f" name ".l $rd6,$rn6,$rm6")
+ (emit (.sym "f_" name "f32") rd6 rn6 rm6)
+ )
+ (dnmi (.sym "i_" name "f32")
+ (.str "i_" name)
+ (NO-DIS)
+ (.str "i" name " $rd6,$rn6,$rm6")
+ (emit (.sym "f_" name "f32") rd6 rn6 rm6)
+ )
+ (dnmi (.sym "i_" name "f32.l")
+ (.str "i_" name)
+ (NO-DIS)
+ (.str "i" name ".l $rd6,$rn6,$rm6")
+ (emit (.sym "f_" name "f32") rd6 rn6 rm6)
+ )
+
+
+
+ )
+ )
+
+(op-two_operands-float add OPF_ADD)
+(op-two_operands-float sub OPF_SUB)
+(op-two_operands-float mul OPF_MUL)
+(op-two_operands-float madd OPF_MADD)
+(op-two_operands-float msub OPF_MSUB)
+
+;; ONE operands
+;; FABS
+(define-pmacro (op-fabs-float name code)
+ (begin
+ (dni_wrapper (.sym "f_" name "f16")
+ (.str "f_" name)
+ (SHORT-INSN)
+ (.str "f" name " rd,rn")
+ (+ OP4_DSP16 code rd rn rn)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+ ;(set sdtmp (and rn #x7fffffff))
+ (set sdtmp (c-call SI (.str "epiphany_fabs") rd rn rn))
+
+
+ (set bnbit (const SI 0))
+ (set bzbit (eq SI sdtmp (const SI 0)))
+
+ ;;TODO subnormal ??
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd sdtmp)
+ )
+ ()
+ )
+
+ (dni_wrapper (.sym "f_" name "f32")
+ (.str "f_" name)
+ ()
+ (.str "f" name " $rd6,$rn6")
+ (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-3 #x0) rd6 rn6 rn6)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+
+ ;(set sdtmp (and rn6 #x7fffffff))
+
+ (set sdtmp (c-call SI (.str "epiphany_fabs") rd6 rn6 rn6))
+
+
+ (set bnbit (const SI 0))
+ (set bzbit (eq SI sdtmp (const SI 0)))
+
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd6 sdtmp)
+
+ )
+ ()
+ )
+
+ (dnmi (.sym "f_" name "f32.l")
+ (.str "f_" name)
+ ()
+ (.str "f" name ".l $rd6,$rn6")
+ (emit (.sym "f_" name "f32") rd6 rn6)
+ )
+
+
+ )
+ )
+
+(op-fabs-float abs OPF_FABS)
+
+
+(define-pmacro (op-fix2float-float name code)
+ (begin
+ (dni_wrapper (.sym "f_" name "f16")
+ (.str "f_" name)
+ (SHORT-INSN)
+ (.str "f" name " $rd,$rn")
+ (+ OP4_DSP16 code frd frn frn)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd rn rn))
+
+ (set bnbit (lt SI sdtmp (const SI 0)))
+ (set bzbit (eq SI sdtmp (const SI 0)))
+
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd sdtmp)
+ )
+ ()
+ )
+
+
+ (dni_wrapper (.sym "f_" name "f32")
+ (.str "f_" name)
+ ()
+ (.str "f" name " $rd6,$rn6")
+ (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-3 #x0) rd6 rn6 rn6)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd6 rn6 rn6))
+
+ (set bnbit (lt SI sdtmp (const SI 0)))
+ (set bzbit (eq SI sdtmp (const SI 0)))
+
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd6 sdtmp)
+
+ )
+ ()
+ )
+
+ (dnmi (.sym "f_" name "f32.l")
+ (.str "f_" name)
+ ()
+ (.str "f" name ".l $rd6,$rn6")
+ (emit (.sym "f_" name "f32") rd6 rn6)
+ )
+ )
+ )
+
+(op-fix2float-float loat OPF_FLOAT)
+
+(define-pmacro (op-float2fix-float name code)
+ (begin
+ (dni_wrapper (.sym "f_" name "f16")
+ (.str "f_" name)
+ (SHORT-INSN)
+ (.str "f" name " $rd,$rn")
+ (+ OP4_DSP16 code rd rn rn)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd rn rn))
+
+ (set bzbit (zflag sdtmp))
+ (set bnbit (nflag sdtmp))
+
+ (set bvbit (c-call BI "get_epiphany_foverflowflag" sdtmp))
+ (set bubit (c-call BI "get_epiphany_funderflowflag" sdtmp))
+ (set bibit (c-call BI "get_epiphany_finvalidflag" sdtmp))
+
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd6 sdtmp)
+
+ (if (or (and invExcEnbit bisbit)
+ (or (and ovfExcEnbit busbit)
+ (and unExcEnbit bvsbit)))
+ (sequence ()
+ (set expcause0bit (const 1))
+ (set expcause1bit (const 1))
+ (call-exception #x4 #x2)))
+ (set rd sdtmp)
+ )
+ ()
+ )
+
+
+
+ (dni_wrapper (.sym "f_" name "f32")
+ (.str "f_" name)
+ ()
+ (.str "f" name " $rd6,$rn6")
+ (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-3 #x0) rd6 rn6 rn6)
+ (sequence ((SF fptemp) (SI sdtmp))
+
+ (set sdtmp (c-call SI (.str "epiphany_f" name) rd6 rn6 rm6))
+
+ (set bzbit (zflag sdtmp))
+ (set bnbit (nflag sdtmp))
+
+ (set bvbit (c-call BI "get_epiphany_foverflowflag" sdtmp))
+ (set bubit (c-call BI "get_epiphany_funderflowflag" sdtmp))
+ (set bibit (c-call BI "get_epiphany_finvalidflag" sdtmp))
+
+ (set bvsbit (or bvsbit bvbit))
+ (set busbit (or busbit bubit))
+ (set bisbit (or bisbit bibit))
+
+ (set rd6 sdtmp)
+
+ (if (or (and invExcEnbit bisbit)
+ (or (and ovfExcEnbit busbit)
+ (and unExcEnbit bvsbit)))
+ (sequence ()
+ (set expcause0bit (const 1))
+ (set expcause1bit (const 1))
+ (call-exception #x4 #x2))
+ )
+
+ )
+ ()
+ )
+
+ (dnmi (.sym "f_" name "f32.l")
+ (.str "f_" name)
+ ()
+ (.str "f" name ".l $rd6,$rn6")
+ (emit (.sym "f_" name "f32") rd6 rn6)
+ )
+
+
+ )
+ )
+
+
+
+
+
+(op-float2fix-float ix OPF_FIX)
+
+;; MAC (Multiply and Accumulate Instructions
+;; (define-pmacro (op-mac-float name code)
+;; (begin
+;; (dni_wrapper (.sym "fm" name "f16")
+;; (.str "fm" name)
+;; (SHORT-INSN)
+;; (.str "fm" name " $frd,$frn,$frm")
+;; (+ OP4_DSP16 code frd frn frm)
+;; (sequence ((SF fptemp))
+;; (set bvbit 0)
+;; (set busbit 0)
+;; (set fptemp (c-call SF (.str "epiphany_fm" name) frd frm frn))
+;; (set bnbit (lt SF fptemp (const SF 0)))
+;; (set bzbit (eq SF fptemp (const SF 0)))
+;; (set bvsbit (or bvsbit bvbit))
+;; (set frd fptemp)
+;; ; (set rd (subword SI frd 0))
+;; )
+;; ()
+;; )
+
+;; (dni_wrapper (.sym "fm" name "f32")
+;; (.str "fm" name)
+;; ()
+;; (.str "fm" name " $frd6,$frn6,$frm6")
+;; (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-3 #x0) frd6 frn6 frm6)
+;; (sequence ((SF fptemp))
+;; (set bvbit 0)
+;; (set busbit 0)
+;; (set fptemp (c-call SF (.str "epiphany_fm" name) frd6 frm6 frn6))
+;; (set bnbit (lt SF fptemp (const SF 0)))
+;; (set bzbit (eq SF fptemp (const SF 0)))
+;; (set bvsbit (or bvsbit bvbit))
+;; (set frd6 fptemp)
+;; ; (set rd6 (subword SI frd6 0))
+;; )
+;; ()
+;; )
+;; )
+;; )
+
+
+
+
+
+
+
+ ; extended floating point operation
+
+
+(define-pmacro (op-fextop-float name code)
+ (begin
+
+ (dni_wrapper (.sym "f_" name "f32")
+ (.str "f_" name)
+ ()
+ (.str "f" name " $frd6,$frn6")
+ (+ OP4_MISC code (f-opc-19-4 #x7) (f-dc-22-2 #x0) (f-dc-20-1 #x1) frd6 frn6 frn6)
+ (sequence ((SF fptemp))
+ (set bvbit 0)
+ (set busbit 0)
+ (set fptemp (c-call SF (.str "epiphany_f" name) frn6))
+ (set bnbit (lt SF fptemp (const SF 0)))
+ (set bzbit (eq SF fptemp (const SF 0)))
+ (set bvsbit (or bvsbit bvbit))
+ (set frd6 fptemp)
+
+ )
+ ()
+ )
+
+
+ (dnmi (.sym "f_" name "f32.l")
+ (.str "f_" name)
+ ()
+ (.str "f" name ".l $frd6,$frn6")
+ (emit (.sym "f_" name "f32") frd6 frn6)
+ )
+ )
+ )
+
+(op-fextop-float recip OPF_FRECIP)
+(op-fextop-float sqrt OPF_FSQRT)
+
+
+
+
+
diff --git a/cpu/epiphany.opc b/cpu/epiphany.opc
new file mode 100755
index 0000000000..22e2f7635f
--- /dev/null
+++ b/cpu/epiphany.opc
@@ -0,0 +1,416 @@
+/* Adapteva epiphany opcode support. -*- C -*-
+
+ Copyright 2011 Free Software Foundation, Inc.
+
+ Contributed by Embecosm on behalf of Adapteva, Inc.
+
+ This file is part of the GNU Binutils and of GDB.
+
+ 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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+/*
+ Each section is delimited with start and end markers.
+
+ <arch>-opc.h additions use: "-- opc.h"
+ <arch>-opc.c additions use: "-- opc.c"
+ <arch>-asm.c additions use: "-- asm.c"
+ <arch>-dis.c additions use: "-- dis.c"
+ <arch>-ibd.h additions use: "-- ibd.h". */
+
+/* -- opc.h */
+
+/* enumerate relaxation types for gas. */
+typedef enum epiphany_relax_types
+{
+ EPIPHANY_RELAX_NONE=0,
+ EPIPHANY_RELAX_NEED_RELAXING,
+
+ EPIPHANY_RELAX_BRANCH_SHORT, /* Fits into +127..-128 */
+ EPIPHANY_RELAX_BRANCH_LONG, /* b/bl/b<cond> +-2*16 */
+
+ EPIPHANY_RELAX_ARITH_SIMM3, /* add/sub -7..3 */
+ EPIPHANY_RELAX_ARITH_SIMM11, /* add/sub -2**11-1 .. 2**10-1 */
+
+ EPIPHANY_RELAX_MOV_IMM8, /* mov r,imm8 */
+ EPIPHANY_RELAX_MOV_IMM16, /* mov r,imm16 */
+
+ EPIPHANY_RELAX_LDST_IMM3, /* (ldr|str)* r,[r,disp3] */
+ EPIPHANY_RELAX_LDST_IMM11 /* (ldr|str)* r,[r,disp11] */
+
+} EPIPHANY_RELAX_TYPES;
+
+/* Override disassembly hashing... */
+
+/* Can only depend on instruction having 4 decode bits which gets us to the
+ major groups of 16/32 instructions. */
+#undef CGEN_DIS_HASH_SIZE
+#if 1
+
+/* hash code on the 4 LSBs */
+#define CGEN_DIS_HASH_SIZE 16
+
+#define CGEN_DIS_HASH(buf, value) ((*buf) & 0xf)
+#else
+#define CGEN_DIS_HASH_SIZE 1
+#define CGEN_DIS_HASH(buf, value) 0
+#endif
+
+extern const char * parse_shortregs (CGEN_CPU_DESC cd,
+ const char ** strp,
+ CGEN_KEYWORD * keywords,
+ long * valuep);
+
+extern const char * parse_branch_addr (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ int opinfo,
+ enum cgen_parse_operand_result * resultp,
+ unsigned long * valuep);
+
+/* Allows reason codes to be output when assembler errors occur. */
+#define CGEN_VERBOSE_ASSEMBLER_ERRORS
+
+
+/* -- opc.c */
+
+
+
+/* -- asm.c */
+const char *
+parse_shortregs (CGEN_CPU_DESC cd,
+ const char ** strp,
+ CGEN_KEYWORD * keywords,
+ long * regno)
+{
+ const char * errmsg;
+
+ /* Parse register. */
+ errmsg = cgen_parse_keyword (cd, strp, keywords, regno);
+
+ if (errmsg)
+ return errmsg;
+
+ if (*regno > 7)
+ errmsg = _("register unavailable for short instructions");
+
+ return errmsg;
+}
+
+static const char * parse_simm_not_reg (CGEN_CPU_DESC, const char **, int,
+ long *);
+
+static const char *
+parse_uimm_not_reg (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ unsigned long * valuep)
+{
+ long * svalp = (void *) valuep;
+ return parse_simm_not_reg (cd, strp, opindex, svalp);
+}
+
+/* Handle simm3/simm11/imm3/imm12. */
+
+static const char *
+parse_simm_not_reg (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ long * valuep)
+{
+ const char * errmsg;
+
+ int sign = 0;
+ int bits = 0;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_SIMM3:
+ sign = 1; bits = 3; break;
+ case EPIPHANY_OPERAND_SIMM11:
+ sign = 1; bits = 11; break;
+ case EPIPHANY_OPERAND_DISP3:
+ sign = 0; bits = 3; break;
+ case EPIPHANY_OPERAND_DISP11:
+ /* Load/store displacement is a sign-magnitude 12 bit value. */
+ sign = 0; bits = 11; break;
+ }
+
+ /* First try to parse as a register name and reject the operand. */
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names,valuep);
+ if (!errmsg)
+ return _("register name used as immediate value");
+
+ errmsg = (sign ? cgen_parse_signed_integer (cd, strp, opindex, valuep)
+ : cgen_parse_unsigned_integer (cd, strp, opindex,
+ (unsigned long *) valuep));
+ if (errmsg)
+ return errmsg;
+
+ if (sign)
+ errmsg = cgen_validate_signed_integer (*valuep,
+ -((1L << bits) - 1), (1 << (bits - 1)) - 1);
+ else
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, (1L << bits) - 1);
+
+ return errmsg;
+}
+
+static const char *
+parse_postindex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ const char ** strp,
+ int opindex ATTRIBUTE_UNUSED,
+ bfd_vma * valuep)
+{
+ if (**strp == '#')
+ ++*strp; /* Skip leading hashes. */
+
+ if (**strp == '-')
+ {
+ *valuep = 1;
+ ++*strp;
+ }
+ else if (**strp == '+')
+ {
+ *valuep = 0;
+ ++*strp;
+ }
+ else
+ *valuep = 0;
+
+ return NULL;
+}
+
+static const char *
+parse_imm8 (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ bfd_reloc_code_real_type code,
+ enum cgen_parse_operand_result * result_type,
+ bfd_vma * valuep)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result rt;
+ long dummyval;
+
+ if (!result_type)
+ result_type = &rt;
+
+ code = BFD_RELOC_NONE;
+
+ if (!cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_gr_names, &dummyval)
+ || !cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_cr_names,
+ &dummyval))
+ /* Don't treat "mov ip,ip" as a move-immediate. */
+ return _("register source in immediate move");
+
+ errmsg = cgen_parse_address (cd, strp, opindex, code, result_type, valuep);
+ if (errmsg)
+ return errmsg;
+
+ if (*result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, 0xff);
+ else
+ errmsg = _("byte relocation unsupported");
+
+ *valuep &= 0xff;
+ return errmsg;
+}
+
+static const char * MISSING_CLOSE_PARENTHESIS = N_("missing `)'");
+
+static const char *
+parse_imm16 (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ bfd_reloc_code_real_type code ATTRIBUTE_UNUSED,
+ enum cgen_parse_operand_result * result_type,
+ bfd_vma * valuep)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result rt;
+ long dummyval;
+
+ if (!result_type)
+ result_type = &rt;
+
+ if (strncasecmp (*strp, "%high(", 6) == 0)
+ {
+ *strp += 6;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_EPIPHANY_HIGH,
+ result_type, valuep);
+ if (**strp != ')')
+ return MISSING_CLOSE_PARENTHESIS;
+ ++*strp;
+ *valuep >>= 16;
+ }
+ else if (strncasecmp (*strp, "%low(", 5) == 0)
+ {
+ *strp += 5;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_EPIPHANY_LOW,
+ result_type, valuep);
+ if (**strp != ')')
+ return MISSING_CLOSE_PARENTHESIS;
+ ++*strp;
+ }
+ else if (!cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_gr_names,
+ &dummyval)
+ || !cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_cr_names,
+ &dummyval))
+ /* Don't treat "mov ip,ip" as a move-immediate. */
+ return _("register source in immediate move");
+ else
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16,
+ result_type, valuep);
+
+ if (!errmsg && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, 0xffff);
+
+ *valuep &= 0xffff;
+ return errmsg;
+}
+
+const char *
+parse_branch_addr (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ int opinfo ATTRIBUTE_UNUSED,
+ enum cgen_parse_operand_result * resultp ATTRIBUTE_UNUSED,
+ unsigned long * valuep ATTRIBUTE_UNUSED)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result result_type;
+ bfd_reloc_code_real_type code = BFD_RELOC_NONE;
+ bfd_vma value;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_SIMM24:
+ code = BFD_RELOC_EPIPHANY_SIMM24;
+ break;
+
+ case EPIPHANY_OPERAND_SIMM8:
+ code = BFD_RELOC_EPIPHANY_SIMM8;
+ break;
+
+ default:
+ errmsg = _("ABORT: unknown operand");
+ return errmsg;
+ }
+
+ errmsg = cgen_parse_address (cd, strp, opindex, code,
+ &result_type, &value);
+ if (errmsg == NULL)
+ {
+ if (result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ {
+ /* Act as if we had done a PC-relative branch, ala .+num. */
+ char buf[20];
+ const char * bufp = (const char *) buf;
+
+ sprintf (buf, ".+%ld", value);
+ errmsg = cgen_parse_address (cd, &bufp, opindex, code, &result_type,
+ &value);
+ }
+
+ if (result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED)
+ {
+ /* This will happen for things like (s2-s1) where s2 and s1
+ are labels. */
+ /* Nothing further to be done. */
+ }
+ else
+ errmsg = _("Not a pc-relative address.");
+ }
+ return errmsg;
+}
+
+/* -- dis.c */
+
+#define CGEN_PRINT_INSN epiphany_print_insn
+
+static int
+epiphany_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+{
+ bfd_byte buf[CGEN_MAX_INSN_SIZE];
+ int buflen;
+ int status;
+
+ info->bytes_per_chunk = 2;
+
+ /* Attempt to read the base part of the insn. */
+ info->bytes_per_line = buflen = cd->base_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+
+ /* Try again with the minimum part, if min < base. */
+ if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
+ {
+ info->bytes_per_line = buflen = cd->min_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+ }
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ return print_insn (cd, pc, info, buf, buflen);
+}
+
+
+static void
+print_postindex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+ (*info->fprintf_func) (info->stream, value ? "-" : "+");
+}
+
+static void
+print_simm_not_reg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ print_address (cd, dis_info, value, attrs, pc, length);
+}
+
+static void
+print_uimm_not_reg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ unsigned long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *)dis_info;
+
+ if (value & 0x800)
+ (*info->fprintf_func) (info->stream, "-");
+
+ value &= 0x7ff;
+ print_address (cd, dis_info, value, attrs, pc, length);
+}
+
+
+/* -- */
+
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 41972b271e..a82fe6263d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,22 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * NEWS: Mention addition of Adapteva Epiphany support.
+ * config/tc-epiphany.c: New file.
+ * config/tc-epiphany.h: New file.
+ * Makefile.am (TARGET_CPU_CFILES): Add config/tc-epiphany.c .
+ (TARGET_CPU_HFILES): Add config/tc-epiphany.h .
+ * configure.in: Also set using_cgen for epiphany.
+ * configure.tgt: Handle epiphany.
+ * doc/Makefile.am (CPU_DOCS): Add c-epiphany.texi .
+ * doc/all.texi: Set EPIPHANY.
+ * doc/as.texinfo: Add EPIPHANY-specific text.
+ * doc/c-epiphany.texi: New file.
+ * po/gas.pot: Regenerate.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
2011-10-24 Maciej W. Rozycki <macro@codesourcery.com>
* config/tc-mips.c (move_register): Fix formatting.
diff --git a/gas/Makefile.am b/gas/Makefile.am
index 807490342f..4bd21b3d26 100644
--- a/gas/Makefile.am
+++ b/gas/Makefile.am
@@ -118,6 +118,7 @@ TARGET_CPU_CFILES = \
config/tc-d10v.c \
config/tc-d30v.c \
config/tc-dlx.c \
+ config/tc-epiphany.c \
config/tc-fr30.c \
config/tc-frv.c \
config/tc-h8300.c \
@@ -184,6 +185,7 @@ TARGET_CPU_HFILES = \
config/tc-d10v.h \
config/tc-d30v.h \
config/tc-dlx.h \
+ config/tc-epiphany.h \
config/tc-fr30.h \
config/tc-frv.h \
config/tc-h8300.h \
diff --git a/gas/Makefile.in b/gas/Makefile.in
index ddd42d747e..ccc7db75f9 100644
--- a/gas/Makefile.in
+++ b/gas/Makefile.in
@@ -385,6 +385,7 @@ TARGET_CPU_CFILES = \
config/tc-d10v.c \
config/tc-d30v.c \
config/tc-dlx.c \
+ config/tc-epiphany.c \
config/tc-fr30.c \
config/tc-frv.c \
config/tc-h8300.c \
@@ -451,6 +452,7 @@ TARGET_CPU_HFILES = \
config/tc-d10v.h \
config/tc-d30v.h \
config/tc-dlx.h \
+ config/tc-epiphany.h \
config/tc-fr30.h \
config/tc-frv.h \
config/tc-h8300.h \
@@ -796,6 +798,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-d10v.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-d30v.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-dlx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-epiphany.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-fr30.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-frv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-h8300.Po@am__quote@
@@ -1027,6 +1030,20 @@ tc-dlx.obj: config/tc-dlx.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-dlx.obj `if test -f 'config/tc-dlx.c'; then $(CYGPATH_W) 'config/tc-dlx.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-dlx.c'; fi`
+tc-epiphany.o: config/tc-epiphany.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-epiphany.o -MD -MP -MF $(DEPDIR)/tc-epiphany.Tpo -c -o tc-epiphany.o `test -f 'config/tc-epiphany.c' || echo '$(srcdir)/'`config/tc-epiphany.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-epiphany.Tpo $(DEPDIR)/tc-epiphany.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-epiphany.c' object='tc-epiphany.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-epiphany.o `test -f 'config/tc-epiphany.c' || echo '$(srcdir)/'`config/tc-epiphany.c
+
+tc-epiphany.obj: config/tc-epiphany.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-epiphany.obj -MD -MP -MF $(DEPDIR)/tc-epiphany.Tpo -c -o tc-epiphany.obj `if test -f 'config/tc-epiphany.c'; then $(CYGPATH_W) 'config/tc-epiphany.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-epiphany.c'; fi`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-epiphany.Tpo $(DEPDIR)/tc-epiphany.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-epiphany.c' object='tc-epiphany.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-epiphany.obj `if test -f 'config/tc-epiphany.c'; then $(CYGPATH_W) 'config/tc-epiphany.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-epiphany.c'; fi`
+
tc-fr30.o: config/tc-fr30.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-fr30.o -MD -MP -MF $(DEPDIR)/tc-fr30.Tpo -c -o tc-fr30.o `test -f 'config/tc-fr30.c' || echo '$(srcdir)/'`config/tc-fr30.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-fr30.Tpo $(DEPDIR)/tc-fr30.Po
diff --git a/gas/NEWS b/gas/NEWS
index e2c1ce12c0..60a7dd0010 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
-*- text -*-
+* Add support for the Adapteva EPIPHANY architecture.
+
Changes in 2.22:
* Add support for the Tilera TILEPRO and TILE-Gx architectures.
diff --git a/gas/config/tc-epiphany.c b/gas/config/tc-epiphany.c
new file mode 100755
index 0000000000..f4fed25c01
--- /dev/null
+++ b/gas/config/tc-epiphany.c
@@ -0,0 +1,1110 @@
+/* tc-epiphany.c -- Assembler for the Adapteva EPIPHANY
+ Copyright 2011 Free Software Foundation, Inc.
+ Contributed by Embecosm on behalf of Adapteva, 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 3, 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, 51 Franklin Street - Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+#include "as.h"
+#include "subsegs.h"
+#include "symcat.h"
+#include "opcodes/epiphany-desc.h"
+#include "opcodes/epiphany-opc.h"
+#include "cgen.h"
+#include "elf/common.h"
+#include "elf/epiphany.h"
+#include "dwarf2dbg.h"
+#include "libbfd.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];
+}
+epiphany_insn;
+
+const char comment_chars[] = ";";
+const char line_comment_chars[] = "#";
+const char line_separator_chars[] = "`";
+const char EXP_CHARS[] = "eE";
+const char FLT_CHARS[] = "fFdD";
+
+/* Flag to detect when switching to code section where insn alignment is
+ implied. */
+static bfd_boolean force_code_align = FALSE;
+
+static void
+epiphany_elf_section_rtn (int i)
+{
+ obj_elf_section (i);
+
+ if (force_code_align)
+ {
+ /* The s_align_ptwo function expects that we are just after a .align
+ directive and it will either try and read the align value or stop
+ if end of line so we must fake it out so it thinks we are at the
+ end of the line. */
+ char *old_input_line_pointer = input_line_pointer;
+
+ input_line_pointer = "\n";
+ s_align_ptwo (1);
+ force_code_align = FALSE;
+
+ /* Restore. */
+ input_line_pointer = old_input_line_pointer;
+ }
+}
+
+static void
+epiphany_elf_section_text (int i)
+{
+ char *old_input_line_pointer;
+
+ obj_elf_text (i);
+
+ /* The s_align_ptwo function expects that we are just after a .align
+ directive and it will either try and read the align value or stop if
+ end of line so we must fake it out so it thinks we are at the end of
+ the line. */
+ old_input_line_pointer = input_line_pointer;
+ input_line_pointer = "\n";
+ s_align_ptwo (1);
+ force_code_align = FALSE;
+ /* Restore. */
+ input_line_pointer = old_input_line_pointer;
+}
+
+/* The target specific pseudo-ops which we support. */
+const pseudo_typeS md_pseudo_table[] =
+{
+ { "text", epiphany_elf_section_text, 0 },
+ { "sect", epiphany_elf_section_rtn, 0 },
+ /* .word should be 32 bits. */
+ { "word", cons, 4 },
+ { "cpu", s_ignore, 0 },
+ { "thumb_func", s_ignore, 0 },
+ { "code", s_ignore, 0 },
+ { NULL, NULL, 0 }
+};
+
+
+
+enum options
+{
+ OPTION_CPU_EPIPHANY = OPTION_MD_BASE,
+ OPTION_CPU_EPIPHANY16
+};
+
+struct option md_longopts[] =
+{
+ { "mepiphany ", no_argument, NULL, OPTION_CPU_EPIPHANY },
+ { "mepiphany16", no_argument, NULL, OPTION_CPU_EPIPHANY16 },
+ { NULL, no_argument, NULL, 0 },
+};
+
+size_t md_longopts_size = sizeof (md_longopts);
+
+const char * md_shortopts = "";
+
+int
+md_parse_option (int c ATTRIBUTE_UNUSED, char * arg ATTRIBUTE_UNUSED)
+{
+ return 0; /* No target-specific options. */
+}
+
+void
+md_show_usage (FILE * stream)
+{
+ fprintf (stream, _("EPIPHANY specific command line options:\n"));
+}
+
+
+void
+md_begin (void)
+{
+ /* Initialize the `cgen' interface. */
+
+ /* Set the machine number and endian. */
+ gas_cgen_cpu_desc = epiphany_cgen_cpu_open (CGEN_CPU_OPEN_MACHS,
+ bfd_mach_epiphany32,
+ CGEN_CPU_OPEN_ENDIAN,
+ CGEN_ENDIAN_LITTLE,
+ CGEN_CPU_OPEN_END);
+ epiphany_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);
+
+ /* Set the machine type. */
+ bfd_default_set_arch_mach (stdoutput, bfd_arch_epiphany, bfd_mach_epiphany32);
+}
+
+valueT
+md_section_align (segT segment, valueT size)
+{
+ int align = bfd_get_section_alignment (stdoutput, segment);
+
+ return ((size + (1 << align) - 1) & (-1 << align));
+}
+
+
+/* Functions concerning relocs. */
+
+long
+md_pcrel_from (fixS *fixP ATTRIBUTE_UNUSED)
+{
+ abort ();
+}
+
+/* Write a value out to the object file, using the appropriate endianness. */
+
+void
+md_number_to_chars (char * buf, valueT val, int n)
+{
+ number_to_chars_littleendian (buf, val, n);
+}
+
+int
+epiphany_elf_section_flags (int flags,
+ int attr ATTRIBUTE_UNUSED,
+ int type ATTRIBUTE_UNUSED)
+{
+ /* This is used to detect when the section changes to an executable section.
+ This function is called by the elf section processing. When we note an
+ executable section specifier we set an internal flag to denote when
+ word alignment should be forced. */
+ if (flags & SEC_CODE)
+ force_code_align = TRUE;
+
+ return flags;
+}
+
+/* Non-zero if we are generating PIC code. */
+int pic_code;
+
+/* Epiphany er_flags. */
+static int epiphany_flags = 0;
+
+/* Relocations against symbols are done in two
+ parts, with a HI relocation and a LO relocation. Each relocation
+ has only 16 bits of space to store an addend. This means that in
+ order for the linker to handle carries correctly, it must be able
+ to locate both the HI and the LO relocation. This means that the
+ relocations must appear in order in the relocation table.
+
+ In order to implement this, we keep track of each unmatched HI
+ relocation. We then sort them so that they immediately precede the
+ corresponding LO relocation. */
+
+struct epiphany_hi_fixup
+{
+ /* Next HI fixup. */
+ struct epiphany_hi_fixup *next;
+
+ /* This fixup. */
+ fixS *fixp;
+
+ /* The section this fixup is in. */
+ segT seg;
+};
+
+
+#define GOT_NAME "_GLOBAL_OFFSET_TABLE_"
+static symbolS * GOT_symbol;
+
+static inline bfd_boolean
+epiphany_PIC_related_p (symbolS *sym)
+{
+ expressionS *exp;
+
+ if (! sym)
+ return FALSE;
+
+ if (sym == GOT_symbol)
+ return TRUE;
+
+ exp = symbol_get_value_expression (sym);
+
+ return (exp->X_op == O_PIC_reloc
+ || exp->X_md == BFD_RELOC_EPIPHANY_SIMM24
+ || exp->X_md == BFD_RELOC_EPIPHANY_SIMM8
+ || epiphany_PIC_related_p (exp->X_add_symbol)
+ || epiphany_PIC_related_p (exp->X_op_symbol));
+}
+
+/* Perform target dependent relocations that are done at compile time.
+ There aren't very many of these. */
+
+void
+epiphany_apply_fix (fixS *fixP, valueT *valP, segT seg)
+{
+ if (fixP->fx_addsy == (symbolS *) NULL)
+ fixP->fx_done = 1;
+
+ if (((int) fixP->fx_r_type < (int) BFD_RELOC_UNUSED)
+ && fixP->fx_done)
+ {
+ /* Install EPIPHANY-dependent relocations HERE because nobody else
+ will. */
+ char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
+ unsigned char *insn = (unsigned char *)where;
+ valueT value = * valP;
+
+ switch (fixP->fx_r_type)
+ {
+ default:
+ break;
+
+ case BFD_RELOC_NONE:
+ return;
+
+ case BFD_RELOC_EPIPHANY_SIMM11:
+ where[0] = where[0] | ((value & 1) << 7);
+ where[1] = where[1] | ((value & 6) >> 1);
+ where[2] = (value >> 3) & 0xff;
+ return;
+
+ case BFD_RELOC_EPIPHANY_IMM11:
+ where[0] = where[0] | ((value & 1) << 7);
+ where[1] = where[1] | ((value & 6) >> 1);
+ where[2] = (value >> 3) & 0xff;
+ return;
+
+ case BFD_RELOC_EPIPHANY_SIMM8:
+ md_number_to_chars (where+1, value>>1, 1);
+ return;
+
+ case BFD_RELOC_EPIPHANY_SIMM24:
+ md_number_to_chars (where+1, value>>1, 3);
+ return;
+
+ case BFD_RELOC_EPIPHANY_HIGH:
+ value >>= 16;
+ /* fall thru */
+ case BFD_RELOC_EPIPHANY_LOW:
+ value = (((value & 0xff) << 5) | insn[0])
+ | (insn[1] << 8)
+ | ((value & 0xff00) << 12)
+ | (insn[2] << 16);
+ md_number_to_chars (where, value, 3);
+ return;
+ }
+ }
+
+ /* Just do the default if we can't special case. */
+ return gas_cgen_md_apply_fix (fixP, valP, seg);
+}
+
+
+/* This is called from HANDLE_ALIGN in write.c. Fill in the contents
+ of an rs_align_code fragment. 0x01a2 is 16-bit pattern for a "nop". */
+
+static const unsigned char nop_pattern[] = { 0xa2, 0x01 };
+
+void
+epiphany_handle_align (fragS *fragp)
+{
+ int bytes, fix;
+ char *p;
+
+ if (fragp->fr_type != rs_align_code)
+ return;
+
+ bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
+ p = fragp->fr_literal + fragp->fr_fix;
+ fix = 0;
+
+ if (bytes & 1)
+ {
+ fix = 1;
+ *p++ = 0;
+ bytes--;
+ }
+
+ if (bytes & 2)
+ {
+ memcpy (p, nop_pattern, 2);
+ p += 2;
+ bytes -= 2;
+ fix += 2;
+ }
+ fragp->fr_fix += fix;
+}
+
+/* Read a comma separated incrementing list of register names
+ and form a bit mask of upto 15 registers 0..14. */
+
+static const char *
+parse_reglist (const char * s, int * mask)
+{
+ int regmask = 0;
+
+ while (*s)
+ {
+ long value;
+
+ while (*s == ' ')
+ ++s;
+
+ /* Parse a list with "," or "}" as limiters. */
+ const char *errmsg
+ = cgen_parse_keyword (gas_cgen_cpu_desc, &s,
+ &epiphany_cgen_opval_gr_names, &value);
+ if (errmsg)
+ return errmsg;
+
+ if (value > 15)
+ return _("register number too large for push/pop");
+
+ regmask |= 1 << value;
+ if (regmask < *mask)
+ return _("register is out of order");
+ *mask |= regmask;
+
+ while (*s==' ')
+ ++s;
+
+ if (*s == '}')
+ return NULL;
+ else if (*s++ == ',')
+ continue;
+ else
+ return _("bad register list");
+ }
+
+ return _("malformed reglist in push/pop");
+}
+
+
+void
+md_assemble (char *str)
+{
+ epiphany_insn insn;
+ char *errmsg = 0;
+ const char * pperr = 0;
+ int regmask=0, push=0, pop=0;
+
+ memset (&insn, 0, sizeof (insn));
+
+ /* Special-case push/pop instruction macros. */
+ if (0 == strncmp (str, "push {", 6))
+ {
+ char * s = str + 6;
+ push = 1;
+ pperr = parse_reglist (s, &regmask);
+ }
+ else if (0 == strncmp (str, "pop {", 5))
+ {
+ char * s = str + 5;
+ pop = 1;
+ pperr = parse_reglist (s, &regmask);
+ }
+
+ if (pperr)
+ {
+ as_bad ("%s", pperr);
+ return;
+ }
+
+ if (push && regmask)
+ {
+ char buff[20];
+ int i,p ATTRIBUTE_UNUSED;
+
+ md_assemble ("mov r15,4");
+ md_assemble ("sub sp,sp,r15");
+
+ for (i = 0, p = 1; i <= 15; ++i, regmask >>= 1)
+ {
+ if (regmask == 1)
+ sprintf (buff, "str r%d,[sp]", i); /* Last one. */
+ else if (regmask & 1)
+ sprintf (buff, "str r%d,[sp],-r15", i);
+ else
+ continue;
+ md_assemble (buff);
+ }
+ return;
+ }
+ else if (pop && regmask)
+ {
+ char buff[20];
+ int i,p;
+
+ md_assemble ("mov r15,4");
+
+ for (i = 15, p = 1 << 15; i >= 0; --i, p >>= 1)
+ if (regmask & p)
+ {
+ sprintf (buff, "ldr r%d,[sp],+r15", i);
+ md_assemble (buff);
+ }
+ return;
+ }
+
+ /* Initialize GAS's cgen interface for a new instruction. */
+ gas_cgen_init_parse ();
+
+ insn.insn = epiphany_cgen_assemble_insn
+ (gas_cgen_cpu_desc, str, &insn.fields, insn.buffer, & errmsg);
+
+ if (!insn.insn)
+ {
+ as_bad ("%s", errmsg);
+ return;
+ }
+
+ if (CGEN_INSN_BITSIZE (insn.insn) == 32)
+ {
+ /* Doesn't really matter what we pass for RELAX_P here. */
+ gas_cgen_finish_insn (insn.insn, insn.buffer,
+ CGEN_FIELDS_BITSIZE (&insn.fields), 1, NULL);
+ }
+ else
+ {
+ if (CGEN_INSN_BITSIZE (insn.insn) != 16)
+ abort ();
+
+ insn.orig_insn = insn.insn;
+
+ gas_cgen_finish_insn (insn.orig_insn, insn.buffer,
+ CGEN_FIELDS_BITSIZE (&insn.fields),
+ 1 /* relax_p */, NULL);
+ }
+
+ /* Checks for behavioral restrictions on LD/ST instructions. */
+#define DISPMOD _("destination register modified by displacement-post-modified address")
+#define LDSTODD _("ldrd/strd requires even:odd register pair")
+
+ /* Helper macros for spliting apart instruction fields. */
+#define ADDR_POST_MODIFIED(i) (((i) >> 25) & 0x1)
+#define ADDR_SIZE(i) (((i) >> 5) & 3)
+#define ADDR_LOADSTORE(i) (((i) >> 4) & 0x1)
+
+ switch (insn.buffer[0] & 0xf)
+ {
+ /* Post-modify registers cannot be destinations. */
+ case OP4_LDSTR16P:
+ {
+ if (ADDR_LOADSTORE (insn.buffer[0]) == OP_LOAD)
+ if (insn.fields.f_rd == insn.fields.f_rn /* Postmodify dest. */
+ || (insn.fields.f_rd+1 == insn.fields.f_rn
+ && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE))
+ {
+ as_bad ("%s", DISPMOD);
+ return;
+ }
+ if ((insn.fields.f_rd & 1) /* Odd-numbered register... */
+ && insn.fields.f_wordsize == OPW_DOUBLE) /* ...and 64 bit transfer. */
+ {
+ as_bad ("%s", LDSTODD);
+ return;
+ }
+ break;
+ }
+
+ case OP4_LDSTRP:
+ {
+ if (ADDR_LOADSTORE (insn.buffer[0]) == OP_LOAD) /* A load. */
+ if (insn.fields.f_rd6 == insn.fields.f_rn6 /* Postmodify dest. */
+ /* Check for regpair postindexed. */
+ || (insn.fields.f_rd6 + 1 == insn.fields.f_rn6
+ && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE))
+ {
+ as_bad ("%s", DISPMOD);
+ return;
+ }
+ if ((insn.fields.f_rd6 & 1) && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE)
+ /* Lsb of RD odd and 64 bit transfer. */
+ {
+ as_bad ("%s", LDSTODD);
+ return;
+ }
+ break;
+ }
+
+ case OP4_LDSTR16X:
+ case OP4_LDSTR16D:
+ {
+ /* Check for unaligned load/store double. */
+ if ((insn.fields.f_rd & 1) && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE)
+ /* Lsb of RD odd and 64 bit transfer. */
+ {
+ as_bad ("%s", LDSTODD);
+ return;
+ }
+ break;
+ }
+
+ case OP4_LDSTRD:
+ {
+ /* Check for load to post-modified register. */
+ if (ADDR_LOADSTORE (insn.buffer[0]) == OP_LOAD /* A load. */
+ && ADDR_POST_MODIFIED (insn.buffer[0]) == PMOD_POST /* Post-mod. */
+ && (insn.fields.f_rd6 == insn.fields.f_rn6
+ || (insn.fields.f_rd6+1 == insn.fields.f_rn6
+ && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE)))
+ {
+ as_bad ("%s", DISPMOD);
+ return;
+ }
+ }
+ /* fall-thru. */
+
+ case OP4_LDSTRX:
+ {
+ /* Check for unaligned load/store double. */
+ if ((insn.fields.f_rd6 & 1) && ADDR_SIZE (insn.buffer[0]) == OPW_DOUBLE)
+ {
+ as_bad ("%s", LDSTODD);
+ return;
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+}
+
+/* The syntax in the manual says constants begin with '#'.
+ We just ignore it. */
+
+void
+md_operand (expressionS *expressionP)
+{
+ if (*input_line_pointer == '#')
+ {
+ input_line_pointer++;
+ expression (expressionP);
+ }
+}
+
+symbolS *
+md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
+{
+ return NULL;
+}
+
+/* Interface to relax_segment. */
+
+/* FIXME: Build table by hand, get it working, then machine generate. */
+
+const relax_typeS md_relax_table[] =
+{
+ /* The fields are:
+ 1) most positive reach of this state,
+ 2) most negative reach of this state,
+ 3) how many bytes this mode will add to the size of the current frag
+ 4) which index into the table to try if we can't fit into this one. */
+
+ /* The first entry must be unused because an `rlx_more' value of zero ends
+ each list. */
+ {1, 1, 0, EPIPHANY_RELAX_NONE},
+ {0, 0, 0, EPIPHANY_RELAX_NONE}, /* Also a dummy entry to indicate we need to expand codes. */
+
+ /* The displacement used by GAS is from the end of the 2 byte insn,
+ so we subtract 2 from the following. */
+ /* 16 bit insn, 8 bit disp -> +127 words, -128 words. */
+ {0x00000100 - 1 - 2, -0x00000100 - 2, 0, EPIPHANY_RELAX_BRANCH_LONG },
+ /* 32 bit insn, 24 bit disp -> 25 bit range. */
+ {0x01000000 - 1 - 2, -0x01000000 - 2, 2, EPIPHANY_RELAX_NONE },
+
+ /* addi/subi 3 bits -4..+3. */
+ { 3, -4,0, EPIPHANY_RELAX_ARITH_SIMM11 },
+ /* addi/subi 11 bits. */
+ { 1023, -1024,2, EPIPHANY_RELAX_NONE },
+
+ /* mov r,imm8. */
+ { 255, 0,0, EPIPHANY_RELAX_MOV_IMM16 },
+ /* mov r,imm16. */
+ { 65535, 0,2, EPIPHANY_RELAX_NONE },
+
+ /* ld/st rd,[rn,imm3]. */
+ { 7, 0,0, EPIPHANY_RELAX_LDST_IMM11},
+ /* ld/st rd,[rn,imm11]. */
+ { 2047, 0,2, EPIPHANY_RELAX_NONE }
+
+};
+
+static const EPIPHANY_RELAX_TYPES relax_insn[] =
+{
+ EPIPHANY_RELAX_BRANCH_SHORT, /* OP4_BRANCH16 */
+ EPIPHANY_RELAX_NONE, /* OP4_LDSTR16X */
+ EPIPHANY_RELAX_NONE, /* OP4_FLOW16 */
+ EPIPHANY_RELAX_ARITH_SIMM3, /* OP4_IMM16 - special */
+ EPIPHANY_RELAX_LDST_IMM3, /* OP4_LDSTR16D */
+ EPIPHANY_RELAX_NONE, /* OP4_LDSTR126P */
+ EPIPHANY_RELAX_NONE, /* OP4_LSHIFT16 */
+ EPIPHANY_RELAX_NONE, /* OP4_DSP16 */
+ EPIPHANY_RELAX_BRANCH_LONG, /* OP4_BRANCH */
+ EPIPHANY_RELAX_NONE, /* OP4_LDSTRX */
+ EPIPHANY_RELAX_NONE, /* OP4_ALU16 */
+ EPIPHANY_RELAX_ARITH_SIMM11, /* OP4_IMM32 - special */
+ EPIPHANY_RELAX_LDST_IMM11, /* OP4_LDSTRD */
+ EPIPHANY_RELAX_NONE, /* OP4_LDSTRP */
+ EPIPHANY_RELAX_NONE, /* OP4_ASHIFT16 */
+ EPIPHANY_RELAX_NONE /* OP4_MISC */
+};
+
+long
+epiphany_relax_frag (segT segment, fragS *fragP, long stretch)
+{
+ /* Address of branch insn. */
+ long address ATTRIBUTE_UNUSED = fragP->fr_address + fragP->fr_fix - 2;
+ long growth = 0;
+
+ if (fragP->fr_subtype == EPIPHANY_RELAX_NEED_RELAXING)
+ {
+ EPIPHANY_RELAX_TYPES subtype = relax_insn [*fragP->fr_opcode & 0xf];
+
+ /* Special cases add/sub vs mov immediates. */
+ if (subtype == EPIPHANY_RELAX_ARITH_SIMM3)
+ {
+ if ((*fragP->fr_opcode & 0x10) == 0)
+ subtype = EPIPHANY_RELAX_MOV_IMM8;
+ }
+ else if (subtype == EPIPHANY_RELAX_ARITH_SIMM11)
+ {
+ if ((*fragP->fr_opcode & 0x10) == 0)
+ subtype = EPIPHANY_RELAX_MOV_IMM16;
+ }
+
+ /* Remember refinements for the future. */
+ fragP->fr_subtype = subtype;
+ }
+
+ growth = relax_frag (segment, fragP, stretch);
+
+ return growth;
+}
+
+/* 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 (fragS *fragP, segT segment)
+{
+ /* The only thing we have to handle here are symbols outside of the
+ current segment. They may be undefined or in a different segment in
+ which case linker scripts may place them anywhere.
+ However, we can't finish the fragment here and emit the reloc as insn
+ alignment requirements may move the insn about. */
+ if (S_GET_SEGMENT (fragP->fr_symbol) != segment
+ || S_IS_EXTERNAL (fragP->fr_symbol)
+ || S_IS_WEAK (fragP->fr_symbol))
+ {
+ /* The symbol is undefined in this segment. Change the
+ relaxation subtype to the max allowable and leave all further
+ handling to md_convert_frag. */
+
+ EPIPHANY_RELAX_TYPES subtype;
+ /* We haven't relaxed this at all, so the relaxation type may be
+ completely wrong. Set the subtype correctly. */
+ epiphany_relax_frag (segment, fragP, 0);
+ subtype = fragP->fr_subtype;
+
+ switch (subtype)
+ {
+ case EPIPHANY_RELAX_LDST_IMM3:
+ subtype = EPIPHANY_RELAX_LDST_IMM11;
+ break;
+ case EPIPHANY_RELAX_BRANCH_SHORT:
+ subtype = EPIPHANY_RELAX_BRANCH_LONG;
+ break;
+ case EPIPHANY_RELAX_MOV_IMM8:
+ subtype = EPIPHANY_RELAX_MOV_IMM16;
+ break;
+ case EPIPHANY_RELAX_ARITH_SIMM3:
+ subtype = EPIPHANY_RELAX_ARITH_SIMM11;
+ break;
+
+ default:
+ break;
+ }
+
+ fragP->fr_subtype = subtype;
+
+ {
+ const CGEN_INSN *insn;
+ int i;
+
+ /* Update the recorded insn. */
+
+ for (i = 0, insn = fragP->fr_cgen.insn; i < 4; i++, insn++)
+ {
+ if ((strcmp (CGEN_INSN_MNEMONIC (insn),
+ CGEN_INSN_MNEMONIC (fragP->fr_cgen.insn))
+ == 0)
+ && CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXED))
+ break;
+ }
+
+ if (i == 4)
+ abort ();
+
+ fragP->fr_cgen.insn = insn;
+ }
+ }
+
+ return md_relax_table[fragP->fr_subtype].rlx_length;
+}
+
+/* *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 (bfd *abfd ATTRIBUTE_UNUSED,
+ segT sec,
+ fragS *fragP)
+{
+ char *opcode;
+ char *displacement;
+ int target_address;
+ int opcode_address;
+ int extension;
+ int addend;
+ int opindx = -1;
+
+ opcode = fragP->fr_opcode;
+
+ /* Address opcode resides at in file space. */
+ opcode_address = fragP->fr_address + fragP->fr_fix - 2;
+ extension = 0;
+ displacement = &opcode[1];
+
+ /* Set up any addend necessary for branches. */
+ if (S_GET_SEGMENT (fragP->fr_symbol) != sec
+ || S_IS_EXTERNAL (fragP->fr_symbol)
+ || S_IS_WEAK (fragP->fr_symbol))
+ {
+ /* Symbol must be resolved by linker. */
+ if (fragP->fr_offset & 1)
+ as_warn (_("Addend to unresolved symbol not on word boundary."));
+ addend = 0;
+ }
+ else
+ {
+ /* Address we want to reach in file space. */
+ target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset;
+ addend = (target_address - (opcode_address & -2));
+ }
+
+ /* Do all the housekeeping for frag conversions. */
+ switch (fragP->fr_subtype)
+ {
+ case EPIPHANY_RELAX_ARITH_SIMM11:
+ *opcode |= OP4_IMM32;
+ displacement = &opcode[0];
+ extension += 3;
+
+ addend
+ = (((addend & 0x7) << 7)
+ | opcode[0]
+ | ((addend & 0x7f8) << 13)
+ | (opcode[1] << 8)
+ | (opcode[2] << 16));
+
+ opindx = EPIPHANY_OPERAND_SIMM11;
+ break;
+
+ case EPIPHANY_RELAX_BRANCH_LONG:
+ /* Branches differ only in low nibble of instruction being 8 not 0.
+ 24 bit displacement goes to bytes 1..3 . */
+ *opcode |= OP4_BRANCH;
+ extension += 2;
+
+ addend >>= 1; /* Convert to word offset. */
+ opindx = EPIPHANY_OPERAND_SIMM24;
+ break;
+
+ case EPIPHANY_RELAX_MOV_IMM16:
+ *opcode |= OP4_IMM32;
+ extension += 3;
+
+ addend
+ = (((addend & 0xff00) << 12)
+ | (opcode[2] << 16)
+ | ((addend & 0x00ff) << 5)
+ | (opcode[1] << 8)
+ | opcode[0]);
+ displacement = &opcode[0];
+ opindx = EPIPHANY_OPERAND_IMM16;
+ break;
+
+ case EPIPHANY_RELAX_LDST_IMM11:
+ *opcode |= OP4_LDSTRD;
+ displacement = &opcode[0];
+ extension += 3;
+
+ if (addend < 0)
+ /* Convert twos-complement address value to sign-magnitude. */
+ addend = (-addend & 0x7ff) | 0x800;
+
+ addend
+ = (((addend & 0x7) << 5)
+ | opcode[0]
+ | ((addend & 0xff8) << 13)
+ | (opcode[1] << 8)
+ | (opcode[2] << 16));
+
+ opindx = EPIPHANY_OPERAND_DISP11;
+ break;
+
+ case EPIPHANY_RELAX_ARITH_SIMM3:
+ addend = ((addend & 7) << 5) | opcode[0];
+ opindx = EPIPHANY_OPERAND_SIMM3;
+ break;
+
+ case EPIPHANY_RELAX_LDST_IMM3:
+ addend = ((addend & 7) << 5) | opcode[0];
+ opindx = EPIPHANY_OPERAND_DISP3;
+
+ case EPIPHANY_RELAX_BRANCH_SHORT:
+ addend >>= 1; /* Convert to a word offset. */
+ displacement = & opcode[1];
+ opindx = EPIPHANY_OPERAND_SIMM8;
+ break;
+
+ case EPIPHANY_RELAX_MOV_IMM8:
+ addend
+ = (((addend & 0xff) << 5)
+ | opcode[0]
+ | (opcode[1] << 8));
+ opindx = EPIPHANY_OPERAND_IMM8;
+ break;
+
+ case EPIPHANY_RELAX_NONE:
+ case EPIPHANY_RELAX_NEED_RELAXING:
+ default: /* Anything else? */
+ as_bad ("unrecognized fragment subtype");
+ break;
+ }
+
+ /* Create a relocation for symbols that must be resolved by the linker.
+ Otherwise output the completed insn. */
+
+ if (S_GET_SEGMENT (fragP->fr_symbol) != sec
+ || S_IS_EXTERNAL (fragP->fr_symbol)
+ || S_IS_WEAK (fragP->fr_symbol))
+ {
+ fixS *fixP;
+ const CGEN_OPERAND *operand
+ = cgen_operand_lookup_by_num (gas_cgen_cpu_desc, opindx);
+ bfd_reloc_code_real_type reloc_type;
+
+ gas_assert (fragP->fr_cgen.insn != 0);
+
+ reloc_type = md_cgen_lookup_reloc (fragP->fr_cgen.insn, operand, NULL);
+
+ fixP = gas_cgen_record_fixup (fragP,
+ /* Offset of insn in frag. */
+ (opcode - fragP->fr_literal),
+ fragP->fr_cgen.insn,
+ CGEN_INSN_BITSIZE (fragP->fr_cgen.insn) / 8,
+ operand,
+ reloc_type,
+ fragP->fr_symbol, fragP->fr_offset);
+ fixP->fx_r_type = fixP->fx_cgen.opinfo;
+ }
+
+ md_number_to_chars (displacement, (valueT) addend, extension + 1);
+
+ fragP->fr_fix += (extension & -2); /* 0,2 or 4 bytes added. */
+}
+
+
+/* Functions concerning relocs. */
+
+/* The location from which a PC relative jump should be calculated,
+ given a PC relative reloc. */
+
+long
+md_pcrel_from_section (fixS *fixP, segT sec)
+{
+ if (fixP->fx_addsy != (symbolS *) NULL
+ && (!S_IS_DEFINED (fixP->fx_addsy)
+ || (S_GET_SEGMENT (fixP->fx_addsy) != sec)
+ || S_IS_EXTERNAL (fixP->fx_addsy)
+ || S_IS_WEAK (fixP->fx_addsy)))
+ 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 (const CGEN_INSN *insn ATTRIBUTE_UNUSED,
+ const CGEN_OPERAND *operand,
+ fixS *fixP ATTRIBUTE_UNUSED)
+{
+ switch (operand->type)
+ {
+ case EPIPHANY_OPERAND_SIMM11:
+ return BFD_RELOC_EPIPHANY_SIMM11;
+ case EPIPHANY_OPERAND_DISP11:
+ return BFD_RELOC_EPIPHANY_IMM11;
+
+ case EPIPHANY_OPERAND_SIMM8:
+ return BFD_RELOC_EPIPHANY_SIMM8;
+ case EPIPHANY_OPERAND_SIMM24:
+ return BFD_RELOC_EPIPHANY_SIMM24;
+
+ case EPIPHANY_OPERAND_IMM8:
+ return BFD_RELOC_EPIPHANY_IMM8;
+
+ case EPIPHANY_OPERAND_IMM16:
+ if (0 == strcmp ("movt", CGEN_INSN_MNEMONIC (insn)))
+ return BFD_RELOC_EPIPHANY_HIGH;
+ else if (0 == strcmp ("mov", CGEN_INSN_MNEMONIC (insn)))
+ return BFD_RELOC_EPIPHANY_LOW;
+ else
+ as_bad ("unknown imm16 operand");
+ /* fall-thru */
+
+ default:
+ break;
+ }
+ return BFD_RELOC_NONE;
+}
+
+
+/* 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 (int type, char *litP, int *sizeP)
+{
+ return ieee_md_atof (type, litP, sizeP, FALSE);
+}
+
+/* Return true if can adjust the reloc to be relative to its section
+ (such as .data) instead of relative to some symbol. */
+
+bfd_boolean
+epiphany_fix_adjustable (fixS *fixP)
+{
+ bfd_reloc_code_real_type reloc_type;
+
+ if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
+ {
+ const CGEN_INSN *insn = fixP->fx_cgen.insn;
+ int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
+ const CGEN_OPERAND *operand =
+ cgen_operand_lookup_by_num (gas_cgen_cpu_desc, opindex);
+
+ reloc_type = md_cgen_lookup_reloc (insn, operand, fixP);
+ }
+ else
+ reloc_type = fixP->fx_r_type;
+
+ if (fixP->fx_addsy == NULL)
+ return TRUE;
+
+ /* Prevent all adjustments to global symbols. */
+ if (S_IS_EXTERNAL (fixP->fx_addsy))
+ return FALSE;
+
+ if (S_IS_WEAK (fixP->fx_addsy))
+ return FALSE;
+
+ if (pic_code
+ && (reloc_type == BFD_RELOC_EPIPHANY_SIMM24
+ || reloc_type == BFD_RELOC_EPIPHANY_SIMM8
+ || reloc_type == BFD_RELOC_EPIPHANY_HIGH
+ || reloc_type == BFD_RELOC_EPIPHANY_LOW))
+ return FALSE;
+
+ /* Since we don't use partial_inplace, we must not reduce symbols in
+ mergable sections to their section symbol. */
+ if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+void
+epiphany_elf_final_processing (void)
+{
+ elf_elfheader (stdoutput)->e_flags |= epiphany_flags;
+}
+
+int
+epiphany_cgen_parse_fix_exp (int opinfo, expressionS *exp ATTRIBUTE_UNUSED)
+{
+ LITTLENUM_TYPE words[2];
+
+ switch (opinfo)
+ {
+ case BFD_RELOC_EPIPHANY_LOW:
+ case BFD_RELOC_EPIPHANY_HIGH:
+ break;
+ default:
+ return opinfo;
+ }
+
+ /* Doing a %LOW or %HIGH. */
+ switch (exp->X_op)
+ {
+ default:
+ return opinfo;
+ case O_big: /* Bignum. */
+ if (exp->X_add_number > 0) /* Integer value too large. */
+ return opinfo;
+ }
+
+ /* Convert to SP number. */
+ gen_to_words (words, 2, 8L);
+ exp->X_add_number = words[1] | (words[0] << 16);
+ exp->X_op = O_constant;
+ return opinfo;
+}
diff --git a/gas/config/tc-epiphany.h b/gas/config/tc-epiphany.h
new file mode 100755
index 0000000000..25e453a305
--- /dev/null
+++ b/gas/config/tc-epiphany.h
@@ -0,0 +1,102 @@
+/* tc-epiphany.h -- Header file for tc-epiphany.c.
+ Copyright 2011 Free Software Foundation, Inc.
+ Contributed by Embecosm on behalf of Adapteva, 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 3, 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, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#define TC_EPIPHANY
+
+#define LISTING_HEADER "EPIPHANY GAS "
+
+/* The target BFD architecture. */
+#define TARGET_ARCH bfd_arch_epiphany
+
+#define TARGET_FORMAT "elf32-epiphany"
+
+/* Permit temporary numeric labels. */
+#define LOCAL_LABELS_FB 1
+
+/* .-foo gets turned into PC relative relocs. */
+#define DIFF_EXPR_OK
+
+/* We don't need to handle .word strangely. */
+#define WORKING_DOT_WORD
+
+#define LITERAL_PREFIXDOLLAR_HEX
+#define LITERAL_PREFIXPERCENT_BIN
+#define DOUBLESLASH_LINE_COMMENTS
+
+#define GAS_CGEN_PCREL_R_TYPE(R_TYPE) gas_cgen_pcrel_r_type (R_TYPE)
+
+/* Values passed to md_apply_fix don't include the symbol value. */
+#define MD_APPLY_SYM_VALUE(FIX) 0
+
+#define tc_fix_adjustable(FIX) epiphany_fix_adjustable (FIX)
+extern bfd_boolean epiphany_fix_adjustable (struct fix *);
+
+extern long md_pcrel_from_section (struct fix *, segT);
+#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP,SEC)
+
+#define TC_HANDLES_FX_DONE
+
+#define elf_tc_final_processing epiphany_elf_final_processing
+extern void epiphany_elf_final_processing (void);
+
+#define md_elf_section_flags epiphany_elf_section_flags
+extern int epiphany_elf_section_flags (int, int, int);
+
+#define md_operand(x) epiphany_cgen_md_operand (x)
+extern void epiphany_cgen_md_operand (expressionS *);
+
+/* Values passed to md_apply_fix don't include the symbol value. */
+#define MD_APPLY_SYM_VALUE(FIX) 0
+
+#define TC_CGEN_MAX_RELAX(insn, len) 4
+
+#define O_PIC_reloc O_md1
+
+#define TC_CGEN_PARSE_FIX_EXP(opinfo, exp) \
+ epiphany_cgen_parse_fix_exp (opinfo, exp)
+extern int epiphany_cgen_parse_fix_exp (int, expressionS *);
+
+#define HANDLE_ALIGN(f) epiphany_handle_align (f)
+extern void epiphany_handle_align (fragS *);
+
+#define TARGET_FORMAT "elf32-epiphany"
+
+#define md_relax_frag epiphany_relax_frag
+
+extern long epiphany_relax_frag (segT, fragS *, long);
+
+/* If you don't define md_relax_frag, md_cgen_record_fixup_exp
+ but do have TC_GENERIC_RELAX_TABLE gas will do the relaxation for you.
+
+ If we have to add support for %LO and %HI relocations, we probably need
+ to define the fixup_exp function to generate fancier relocations. */
+
+/* For 8 vs 24 bit branch selection. */
+extern const struct relax_type md_relax_table[];
+#define TC_GENERIC_RELAX_TABLE md_relax_table
+
+#define tc_gen_reloc gas_cgen_tc_gen_reloc
+
+
+#define md_apply_fix epiphany_apply_fix
+#include "write.h"
+
+extern void epiphany_apply_fix (fixS *fixP, valueT *valP, segT seg);
diff --git a/gas/configure b/gas/configure
index b70b86e364..51c4200b98 100755
--- a/gas/configure
+++ b/gas/configure
@@ -12143,7 +12143,7 @@ _ACEOF
fi
;;
- fr30 | ip2k | iq2000 | lm32 | m32r | openrisc)
+ epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | openrisc)
using_cgen=yes
;;
diff --git a/gas/configure.in b/gas/configure.in
index ea6df790eb..e7dab2ef53 100644
--- a/gas/configure.in
+++ b/gas/configure.in
@@ -305,7 +305,7 @@ changequote([,])dnl
fi
;;
- fr30 | ip2k | iq2000 | lm32 | m32r | openrisc)
+ epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | openrisc)
using_cgen=yes
;;
diff --git a/gas/configure.tgt b/gas/configure.tgt
index a171a32bbf..d98610ae75 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -38,6 +38,7 @@ case ${cpu} in
cr16*) cpu_type=cr16 endian=little ;;
crisv32) cpu_type=cris arch=crisv32 ;;
crx*) cpu_type=crx endian=little ;;
+ epiphany*) cpu_type=epiphany endian=little ;;
fido) cpu_type=m68k ;;
hppa*) cpu_type=hppa ;;
i[3-7]86) cpu_type=i386 arch=i386;;
@@ -141,6 +142,8 @@ case ${generic_target} in
d30v-*-*) fmt=elf ;;
dlx-*-*) fmt=elf ;;
+ epiphany-*-*) fmt=elf ;;
+
fr30-*-*) fmt=elf ;;
frv-*-*linux*) fmt=elf em=linux;;
frv-*-*) fmt=elf ;;
diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am
index 87017fc90e..f115ae2db4 100644
--- a/gas/doc/Makefile.am
+++ b/gas/doc/Makefile.am
@@ -35,8 +35,9 @@ CPU_DOCS = \
c-avr.texi \
c-bfin.texi \
c-cr16.texi \
- c-d10v.texi \
c-cris.texi \
+ c-d10v.texi \
+ c-epiphany.texi \
c-h8300.texi \
c-hppa.texi \
c-i370.texi \
diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in
index d7d0247bf4..93a9f6236b 100644
--- a/gas/doc/Makefile.in
+++ b/gas/doc/Makefile.in
@@ -275,8 +275,9 @@ CPU_DOCS = \
c-avr.texi \
c-bfin.texi \
c-cr16.texi \
- c-d10v.texi \
c-cris.texi \
+ c-d10v.texi \
+ c-epiphany.texi \
c-h8300.texi \
c-hppa.texi \
c-i370.texi \
diff --git a/gas/doc/all.texi b/gas/doc/all.texi
index 6f935ad5b7..2be9c722b1 100644
--- a/gas/doc/all.texi
+++ b/gas/doc/all.texi
@@ -35,6 +35,7 @@
@set CRIS
@set D10V
@set D30V
+@set EPIPHANY
@set H8/300
@set HPPA
@set I370
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index 8ed62a4db6..362c10bcc7 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -307,6 +307,11 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
@emph{Target D30V options:}
[@b{-O}|@b{-n}|@b{-N}]
@end ifset
+@ifset EPIPHANY
+
+@emph{Target EPIPHANY options:}
+ [@b{-mepiphany}|@b{-mepiphany16}]
+@end ifset
@ifset H8
@emph{Target H8/300 options:}
@@ -843,6 +848,22 @@ Warn when a nop after a 32-bit multiply instruction is generated.
@end ifset
@c man end
+@ifset EPIPHANY
+The following options are available when @value{AS} is configured for the
+Adapteva EPIPHANY series.
+
+@table @gcctabopt
+
+@item -mepiphany
+Specifies that the both 32 and 16 bit instructions are allowed. This is the
+default behavior.
+
+@item -mepiphany16
+Restricts the permitted instructions to just the 16 bit set.
+
+@end table
+@end ifset
+
@ifset I80386
@ifclear man
@@ -6849,6 +6870,9 @@ subject, see the hardware manufacturer's manual.
@ifset D30V
* D30V-Dependent:: D30V Dependent Features
@end ifset
+@ifset EPIPHANY
+* Epiphany-Dependent:: EPIPHANY Dependent Features
+@end ifset
@ifset H8/300
* H8/300-Dependent:: Renesas H8/300 Dependent Features
@end ifset
@@ -7025,6 +7049,10 @@ family.
@include c-d30v.texi
@end ifset
+@ifset EPIPHANY
+@include c-epiphany.texi
+@end ifset
+
@ifset H8/300
@include c-h8300.texi
@end ifset
diff --git a/gas/doc/c-epiphany.texi b/gas/doc/c-epiphany.texi
new file mode 100644
index 0000000000..c0b0222d14
--- /dev/null
+++ b/gas/doc/c-epiphany.texi
@@ -0,0 +1,67 @@
+@c Copyright 2011 Free Software Foundation, Inc.
+@c This is part of the GAS manual.
+@c For copying conditions, see the file as.texinfo.
+@c man end
+
+@ifset GENERIC
+@page
+@node Epiphany-Dependent
+@chapter Epiphany Dependent Features
+@end ifset
+@ifclear GENERIC
+@node Machine Dependencies
+@chapter Epiphany Dependent Features
+@end ifclear
+
+@cindex Epiphany support
+@menu
+* Epiphany Options:: Options
+* Epiphany Syntax:: Epiphany Syntax
+@end menu
+
+@node Epiphany Options
+@section Options
+
+@cindex Epiphany options
+@cindex options, Epiphany
+@code{@value{AS}} has two additional command-line options for the Epiphany
+architecture.
+
+@c man begin OPTIONS
+@table @gcctabopt
+
+@cindex @code{-mepiphany} command line option, Epiphany
+@item -mepiphany
+Specifies that the both 32 and 16 bit instructions are allowed. This is the
+default behavior.
+
+@cindex @code{-mepiphany16} command line option, Epiphany
+@item -mepiphany16
+Restricts the permitted instructions to just the 16 bit set.
+@end table
+@c man end
+
+@node Epiphany Syntax
+@section Epiphany Syntax
+@menu
+* Epiphany-Chars:: Special Characters
+@end menu
+
+@node Epiphany-Chars
+@subsection Special Characters
+
+@cindex line comment character, Epiphany
+@cindex Epiphany line comment character
+The presence of a @samp{;} on a line indicates the start
+of a comment that extends to the end of the current line.
+
+If a @samp{#} appears as the first character of a line then the whole
+line is treated as a comment, but in this case the line could also be
+a logical line number directive (@pxref{Comments}) or a preprocessor
+control command (@pxref{Preprocessing}).
+
+@cindex line separator, Epiphany
+@cindex statement separator, Epiphany
+@cindex Epiphany line separator
+The @samp{`} character can be used to separate statements on the same
+line.
diff --git a/gas/po/POTFILES.in b/gas/po/POTFILES.in
index 754a392e67..784fa776d3 100644
--- a/gas/po/POTFILES.in
+++ b/gas/po/POTFILES.in
@@ -59,6 +59,8 @@ config/tc-d30v.c
config/tc-d30v.h
config/tc-dlx.c
config/tc-dlx.h
+config/tc-epiphany.c
+config/tc-epiphany.h
config/tc-fr30.c
config/tc-fr30.h
config/tc-frv.c
diff --git a/gas/po/gas.pot b/gas/po/gas.pot
index 50451b4481..f1eec3bd3d 100644
--- a/gas/po/gas.pot
+++ b/gas/po/gas.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2011-06-02 14:30+0100\n"
+"POT-Creation-Date: 2011-10-25 12:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -455,7 +455,7 @@ msgstr ""
msgid "%s: data size %ld\n"
msgstr ""
-#: as.c:1289
+#: as.c:1292
#, c-format
msgid "%d warnings, treating warnings as errors"
msgstr ""
@@ -473,9 +473,9 @@ msgstr ""
msgid "failed sanity check"
msgstr ""
-#: cgen.c:113 config/tc-alpha.c:2104 config/tc-alpha.c:2128
+#: cgen.c:113 config/tc-alpha.c:2101 config/tc-alpha.c:2125
#: config/tc-arc.c:1684 config/tc-d10v.c:552 config/tc-d30v.c:538
-#: config/tc-mn10200.c:1100 config/tc-mn10300.c:1751 config/tc-ppc.c:2617
+#: config/tc-mn10200.c:1101 config/tc-mn10300.c:1751 config/tc-ppc.c:2617
#: config/tc-ppc.c:2768 config/tc-ppc.c:2910 config/tc-ppc.c:2921
#: config/tc-s390.c:1250 config/tc-s390.c:1364 config/tc-s390.c:1493
#: config/tc-v850.c:2229 config/tc-v850.c:2300 config/tc-v850.c:2346
@@ -484,7 +484,7 @@ msgid "too many fixups"
msgstr ""
#: cgen.c:400 cgen.c:420 config/tc-arc.c:1665 config/tc-d10v.c:463
-#: config/tc-d30v.c:454 config/tc-i370.c:2125 config/tc-mn10200.c:1042
+#: config/tc-d30v.c:454 config/tc-i370.c:2125 config/tc-mn10200.c:1043
#: config/tc-mn10300.c:1676 config/tc-ppc.c:2656 config/tc-s390.c:1221
#: config/tc-v850.c:2337 config/tc-v850.c:2371 config/tc-v850.c:2411
#: config/tc-v850.c:2622 config/tc-z80.c:417
@@ -494,7 +494,7 @@ msgstr ""
#: cgen.c:424 config/tc-arc.c:1667 config/tc-avr.c:632 config/tc-d10v.c:465
#: config/tc-d30v.c:456 config/tc-h8300.c:500 config/tc-i370.c:2127
#: config/tc-mcore.c:662 config/tc-microblaze.c:579 config/tc-mmix.c:488
-#: config/tc-mn10200.c:1045 config/tc-mn10300.c:1679 config/tc-msp430.c:452
+#: config/tc-mn10200.c:1046 config/tc-mn10300.c:1679 config/tc-msp430.c:452
#: config/tc-or32.c:307 config/tc-ppc.c:2658 config/tc-s390.c:1239
#: config/tc-sh.c:1387 config/tc-sh64.c:2213 config/tc-v850.c:2341
#: config/tc-v850.c:2375 config/tc-v850.c:2415 config/tc-v850.c:2625
@@ -511,18 +511,19 @@ msgid "operand mask overflow"
msgstr ""
#. We can't actually support subtracting a symbol.
-#: cgen.c:886 config/tc-arc.c:1249 config/tc-arm.c:1645 config/tc-arm.c:9058
-#: config/tc-arm.c:9110 config/tc-arm.c:9357 config/tc-arm.c:10157
-#: config/tc-arm.c:11248 config/tc-arm.c:11288 config/tc-arm.c:11616
-#: config/tc-arm.c:11655 config/tc-avr.c:1165 config/tc-cris.c:4047
-#: config/tc-d10v.c:1511 config/tc-d30v.c:1915 config/tc-mips.c:4694
-#: config/tc-msp430.c:1936 config/tc-ppc.c:6102 config/tc-spu.c:957
-#: config/tc-spu.c:981 config/tc-v850.c:3084 config/tc-xstormy16.c:483
-#: config/tc-xtensa.c:5833 config/tc-xtensa.c:11830
+#: cgen.c:886 config/tc-arc.c:1249 config/tc-arm.c:1649 config/tc-arm.c:9195
+#: config/tc-arm.c:9247 config/tc-arm.c:9494 config/tc-arm.c:10301
+#: config/tc-arm.c:11396 config/tc-arm.c:11436 config/tc-arm.c:11776
+#: config/tc-arm.c:11815 config/tc-avr.c:1165 config/tc-cris.c:4047
+#: config/tc-d10v.c:1511 config/tc-d30v.c:1915 config/tc-mips.c:5697
+#: config/tc-msp430.c:1936 config/tc-ppc.c:6072 config/tc-spu.c:957
+#: config/tc-spu.c:981 config/tc-tilegx.c:1421 config/tc-tilepro.c:1268
+#: config/tc-v850.c:3084 config/tc-xstormy16.c:483 config/tc-xtensa.c:5833
+#: config/tc-xtensa.c:11830
msgid "expression too complex"
msgstr ""
-#: cgen.c:982 config/tc-arc.c:1310 config/tc-ppc.c:6227 config/tc-s390.c:2135
+#: cgen.c:982 config/tc-arc.c:1310 config/tc-ppc.c:6197 config/tc-s390.c:2135
#: config/tc-v850.c:3131 config/tc-xstormy16.c:537
msgid "unresolved expression that must be resolved"
msgstr ""
@@ -532,7 +533,7 @@ msgstr ""
msgid "internal error: can't install fix for reloc type %d (`%s')"
msgstr ""
-#: cgen.c:1037
+#: cgen.c:1060
msgid "relocation is not supported"
msgstr ""
@@ -612,7 +613,7 @@ msgstr ""
msgid "Infinities are not supported by this target\n"
msgstr ""
-#: config/atof-ieee.c:784 config/atof-vax.c:450 config/tc-arm.c:1036
+#: config/atof-ieee.c:784 config/atof-vax.c:450 config/tc-arm.c:1040
#: config/tc-ia64.c:11435 config/tc-tic30.c:1259 config/tc-tic4x.c:2598
msgid "Unrecognized or unsupported floating point constant"
msgstr ""
@@ -637,8 +638,8 @@ msgstr ""
msgid "Inserting \"%s\" into structure table failed: %s"
msgstr ""
-#: config/obj-coff.c:219 config/obj-coff.c:1695 config/tc-ppc.c:5147
-#: config/tc-tic54x.c:4008 read.c:2795
+#: config/obj-coff.c:219 config/obj-coff.c:1701 config/obj-macho.c:202
+#: config/tc-ppc.c:5147 config/tc-tic54x.c:4008 read.c:2795
#, c-format
msgid "error setting flags for \"%s\": %s"
msgstr ""
@@ -732,22 +733,22 @@ msgstr ""
#. STYP_INFO
#. STYP_LIB
#. STYP_OVER
-#: config/obj-coff.c:1661
+#: config/obj-coff.c:1667
#, c-format
msgid "unsupported section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1665 config/tc-ppc.c:5129
+#: config/obj-coff.c:1671 config/tc-ppc.c:5129
#, c-format
msgid "unknown section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1707
+#: config/obj-coff.c:1713 config/obj-macho.c:216
#, c-format
msgid "Ignoring changed section attributes for %s"
msgstr ""
-#: config/obj-coff.c:1847
+#: config/obj-coff.c:1853
#, c-format
msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
msgstr ""
@@ -760,7 +761,7 @@ msgstr ""
msgid "Can't set register masks"
msgstr ""
-#: config/obj-elf.c:334 config/tc-sparc.c:3949 config/tc-v850.c:503
+#: config/obj-elf.c:334 config/tc-sparc.c:4092 config/tc-v850.c:503
#, c-format
msgid "bad .common segment %s"
msgstr ""
@@ -815,130 +816,173 @@ msgstr ""
msgid "missing name"
msgstr ""
-#: config/obj-elf.c:1032
+#: config/obj-elf.c:1030
msgid "invalid merge entity size"
msgstr ""
-#: config/obj-elf.c:1039
+#: config/obj-elf.c:1037
msgid "entity size for SHF_MERGE not specified"
msgstr ""
-#: config/obj-elf.c:1045
+#: config/obj-elf.c:1043
msgid "? section flag ignored with G present"
msgstr ""
-#: config/obj-elf.c:1064
+#: config/obj-elf.c:1062
msgid "group name for SHF_GROUP not specified"
msgstr ""
-#: config/obj-elf.c:1087
+#: config/obj-elf.c:1085
msgid "character following name is not '#'"
msgstr ""
-#: config/obj-elf.c:1207
+#: config/obj-elf.c:1204
msgid ".previous without corresponding .section; ignored"
msgstr ""
-#: config/obj-elf.c:1233
+#: config/obj-elf.c:1230
msgid ".popsection without corresponding .pushsection; ignored"
msgstr ""
-#: config/obj-elf.c:1279
+#: config/obj-elf.c:1276
msgid "expected comma after name in .symver"
msgstr ""
-#: config/obj-elf.c:1303
+#: config/obj-elf.c:1300
#, c-format
msgid "missing version name in `%s' for symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1314
+#: config/obj-elf.c:1311
#, c-format
msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1351
+#: config/obj-elf.c:1348
#, c-format
msgid "expected `%s' to have already been set for .vtable_inherit"
msgstr ""
-#: config/obj-elf.c:1361
+#: config/obj-elf.c:1358
msgid "expected comma after name in .vtable_inherit"
msgstr ""
-#: config/obj-elf.c:1414
+#: config/obj-elf.c:1411
msgid "expected comma after name in .vtable_entry"
msgstr ""
-#: config/obj-elf.c:1537
+#: config/obj-elf.c:1534
msgid "expected quoted string"
msgstr ""
-#: config/obj-elf.c:1557
+#: config/obj-elf.c:1554
#, c-format
msgid "expected comma after name `%s' in .size directive"
msgstr ""
-#: config/obj-elf.c:1566
+#: config/obj-elf.c:1563
msgid "missing expression in .size directive"
msgstr ""
-#: config/obj-elf.c:1690
+#: config/obj-elf.c:1687
#, c-format
msgid "symbol '%s' is already defined"
msgstr ""
-#: config/obj-elf.c:1710 config/obj-elf.c:1722
+#: config/obj-elf.c:1707 config/obj-elf.c:1719
#, c-format
msgid "symbol type \"%s\" is supported only by GNU targets"
msgstr ""
-#: config/obj-elf.c:1733
+#: config/obj-elf.c:1730
#, c-format
msgid "unrecognized symbol type \"%s\""
msgstr ""
-#: config/obj-elf.c:1903 config/obj-elf.c:1906
+#: config/obj-elf.c:1900 config/obj-elf.c:1903
#, c-format
msgid ".size expression for %s does not evaluate to a constant"
msgstr ""
-#: config/obj-elf.c:1938
+#: config/obj-elf.c:1935
#, c-format
msgid ""
"invalid attempt to declare external version name as default in symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1999 ecoff.c:3608
+#: config/obj-elf.c:1996 ecoff.c:3608
#, c-format
msgid "symbol `%s' can not be both weak and common"
msgstr ""
-#: config/obj-elf.c:2116
+#: config/obj-elf.c:2113
#, c-format
msgid "assuming all members of group `%s' are COMDAT"
msgstr ""
-#: config/obj-elf.c:2128
+#: config/obj-elf.c:2125
#, c-format
msgid "can't create group: %s"
msgstr ""
-#: config/obj-elf.c:2267
+#: config/obj-elf.c:2264
#, c-format
msgid "failed to set up debugging information: %s"
msgstr ""
-#: config/obj-elf.c:2287
+#: config/obj-elf.c:2284
#, c-format
msgid "can't start writing .mdebug section: %s"
msgstr ""
-#: config/obj-elf.c:2295
+#: config/obj-elf.c:2292
#, c-format
msgid "could not write .mdebug section: %s"
msgstr ""
+#: config/obj-evax.c:129
+#, c-format
+msgid "no entry symbol for global function '%s'"
+msgstr ""
+
+#: config/obj-macho.c:77
+msgid "missing segment name"
+msgstr ""
+
+#: config/obj-macho.c:89
+msgid "missing comma after segment name"
+msgstr ""
+
+#: config/obj-macho.c:98
+msgid "missing section name"
+msgstr ""
+
+#: config/obj-macho.c:114
+msgid "missing section type name"
+msgstr ""
+
+#: config/obj-macho.c:124
+#, c-format
+msgid "unknown or invalid section type '%s'"
+msgstr ""
+
+#: config/obj-macho.c:140
+msgid "missing section attribute identifier"
+msgstr ""
+
+#: config/obj-macho.c:149
+#, c-format
+msgid "unknown or invalid section attribute '%s'"
+msgstr ""
+
+#: config/obj-macho.c:161
+msgid "unexpected sizeof_stub expression"
+msgstr ""
+
+#: config/obj-macho.c:166
+msgid "missing sizeof_stub expression"
+msgstr ""
+
#: config/obj-som.c:58
msgid "Only one .compiler pseudo-op per file!"
msgstr ""
@@ -978,247 +1022,248 @@ msgstr ""
msgid "attaching copyright header %s: %s"
msgstr ""
-#: config/tc-alpha.c:656
+#: config/tc-alpha.c:655
#, c-format
msgid "No !literal!%ld was found"
msgstr ""
-#: config/tc-alpha.c:663
+#: config/tc-alpha.c:662
#, c-format
msgid "No !tlsgd!%ld was found"
msgstr ""
-#: config/tc-alpha.c:670
+#: config/tc-alpha.c:669
#, c-format
msgid "No !tlsldm!%ld was found"
msgstr ""
-#: config/tc-alpha.c:679
+#: config/tc-alpha.c:678
#, c-format
msgid "No ldah !gpdisp!%ld was found"
msgstr ""
-#: config/tc-alpha.c:729
+#: config/tc-alpha.c:728
#, c-format
msgid "too many !literal!%ld for %s"
msgstr ""
-#: config/tc-alpha.c:759
+#: config/tc-alpha.c:758
#, c-format
msgid "No lda !gpdisp!%ld was found"
msgstr ""
#. Only support one relocation op per insn.
-#: config/tc-alpha.c:918
+#: config/tc-alpha.c:917
msgid "More than one relocation op per insn"
msgstr ""
-#: config/tc-alpha.c:934
+#: config/tc-alpha.c:933
msgid "No relocation operand"
msgstr ""
-#: config/tc-alpha.c:944
+#: config/tc-alpha.c:943
#, c-format
msgid "Unknown relocation operand: !%s"
msgstr ""
-#: config/tc-alpha.c:954
+#: config/tc-alpha.c:953
#, c-format
msgid "no sequence number after !%s"
msgstr ""
-#: config/tc-alpha.c:964
+#: config/tc-alpha.c:963
#, c-format
msgid "!%s does not use a sequence number"
msgstr ""
-#: config/tc-alpha.c:974
+#: config/tc-alpha.c:973
#, c-format
msgid "Bad sequence number: !%s!%s"
msgstr ""
-#: config/tc-alpha.c:1189 config/tc-alpha.c:3364
+#: config/tc-alpha.c:1188 config/tc-alpha.c:3361
#, c-format
msgid "inappropriate arguments for opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:1191 config/tc-alpha.c:3366
+#: config/tc-alpha.c:1190 config/tc-alpha.c:3363
#, c-format
msgid "opcode `%s' not supported for target %s"
msgstr ""
-#: config/tc-alpha.c:1195 config/tc-alpha.c:3370 config/tc-avr.c:1441
+#: config/tc-alpha.c:1194 config/tc-alpha.c:3367 config/tc-avr.c:1441
#: config/tc-msp430.c:1828
#, c-format
msgid "unknown opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:1276 config/tc-alpha.c:1537
+#: config/tc-alpha.c:1275 config/tc-alpha.c:1534
msgid "overflow in literal (.lita) table"
msgstr ""
-#: config/tc-alpha.c:1283 config/tc-alpha.c:1307 config/tc-alpha.c:1550
-#: config/tc-alpha.c:2237 config/tc-alpha.c:2282 config/tc-alpha.c:2351
-#: config/tc-alpha.c:2434 config/tc-alpha.c:2659 config/tc-alpha.c:2757
+#: config/tc-alpha.c:1282 config/tc-alpha.c:1306 config/tc-alpha.c:1547
+#: config/tc-alpha.c:2234 config/tc-alpha.c:2279 config/tc-alpha.c:2348
+#: config/tc-alpha.c:2431 config/tc-alpha.c:2656 config/tc-alpha.c:2754
msgid "macro requires $at register while noat in effect"
msgstr ""
-#: config/tc-alpha.c:1285 config/tc-alpha.c:1309 config/tc-alpha.c:1552
+#: config/tc-alpha.c:1284 config/tc-alpha.c:1308 config/tc-alpha.c:1549
msgid "macro requires $at while $at in use"
msgstr ""
-#: config/tc-alpha.c:1495
+#: config/tc-alpha.c:1493
msgid "bignum invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:1497
+#: config/tc-alpha.c:1495
msgid "floating point number invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:1502
+#: config/tc-alpha.c:1500
msgid "can't handle expression"
msgstr ""
-#: config/tc-alpha.c:1543
+#: config/tc-alpha.c:1540
msgid "overflow in literal (.lit8) table"
msgstr ""
-#: config/tc-alpha.c:1840
+#: config/tc-alpha.c:1837
#, c-format
msgid "too many ldah insns for !gpdisp!%ld"
msgstr ""
-#: config/tc-alpha.c:1842 config/tc-alpha.c:1854
+#: config/tc-alpha.c:1839 config/tc-alpha.c:1851
#, c-format
msgid "both insns for !gpdisp!%ld must be in the same section"
msgstr ""
-#: config/tc-alpha.c:1852
+#: config/tc-alpha.c:1849
#, c-format
msgid "too many lda insns for !gpdisp!%ld"
msgstr ""
-#: config/tc-alpha.c:1908
+#: config/tc-alpha.c:1905
#, c-format
msgid "too many lituse insns for !lituse_tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:1911
+#: config/tc-alpha.c:1908
#, c-format
msgid "too many lituse insns for !lituse_tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1928
+#: config/tc-alpha.c:1925
#, c-format
msgid "duplicate !tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:1930
+#: config/tc-alpha.c:1927
#, c-format
msgid "sequence number in use for !tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1944
+#: config/tc-alpha.c:1941
#, c-format
msgid "duplicate !tlsldm!%ld"
msgstr ""
-#: config/tc-alpha.c:1946
+#: config/tc-alpha.c:1943
#, c-format
msgid "sequence number in use for !tlsgd!%ld"
msgstr ""
-#: config/tc-alpha.c:2001 config/tc-arc.c:292 config/tc-mn10200.c:856
+#: config/tc-alpha.c:1998 config/tc-arc.c:292 config/tc-mn10200.c:857
#: config/tc-mn10300.c:1148 config/tc-ppc.c:1730 config/tc-s390.c:638
+#: config/tc-tilegx.c:408 config/tc-tilegx.c:471 config/tc-tilepro.c:369
msgid "operand"
msgstr ""
-#: config/tc-alpha.c:2140
+#: config/tc-alpha.c:2137
msgid "invalid relocation for instruction"
msgstr ""
-#: config/tc-alpha.c:2154
+#: config/tc-alpha.c:2151
msgid "invalid relocation for field"
msgstr ""
-#: config/tc-alpha.c:2985
+#: config/tc-alpha.c:2982
msgid "can not resolve expression"
msgstr ""
-#: config/tc-alpha.c:3524 config/tc-i370.c:1055 config/tc-microblaze.c:185
+#: config/tc-alpha.c:3516 config/tc-i370.c:1055 config/tc-microblaze.c:185
#: config/tc-ppc.c:2055 config/tc-ppc.c:4892
#, c-format
msgid ".COMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-alpha.c:3535 config/tc-sparc.c:3820 config/tc-v850.c:298
+#: config/tc-alpha.c:3527 config/tc-sparc.c:3963 config/tc-v850.c:298
msgid "Ignoring attempt to re-define symbol"
msgstr ""
-#: config/tc-alpha.c:3627 config/tc-ppc.c:4929 config/tc-sparc.c:3828
+#: config/tc-alpha.c:3619 config/tc-ppc.c:4929 config/tc-sparc.c:3971
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-alpha.c:3730 ecoff.c:3064
+#: config/tc-alpha.c:3722 ecoff.c:3064
msgid ".ent directive has no name"
msgstr ""
-#: config/tc-alpha.c:3738
+#: config/tc-alpha.c:3730
msgid "nested .ent directives"
msgstr ""
-#: config/tc-alpha.c:3783 ecoff.c:3015
+#: config/tc-alpha.c:3775 ecoff.c:3015
msgid ".end directive has no name"
msgstr ""
-#: config/tc-alpha.c:3792
+#: config/tc-alpha.c:3784
msgid ".end directive without matching .ent"
msgstr ""
-#: config/tc-alpha.c:3794
+#: config/tc-alpha.c:3786
msgid ".end directive names different symbol than .ent"
msgstr ""
-#: config/tc-alpha.c:3837 ecoff.c:3150
+#: config/tc-alpha.c:3829 ecoff.c:3150
msgid ".fmask outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3839 config/tc-score.c:5601 ecoff.c:3214
+#: config/tc-alpha.c:3831 config/tc-score.c:5598 ecoff.c:3214
msgid ".mask outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3847 ecoff.c:3157
+#: config/tc-alpha.c:3839 ecoff.c:3157
msgid "bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:3849 ecoff.c:3221
+#: config/tc-alpha.c:3841 ecoff.c:3221
msgid "bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:3882 config/tc-mips.c:15469 config/tc-score.c:5743
+#: config/tc-alpha.c:3874 config/tc-mips.c:18816 config/tc-score.c:5740
#: ecoff.c:3178
msgid ".frame outside of .ent"
msgstr ""
-#: config/tc-alpha.c:3893 ecoff.c:3189
+#: config/tc-alpha.c:3885 ecoff.c:3189
msgid "bad .frame directive"
msgstr ""
-#: config/tc-alpha.c:3927
+#: config/tc-alpha.c:3919
msgid ".prologue directive without a preceding .ent directive"
msgstr ""
-#: config/tc-alpha.c:3945
+#: config/tc-alpha.c:3937
#, c-format
msgid "Invalid argument %d to .prologue."
msgstr ""
-#: config/tc-alpha.c:4036
+#: config/tc-alpha.c:4028
msgid "ECOFF debugging is disabled."
msgstr ""
-#: config/tc-alpha.c:4050
+#: config/tc-alpha.c:4042
msgid ".ent directive without matching .end"
msgstr ""
@@ -1239,126 +1284,134 @@ msgstr ""
msgid "unknown section attribute %s"
msgstr ""
-#: config/tc-alpha.c:4389
+#: config/tc-alpha.c:4370
+msgid "previous .ent not closed by a .end"
+msgstr ""
+
+#: config/tc-alpha.c:4391
msgid ".ent directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4418
+#: config/tc-alpha.c:4416
msgid ".handler directive has no name"
msgstr ""
-#: config/tc-alpha.c:4447
+#: config/tc-alpha.c:4445
msgid "Bad .frame directive 1./2. param"
msgstr ""
-#: config/tc-alpha.c:4459
+#: config/tc-alpha.c:4457
msgid "Bad .frame directive 3./4. param"
msgstr ""
-#: config/tc-alpha.c:4497
+#: config/tc-alpha.c:4494
msgid ".pdesc directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4505
+#: config/tc-alpha.c:4501
msgid ".pdesc directive has no entry symbol"
msgstr ""
+#: config/tc-alpha.c:4512
+msgid ".pdesc has a bad entry symbol"
+msgstr ""
+
#: config/tc-alpha.c:4523
-msgid ".pdesc has no matching .ent"
+msgid ".pdesc doesn't match with last .ent"
msgstr ""
-#: config/tc-alpha.c:4541
+#: config/tc-alpha.c:4538
msgid "No comma after .pdesc <entryname>"
msgstr ""
-#: config/tc-alpha.c:4561
+#: config/tc-alpha.c:4558
msgid "unknown procedure kind"
msgstr ""
-#: config/tc-alpha.c:4673
+#: config/tc-alpha.c:4653
msgid ".name directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4681
+#: config/tc-alpha.c:4661
msgid ".name directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4716
+#: config/tc-alpha.c:4695
msgid "No symbol after .linkage"
msgstr ""
-#: config/tc-alpha.c:4769
+#: config/tc-alpha.c:4743
msgid "No symbol after .code_address"
msgstr ""
-#: config/tc-alpha.c:4796 config/tc-score.c:5607
+#: config/tc-alpha.c:4769 config/tc-score.c:5604
msgid "Bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:4814
+#: config/tc-alpha.c:4787
msgid "Bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:4971
+#: config/tc-alpha.c:4944
#, c-format
msgid "Expected comma after name \"%s\""
msgstr ""
-#: config/tc-alpha.c:4983
+#: config/tc-alpha.c:4956
#, c-format
msgid "unhandled: .proc %s,%d"
msgstr ""
-#: config/tc-alpha.c:5017
+#: config/tc-alpha.c:4990
#, c-format
msgid "Tried to .set unrecognized mode `%s'"
msgstr ""
-#: config/tc-alpha.c:5043
+#: config/tc-alpha.c:5016
#, c-format
msgid "Bad base register, using $%d."
msgstr ""
-#: config/tc-alpha.c:5064
+#: config/tc-alpha.c:5037
#, c-format
msgid "Alignment too large: %d. assumed"
msgstr ""
-#: config/tc-alpha.c:5068 config/tc-d30v.c:2060
+#: config/tc-alpha.c:5041 config/tc-d30v.c:2060
msgid "Alignment negative: 0 assumed"
msgstr ""
-#: config/tc-alpha.c:5163 config/tc-alpha.c:5656
+#: config/tc-alpha.c:5136 config/tc-alpha.c:5628
#, c-format
msgid "Unknown CPU identifier `%s'"
msgstr ""
-#: config/tc-alpha.c:5354
+#: config/tc-alpha.c:5327
#, c-format
msgid "Chose GP value of %lx\n"
msgstr ""
-#: config/tc-alpha.c:5368
+#: config/tc-alpha.c:5341
msgid "bad .section directive: want a,s,w,x,M,S,G,T in string"
msgstr ""
-#: config/tc-alpha.c:5457
+#: config/tc-alpha.c:5430
#, c-format
msgid "internal error: can't hash opcode `%s': %s"
msgstr ""
-#: config/tc-alpha.c:5493
+#: config/tc-alpha.c:5466
#, c-format
msgid "internal error: can't hash macro `%s': %s"
msgstr ""
-#: config/tc-alpha.c:5578 config/tc-arm.c:6746 config/tc-arm.c:6758
+#: config/tc-alpha.c:5550 config/tc-arm.c:6818 config/tc-arm.c:6830
#: config/tc-i960.c:708 config/tc-xtensa.c:5315 config/tc-xtensa.c:5393
#: config/tc-xtensa.c:5510 config/tc-z80.c:1897
msgid "syntax error"
msgstr ""
-#: config/tc-alpha.c:5707
+#: config/tc-alpha.c:5679
msgid ""
"Alpha options:\n"
"-32addr\t\t\ttreat addresses as 32-bit values\n"
@@ -1370,7 +1423,7 @@ msgid ""
"\t\t\tthese variants include PALcode opcodes\n"
msgstr ""
-#: config/tc-alpha.c:5717
+#: config/tc-alpha.c:5689
msgid ""
"VMS options:\n"
"-+\t\t\tencode (don't truncate) names longer than 64 characters\n"
@@ -1378,40 +1431,42 @@ msgid ""
"-replace/-noreplace\tenable or disable the optimization of procedure calls\n"
msgstr ""
-#: config/tc-alpha.c:5968
+#: config/tc-alpha.c:5940
#, c-format
msgid "unhandled relocation type %s"
msgstr ""
-#: config/tc-alpha.c:5981
+#: config/tc-alpha.c:5953
msgid "non-absolute expression in constant field"
msgstr ""
-#: config/tc-alpha.c:5995
+#: config/tc-alpha.c:5967
#, c-format
msgid "type %d reloc done?\n"
msgstr ""
-#: config/tc-alpha.c:6042 config/tc-alpha.c:6049 config/tc-mips.c:9793
+#: config/tc-alpha.c:6014 config/tc-alpha.c:6021 config/tc-mips.c:11711
+#: config/tc-mips.c:12396
msgid "Used $at without \".set noat\""
msgstr ""
-#: config/tc-alpha.c:6218
+#: config/tc-alpha.c:6190
#, c-format
msgid "!samegp reloc against symbol without .prologue: %s"
msgstr ""
-#: config/tc-alpha.c:6262 config/tc-xtensa.c:5999
+#: config/tc-alpha.c:6234 config/tc-tilegx.c:1700 config/tc-tilepro.c:1499
+#: config/tc-xtensa.c:5999
#, c-format
msgid "cannot represent `%s' relocation in object file"
msgstr ""
-#: config/tc-alpha.c:6268
+#: config/tc-alpha.c:6240
#, c-format
msgid "internal error? cannot generate `%s' relocation"
msgstr ""
-#: config/tc-alpha.c:6364
+#: config/tc-alpha.c:6339
#, c-format
msgid "frame reg expected, using $%d."
msgstr ""
@@ -1427,8 +1482,8 @@ msgstr ""
msgid "could not set architecture and machine"
msgstr ""
-#: config/tc-arc.c:212 config/tc-arm.c:22240 config/tc-score.c:6303
-#: config/tc-score.c:6532 config/tc-score.c:6537
+#: config/tc-arc.c:212 config/tc-arm.c:22402 config/tc-score.c:6299
+#: config/tc-score.c:6528 config/tc-score.c:6533
msgid "virtual memory exhausted"
msgstr ""
@@ -1569,7 +1624,7 @@ msgid "missing ')' in %%-op"
msgstr ""
#: config/tc-arc.c:1364 config/tc-dlx.c:1201 config/tc-i960.c:2639
-#: config/tc-m32r.c:2281 config/tc-sparc.c:3508
+#: config/tc-m32r.c:2281 config/tc-sparc.c:3651
#, c-format
msgid "internal error: can't export reloc type %d (`%s')"
msgstr ""
@@ -1588,7 +1643,7 @@ msgid "symbol as destination register"
msgstr ""
#. xgettext:c-format.
-#: config/tc-arc.c:1759 config/tc-i370.c:2207 config/tc-mn10200.c:1141
+#: config/tc-arc.c:1759 config/tc-i370.c:2207 config/tc-mn10200.c:1142
#: config/tc-mn10300.c:1820 config/tc-ppc.c:2970 config/tc-s390.c:1506
#: config/tc-v850.c:2699
#, c-format
@@ -1608,7 +1663,7 @@ msgstr ""
msgid "conditional branch follows set of flags"
msgstr ""
-#: config/tc-arc.c:1893 config/tc-arm.c:16170
+#: config/tc-arc.c:1893 config/tc-arm.c:16330
#, c-format
msgid "bad instruction `%s'"
msgstr ""
@@ -1685,7 +1740,7 @@ msgstr ""
msgid "iWMMXt data register expected"
msgstr ""
-#: config/tc-arm.c:557 config/tc-arm.c:6525
+#: config/tc-arm.c:557 config/tc-arm.c:6597
msgid "iWMMXt control register expected"
msgstr ""
@@ -1766,1809 +1821,1841 @@ msgstr ""
msgid "cannot use writeback with PC-relative addressing"
msgstr ""
-#: config/tc-arm.c:917
+#: config/tc-arm.c:727
+msgid "branch out of range"
+msgstr ""
+
+#: config/tc-arm.c:921
msgid "immediate expression requires a # prefix"
msgstr ""
-#: config/tc-arm.c:945 read.c:3664
+#: config/tc-arm.c:949 read.c:3663
msgid "missing expression"
msgstr ""
-#: config/tc-arm.c:945 config/tc-score.c:6519 expr.c:1357 read.c:2456
+#: config/tc-arm.c:949 config/tc-score.c:6515 expr.c:1357 read.c:2456
msgid "bad expression"
msgstr ""
-#: config/tc-arm.c:956 config/tc-i860.c:1004 config/tc-sparc.c:2880
+#: config/tc-arm.c:960 config/tc-i860.c:1004 config/tc-sparc.c:3023
msgid "bad segment"
msgstr ""
-#: config/tc-arm.c:975 config/tc-arm.c:4848 config/tc-i960.c:1300
-#: config/tc-score.c:1211
+#: config/tc-arm.c:979 config/tc-arm.c:4883 config/tc-i960.c:1300
+#: config/tc-score.c:1210
msgid "invalid constant"
msgstr ""
-#: config/tc-arm.c:1105
+#: config/tc-arm.c:1109
msgid "expected #constant"
msgstr ""
-#: config/tc-arm.c:1266
+#: config/tc-arm.c:1270
#, c-format
msgid "unexpected character `%c' in type specifier"
msgstr ""
-#: config/tc-arm.c:1283
+#: config/tc-arm.c:1287
#, c-format
msgid "bad size %d in type specifier"
msgstr ""
-#: config/tc-arm.c:1333
+#: config/tc-arm.c:1337
msgid "only one type should be specified for operand"
msgstr ""
-#: config/tc-arm.c:1339
+#: config/tc-arm.c:1343
msgid "vector type expected"
msgstr ""
-#: config/tc-arm.c:1411
+#: config/tc-arm.c:1415
msgid "can't redefine type for operand"
msgstr ""
-#: config/tc-arm.c:1422
+#: config/tc-arm.c:1426
msgid "only D registers may be indexed"
msgstr ""
-#: config/tc-arm.c:1428
+#: config/tc-arm.c:1432
msgid "can't change index for operand"
msgstr ""
-#: config/tc-arm.c:1444 config/tc-arm.c:3332 config/tc-arm.c:4430
+#: config/tc-arm.c:1448 config/tc-arm.c:3367 config/tc-arm.c:4465
msgid "constant expression required"
msgstr ""
-#: config/tc-arm.c:1491
+#: config/tc-arm.c:1495
msgid "register operand expected, but got scalar"
msgstr ""
-#: config/tc-arm.c:1524
+#: config/tc-arm.c:1528
msgid "scalar must have an index"
msgstr ""
-#: config/tc-arm.c:1529 config/tc-arm.c:14756 config/tc-arm.c:14806
-#: config/tc-arm.c:15221
+#: config/tc-arm.c:1533 config/tc-arm.c:14916 config/tc-arm.c:14966
+#: config/tc-arm.c:15381
msgid "scalar index out of range"
msgstr ""
-#: config/tc-arm.c:1577
+#: config/tc-arm.c:1581
msgid "bad range in register list"
msgstr ""
-#: config/tc-arm.c:1585 config/tc-arm.c:1594 config/tc-arm.c:1635
+#: config/tc-arm.c:1589 config/tc-arm.c:1598 config/tc-arm.c:1639
#, c-format
msgid "Warning: duplicated register (r%d) in register list"
msgstr ""
-#: config/tc-arm.c:1597
+#: config/tc-arm.c:1601
msgid "Warning: register range not in ascending order"
msgstr ""
-#: config/tc-arm.c:1608
+#: config/tc-arm.c:1612
msgid "missing `}'"
msgstr ""
-#: config/tc-arm.c:1624
+#: config/tc-arm.c:1628
msgid "invalid register mask"
msgstr ""
-#: config/tc-arm.c:1706
+#: config/tc-arm.c:1710
msgid "expecting {"
msgstr ""
-#: config/tc-arm.c:1761 config/tc-arm.c:1805
+#: config/tc-arm.c:1765 config/tc-arm.c:1809
msgid "register out of range in list"
msgstr ""
-#: config/tc-arm.c:1777 config/tc-arm.c:1822 config/tc-h8300.c:1040
-#: config/tc-mips.c:10894 config/tc-mips.c:10916
+#: config/tc-arm.c:1781 config/tc-arm.c:1826 config/tc-h8300.c:1040
+#: config/tc-mips.c:13602 config/tc-mips.c:13624
msgid "invalid register list"
msgstr ""
-#: config/tc-arm.c:1783 config/tc-arm.c:3846 config/tc-arm.c:3979
+#: config/tc-arm.c:1787 config/tc-arm.c:3881 config/tc-arm.c:4014
msgid "register list not in ascending order"
msgstr ""
-#: config/tc-arm.c:1814
+#: config/tc-arm.c:1818
msgid "register range not in ascending order"
msgstr ""
-#: config/tc-arm.c:1847
+#: config/tc-arm.c:1851
msgid "non-contiguous register range"
msgstr ""
-#: config/tc-arm.c:1906
+#: config/tc-arm.c:1910
msgid "register stride must be 1 or 2"
msgstr ""
-#: config/tc-arm.c:1907
+#: config/tc-arm.c:1911
msgid "mismatched element/structure types in list"
msgstr ""
-#: config/tc-arm.c:1971
+#: config/tc-arm.c:1975
msgid "don't use Rn-Rm syntax with non-unit stride"
msgstr ""
-#: config/tc-arm.c:2026
+#: config/tc-arm.c:2030
msgid "error parsing element/structure list"
msgstr ""
-#: config/tc-arm.c:2032
+#: config/tc-arm.c:2036
msgid "expected }"
msgstr ""
-#: config/tc-arm.c:2089
+#: config/tc-arm.c:2093
#, c-format
msgid "ignoring attempt to redefine built-in register '%s'"
msgstr ""
-#: config/tc-arm.c:2094
+#: config/tc-arm.c:2098
#, c-format
msgid "ignoring redefinition of register alias '%s'"
msgstr ""
-#: config/tc-arm.c:2122
+#: config/tc-arm.c:2126
msgid "attempt to redefine typed alias"
msgstr ""
-#: config/tc-arm.c:2161
+#: config/tc-arm.c:2165
#, c-format
msgid "unknown register '%s' -- .req ignored"
msgstr ""
-#: config/tc-arm.c:2256
+#: config/tc-arm.c:2260
msgid "bad type for register"
msgstr ""
-#: config/tc-arm.c:2267
+#: config/tc-arm.c:2271
msgid "expression must be constant"
msgstr ""
-#: config/tc-arm.c:2284
+#: config/tc-arm.c:2288
msgid "can't redefine the type of a register alias"
msgstr ""
-#: config/tc-arm.c:2291
+#: config/tc-arm.c:2295
msgid "you must specify a single type only"
msgstr ""
-#: config/tc-arm.c:2304
+#: config/tc-arm.c:2308
msgid "can't redefine the index of a scalar alias"
msgstr ""
-#: config/tc-arm.c:2312
+#: config/tc-arm.c:2316
msgid "scalar index must be constant"
msgstr ""
-#: config/tc-arm.c:2321
+#: config/tc-arm.c:2325
msgid "expecting ]"
msgstr ""
-#: config/tc-arm.c:2368
+#: config/tc-arm.c:2372
msgid "invalid syntax for .req directive"
msgstr ""
-#: config/tc-arm.c:2374
+#: config/tc-arm.c:2378
msgid "invalid syntax for .dn directive"
msgstr ""
-#: config/tc-arm.c:2380
+#: config/tc-arm.c:2384
msgid "invalid syntax for .qn directive"
msgstr ""
-#: config/tc-arm.c:2406
+#: config/tc-arm.c:2410
msgid "invalid syntax for .unreq directive"
msgstr ""
-#: config/tc-arm.c:2413
+#: config/tc-arm.c:2417
#, c-format
msgid "unknown register alias '%s'"
msgstr ""
-#: config/tc-arm.c:2415
+#: config/tc-arm.c:2419
#, c-format
msgid "ignoring attempt to use .unreq on fixed register name: '%s'"
msgstr ""
-#: config/tc-arm.c:2666
+#: config/tc-arm.c:2687
#, c-format
msgid "Failed to find real start of function: %s\n"
msgstr ""
-#: config/tc-arm.c:2683
+#: config/tc-arm.c:2704
msgid "selected processor does not support THUMB opcodes"
msgstr ""
-#: config/tc-arm.c:2696
+#: config/tc-arm.c:2717
msgid "selected processor does not support ARM opcodes"
msgstr ""
-#: config/tc-arm.c:2708
+#: config/tc-arm.c:2729
#, c-format
msgid "invalid instruction size selected (%d)"
msgstr ""
-#: config/tc-arm.c:2740
+#: config/tc-arm.c:2761
#, c-format
msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
msgstr ""
-#: config/tc-arm.c:2796
+#: config/tc-arm.c:2817
#, c-format
msgid "expected comma after name \"%s\""
msgstr ""
-#: config/tc-arm.c:2846 config/tc-m32r.c:588
+#: config/tc-arm.c:2867 config/tc-m32r.c:588
#, c-format
msgid "symbol `%s' already defined"
msgstr ""
-#: config/tc-arm.c:2880
+#: config/tc-arm.c:2901
#, c-format
msgid "unrecognized syntax mode \"%s\""
msgstr ""
-#: config/tc-arm.c:2901
+#: config/tc-arm.c:2922
#, c-format
msgid "alignment too large: %d assumed"
msgstr ""
-#: config/tc-arm.c:2904
+#: config/tc-arm.c:2925
msgid "alignment negative. 0 assumed."
msgstr ""
-#: config/tc-arm.c:3054
+#: config/tc-arm.c:3075
msgid "literal pool overflow"
msgstr ""
-#: config/tc-arm.c:3210 config/tc-arm.c:6460
+#: config/tc-arm.c:3245 config/tc-arm.c:6532
msgid "unrecognized relocation suffix"
msgstr ""
-#: config/tc-arm.c:3225
+#: config/tc-arm.c:3260
msgid "(plt) is only valid on branch targets"
msgstr ""
-#: config/tc-arm.c:3231 config/tc-s390.c:1134 config/tc-s390.c:1771
+#: config/tc-arm.c:3266 config/tc-s390.c:1134 config/tc-s390.c:1771
#: config/tc-xtensa.c:1591
#, c-format
msgid "%s relocations do not fit in %d bytes"
msgstr ""
-#: config/tc-arm.c:3308
+#: config/tc-arm.c:3343
msgid ".inst.n operand too big. Use .inst.w instead"
msgstr ""
-#: config/tc-arm.c:3328
+#: config/tc-arm.c:3363
msgid "cannot determine Thumb instruction size. Use .inst.n/.inst.w instead"
msgstr ""
-#: config/tc-arm.c:3358
+#: config/tc-arm.c:3393
msgid "width suffixes are invalid in ARM mode"
msgstr ""
-#: config/tc-arm.c:3400 dwarf2dbg.c:711
+#: config/tc-arm.c:3435 dwarf2dbg.c:744
msgid "expected 0 or 1"
msgstr ""
-#: config/tc-arm.c:3404
+#: config/tc-arm.c:3439
msgid "missing comma"
msgstr ""
-#: config/tc-arm.c:3437
+#: config/tc-arm.c:3472
msgid "duplicate .fnstart directive"
msgstr ""
-#: config/tc-arm.c:3468 config/tc-tic6x.c:413
+#: config/tc-arm.c:3503 config/tc-tic6x.c:413
msgid "duplicate .handlerdata directive"
msgstr ""
-#: config/tc-arm.c:3487
+#: config/tc-arm.c:3522
msgid ".fnend directive without .fnstart"
msgstr ""
-#: config/tc-arm.c:3553 config/tc-tic6x.c:394
+#: config/tc-arm.c:3588 config/tc-tic6x.c:394
msgid "personality routine specified for cantunwind frame"
msgstr ""
-#: config/tc-arm.c:3570 config/tc-tic6x.c:455
+#: config/tc-arm.c:3605 config/tc-tic6x.c:455
msgid "duplicate .personalityindex directive"
msgstr ""
-#: config/tc-arm.c:3577 config/tc-tic6x.c:462
+#: config/tc-arm.c:3612 config/tc-tic6x.c:462
msgid "bad personality routine number"
msgstr ""
-#: config/tc-arm.c:3599 config/tc-tic6x.c:479
+#: config/tc-arm.c:3634 config/tc-tic6x.c:479
msgid "duplicate .personality directive"
msgstr ""
-#: config/tc-arm.c:3622 config/tc-arm.c:3750 config/tc-arm.c:3798
+#: config/tc-arm.c:3657 config/tc-arm.c:3785 config/tc-arm.c:3833
msgid "expected register list"
msgstr ""
-#: config/tc-arm.c:3704
+#: config/tc-arm.c:3739
msgid "expected , <constant>"
msgstr ""
-#: config/tc-arm.c:3713
+#: config/tc-arm.c:3748
msgid "number of registers must be in the range [1:4]"
msgstr ""
-#: config/tc-arm.c:3860 config/tc-arm.c:3993
+#: config/tc-arm.c:3895 config/tc-arm.c:4028
msgid "bad register range"
msgstr ""
-#: config/tc-arm.c:4050
+#: config/tc-arm.c:4085
msgid "register expected"
msgstr ""
-#: config/tc-arm.c:4060
+#: config/tc-arm.c:4095
msgid "FPA .unwind_save does not take a register list"
msgstr ""
-#: config/tc-arm.c:4079
+#: config/tc-arm.c:4114
msgid ".unwind_save does not support this kind of register"
msgstr ""
-#: config/tc-arm.c:4118
+#: config/tc-arm.c:4153
msgid "SP and PC not permitted in .unwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4123
+#: config/tc-arm.c:4158
msgid "unexpected .unwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4150
+#: config/tc-arm.c:4185
msgid "stack increment must be multiple of 4"
msgstr ""
-#: config/tc-arm.c:4182
+#: config/tc-arm.c:4217
msgid "expected <reg>, <reg>"
msgstr ""
-#: config/tc-arm.c:4200
+#: config/tc-arm.c:4235
msgid "register must be either sp or set by a previousunwind_movsp directive"
msgstr ""
-#: config/tc-arm.c:4239
+#: config/tc-arm.c:4274
msgid "expected <offset>, <opcode>"
msgstr ""
-#: config/tc-arm.c:4251
+#: config/tc-arm.c:4286
msgid "unwind opcode too long"
msgstr ""
-#: config/tc-arm.c:4256
+#: config/tc-arm.c:4291
msgid "invalid unwind opcode"
msgstr ""
-#: config/tc-arm.c:4436 config/tc-arm.c:5346 config/tc-arm.c:9360
-#: config/tc-arm.c:9888 config/tc-arm.c:13218 config/tc-arm.c:21248
-#: config/tc-arm.c:21273 config/tc-arm.c:21281 config/tc-z8k.c:1144
+#: config/tc-arm.c:4471 config/tc-arm.c:5410 config/tc-arm.c:9497
+#: config/tc-arm.c:10032 config/tc-arm.c:13378 config/tc-arm.c:21410
+#: config/tc-arm.c:21435 config/tc-arm.c:21443 config/tc-z8k.c:1144
#: config/tc-z8k.c:1154
msgid "immediate value out of range"
msgstr ""
-#: config/tc-arm.c:4601
+#: config/tc-arm.c:4636
msgid "invalid FPA immediate expression"
msgstr ""
-#: config/tc-arm.c:4725 config/tc-arm.c:4734
+#: config/tc-arm.c:4760 config/tc-arm.c:4769
msgid "shift expression expected"
msgstr ""
-#: config/tc-arm.c:4748
+#: config/tc-arm.c:4783
msgid "'LSL' or 'ASR' required"
msgstr ""
-#: config/tc-arm.c:4756
+#: config/tc-arm.c:4791
msgid "'LSL' required"
msgstr ""
-#: config/tc-arm.c:4764
+#: config/tc-arm.c:4799
msgid "'ASR' required"
msgstr ""
-#: config/tc-arm.c:4836 config/tc-arm.c:5340 config/tc-arm.c:7168
+#: config/tc-arm.c:4871 config/tc-arm.c:5404 config/tc-arm.c:7259
msgid "constant expression expected"
msgstr ""
-#: config/tc-arm.c:4843
+#: config/tc-arm.c:4878
msgid "invalid rotation"
msgstr ""
-#: config/tc-arm.c:5003 config/tc-arm.c:5167
+#: config/tc-arm.c:5037 config/tc-arm.c:5201
msgid "unknown group relocation"
msgstr ""
-#: config/tc-arm.c:5039
+#: config/tc-arm.c:5073
msgid "alignment must be constant"
msgstr ""
-#: config/tc-arm.c:5198
+#: config/tc-arm.c:5232
msgid "this group relocation is not allowed on this instruction"
msgstr ""
-#: config/tc-arm.c:5219 config/tc-arm.c:5747
+#: config/tc-arm.c:5269 config/tc-arm.c:5817
msgid "']' expected"
msgstr ""
-#: config/tc-arm.c:5237
+#: config/tc-arm.c:5287
msgid "'}' expected at end of 'option' field"
msgstr ""
-#: config/tc-arm.c:5242
+#: config/tc-arm.c:5292
msgid "cannot combine index with option"
msgstr ""
-#: config/tc-arm.c:5255
+#: config/tc-arm.c:5305
msgid "cannot combine pre- and post-indexing"
msgstr ""
-#: config/tc-arm.c:5478
+#: config/tc-arm.c:5548
msgid "unexpected bit specified after APSR"
msgstr ""
-#: config/tc-arm.c:5490
+#: config/tc-arm.c:5560
msgid "selected processor does not support DSP extension"
msgstr ""
-#: config/tc-arm.c:5502
+#: config/tc-arm.c:5572
msgid "bad bitmask specified after APSR"
msgstr ""
-#: config/tc-arm.c:5526
+#: config/tc-arm.c:5596
msgid "writing to APSR without specifying a bitmask is deprecated"
msgstr ""
-#: config/tc-arm.c:5538 config/tc-arm.c:10977 config/tc-arm.c:11016
-#: config/tc-arm.c:11020
+#: config/tc-arm.c:5608 config/tc-arm.c:11125 config/tc-arm.c:11164
+#: config/tc-arm.c:11168
msgid "selected processor does not support requested special purpose register"
msgstr ""
-#: config/tc-arm.c:5543
+#: config/tc-arm.c:5613
msgid "flag for {c}psr instruction expected"
msgstr ""
-#: config/tc-arm.c:5568
+#: config/tc-arm.c:5638
msgid "unrecognized CPS flag"
msgstr ""
-#: config/tc-arm.c:5575
+#: config/tc-arm.c:5645
msgid "missing CPS flags"
msgstr ""
-#: config/tc-arm.c:5598 config/tc-arm.c:5604
+#: config/tc-arm.c:5668 config/tc-arm.c:5674
msgid "valid endian specifiers are be or le"
msgstr ""
-#: config/tc-arm.c:5626
+#: config/tc-arm.c:5696
msgid "missing rotation field after comma"
msgstr ""
-#: config/tc-arm.c:5641
+#: config/tc-arm.c:5711
msgid "rotation can only be 0, 8, 16, or 24"
msgstr ""
-#: config/tc-arm.c:5670
+#: config/tc-arm.c:5740
msgid "condition required"
msgstr ""
-#: config/tc-arm.c:5709 config/tc-arm.c:7755
+#: config/tc-arm.c:5779 config/tc-arm.c:7846
msgid "'[' expected"
msgstr ""
-#: config/tc-arm.c:5722
+#: config/tc-arm.c:5792
msgid "',' expected"
msgstr ""
-#: config/tc-arm.c:5739
+#: config/tc-arm.c:5809
msgid "invalid shift"
msgstr ""
-#: config/tc-arm.c:5812
+#: config/tc-arm.c:5882
msgid "can't use Neon quad register here"
msgstr ""
-#: config/tc-arm.c:5878
+#: config/tc-arm.c:5948
msgid "expected <Rm> or <Dm> or <Qm> operand"
msgstr ""
-#: config/tc-arm.c:5958
+#: config/tc-arm.c:6028
msgid "parse error"
msgstr ""
-#: config/tc-arm.c:5968 read.c:2127
+#: config/tc-arm.c:6038 read.c:2127
msgid "expected comma"
msgstr ""
#. ISB can only take SY as an option.
-#: config/tc-arm.c:6227
+#: config/tc-arm.c:6298
msgid "invalid barrier type"
msgstr ""
-#: config/tc-arm.c:6364
+#: config/tc-arm.c:6435
msgid "immediate value is out of range"
msgstr ""
-#: config/tc-arm.c:6510
+#: config/tc-arm.c:6582
msgid "iWMMXt data or control register expected"
msgstr ""
-#: config/tc-arm.c:6550
+#: config/tc-arm.c:6622
msgid "Banked registers are not available with this architecture."
msgstr ""
-#: config/tc-arm.c:6675
+#: config/tc-arm.c:6747
#, c-format
msgid "unhandled operand code %d"
msgstr ""
-#: config/tc-arm.c:6772 config/tc-score.c:264
+#: config/tc-arm.c:6844 config/tc-score.c:264
msgid "garbage following instruction"
msgstr ""
#. If REG is R13 (the stack pointer), warn that its use is
#. deprecated.
-#: config/tc-arm.c:6813
+#: config/tc-arm.c:6885
msgid "use of r13 is deprecated"
msgstr ""
-#: config/tc-arm.c:6883
+#: config/tc-arm.c:6955
msgid "D register out of range for selected VFP version"
msgstr ""
-#: config/tc-arm.c:6962
+#: config/tc-arm.c:7038
msgid "instruction does not accept preindexed addressing"
msgstr ""
#. unindexed - only for coprocessor
-#: config/tc-arm.c:6978 config/tc-arm.c:9153
+#: config/tc-arm.c:7054 config/tc-arm.c:9290
msgid "instruction does not accept unindexed addressing"
msgstr ""
-#: config/tc-arm.c:6986
+#: config/tc-arm.c:7062
msgid "destination register same as write-back base"
msgstr ""
-#: config/tc-arm.c:6987
+#: config/tc-arm.c:7063
msgid "source register same as write-back base"
msgstr ""
-#: config/tc-arm.c:7037
+#: config/tc-arm.c:7113
msgid "use of PC in this instruction is deprecated"
msgstr ""
-#: config/tc-arm.c:7055
+#: config/tc-arm.c:7136
msgid "instruction does not accept scaled register index"
msgstr ""
-#: config/tc-arm.c:7101
+#: config/tc-arm.c:7188
msgid "instruction does not support unindexed addressing"
msgstr ""
-#: config/tc-arm.c:7116
+#: config/tc-arm.c:7203
msgid "pc may not be used with write-back"
msgstr ""
-#: config/tc-arm.c:7121
+#: config/tc-arm.c:7208
msgid "instruction does not support writeback"
msgstr ""
-#: config/tc-arm.c:7163
+#: config/tc-arm.c:7254
msgid "invalid pseudo operation"
msgstr ""
-#: config/tc-arm.c:7209
+#: config/tc-arm.c:7300
msgid "literal pool insertion failed"
msgstr ""
-#: config/tc-arm.c:7268
+#: config/tc-arm.c:7359
msgid "Rn must not overlap other operands"
msgstr ""
-#: config/tc-arm.c:7273
+#: config/tc-arm.c:7364
msgid "swp{b} use is deprecated for this architecture"
msgstr ""
-#: config/tc-arm.c:7370 config/tc-arm.c:9720
+#: config/tc-arm.c:7461 config/tc-arm.c:9864
msgid "bad barrier type"
msgstr ""
-#: config/tc-arm.c:7381 config/tc-arm.c:7400 config/tc-arm.c:7413
-#: config/tc-arm.c:9732 config/tc-arm.c:9763 config/tc-arm.c:9785
+#: config/tc-arm.c:7472 config/tc-arm.c:7491 config/tc-arm.c:7504
+#: config/tc-arm.c:9876 config/tc-arm.c:9907 config/tc-arm.c:9929
msgid "bit-field extends past end of register"
msgstr ""
-#: config/tc-arm.c:7443
+#: config/tc-arm.c:7534
msgid "the only valid suffixes here are '(plt)' and '(tlscall)'"
msgstr ""
-#: config/tc-arm.c:7496
+#: config/tc-arm.c:7587
msgid "use of r15 in blx in ARM mode is not really useful"
msgstr ""
-#: config/tc-arm.c:7518
+#: config/tc-arm.c:7609
msgid "use of r15 in bx in ARM mode is not really useful"
msgstr ""
-#: config/tc-arm.c:7543
+#: config/tc-arm.c:7634
msgid "use of r15 in bxj is not really useful"
msgstr ""
-#: config/tc-arm.c:7722 config/tc-arm.c:7731
+#: config/tc-arm.c:7813 config/tc-arm.c:7822
msgid "writeback of base register is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:7725
+#: config/tc-arm.c:7816
msgid "writeback of base register when in register list is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:7735
+#: config/tc-arm.c:7826
msgid "if writeback register is in list, it must be the lowest reg in the list"
msgstr ""
-#: config/tc-arm.c:7750
-msgid "first destination register must be even"
+#: config/tc-arm.c:7841
+msgid "first transfer register must be even"
msgstr ""
-#: config/tc-arm.c:7753 config/tc-arm.c:7822
-msgid "can only load two consecutive registers"
+#: config/tc-arm.c:7844
+msgid "can only transfer two consecutive registers"
msgstr ""
#. If op 1 were present and equal to PC, this function wouldn't
#. have been called in the first place.
#. If op 2 were present and equal to PC, this function wouldn't
#. have been called in the first place.
-#: config/tc-arm.c:7754 config/tc-arm.c:7825 config/tc-arm.c:8423
-#: config/tc-arm.c:10504
+#: config/tc-arm.c:7845 config/tc-arm.c:7915 config/tc-arm.c:8544
+#: config/tc-arm.c:10652
msgid "r14 not allowed here"
msgstr ""
-#: config/tc-arm.c:7768
-msgid "base register written back, and overlaps second destination register"
+#: config/tc-arm.c:7857
+msgid "base register written back, and overlaps second transfer register"
msgstr ""
-#: config/tc-arm.c:7776
-msgid "index register overlaps destination register"
+#: config/tc-arm.c:7867
+msgid "index register overlaps transfer register"
msgstr ""
-#: config/tc-arm.c:7806 config/tc-arm.c:8405
+#: config/tc-arm.c:7896 config/tc-arm.c:8511
msgid "offset must be zero in ARM encoding"
msgstr ""
-#: config/tc-arm.c:7819 config/tc-arm.c:8417
+#: config/tc-arm.c:7909 config/tc-arm.c:8538
msgid "even register required"
msgstr ""
-#: config/tc-arm.c:7850 config/tc-arm.c:7882
+#: config/tc-arm.c:7912
+msgid "can only load two consecutive registers"
+msgstr ""
+
+#: config/tc-arm.c:7930
+msgid "ldr to register 15 must be 4-byte alligned"
+msgstr ""
+
+#: config/tc-arm.c:7953 config/tc-arm.c:7985
msgid "this instruction requires a post-indexed address"
msgstr ""
-#: config/tc-arm.c:7909
+#: config/tc-arm.c:8012
msgid "Rd and Rm should be different in mla"
msgstr ""
-#: config/tc-arm.c:7933 config/tc-arm.c:10848
+#: config/tc-arm.c:8036 config/tc-arm.c:10996
msgid ":lower16: not allowed this instruction"
msgstr ""
-#: config/tc-arm.c:7935
+#: config/tc-arm.c:8038
msgid ":upper16: not allowed instruction"
msgstr ""
-#: config/tc-arm.c:7954 config/tc-arm.c:7997
+#: config/tc-arm.c:8057 config/tc-arm.c:8100
msgid "operand 1 must be FPSCR"
msgstr ""
-#: config/tc-arm.c:8016
+#: config/tc-arm.c:8119
msgid "operand 0 must be FPSCR"
msgstr ""
-#: config/tc-arm.c:8036 config/tc-arm.c:10966
+#: config/tc-arm.c:8139 config/tc-arm.c:11114
msgid "bad register for mrs"
msgstr ""
-#: config/tc-arm.c:8043 config/tc-arm.c:10983
+#: config/tc-arm.c:8146 config/tc-arm.c:11131
msgid "'APSR', 'CPSR' or 'SPSR' expected"
msgstr ""
-#: config/tc-arm.c:8084
+#: config/tc-arm.c:8187
msgid "Rd and Rm should be different in mul"
msgstr ""
-#: config/tc-arm.c:8103 config/tc-arm.c:8350 config/tc-arm.c:11117
+#: config/tc-arm.c:8206 config/tc-arm.c:8456 config/tc-arm.c:11265
msgid "rdhi and rdlo must be different"
msgstr ""
-#: config/tc-arm.c:8109
+#: config/tc-arm.c:8212
msgid "rdhi, rdlo and rm must all be different"
msgstr ""
-#: config/tc-arm.c:8175
+#: config/tc-arm.c:8278
msgid "'[' expected after PLD mnemonic"
msgstr ""
-#: config/tc-arm.c:8177 config/tc-arm.c:8192
+#: config/tc-arm.c:8280 config/tc-arm.c:8295
msgid "post-indexed expression used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8179 config/tc-arm.c:8194
+#: config/tc-arm.c:8282 config/tc-arm.c:8297
msgid "writeback used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8181 config/tc-arm.c:8196
+#: config/tc-arm.c:8284 config/tc-arm.c:8299
msgid "unindexed addressing used in preload instruction"
msgstr ""
-#: config/tc-arm.c:8190
+#: config/tc-arm.c:8293
msgid "'[' expected after PLI mnemonic"
msgstr ""
-#: config/tc-arm.c:8376
+#: config/tc-arm.c:8401 config/tc-arm.c:11639 config/tc-arm.c:11671
+#: config/tc-arm.c:11714
+msgid "extraneous shift as part of operand to shift insn"
+msgstr ""
+
+#: config/tc-arm.c:8482
msgid "SRS base register must be r13"
msgstr ""
-#: config/tc-arm.c:8420
+#: config/tc-arm.c:8541
msgid "can only store two consecutive registers"
msgstr ""
-#: config/tc-arm.c:8515 config/tc-arm.c:8532
+#: config/tc-arm.c:8636 config/tc-arm.c:8653
msgid "only two consecutive VFP SP registers allowed here"
msgstr ""
-#: config/tc-arm.c:8560 config/tc-arm.c:8575
+#: config/tc-arm.c:8681 config/tc-arm.c:8696
msgid "this addressing mode requires base-register writeback"
msgstr ""
-#: config/tc-arm.c:8749
+#. If srcsize is 16, inst.operands[1].imm must be in the range 0-16.
+#. i.e. immbits must be in range 0 - 16.
+#: config/tc-arm.c:8813
+msgid "immediate value out of range, expected range [0, 16]"
+msgstr ""
+
+#. If srcsize is 32, inst.operands[1].imm must be in the range 1-32.
+#. i.e. immbits must be in range 0 - 31.
+#: config/tc-arm.c:8820
+msgid "immediate value out of range, expected range [1, 32]"
+msgstr ""
+
+#: config/tc-arm.c:8886
msgid "this instruction does not support indexing"
msgstr ""
-#: config/tc-arm.c:8772
+#: config/tc-arm.c:8909
msgid "only r15 allowed here"
msgstr ""
-#: config/tc-arm.c:8907
+#: config/tc-arm.c:9044
msgid "immediate operand requires iWMMXt2"
msgstr ""
-#: config/tc-arm.c:9051
+#: config/tc-arm.c:9188
msgid "shift by register not allowed in thumb mode"
msgstr ""
-#: config/tc-arm.c:9063 config/tc-arm.c:11660 config/tc-arm.c:20630
+#: config/tc-arm.c:9200 config/tc-arm.c:11820 config/tc-arm.c:20800
msgid "shift expression is too large"
msgstr ""
-#: config/tc-arm.c:9090
+#: config/tc-arm.c:9227
msgid "Instruction does not support =N addresses"
msgstr ""
-#: config/tc-arm.c:9096
+#: config/tc-arm.c:9233
msgid "cannot use register index with this instruction"
msgstr ""
-#: config/tc-arm.c:9098
+#: config/tc-arm.c:9235
msgid "Thumb does not support negative register indexing"
msgstr ""
-#: config/tc-arm.c:9100
+#: config/tc-arm.c:9237
msgid "Thumb does not support register post-indexing"
msgstr ""
-#: config/tc-arm.c:9102
+#: config/tc-arm.c:9239
msgid "Thumb does not support register indexing with writeback"
msgstr ""
-#: config/tc-arm.c:9104
+#: config/tc-arm.c:9241
msgid "Thumb supports only LSL in shifted register indexing"
msgstr ""
-#: config/tc-arm.c:9113 config/tc-arm.c:14558
+#: config/tc-arm.c:9250 config/tc-arm.c:14718
msgid "shift out of range"
msgstr ""
-#: config/tc-arm.c:9122
+#: config/tc-arm.c:9259
msgid "cannot use writeback with this instruction"
msgstr ""
-#: config/tc-arm.c:9143
+#: config/tc-arm.c:9280
msgid "cannot use post-indexing with PC-relative addressing"
msgstr ""
-#: config/tc-arm.c:9144
+#: config/tc-arm.c:9281
msgid "cannot use post-indexing with this instruction"
msgstr ""
-#: config/tc-arm.c:9355
+#: config/tc-arm.c:9492
msgid "only SUBS PC, LR, #const allowed"
msgstr ""
-#: config/tc-arm.c:9434 config/tc-arm.c:9585 config/tc-arm.c:9682
-#: config/tc-arm.c:10927 config/tc-arm.c:11223
+#: config/tc-arm.c:9574 config/tc-arm.c:9729 config/tc-arm.c:9826
+#: config/tc-arm.c:11075 config/tc-arm.c:11371
msgid "shift must be constant"
msgstr ""
-#: config/tc-arm.c:9461 config/tc-arm.c:9600 config/tc-arm.c:9697
-#: config/tc-arm.c:10940
+#: config/tc-arm.c:9579
+msgid "shift value over 3 not allowed in thumb mode"
+msgstr ""
+
+#: config/tc-arm.c:9581
+msgid "only LSL shift allowed in thumb mode"
+msgstr ""
+
+#: config/tc-arm.c:9605 config/tc-arm.c:9744 config/tc-arm.c:9841
+#: config/tc-arm.c:11088
msgid "unshifted register required"
msgstr ""
-#: config/tc-arm.c:9476 config/tc-arm.c:9708 config/tc-arm.c:11078
+#: config/tc-arm.c:9620 config/tc-arm.c:9852 config/tc-arm.c:11226
msgid "dest must overlap one source register"
msgstr ""
-#: config/tc-arm.c:9603
+#: config/tc-arm.c:9747
msgid "dest and source1 must be the same register"
msgstr ""
-#: config/tc-arm.c:9884
+#: config/tc-arm.c:10028
msgid "instruction is always unconditional"
msgstr ""
-#: config/tc-arm.c:9986
+#: config/tc-arm.c:10130
msgid "selected processor does not support 'A' form of this instruction"
msgstr ""
-#: config/tc-arm.c:9989
+#: config/tc-arm.c:10133
msgid "Thumb does not support the 2-argument form of this instruction"
msgstr ""
-#: config/tc-arm.c:10097
+#: config/tc-arm.c:10241
msgid "SP not allowed in register list"
msgstr ""
-#: config/tc-arm.c:10101 config/tc-arm.c:10207
+#: config/tc-arm.c:10245 config/tc-arm.c:10351
msgid ""
"having the base register in the register list when using write back is "
"UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:10109
+#: config/tc-arm.c:10253
msgid "LR and PC should not both be in register list"
msgstr ""
-#: config/tc-arm.c:10117
+#: config/tc-arm.c:10261
msgid "PC not allowed in register list"
msgstr ""
-#: config/tc-arm.c:10159
+#: config/tc-arm.c:10303
msgid "Thumb load/store multiple does not support {reglist}^"
msgstr ""
-#: config/tc-arm.c:10184 config/tc-arm.c:10261
+#: config/tc-arm.c:10328 config/tc-arm.c:10405
#, c-format
msgid "value stored for r%d is UNKNOWN"
msgstr ""
-#: config/tc-arm.c:10254
+#: config/tc-arm.c:10398
msgid "Thumb-2 instruction only valid in unified syntax"
msgstr ""
-#: config/tc-arm.c:10258 config/tc-arm.c:10268
+#: config/tc-arm.c:10402 config/tc-arm.c:10412
msgid "this instruction will write back the base register"
msgstr ""
-#: config/tc-arm.c:10271
+#: config/tc-arm.c:10415
msgid "this instruction will not write back the base register"
msgstr ""
-#: config/tc-arm.c:10302
+#: config/tc-arm.c:10446
msgid "r14 not allowed as first register when second register is omitted"
msgstr ""
-#: config/tc-arm.c:10402
+#: config/tc-arm.c:10546
msgid ""
"This instruction may be unpredictable if executed on M-profile cores with "
"interrupts enabled."
msgstr ""
-#: config/tc-arm.c:10427 config/tc-arm.c:10440 config/tc-arm.c:10476
+#: config/tc-arm.c:10575 config/tc-arm.c:10588 config/tc-arm.c:10624
msgid "Thumb does not support this addressing mode"
msgstr ""
-#: config/tc-arm.c:10444
+#: config/tc-arm.c:10592
msgid "byte or halfword not valid for base register"
msgstr ""
-#: config/tc-arm.c:10447
+#: config/tc-arm.c:10595
msgid "r15 based store not allowed"
msgstr ""
-#: config/tc-arm.c:10449
+#: config/tc-arm.c:10597
msgid "invalid base register for register offset"
msgstr ""
-#: config/tc-arm.c:10631
+#: config/tc-arm.c:10779
#, c-format
msgid ""
"Use of r%u as a source register is deprecated when r%u is the destination "
"register."
msgstr ""
-#: config/tc-arm.c:10804
+#: config/tc-arm.c:10952
msgid "shifts in CMP/MOV instructions are only supported in unified syntax"
msgstr ""
-#: config/tc-arm.c:10832
+#: config/tc-arm.c:10980
msgid "only lo regs allowed with immediate"
msgstr ""
-#: config/tc-arm.c:10853
+#: config/tc-arm.c:11001
msgid ":upper16: not allowed this instruction"
msgstr ""
-#: config/tc-arm.c:11001
+#: config/tc-arm.c:11149
msgid "Thumb encoding does not support an immediate here"
msgstr ""
-#: config/tc-arm.c:11083
+#: config/tc-arm.c:11231
msgid "Thumb-2 MUL must not set flags"
msgstr ""
-#: config/tc-arm.c:11148
+#: config/tc-arm.c:11296
msgid "Thumb does not support NOP with hints"
msgstr ""
-#: config/tc-arm.c:11286
+#: config/tc-arm.c:11434
msgid "push/pop do not support {reglist}^"
msgstr ""
-#: config/tc-arm.c:11309
+#: config/tc-arm.c:11457
msgid "invalid register list to push/pop instruction"
msgstr ""
-#: config/tc-arm.c:11542
+#: config/tc-arm.c:11698
msgid "source1 and dest must be same register"
msgstr ""
-#: config/tc-arm.c:11563
+#: config/tc-arm.c:11723
msgid "ror #imm not supported"
msgstr ""
-#: config/tc-arm.c:11614
+#: config/tc-arm.c:11774
msgid "SMC is not permitted on this architecture"
msgstr ""
-#: config/tc-arm.c:11777
+#: config/tc-arm.c:11937
msgid "Thumb encoding does not support rotation"
msgstr ""
-#: config/tc-arm.c:11792
+#: config/tc-arm.c:11952
msgid "SVC is not permitted on this architecture"
msgstr ""
-#: config/tc-arm.c:11808
+#: config/tc-arm.c:11968
msgid "instruction requires register index"
msgstr ""
-#: config/tc-arm.c:11817
+#: config/tc-arm.c:11977
msgid "instruction does not allow shifted index"
msgstr ""
-#: config/tc-arm.c:11962
+#: config/tc-arm.c:12122
msgid "invalid neon suffix for non neon instruction"
msgstr ""
-#: config/tc-arm.c:12253 config/tc-arm.c:12588
+#: config/tc-arm.c:12413 config/tc-arm.c:12748
msgid "invalid instruction shape"
msgstr ""
-#: config/tc-arm.c:12497
+#: config/tc-arm.c:12657
msgid "types specified in both the mnemonic and operands"
msgstr ""
-#: config/tc-arm.c:12534
+#: config/tc-arm.c:12694
msgid "operand types can't be inferred"
msgstr ""
-#: config/tc-arm.c:12540
+#: config/tc-arm.c:12700
msgid "type specifier has the wrong number of parts"
msgstr ""
-#: config/tc-arm.c:12604 config/tc-arm.c:14299 config/tc-arm.c:14306
+#: config/tc-arm.c:12764 config/tc-arm.c:14459 config/tc-arm.c:14466
msgid "operand size must match register width"
msgstr ""
-#: config/tc-arm.c:12615
+#: config/tc-arm.c:12775
msgid "bad type in Neon instruction"
msgstr ""
-#: config/tc-arm.c:12626
+#: config/tc-arm.c:12786
msgid "inconsistent types in Neon instruction"
msgstr ""
-#: config/tc-arm.c:13443
+#: config/tc-arm.c:13603
msgid "first and second operands shall be the same register"
msgstr ""
-#: config/tc-arm.c:13711
+#: config/tc-arm.c:13871
msgid "scalar out of range for multiply instruction"
msgstr ""
-#: config/tc-arm.c:13887 config/tc-arm.c:13899
+#: config/tc-arm.c:14047 config/tc-arm.c:14059
msgid "immediate out of range for insert"
msgstr ""
-#: config/tc-arm.c:13911 config/tc-arm.c:14906
+#: config/tc-arm.c:14071 config/tc-arm.c:15066
msgid "immediate out of range for shift"
msgstr ""
-#: config/tc-arm.c:13968 config/tc-arm.c:13995 config/tc-arm.c:14404
-#: config/tc-arm.c:14852
+#: config/tc-arm.c:14128 config/tc-arm.c:14155 config/tc-arm.c:14564
+#: config/tc-arm.c:15012
msgid "immediate out of range"
msgstr ""
-#: config/tc-arm.c:14032
+#: config/tc-arm.c:14192
msgid "immediate out of range for narrowing operation"
msgstr ""
-#: config/tc-arm.c:14157
+#: config/tc-arm.c:14317
msgid "operands 0 and 1 must be the same register"
msgstr ""
-#: config/tc-arm.c:14378
+#: config/tc-arm.c:14538
msgid "operand size must be specified for immediate VMOV"
msgstr ""
-#: config/tc-arm.c:14388
+#: config/tc-arm.c:14548
msgid "immediate has bits set outside the operand size"
msgstr ""
-#: config/tc-arm.c:14584
+#: config/tc-arm.c:14744
msgid "elements must be smaller than reversal region"
msgstr ""
-#: config/tc-arm.c:14755 config/tc-arm.c:14805
+#: config/tc-arm.c:14915 config/tc-arm.c:14965
msgid "bad type for scalar"
msgstr ""
-#: config/tc-arm.c:14869 config/tc-arm.c:14877
+#: config/tc-arm.c:15029 config/tc-arm.c:15037
msgid "VFP registers must be adjacent"
msgstr ""
-#: config/tc-arm.c:15018
+#: config/tc-arm.c:15178
msgid "bad list length for table lookup"
msgstr ""
-#: config/tc-arm.c:15048
+#: config/tc-arm.c:15208
msgid "writeback (!) must be used for VLDMDB and VSTMDB"
msgstr ""
-#: config/tc-arm.c:15051
+#: config/tc-arm.c:15211
msgid "register list must contain at least 1 and at most 16 registers"
msgstr ""
-#: config/tc-arm.c:15076
+#: config/tc-arm.c:15236
msgid "Use of PC here is deprecated"
msgstr ""
-#: config/tc-arm.c:15078
+#: config/tc-arm.c:15238
msgid "Use of PC here is UNPREDICTABLE"
msgstr ""
-#: config/tc-arm.c:15141
+#: config/tc-arm.c:15301
msgid "bad alignment"
msgstr ""
-#: config/tc-arm.c:15158
+#: config/tc-arm.c:15318
msgid "bad list type for instruction"
msgstr ""
-#: config/tc-arm.c:15200
+#: config/tc-arm.c:15360
msgid "unsupported alignment for instruction"
msgstr ""
-#: config/tc-arm.c:15219 config/tc-arm.c:15313 config/tc-arm.c:15324
-#: config/tc-arm.c:15334 config/tc-arm.c:15348
+#: config/tc-arm.c:15379 config/tc-arm.c:15473 config/tc-arm.c:15484
+#: config/tc-arm.c:15494 config/tc-arm.c:15508
msgid "bad list length"
msgstr ""
-#: config/tc-arm.c:15224
+#: config/tc-arm.c:15384
msgid "stride of 2 unavailable when element size is 8"
msgstr ""
-#: config/tc-arm.c:15257 config/tc-arm.c:15332
+#: config/tc-arm.c:15417 config/tc-arm.c:15492
msgid "can't use alignment with this instruction"
msgstr ""
-#: config/tc-arm.c:15399
+#: config/tc-arm.c:15559
msgid "post-index must be a register"
msgstr ""
-#: config/tc-arm.c:15401
+#: config/tc-arm.c:15561
msgid "bad register for post-index"
msgstr ""
-#: config/tc-arm.c:15737 config/tc-arm.c:15823
+#: config/tc-arm.c:15897 config/tc-arm.c:15983
msgid "conditional infixes are deprecated in unified syntax"
msgstr ""
-#: config/tc-arm.c:15971
+#: config/tc-arm.c:16131
msgid "Warning: conditional outside an IT block for Thumb."
msgstr ""
-#: config/tc-arm.c:16176
+#: config/tc-arm.c:16336
msgid "s suffix on comparison instruction is deprecated"
msgstr ""
-#: config/tc-arm.c:16195
+#: config/tc-arm.c:16355
#, c-format
msgid "selected processor does not support Thumb mode `%s'"
msgstr ""
-#: config/tc-arm.c:16201
+#: config/tc-arm.c:16361
msgid "Thumb does not support conditional execution"
msgstr ""
-#: config/tc-arm.c:16220
+#: config/tc-arm.c:16380
#, c-format
msgid "selected processor does not support Thumb-2 mode `%s'"
msgstr ""
-#: config/tc-arm.c:16245
+#: config/tc-arm.c:16405
#, c-format
msgid "cannot honor width suffix -- `%s'"
msgstr ""
-#: config/tc-arm.c:16286
+#: config/tc-arm.c:16446
#, c-format
msgid "selected processor does not support ARM mode `%s'"
msgstr ""
-#: config/tc-arm.c:16291
+#: config/tc-arm.c:16451
#, c-format
msgid "width suffixes are invalid in ARM mode -- `%s'"
msgstr ""
-#: config/tc-arm.c:16324
+#: config/tc-arm.c:16484
#, c-format
msgid "attempt to use an ARM instruction on a Thumb-only processor -- `%s'"
msgstr ""
-#: config/tc-arm.c:16341
+#: config/tc-arm.c:16501
#, c-format
msgid "section '%s' finished with an open IT block."
msgstr ""
-#: config/tc-arm.c:16346
+#: config/tc-arm.c:16506
msgid "file finished with an open IT block."
msgstr ""
-#: config/tc-arm.c:19385
+#: config/tc-arm.c:19545
#, c-format
msgid "alignments greater than %d bytes not supported in .text sections."
msgstr ""
-#: config/tc-arm.c:19653 config/tc-ia64.c:3469
+#: config/tc-arm.c:19813 config/tc-ia64.c:3469
#, c-format
msgid "Group section `%s' has no group signature"
msgstr ""
-#: config/tc-arm.c:19698
+#: config/tc-arm.c:19858
msgid "handlerdata in cantunwind frame"
msgstr ""
-#: config/tc-arm.c:19715
+#: config/tc-arm.c:19875
msgid "too many unwind opcodes for personality routine 0"
msgstr ""
-#: config/tc-arm.c:19747
+#: config/tc-arm.c:19907
msgid "too many unwind opcodes"
msgstr ""
-#: config/tc-arm.c:20007
+#: config/tc-arm.c:20167
msgid "GOT already in the symbol table"
msgstr ""
-#: config/tc-arm.c:20345 config/tc-arm.c:20387 config/tc-arm.c:20657
+#: config/tc-arm.c:20505 config/tc-arm.c:20547 config/tc-arm.c:20827
#, c-format
msgid "undefined symbol %s used as an immediate value"
msgstr ""
-#: config/tc-arm.c:20347 config/tc-arm.c:20389
+#: config/tc-arm.c:20507 config/tc-arm.c:20549
#, c-format
msgid "symbol %s is in a different section"
msgstr ""
-#: config/tc-arm.c:20349 config/tc-arm.c:20391
+#: config/tc-arm.c:20509 config/tc-arm.c:20551
#, c-format
msgid "symbol %s is weak and may be overridden later"
msgstr ""
-#: config/tc-arm.c:20368 config/tc-arm.c:20699
+#: config/tc-arm.c:20528 config/tc-arm.c:20869
#, c-format
msgid "invalid constant (%lx) after fixup"
msgstr ""
-#: config/tc-arm.c:20424
+#: config/tc-arm.c:20584
#, c-format
msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
msgstr ""
-#: config/tc-arm.c:20459 config/tc-arm.c:20484
+#: config/tc-arm.c:20619 config/tc-arm.c:20649
msgid "invalid literal constant: pool needs to be closer"
msgstr ""
-#: config/tc-arm.c:20462 config/tc-arm.c:20500
+#: config/tc-arm.c:20622 config/tc-arm.c:20670
#, c-format
msgid "bad immediate value for offset (%ld)"
msgstr ""
-#: config/tc-arm.c:20486
+#: config/tc-arm.c:20651
#, c-format
msgid "bad immediate value for 8-bit offset (%ld)"
msgstr ""
-#: config/tc-arm.c:20541
+#: config/tc-arm.c:20711
msgid "offset not a multiple of 4"
msgstr ""
-#: config/tc-arm.c:20548 config/tc-arm.c:20563 config/tc-arm.c:20578
-#: config/tc-arm.c:20589 config/tc-arm.c:20612 config/tc-arm.c:21332
+#: config/tc-arm.c:20718 config/tc-arm.c:20733 config/tc-arm.c:20748
+#: config/tc-arm.c:20759 config/tc-arm.c:20782 config/tc-arm.c:21494
#: config/tc-moxie.c:662 config/tc-pj.c:448 config/tc-sh.c:4281
msgid "offset out of range"
msgstr ""
-#: config/tc-arm.c:20715
+#: config/tc-arm.c:20885
msgid "invalid smc expression"
msgstr ""
-#: config/tc-arm.c:20724
+#: config/tc-arm.c:20894
msgid "invalid hvc expression"
msgstr ""
-#: config/tc-arm.c:20735 config/tc-arm.c:20744
+#: config/tc-arm.c:20905 config/tc-arm.c:20914
msgid "invalid swi expression"
msgstr ""
-#: config/tc-arm.c:20754
+#: config/tc-arm.c:20924
msgid "invalid expression in load/store multiple"
msgstr ""
-#: config/tc-arm.c:20815
+#: config/tc-arm.c:20985
#, c-format
msgid "blx to '%s' an ARM ISA state function changed to bl"
msgstr ""
-#: config/tc-arm.c:20834
+#: config/tc-arm.c:21004
msgid "misaligned branch destination"
msgstr ""
-#: config/tc-arm.c:20838 config/tc-arm.c:20875 config/tc-arm.c:20889
-#: config/tc-arm.c:20902 config/tc-arm.c:21009 config/tc-arm.c:21027
-msgid "branch out of range"
-msgstr ""
-
-#: config/tc-arm.c:20924
+#: config/tc-arm.c:21090
msgid "conditional branch out of range"
msgstr ""
-#: config/tc-arm.c:20959
+#: config/tc-arm.c:21124
#, c-format
msgid "blx to Thumb func '%s' from Thumb ISA state changed to bl"
msgstr ""
-#: config/tc-arm.c:21015
+#: config/tc-arm.c:21174
msgid "Thumb2 branch out of range"
msgstr ""
-#: config/tc-arm.c:21106
+#: config/tc-arm.c:21263
msgid "rel31 relocation overflow"
msgstr ""
-#: config/tc-arm.c:21118 config/tc-arm.c:21141
+#: config/tc-arm.c:21275 config/tc-arm.c:21303
msgid "co-processor offset out of range"
msgstr ""
-#: config/tc-arm.c:21158
+#: config/tc-arm.c:21320
#, c-format
msgid "invalid offset, target not word aligned (0x%08lX)"
msgstr ""
-#: config/tc-arm.c:21165 config/tc-arm.c:21174 config/tc-arm.c:21182
-#: config/tc-arm.c:21190 config/tc-arm.c:21198
+#: config/tc-arm.c:21327 config/tc-arm.c:21336 config/tc-arm.c:21344
+#: config/tc-arm.c:21352 config/tc-arm.c:21360
#, c-format
msgid "invalid offset, value too big (0x%08lX)"
msgstr ""
-#: config/tc-arm.c:21239
+#: config/tc-arm.c:21401
msgid "invalid Hi register with immediate"
msgstr ""
-#: config/tc-arm.c:21255
+#: config/tc-arm.c:21417
msgid "invalid immediate for stack address calculation"
msgstr ""
-#: config/tc-arm.c:21263
+#: config/tc-arm.c:21425
#, c-format
msgid "invalid immediate for address calculation (value = 0x%08lX)"
msgstr ""
-#: config/tc-arm.c:21293
+#: config/tc-arm.c:21455
#, c-format
msgid "invalid immediate: %ld is out of range"
msgstr ""
-#: config/tc-arm.c:21305
+#: config/tc-arm.c:21467
#, c-format
msgid "invalid shift value: %ld"
msgstr ""
-#: config/tc-arm.c:21384
+#: config/tc-arm.c:21546
#, c-format
msgid "the offset 0x%08lX is not representable"
msgstr ""
-#: config/tc-arm.c:21424
+#: config/tc-arm.c:21586
#, c-format
msgid "bad offset 0x%08lX (only 12 bits available for the magnitude)"
msgstr ""
-#: config/tc-arm.c:21463
+#: config/tc-arm.c:21625
#, c-format
msgid "bad offset 0x%08lX (only 8 bits available for the magnitude)"
msgstr ""
-#: config/tc-arm.c:21503
+#: config/tc-arm.c:21665
#, c-format
msgid "bad offset 0x%08lX (must be word-aligned)"
msgstr ""
-#: config/tc-arm.c:21508
+#: config/tc-arm.c:21670
#, c-format
msgid "bad offset 0x%08lX (must be an 8-bit number of words)"
msgstr ""
-#: config/tc-arm.c:21539 config/tc-score.c:7397
+#: config/tc-arm.c:21701 config/tc-score.c:7392
#, c-format
msgid "bad relocation fixup type (%d)"
msgstr ""
-#: config/tc-arm.c:21650
+#: config/tc-arm.c:21812
msgid "literal referenced across section boundary"
msgstr ""
-#: config/tc-arm.c:21717
+#: config/tc-arm.c:21879
msgid "internal relocation (type: IMMEDIATE) not fixed up"
msgstr ""
-#: config/tc-arm.c:21722
+#: config/tc-arm.c:21884
msgid "ADRL used for a symbol not defined in the same file"
msgstr ""
-#: config/tc-arm.c:21737
+#: config/tc-arm.c:21899
#, c-format
msgid "undefined local label `%s'"
msgstr ""
-#: config/tc-arm.c:21743
+#: config/tc-arm.c:21905
msgid "internal_relocation (type: OFFSET_IMM) not fixed up"
msgstr ""
-#: config/tc-arm.c:21765 config/tc-cris.c:3986 config/tc-mcore.c:1926
+#: config/tc-arm.c:21927 config/tc-cris.c:3986 config/tc-mcore.c:1926
#: config/tc-microblaze.c:1833 config/tc-mmix.c:2867 config/tc-moxie.c:757
-#: config/tc-ns32k.c:2248 config/tc-score.c:7490
+#: config/tc-ns32k.c:2248 config/tc-score.c:7478
msgid "<unknown>"
msgstr ""
-#: config/tc-arm.c:21768 config/tc-arm.c:21789 config/tc-score.c:7492
+#: config/tc-arm.c:21930 config/tc-arm.c:21951 config/tc-score.c:7480
#, c-format
msgid "cannot represent %s relocation in this object file format"
msgstr ""
-#: config/tc-arm.c:22145
+#: config/tc-arm.c:22307
#, c-format
msgid "%s: unexpected function type: %d"
msgstr ""
-#: config/tc-arm.c:22274
+#: config/tc-arm.c:22436
msgid "use of old and new-style options to set CPU type"
msgstr ""
-#: config/tc-arm.c:22284
+#: config/tc-arm.c:22446
msgid "use of old and new-style options to set FPU type"
msgstr ""
-#: config/tc-arm.c:22360
+#: config/tc-arm.c:22522
msgid "hard-float conflicts with specified fpu"
msgstr ""
-#: config/tc-arm.c:22547
+#: config/tc-arm.c:22709
msgid "generate PIC code"
msgstr ""
-#: config/tc-arm.c:22548
+#: config/tc-arm.c:22710
msgid "assemble Thumb code"
msgstr ""
-#: config/tc-arm.c:22549
+#: config/tc-arm.c:22711
msgid "support ARM/Thumb interworking"
msgstr ""
-#: config/tc-arm.c:22551
+#: config/tc-arm.c:22713
msgid "code uses 32-bit program counter"
msgstr ""
-#: config/tc-arm.c:22552
+#: config/tc-arm.c:22714
msgid "code uses 26-bit program counter"
msgstr ""
-#: config/tc-arm.c:22553
+#: config/tc-arm.c:22715
msgid "floating point args are in fp regs"
msgstr ""
-#: config/tc-arm.c:22555
+#: config/tc-arm.c:22717
msgid "re-entrant code"
msgstr ""
-#: config/tc-arm.c:22556
+#: config/tc-arm.c:22718
msgid "code is ATPCS conformant"
msgstr ""
-#: config/tc-arm.c:22557
+#: config/tc-arm.c:22719
msgid "assemble for big-endian"
msgstr ""
-#: config/tc-arm.c:22558
+#: config/tc-arm.c:22720
msgid "assemble for little-endian"
msgstr ""
#. These are recognized by the assembler, but have no affect on code.
-#: config/tc-arm.c:22562
+#: config/tc-arm.c:22724
msgid "use frame pointer"
msgstr ""
-#: config/tc-arm.c:22563
+#: config/tc-arm.c:22725
msgid "use stack size checking"
msgstr ""
-#: config/tc-arm.c:22566
+#: config/tc-arm.c:22728
msgid "do not warn on use of deprecated feature"
msgstr ""
#. DON'T add any new processors to this list -- we want the whole list
#. to go away... Add them to the processors table instead.
-#: config/tc-arm.c:22583 config/tc-arm.c:22584
+#: config/tc-arm.c:22745 config/tc-arm.c:22746
msgid "use -mcpu=arm1"
msgstr ""
-#: config/tc-arm.c:22585 config/tc-arm.c:22586
+#: config/tc-arm.c:22747 config/tc-arm.c:22748
msgid "use -mcpu=arm2"
msgstr ""
-#: config/tc-arm.c:22587 config/tc-arm.c:22588
+#: config/tc-arm.c:22749 config/tc-arm.c:22750
msgid "use -mcpu=arm250"
msgstr ""
-#: config/tc-arm.c:22589 config/tc-arm.c:22590
+#: config/tc-arm.c:22751 config/tc-arm.c:22752
msgid "use -mcpu=arm3"
msgstr ""
-#: config/tc-arm.c:22591 config/tc-arm.c:22592
+#: config/tc-arm.c:22753 config/tc-arm.c:22754
msgid "use -mcpu=arm6"
msgstr ""
-#: config/tc-arm.c:22593 config/tc-arm.c:22594
+#: config/tc-arm.c:22755 config/tc-arm.c:22756
msgid "use -mcpu=arm600"
msgstr ""
-#: config/tc-arm.c:22595 config/tc-arm.c:22596
+#: config/tc-arm.c:22757 config/tc-arm.c:22758
msgid "use -mcpu=arm610"
msgstr ""
-#: config/tc-arm.c:22597 config/tc-arm.c:22598
+#: config/tc-arm.c:22759 config/tc-arm.c:22760
msgid "use -mcpu=arm620"
msgstr ""
-#: config/tc-arm.c:22599 config/tc-arm.c:22600
+#: config/tc-arm.c:22761 config/tc-arm.c:22762
msgid "use -mcpu=arm7"
msgstr ""
-#: config/tc-arm.c:22601 config/tc-arm.c:22602
+#: config/tc-arm.c:22763 config/tc-arm.c:22764
msgid "use -mcpu=arm70"
msgstr ""
-#: config/tc-arm.c:22603 config/tc-arm.c:22604
+#: config/tc-arm.c:22765 config/tc-arm.c:22766
msgid "use -mcpu=arm700"
msgstr ""
-#: config/tc-arm.c:22605 config/tc-arm.c:22606
+#: config/tc-arm.c:22767 config/tc-arm.c:22768
msgid "use -mcpu=arm700i"
msgstr ""
-#: config/tc-arm.c:22607 config/tc-arm.c:22608
+#: config/tc-arm.c:22769 config/tc-arm.c:22770
msgid "use -mcpu=arm710"
msgstr ""
-#: config/tc-arm.c:22609 config/tc-arm.c:22610
+#: config/tc-arm.c:22771 config/tc-arm.c:22772
msgid "use -mcpu=arm710c"
msgstr ""
-#: config/tc-arm.c:22611 config/tc-arm.c:22612
+#: config/tc-arm.c:22773 config/tc-arm.c:22774
msgid "use -mcpu=arm720"
msgstr ""
-#: config/tc-arm.c:22613 config/tc-arm.c:22614
+#: config/tc-arm.c:22775 config/tc-arm.c:22776
msgid "use -mcpu=arm7d"
msgstr ""
-#: config/tc-arm.c:22615 config/tc-arm.c:22616
+#: config/tc-arm.c:22777 config/tc-arm.c:22778
msgid "use -mcpu=arm7di"
msgstr ""
-#: config/tc-arm.c:22617 config/tc-arm.c:22618
+#: config/tc-arm.c:22779 config/tc-arm.c:22780
msgid "use -mcpu=arm7m"
msgstr ""
-#: config/tc-arm.c:22619 config/tc-arm.c:22620
+#: config/tc-arm.c:22781 config/tc-arm.c:22782
msgid "use -mcpu=arm7dm"
msgstr ""
-#: config/tc-arm.c:22621 config/tc-arm.c:22622
+#: config/tc-arm.c:22783 config/tc-arm.c:22784
msgid "use -mcpu=arm7dmi"
msgstr ""
-#: config/tc-arm.c:22623 config/tc-arm.c:22624
+#: config/tc-arm.c:22785 config/tc-arm.c:22786
msgid "use -mcpu=arm7100"
msgstr ""
-#: config/tc-arm.c:22625 config/tc-arm.c:22626
+#: config/tc-arm.c:22787 config/tc-arm.c:22788
msgid "use -mcpu=arm7500"
msgstr ""
-#: config/tc-arm.c:22627 config/tc-arm.c:22628
+#: config/tc-arm.c:22789 config/tc-arm.c:22790
msgid "use -mcpu=arm7500fe"
msgstr ""
-#: config/tc-arm.c:22629 config/tc-arm.c:22630 config/tc-arm.c:22631
-#: config/tc-arm.c:22632
+#: config/tc-arm.c:22791 config/tc-arm.c:22792 config/tc-arm.c:22793
+#: config/tc-arm.c:22794
msgid "use -mcpu=arm7tdmi"
msgstr ""
-#: config/tc-arm.c:22633 config/tc-arm.c:22634
+#: config/tc-arm.c:22795 config/tc-arm.c:22796
msgid "use -mcpu=arm710t"
msgstr ""
-#: config/tc-arm.c:22635 config/tc-arm.c:22636
+#: config/tc-arm.c:22797 config/tc-arm.c:22798
msgid "use -mcpu=arm720t"
msgstr ""
-#: config/tc-arm.c:22637 config/tc-arm.c:22638
+#: config/tc-arm.c:22799 config/tc-arm.c:22800
msgid "use -mcpu=arm740t"
msgstr ""
-#: config/tc-arm.c:22639 config/tc-arm.c:22640
+#: config/tc-arm.c:22801 config/tc-arm.c:22802
msgid "use -mcpu=arm8"
msgstr ""
-#: config/tc-arm.c:22641 config/tc-arm.c:22642
+#: config/tc-arm.c:22803 config/tc-arm.c:22804
msgid "use -mcpu=arm810"
msgstr ""
-#: config/tc-arm.c:22643 config/tc-arm.c:22644
+#: config/tc-arm.c:22805 config/tc-arm.c:22806
msgid "use -mcpu=arm9"
msgstr ""
-#: config/tc-arm.c:22645 config/tc-arm.c:22646
+#: config/tc-arm.c:22807 config/tc-arm.c:22808
msgid "use -mcpu=arm9tdmi"
msgstr ""
-#: config/tc-arm.c:22647 config/tc-arm.c:22648
+#: config/tc-arm.c:22809 config/tc-arm.c:22810
msgid "use -mcpu=arm920"
msgstr ""
-#: config/tc-arm.c:22649 config/tc-arm.c:22650
+#: config/tc-arm.c:22811 config/tc-arm.c:22812
msgid "use -mcpu=arm940"
msgstr ""
-#: config/tc-arm.c:22651
+#: config/tc-arm.c:22813
msgid "use -mcpu=strongarm"
msgstr ""
-#: config/tc-arm.c:22653
+#: config/tc-arm.c:22815
msgid "use -mcpu=strongarm110"
msgstr ""
-#: config/tc-arm.c:22655
+#: config/tc-arm.c:22817
msgid "use -mcpu=strongarm1100"
msgstr ""
-#: config/tc-arm.c:22657
+#: config/tc-arm.c:22819
msgid "use -mcpu=strongarm1110"
msgstr ""
-#: config/tc-arm.c:22658
+#: config/tc-arm.c:22820
msgid "use -mcpu=xscale"
msgstr ""
-#: config/tc-arm.c:22659
+#: config/tc-arm.c:22821
msgid "use -mcpu=iwmmxt"
msgstr ""
-#: config/tc-arm.c:22660
+#: config/tc-arm.c:22822
msgid "use -mcpu=all"
msgstr ""
#. Architecture variants -- don't add any more to this list either.
-#: config/tc-arm.c:22663 config/tc-arm.c:22664
+#: config/tc-arm.c:22825 config/tc-arm.c:22826
msgid "use -march=armv2"
msgstr ""
-#: config/tc-arm.c:22665 config/tc-arm.c:22666
+#: config/tc-arm.c:22827 config/tc-arm.c:22828
msgid "use -march=armv2a"
msgstr ""
-#: config/tc-arm.c:22667 config/tc-arm.c:22668
+#: config/tc-arm.c:22829 config/tc-arm.c:22830
msgid "use -march=armv3"
msgstr ""
-#: config/tc-arm.c:22669 config/tc-arm.c:22670
+#: config/tc-arm.c:22831 config/tc-arm.c:22832
msgid "use -march=armv3m"
msgstr ""
-#: config/tc-arm.c:22671 config/tc-arm.c:22672
+#: config/tc-arm.c:22833 config/tc-arm.c:22834
msgid "use -march=armv4"
msgstr ""
-#: config/tc-arm.c:22673 config/tc-arm.c:22674
+#: config/tc-arm.c:22835 config/tc-arm.c:22836
msgid "use -march=armv4t"
msgstr ""
-#: config/tc-arm.c:22675 config/tc-arm.c:22676
+#: config/tc-arm.c:22837 config/tc-arm.c:22838
msgid "use -march=armv5"
msgstr ""
-#: config/tc-arm.c:22677 config/tc-arm.c:22678
+#: config/tc-arm.c:22839 config/tc-arm.c:22840
msgid "use -march=armv5t"
msgstr ""
-#: config/tc-arm.c:22679 config/tc-arm.c:22680
+#: config/tc-arm.c:22841 config/tc-arm.c:22842
msgid "use -march=armv5te"
msgstr ""
#. Floating point variants -- don't add any more to this list either.
-#: config/tc-arm.c:22683
+#: config/tc-arm.c:22845
msgid "use -mfpu=fpe"
msgstr ""
-#: config/tc-arm.c:22684
+#: config/tc-arm.c:22846
msgid "use -mfpu=fpa10"
msgstr ""
-#: config/tc-arm.c:22685
+#: config/tc-arm.c:22847
msgid "use -mfpu=fpa11"
msgstr ""
-#: config/tc-arm.c:22687
+#: config/tc-arm.c:22849
msgid "use either -mfpu=softfpa or -mfpu=softvfp"
msgstr ""
-#: config/tc-arm.c:23016
+#: config/tc-arm.c:23178
msgid "invalid architectural extension"
msgstr ""
-#: config/tc-arm.c:23049
+#: config/tc-arm.c:23211
msgid "must specify extensions to add before specifying those to remove"
msgstr ""
-#: config/tc-arm.c:23057
+#: config/tc-arm.c:23219
msgid "missing architectural extension"
msgstr ""
-#: config/tc-arm.c:23072
+#: config/tc-arm.c:23234
msgid "extension does not apply to the base architecture"
msgstr ""
-#: config/tc-arm.c:23095
+#: config/tc-arm.c:23257
#, c-format
msgid "unknown architectural extension `%s'"
msgstr ""
-#: config/tc-arm.c:23097
+#: config/tc-arm.c:23259
msgid "architectural extensions must be specified in alphabetical order"
msgstr ""
-#: config/tc-arm.c:23129
+#: config/tc-arm.c:23291
#, c-format
msgid "missing cpu name `%s'"
msgstr ""
-#: config/tc-arm.c:23155 config/tc-arm.c:23651
+#: config/tc-arm.c:23317 config/tc-arm.c:23813
#, c-format
msgid "unknown cpu `%s'"
msgstr ""
-#: config/tc-arm.c:23173
+#: config/tc-arm.c:23335
#, c-format
msgid "missing architecture name `%s'"
msgstr ""
-#: config/tc-arm.c:23190 config/tc-arm.c:23685 config/tc-arm.c:23716
-#: config/tc-arm.c:23767 config/tc-score.c:7727
+#: config/tc-arm.c:23352 config/tc-arm.c:23847 config/tc-arm.c:23878
+#: config/tc-arm.c:23929 config/tc-score.c:7715
#, c-format
msgid "unknown architecture `%s'\n"
msgstr ""
-#: config/tc-arm.c:23206 config/tc-arm.c:23798
+#: config/tc-arm.c:23368 config/tc-arm.c:23960
#, c-format
msgid "unknown floating point format `%s'\n"
msgstr ""
-#: config/tc-arm.c:23222
+#: config/tc-arm.c:23384
#, c-format
msgid "unknown floating point abi `%s'\n"
msgstr ""
-#: config/tc-arm.c:23238
+#: config/tc-arm.c:23400
#, c-format
msgid "unknown EABI `%s'\n"
msgstr ""
-#: config/tc-arm.c:23258
+#: config/tc-arm.c:23420
#, c-format
msgid "unknown implicit IT mode `%s', should be arm, thumb, always, or never."
msgstr ""
-#: config/tc-arm.c:23268
+#: config/tc-arm.c:23430
msgid "<cpu name>\t assemble for CPU <cpu name>"
msgstr ""
-#: config/tc-arm.c:23270
+#: config/tc-arm.c:23432
msgid "<arch name>\t assemble for architecture <arch name>"
msgstr ""
-#: config/tc-arm.c:23272
+#: config/tc-arm.c:23434
msgid "<fpu name>\t assemble for FPU architecture <fpu name>"
msgstr ""
-#: config/tc-arm.c:23274
+#: config/tc-arm.c:23436
msgid "<abi>\t assemble for floating point ABI <abi>"
msgstr ""
-#: config/tc-arm.c:23277
+#: config/tc-arm.c:23439
msgid "<ver>\t\t assemble for eabi version <ver>"
msgstr ""
-#: config/tc-arm.c:23280
+#: config/tc-arm.c:23442
msgid "<mode>\t controls implicit insertion of IT instructions"
msgstr ""
-#: config/tc-arm.c:23324 config/tc-arm.c:23342 config/tc-arm.c:23362
+#: config/tc-arm.c:23486 config/tc-arm.c:23504 config/tc-arm.c:23524
#, c-format
msgid "option `-%c%s' is deprecated: %s"
msgstr ""
-#: config/tc-arm.c:23382
+#: config/tc-arm.c:23544
#, c-format
msgid " ARM-specific assembler options:\n"
msgstr ""
-#: config/tc-arm.c:23393
+#: config/tc-arm.c:23555
#, c-format
msgid " -EB assemble code for a big-endian cpu\n"
msgstr ""
-#: config/tc-arm.c:23398
+#: config/tc-arm.c:23560
#, c-format
msgid " -EL assemble code for a little-endian cpu\n"
msgstr ""
-#: config/tc-arm.c:23402
+#: config/tc-arm.c:23564
#, c-format
msgid " --fix-v4bx Allow BX in ARMv4 code\n"
msgstr ""
-#: config/tc-arm.c:23749
+#: config/tc-arm.c:23911
#, c-format
msgid ""
"architectural extension `%s' is not allowed for the current base architecture"
@@ -3639,7 +3726,7 @@ msgstr ""
msgid "constant out of 8-bit range: %d"
msgstr ""
-#: config/tc-avr.c:688 config/tc-score.c:1200 read.c:3662
+#: config/tc-avr.c:688 config/tc-score.c:1199 read.c:3661
msgid "illegal expression"
msgstr ""
@@ -3738,8 +3825,8 @@ msgstr ""
#. xgettext:c-format.
#: config/tc-avr.c:1412 config/tc-bfin.c:833 config/tc-d10v.c:1466
-#: config/tc-d30v.c:1774 config/tc-mn10200.c:781 config/tc-mn10300.c:2170
-#: config/tc-msp430.c:2055 config/tc-or32.c:957 config/tc-ppc.c:6611
+#: config/tc-d30v.c:1774 config/tc-mn10200.c:782 config/tc-mn10300.c:2170
+#: config/tc-msp430.c:2055 config/tc-or32.c:957 config/tc-ppc.c:6581
#: config/tc-spu.c:879 config/tc-spu.c:1090 config/tc-v850.c:3000
#: config/tc-z80.c:2021
#, c-format
@@ -3826,21 +3913,21 @@ msgstr ""
msgid "rel too far BFD_RELOC_16"
msgstr ""
-#: config/tc-cr16.c:165 read.c:4422
+#: config/tc-cr16.c:165 read.c:4421
msgid "using a bit field width of zero"
msgstr ""
-#: config/tc-cr16.c:173 read.c:4430
+#: config/tc-cr16.c:173 read.c:4429
#, c-format
msgid "field width \"%s\" too complex for a bitfield"
msgstr ""
-#: config/tc-cr16.c:182 read.c:4438
+#: config/tc-cr16.c:182 read.c:4437
#, c-format
msgid "field width %lu too big to fit in %d bytes: truncated to %d bits"
msgstr ""
-#: config/tc-cr16.c:204 read.c:4460
+#: config/tc-cr16.c:204 read.c:4459
#, c-format
msgid "field value \"%s\" too complex for a bitfield"
msgstr ""
@@ -3850,203 +3937,203 @@ msgstr ""
msgid "Unknown register pair - index relative mode: `%d'"
msgstr ""
-#: config/tc-cr16.c:571 config/tc-crx.c:345 config/tc-mn10200.c:768
-#: write.c:990
+#: config/tc-cr16.c:570 config/tc-crx.c:345 config/tc-mn10200.c:769
+#: write.c:1003
#, c-format
msgid "can't resolve `%s' {%s section} - `%s' {%s section}"
msgstr ""
-#: config/tc-cr16.c:603 config/tc-crx.c:361
+#: config/tc-cr16.c:600 config/tc-crx.c:361
#, c-format
msgid "internal error: reloc %d (`%s') not supported by object file format"
msgstr ""
-#: config/tc-cr16.c:696 config/tc-i386.c:8723 config/tc-s390.c:1911
+#: config/tc-cr16.c:693 config/tc-i386.c:8839 config/tc-s390.c:1911
msgid "GOT already in symbol table"
msgstr ""
-#: config/tc-cr16.c:805 config/tc-cr16.c:828 config/tc-cris.c:1190
+#: config/tc-cr16.c:802 config/tc-cr16.c:825 config/tc-cris.c:1190
#: config/tc-crx.c:535 config/tc-crx.c:562 config/tc-crx.c:580
#: config/tc-pdp11.c:194
msgid "Virtual memory exhausted"
msgstr ""
-#: config/tc-cr16.c:813 config/tc-crx.c:572 config/tc-crx.c:591
-#: config/tc-m68k.c:4656
+#: config/tc-cr16.c:810 config/tc-crx.c:572 config/tc-crx.c:591
+#: config/tc-m68k.c:4656 config/tc-tilegx.c:300 config/tc-tilepro.c:242
#, c-format
msgid "Internal Error: Can't hash %s: %s"
msgstr ""
-#: config/tc-cr16.c:839 config/tc-cris.c:1224 config/tc-crx.c:545
+#: config/tc-cr16.c:836 config/tc-cris.c:1224 config/tc-crx.c:545
#, c-format
msgid "Can't hash `%s': %s\n"
msgstr ""
-#: config/tc-cr16.c:840 config/tc-cris.c:1225 config/tc-crx.c:546
+#: config/tc-cr16.c:837 config/tc-cris.c:1225 config/tc-crx.c:546
msgid "(unknown reason)"
msgstr ""
#. Missing or bad expr becomes absolute 0.
-#: config/tc-cr16.c:892 config/tc-crx.c:619
+#: config/tc-cr16.c:889 config/tc-crx.c:619
#, c-format
msgid "missing or invalid displacement expression `%s' taken as 0"
msgstr ""
-#: config/tc-cr16.c:942
+#: config/tc-cr16.c:939
#, c-format
msgid "GOT bad expression with %s."
msgstr ""
-#: config/tc-cr16.c:1053
+#: config/tc-cr16.c:1050
#, c-format
msgid "operand %d: illegal use expression: `%s`"
msgstr ""
-#: config/tc-cr16.c:1118 config/tc-crx.c:1127
+#: config/tc-cr16.c:1115 config/tc-crx.c:1127
#, c-format
msgid "Unknown register: `%d'"
msgstr ""
#. Issue a error message when register is illegal.
-#: config/tc-cr16.c:1126 config/tc-crx.c:1135
+#: config/tc-cr16.c:1123 config/tc-crx.c:1135
#, c-format
msgid "Illegal register (`%s') in Instruction: `%s'"
msgstr ""
-#: config/tc-cr16.c:1197 config/tc-cr16.c:1272 config/tc-crx.c:757
+#: config/tc-cr16.c:1194 config/tc-cr16.c:1269 config/tc-crx.c:757
#: config/tc-crx.c:777 config/tc-crx.c:792
#, c-format
msgid "Illegal register `%s' in Instruction `%s'"
msgstr ""
-#: config/tc-cr16.c:1225 config/tc-cr16.c:1236
+#: config/tc-cr16.c:1222 config/tc-cr16.c:1233
#, c-format
msgid "Illegal register pair `%s' in Instruction `%s'"
msgstr ""
-#: config/tc-cr16.c:1261 config/tc-i960.c:835
+#: config/tc-cr16.c:1258 config/tc-i960.c:835
msgid "unmatched '['"
msgstr ""
-#: config/tc-cr16.c:1267 config/tc-i960.c:842
+#: config/tc-cr16.c:1264 config/tc-i960.c:842
msgid "garbage after index spec ignored"
msgstr ""
-#: config/tc-cr16.c:1415 config/tc-crx.c:936
+#: config/tc-cr16.c:1412 config/tc-crx.c:936
#, c-format
msgid "Illegal operands (whitespace): `%s'"
msgstr ""
-#: config/tc-cr16.c:1427 config/tc-cr16.c:1434 config/tc-cr16.c:1451
+#: config/tc-cr16.c:1424 config/tc-cr16.c:1431 config/tc-cr16.c:1448
#: config/tc-crx.c:948 config/tc-crx.c:955 config/tc-crx.c:972
#: config/tc-crx.c:1764
#, c-format
msgid "Missing matching brackets : `%s'"
msgstr ""
-#: config/tc-cr16.c:1483 config/tc-crx.c:998
+#: config/tc-cr16.c:1480 config/tc-crx.c:998
#, c-format
msgid "Unknown exception: `%s'"
msgstr ""
-#: config/tc-cr16.c:1570 config/tc-crx.c:1094
+#: config/tc-cr16.c:1565 config/tc-crx.c:1094
#, c-format
msgid "Illegal `cinv' parameter: `%c'"
msgstr ""
-#: config/tc-cr16.c:1592 config/tc-cr16.c:1631
+#: config/tc-cr16.c:1586 config/tc-cr16.c:1625
#, c-format
msgid "Unknown register pair: `%d'"
msgstr ""
#. Issue a error message when register pair is illegal.
-#: config/tc-cr16.c:1600
+#: config/tc-cr16.c:1594
#, c-format
msgid "Illegal register pair (`%s') in Instruction: `%s'"
msgstr ""
#. Issue a error message when register pair is illegal.
-#: config/tc-cr16.c:1639
+#: config/tc-cr16.c:1633
#, c-format
msgid "Illegal index register pair (`%s') in Instruction: `%s'"
msgstr ""
-#: config/tc-cr16.c:1678
+#: config/tc-cr16.c:1672
#, c-format
msgid "Unknown processor register : `%d'"
msgstr ""
#. Issue a error message when register pair is illegal.
-#: config/tc-cr16.c:1686
+#: config/tc-cr16.c:1680
#, c-format
msgid "Illegal processor register (`%s') in Instruction: `%s'"
msgstr ""
-#: config/tc-cr16.c:1734
+#: config/tc-cr16.c:1728
#, c-format
msgid "Unknown processor register (32 bit) : `%d'"
msgstr ""
#. Issue a error message when register pair is illegal.
-#: config/tc-cr16.c:1742
+#: config/tc-cr16.c:1736
#, c-format
msgid "Illegal 32 bit - processor register (`%s') in Instruction: `%s'"
msgstr ""
-#: config/tc-cr16.c:2106 config/tc-crx.c:1662 config/tc-crx.c:1679
+#: config/tc-cr16.c:2100 config/tc-crx.c:1662 config/tc-crx.c:1679
#, c-format
msgid "Same src/dest register is used (`r%d'), result is undefined"
msgstr ""
-#: config/tc-cr16.c:2127
+#: config/tc-cr16.c:2121
msgid "RA register is saved twice."
msgstr ""
-#: config/tc-cr16.c:2131
+#: config/tc-cr16.c:2125
#, c-format
msgid "`%s' Illegal use of registers."
msgstr ""
-#: config/tc-cr16.c:2145
+#: config/tc-cr16.c:2139
#, c-format
msgid "`%s' Illegal count-register combination."
msgstr ""
-#: config/tc-cr16.c:2151
+#: config/tc-cr16.c:2145
#, c-format
msgid "`%s' Illegal use of register."
msgstr ""
-#: config/tc-cr16.c:2160 config/tc-crx.c:1671
+#: config/tc-cr16.c:2154 config/tc-crx.c:1671
#, c-format
msgid "`%s' has undefined result"
msgstr ""
-#: config/tc-cr16.c:2168
+#: config/tc-cr16.c:2162
#, c-format
msgid "Same src/dest register is used (`r%d'),result is undefined"
msgstr ""
-#: config/tc-cr16.c:2339 config/tc-crx.c:1576
+#: config/tc-cr16.c:2333 config/tc-crx.c:1576
msgid "Incorrect number of operands"
msgstr ""
-#: config/tc-cr16.c:2341 config/tc-crx.c:1578
+#: config/tc-cr16.c:2335 config/tc-crx.c:1578
#, c-format
msgid "Illegal type of operand (arg %d)"
msgstr ""
-#: config/tc-cr16.c:2347 config/tc-crx.c:1584
+#: config/tc-cr16.c:2341 config/tc-crx.c:1584
#, c-format
msgid "Operand out of range (arg %d)"
msgstr ""
-#: config/tc-cr16.c:2350 config/tc-crx.c:1587
+#: config/tc-cr16.c:2344 config/tc-crx.c:1587
#, c-format
msgid "Operand has odd displacement (arg %d)"
msgstr ""
-#: config/tc-cr16.c:2353 config/tc-cr16.c:2384 config/tc-crx.c:1600
+#: config/tc-cr16.c:2347 config/tc-cr16.c:2378 config/tc-crx.c:1600
#: config/tc-crx.c:1631
#, c-format
msgid "Illegal operand (arg %d)"
@@ -4054,15 +4141,15 @@ msgstr ""
#. Give an error if a frag containing code is not aligned to a 2-byte
#. boundary.
-#: config/tc-cr16.c:2486 config/tc-cr16.h:73 config/tc-crx.c:1953
+#: config/tc-cr16.c:2480 config/tc-cr16.h:73 config/tc-crx.c:1953
#: config/tc-crx.h:76
msgid "instruction address is not a multiple of 2"
msgstr ""
-#: config/tc-cr16.c:2563 config/tc-cris.c:1538 config/tc-cris.c:1546
+#: config/tc-cr16.c:2555 config/tc-cris.c:1538 config/tc-cris.c:1546
#: config/tc-crx.c:1989 config/tc-dlx.c:685 config/tc-hppa.c:3244
#: config/tc-hppa.c:3251 config/tc-i860.c:491 config/tc-i860.c:508
-#: config/tc-i860.c:988 config/tc-sparc.c:1410 config/tc-sparc.c:1418
+#: config/tc-i860.c:988 config/tc-sparc.c:1518 config/tc-sparc.c:1526
#, c-format
msgid "Unknown opcode: `%s'"
msgstr ""
@@ -4160,7 +4247,7 @@ msgstr ""
#. We've come to the end of instructions with this
#. opcode, so it must be an error.
-#: config/tc-cris.c:2079 config/tc-mips.c:10425 config/tc-mips.c:10430
+#: config/tc-cris.c:2079 config/tc-mips.c:13126
msgid "Illegal operands"
msgstr ""
@@ -4755,14 +4842,14 @@ msgstr ""
msgid ".endfunc missing for previous .proc"
msgstr ""
-#: config/tc-dlx.c:291 config/tc-i860.c:227 config/tc-mips.c:1927
+#: config/tc-dlx.c:291 config/tc-i860.c:227 config/tc-mips.c:2321
#, c-format
msgid "internal error: can't hash `%s': %s\n"
msgstr ""
#. Probably a memory allocation problem? Give up now.
-#: config/tc-dlx.c:298 config/tc-hppa.c:8354 config/tc-mips.c:1930
-#: config/tc-mips.c:1984 config/tc-or32.c:211 config/tc-sparc.c:860
+#: config/tc-dlx.c:298 config/tc-hppa.c:8354 config/tc-mips.c:2324
+#: config/tc-mips.c:2416 config/tc-or32.c:211 config/tc-sparc.c:888
msgid "Broken assembler. No assembly attempted."
msgstr ""
@@ -4832,6 +4919,40 @@ msgstr ""
msgid "Invalid expression after # number\n"
msgstr ""
+#: config/tc-epiphany.c:147
+#, c-format
+msgid "EPIPHANY specific command line options:\n"
+msgstr ""
+
+#: config/tc-epiphany.c:386
+msgid "register number too large for push/pop"
+msgstr ""
+
+#: config/tc-epiphany.c:390
+msgid "register is out of order"
+msgstr ""
+
+#: config/tc-epiphany.c:401 config/tc-m68k.c:6037 config/tc-m68k.c:6066
+msgid "bad register list"
+msgstr ""
+
+#: config/tc-epiphany.c:404
+msgid "malformed reglist in push/pop"
+msgstr ""
+
+#. Checks for behavioral restrictions on LD/ST instructions.
+#: config/tc-epiphany.c:505
+msgid "destination register modified by displacement-post-modified address"
+msgstr ""
+
+#: config/tc-epiphany.c:506
+msgid "ldrd/strd requires even:odd register pair"
+msgstr ""
+
+#: config/tc-epiphany.c:824 config/tc-m32r.c:1789
+msgid "Addend to unresolved symbol not on word boundary."
+msgstr ""
+
#: config/tc-fr30.c:82
#, c-format
msgid " FR30 specific command line options:\n"
@@ -5124,7 +5245,7 @@ msgstr ""
msgid "operand/size mis-match"
msgstr ""
-#: config/tc-h8300.c:1952 config/tc-mips.c:10489 config/tc-sh.c:2971
+#: config/tc-h8300.c:1952 config/tc-mips.c:13197 config/tc-sh.c:2971
#: config/tc-sh64.c:2795 config/tc-z8k.c:1226
msgid "unknown opcode"
msgstr ""
@@ -5587,7 +5708,7 @@ msgstr ""
msgid "-R option not supported on this target."
msgstr ""
-#: config/tc-hppa.c:8335 config/tc-sparc.c:815 config/tc-sparc.c:852
+#: config/tc-hppa.c:8335 config/tc-sparc.c:843 config/tc-sparc.c:880
#, c-format
msgid "Internal error: can't hash `%s': %s\n"
msgstr ""
@@ -5718,7 +5839,7 @@ msgstr ""
msgid "wrong number of operands"
msgstr ""
-#: config/tc-i370.c:1928 config/tc-mn10200.c:898 config/tc-mn10300.c:1251
+#: config/tc-i370.c:1928 config/tc-mn10200.c:899 config/tc-mn10300.c:1251
#: config/tc-ppc.c:2405 config/tc-s390.c:1590 config/tc-v850.c:2024
#, c-format
msgid "Unrecognized opcode: `%s'"
@@ -5738,527 +5859,539 @@ msgstr ""
msgid "Internal Error: bad instruction length"
msgstr ""
-#: config/tc-i386.c:1873
+#: config/tc-i386.c:1885
#, c-format
msgid "%s shortened to %s"
msgstr ""
-#: config/tc-i386.c:1959
+#: config/tc-i386.c:1971
msgid "same type of prefix used twice"
msgstr ""
-#: config/tc-i386.c:1986
+#: config/tc-i386.c:1998
#, c-format
msgid "64bit mode not supported on `%s'."
msgstr ""
-#: config/tc-i386.c:1995
+#: config/tc-i386.c:2007
#, c-format
msgid "32bit mode not supported on `%s'."
msgstr ""
-#: config/tc-i386.c:2035
+#: config/tc-i386.c:2047
msgid "bad argument to syntax directive."
msgstr ""
-#: config/tc-i386.c:2084
+#: config/tc-i386.c:2096
msgid "bad argument to sse_check directive."
msgstr ""
-#: config/tc-i386.c:2088
+#: config/tc-i386.c:2100
msgid "missing argument for sse_check directive"
msgstr ""
-#: config/tc-i386.c:2118
+#: config/tc-i386.c:2135
#, c-format
msgid "`%s' is not supported on `%s'"
msgstr ""
-#: config/tc-i386.c:2192
+#: config/tc-i386.c:2209
#, c-format
msgid "no such architecture: `%s'"
msgstr ""
-#: config/tc-i386.c:2197
+#: config/tc-i386.c:2214
msgid "missing cpu architecture"
msgstr ""
-#: config/tc-i386.c:2211
+#: config/tc-i386.c:2228
#, c-format
msgid "no such architecture modifier: `%s'"
msgstr ""
-#: config/tc-i386.c:2226 config/tc-i386.c:2242
+#: config/tc-i386.c:2243 config/tc-i386.c:2266
msgid "Intel L1OM is 64bit ELF only"
msgstr ""
-#: config/tc-i386.c:2253 config/tc-i386.c:8600
+#: config/tc-i386.c:2250 config/tc-i386.c:2273
+msgid "Intel K1OM is 64bit ELF only"
+msgstr ""
+
+#: config/tc-i386.c:2284 config/tc-i386.c:8711
msgid "unknown architecture"
msgstr ""
-#: config/tc-i386.c:2287 config/tc-i386.c:2309
+#: config/tc-i386.c:2318 config/tc-i386.c:2340
#, c-format
msgid "internal Error: Can't hash %s: %s"
msgstr ""
-#: config/tc-i386.c:2604
+#: config/tc-i386.c:2635
#, c-format
msgid "unknown relocation (%u)"
msgstr ""
-#: config/tc-i386.c:2606
+#: config/tc-i386.c:2637
#, c-format
msgid "%u-byte relocation cannot be applied to %u-byte field"
msgstr ""
-#: config/tc-i386.c:2610
+#: config/tc-i386.c:2641
msgid "non-pc-relative relocation for pc-relative field"
msgstr ""
-#: config/tc-i386.c:2615
+#: config/tc-i386.c:2646
msgid "relocated field and relocation type differ in signedness"
msgstr ""
-#: config/tc-i386.c:2624
+#: config/tc-i386.c:2655
msgid "there are no unsigned pc-relative relocations"
msgstr ""
-#: config/tc-i386.c:2632
+#: config/tc-i386.c:2663
#, c-format
msgid "cannot do %u byte pc-relative relocation"
msgstr ""
-#: config/tc-i386.c:2649
+#: config/tc-i386.c:2680
#, c-format
msgid "cannot do %s %u byte relocation"
msgstr ""
-#: config/tc-i386.c:2933
+#: config/tc-i386.c:2964
#, c-format
msgid "can't use register '%s%s' as operand %d in '%s'."
msgstr ""
-#: config/tc-i386.c:3045
+#: config/tc-i386.c:3076
#, c-format
msgid "SSE instruction `%s' is used"
msgstr ""
-#: config/tc-i386.c:3059 config/tc-i386.c:4489
+#: config/tc-i386.c:3090 config/tc-i386.c:4562
#, c-format
msgid "ambiguous operand size for `%s'"
msgstr ""
-#: config/tc-i386.c:3076
+#: config/tc-i386.c:3107
msgid "expecting lockable instruction after `lock'"
msgstr ""
#. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:3127
+#: config/tc-i386.c:3158
#, c-format
msgid "translating to `%sp'"
msgstr ""
-#: config/tc-i386.c:3182
+#: config/tc-i386.c:3213
#, c-format
msgid "can't encode register '%s%s' in an instruction requiring REX prefix."
msgstr ""
-#: config/tc-i386.c:3225 config/tc-i386.c:3357
+#: config/tc-i386.c:3256 config/tc-i386.c:3388
#, c-format
msgid "no such instruction: `%s'"
msgstr ""
-#: config/tc-i386.c:3236 config/tc-i386.c:3390
+#: config/tc-i386.c:3267 config/tc-i386.c:3421
#, c-format
msgid "invalid character %s in mnemonic"
msgstr ""
-#: config/tc-i386.c:3243
+#: config/tc-i386.c:3274
msgid "expecting prefix; got nothing"
msgstr ""
-#: config/tc-i386.c:3245
+#: config/tc-i386.c:3276
msgid "expecting mnemonic; got nothing"
msgstr ""
-#: config/tc-i386.c:3260 config/tc-i386.c:3408
+#: config/tc-i386.c:3291 config/tc-i386.c:3439
#, c-format
msgid "`%s' is only supported in 64-bit mode"
msgstr ""
-#: config/tc-i386.c:3261 config/tc-i386.c:3407
+#: config/tc-i386.c:3292 config/tc-i386.c:3438
#, c-format
msgid "`%s' is not supported in 64-bit mode"
msgstr ""
-#: config/tc-i386.c:3273
+#: config/tc-i386.c:3304
#, c-format
msgid "redundant %s prefix"
msgstr ""
-#: config/tc-i386.c:3414
+#: config/tc-i386.c:3445
#, c-format
msgid "`%s' is not supported on `%s%s'"
msgstr ""
-#: config/tc-i386.c:3425
+#: config/tc-i386.c:3456
msgid "use .code16 to ensure correct addressing mode"
msgstr ""
-#: config/tc-i386.c:3438
+#: config/tc-i386.c:3469
#, c-format
msgid "expecting string instruction after `%s'"
msgstr ""
-#: config/tc-i386.c:3470
+#: config/tc-i386.c:3501
#, c-format
msgid "invalid character %s before operand %d"
msgstr ""
-#: config/tc-i386.c:3484
+#: config/tc-i386.c:3515
#, c-format
msgid "unbalanced parenthesis in operand %d."
msgstr ""
-#: config/tc-i386.c:3487
+#: config/tc-i386.c:3518
#, c-format
msgid "unbalanced brackets in operand %d."
msgstr ""
-#: config/tc-i386.c:3496
+#: config/tc-i386.c:3527
#, c-format
msgid "invalid character %s in operand %d"
msgstr ""
-#: config/tc-i386.c:3524
+#: config/tc-i386.c:3555
#, c-format
msgid "spurious operands; (%d operands/instruction max)"
msgstr ""
-#: config/tc-i386.c:3547
+#: config/tc-i386.c:3578
msgid "expecting operand after ','; got nothing"
msgstr ""
-#: config/tc-i386.c:3552
+#: config/tc-i386.c:3583
msgid "expecting operand before ','; got nothing"
msgstr ""
-#: config/tc-i386.c:4190
+#: config/tc-i386.c:4257
msgid "operand size mismatch"
msgstr ""
-#: config/tc-i386.c:4193
+#: config/tc-i386.c:4260
msgid "operand type mismatch"
msgstr ""
-#: config/tc-i386.c:4196
+#: config/tc-i386.c:4263
msgid "register type mismatch"
msgstr ""
-#: config/tc-i386.c:4199
+#: config/tc-i386.c:4266
msgid "number of operands mismatch"
msgstr ""
-#: config/tc-i386.c:4202
+#: config/tc-i386.c:4269
msgid "invalid instruction suffix"
msgstr ""
-#: config/tc-i386.c:4205
+#: config/tc-i386.c:4272
msgid "Imm4 isn't the first operand"
msgstr ""
-#: config/tc-i386.c:4208
+#: config/tc-i386.c:4275
msgid "only supported with old gcc"
msgstr ""
-#: config/tc-i386.c:4211
+#: config/tc-i386.c:4278
msgid "unsupported with Intel mnemonic"
msgstr ""
-#: config/tc-i386.c:4214
+#: config/tc-i386.c:4281
msgid "unsupported syntax"
msgstr ""
-#: config/tc-i386.c:4217
+#: config/tc-i386.c:4284
msgid "unsupported"
msgstr ""
-#: config/tc-i386.c:4220
+#: config/tc-i386.c:4287
+msgid "invalid VSIB address"
+msgstr ""
+
+#: config/tc-i386.c:4290
+msgid "unsupported vector index register"
+msgstr ""
+
+#: config/tc-i386.c:4293
#, c-format
msgid "%s for `%s'"
msgstr ""
-#: config/tc-i386.c:4231
+#: config/tc-i386.c:4304
#, c-format
msgid "indirect %s without `*'"
msgstr ""
#. Warn them that a data or address size prefix doesn't
#. affect assembly of the next line of code.
-#: config/tc-i386.c:4239
+#: config/tc-i386.c:4312
#, c-format
msgid "stand-alone `%s' prefix"
msgstr ""
-#: config/tc-i386.c:4273 config/tc-i386.c:4289
+#: config/tc-i386.c:4346 config/tc-i386.c:4362
#, c-format
msgid "`%s' operand %d must use `%ses' segment"
msgstr ""
#. We have to know the operand size for crc32.
-#: config/tc-i386.c:4343
+#: config/tc-i386.c:4416
#, c-format
msgid "ambiguous memory operand size for `%s`"
msgstr ""
-#: config/tc-i386.c:4462
+#: config/tc-i386.c:4535
msgid ""
"no instruction mnemonic suffix given and no register operands; can't size "
"instruction"
msgstr ""
-#: config/tc-i386.c:4599 config/tc-i386.c:4674 config/tc-i386.c:4703
-#: config/tc-i386.c:4749 config/tc-i386.c:4787
+#: config/tc-i386.c:4672 config/tc-i386.c:4747 config/tc-i386.c:4776
+#: config/tc-i386.c:4822 config/tc-i386.c:4860
#, c-format
msgid "incorrect register `%s%s' used with `%c' suffix"
msgstr ""
-#: config/tc-i386.c:4607 config/tc-i386.c:4681 config/tc-i386.c:4794
+#: config/tc-i386.c:4680 config/tc-i386.c:4754 config/tc-i386.c:4867
#, c-format
msgid "using `%s%s' instead of `%s%s' due to `%c' suffix"
msgstr ""
-#: config/tc-i386.c:4633 config/tc-i386.c:4657 config/tc-i386.c:4725
-#: config/tc-i386.c:4770
+#: config/tc-i386.c:4706 config/tc-i386.c:4730 config/tc-i386.c:4798
+#: config/tc-i386.c:4843
#, c-format
msgid "`%s%s' not allowed with `%s%c'"
msgstr ""
-#: config/tc-i386.c:4859
+#: config/tc-i386.c:4932
msgid "no instruction mnemonic suffix given; can't determine immediate size"
msgstr ""
-#: config/tc-i386.c:4895
+#: config/tc-i386.c:4968
#, c-format
msgid "the last operand of `%s' must be `%s%s'"
msgstr ""
-#: config/tc-i386.c:4898
+#: config/tc-i386.c:4971
#, c-format
msgid "the first operand of `%s' must be `%s%s'"
msgstr ""
-#: config/tc-i386.c:5046
+#: config/tc-i386.c:5119
#, c-format
msgid "you can't `pop %scs'"
msgstr ""
#. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:5075
+#: config/tc-i386.c:5148
#, c-format
msgid "translating to `%s %s%s,%s%s'"
msgstr ""
#. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:5082
+#: config/tc-i386.c:5155
#, c-format
msgid "translating to `%s %s%s'"
msgstr ""
-#: config/tc-i386.c:5110
+#: config/tc-i386.c:5183
#, c-format
msgid "segment override on `%s' is ineffectual"
msgstr ""
-#: config/tc-i386.c:5807 config/tc-i386.c:5901 config/tc-i386.c:5946
+#: config/tc-i386.c:5923 config/tc-i386.c:6017 config/tc-i386.c:6062
msgid "skipping prefixes on this instruction"
msgstr ""
-#: config/tc-i386.c:5966
+#: config/tc-i386.c:6082
msgid "16-bit jump out of range"
msgstr ""
-#: config/tc-i386.c:5975
+#: config/tc-i386.c:6091
#, c-format
msgid "can't handle non absolute segment in `%s'"
msgstr ""
-#: config/tc-i386.c:6555
+#: config/tc-i386.c:6671
#, c-format
msgid "@%s reloc is not supported with %d-bit output format"
msgstr ""
-#: config/tc-i386.c:6603
+#: config/tc-i386.c:6719
#, c-format
msgid "missing or invalid expression `%s'"
msgstr ""
-#: config/tc-i386.c:6661
+#: config/tc-i386.c:6776
#, c-format
msgid "at most %d immediate operands are allowed"
msgstr ""
-#: config/tc-i386.c:6683 config/tc-i386.c:6930
+#: config/tc-i386.c:6798 config/tc-i386.c:7045
#, c-format
msgid "junk `%s' after expression"
msgstr ""
-#: config/tc-i386.c:6704
+#: config/tc-i386.c:6819
#, c-format
msgid "missing or invalid immediate expression `%s'"
msgstr ""
-#: config/tc-i386.c:6727 config/tc-i386.c:7020
+#: config/tc-i386.c:6842 config/tc-i386.c:7135
#, c-format
msgid "unimplemented segment %s in operand"
msgstr ""
-#: config/tc-i386.c:6734
+#: config/tc-i386.c:6849
#, c-format
msgid "illegal immediate register operand %s"
msgstr ""
-#: config/tc-i386.c:6782
+#: config/tc-i386.c:6897
#, c-format
msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
msgstr ""
-#: config/tc-i386.c:6791
+#: config/tc-i386.c:6906
#, c-format
msgid "scale factor of %d without an index register"
msgstr ""
-#: config/tc-i386.c:6813
+#: config/tc-i386.c:6928
#, c-format
msgid "at most %d displacement operands are allowed"
msgstr ""
-#: config/tc-i386.c:6986
+#: config/tc-i386.c:7101
#, c-format
msgid "missing or invalid displacement expression `%s'"
msgstr ""
-#: config/tc-i386.c:7003
+#: config/tc-i386.c:7118
#, c-format
msgid "0x%lx out range of signed 32bit displacement"
msgstr ""
-#: config/tc-i386.c:7107
+#: config/tc-i386.c:7222
#, c-format
msgid "`%s' is not valid here (expected `%c%s%s%c')"
msgstr ""
-#: config/tc-i386.c:7187
+#: config/tc-i386.c:7306
#, c-format
msgid "`%s' is not a valid %s expression"
msgstr ""
-#: config/tc-i386.c:7192
+#: config/tc-i386.c:7311
#, c-format
msgid "`%s' is not a valid %s-bit %s expression"
msgstr ""
-#: config/tc-i386.c:7273
+#: config/tc-i386.c:7392
#, c-format
msgid "bad memory operand `%s'"
msgstr ""
-#: config/tc-i386.c:7288
+#: config/tc-i386.c:7407
#, c-format
msgid "junk `%s' after register"
msgstr ""
-#: config/tc-i386.c:7301 config/tc-i386.c:7417 config/tc-i386.c:7458
+#: config/tc-i386.c:7420 config/tc-i386.c:7536 config/tc-i386.c:7577
#, c-format
msgid "bad register name `%s'"
msgstr ""
-#: config/tc-i386.c:7309
+#: config/tc-i386.c:7428
msgid "immediate operand illegal with absolute jump"
msgstr ""
-#: config/tc-i386.c:7331
+#: config/tc-i386.c:7450
#, c-format
msgid "too many memory references for `%s'"
msgstr ""
-#: config/tc-i386.c:7409
+#: config/tc-i386.c:7528
#, c-format
msgid "expecting `,' or `)' after index register in `%s'"
msgstr ""
-#: config/tc-i386.c:7434
+#: config/tc-i386.c:7553
#, c-format
msgid "expecting `)' after scale factor in `%s'"
msgstr ""
-#: config/tc-i386.c:7442
+#: config/tc-i386.c:7561
#, c-format
msgid "expecting index register or scale factor after `,'; got '%c'"
msgstr ""
-#: config/tc-i386.c:7450
+#: config/tc-i386.c:7569
#, c-format
msgid "expecting `,' or `)' after base register in `%s'"
msgstr ""
#. It's not a memory operand; argh!
-#: config/tc-i386.c:7494
+#: config/tc-i386.c:7613
#, c-format
msgid "invalid char %s beginning operand %d `%s'"
msgstr ""
-#: config/tc-i386.c:7676
+#: config/tc-i386.c:7791
msgid "long jump required"
msgstr ""
-#: config/tc-i386.c:7731
+#: config/tc-i386.c:7846
msgid "jump target out of range"
msgstr ""
-#: config/tc-i386.c:8249
+#: config/tc-i386.c:8360
msgid "no compiled in support for x86_64"
msgstr ""
-#: config/tc-i386.c:8269
+#: config/tc-i386.c:8380
msgid "no compiled in support for 32bit x86_64"
msgstr ""
-#: config/tc-i386.c:8273
+#: config/tc-i386.c:8384
msgid "32bit x86_64 is only supported for ELF"
msgstr ""
-#: config/tc-i386.c:8303 config/tc-i386.c:8359
+#: config/tc-i386.c:8414 config/tc-i386.c:8470
#, c-format
msgid "invalid -march= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8368 config/tc-i386.c:8380
+#: config/tc-i386.c:8479 config/tc-i386.c:8491
#, c-format
msgid "invalid -mtune= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8389
+#: config/tc-i386.c:8500
#, c-format
msgid "invalid -mmnemonic= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8398
+#: config/tc-i386.c:8509
#, c-format
msgid "invalid -msyntax= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8425
+#: config/tc-i386.c:8536
#, c-format
msgid "invalid -msse-check= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8434
+#: config/tc-i386.c:8545
#, c-format
msgid "invalid -mavxscalar= option: `%s'"
msgstr ""
-#: config/tc-i386.c:8526
+#: config/tc-i386.c:8637
#, c-format
msgid ""
" -Q ignored\n"
@@ -6266,34 +6399,34 @@ msgid ""
" -k ignored\n"
msgstr ""
-#: config/tc-i386.c:8531
+#: config/tc-i386.c:8642
#, c-format
msgid ""
" -n Do not optimize code alignment\n"
" -q quieten some warnings\n"
msgstr ""
-#: config/tc-i386.c:8535
+#: config/tc-i386.c:8646
#, c-format
msgid " -s ignored\n"
msgstr ""
-#: config/tc-i386.c:8540
+#: config/tc-i386.c:8651
#, c-format
msgid " --32/--64/--x32 generate 32bit/64bit/x32 code\n"
msgstr ""
-#: config/tc-i386.c:8544
+#: config/tc-i386.c:8655
#, c-format
msgid " --divide do not treat `/' as a comment character\n"
msgstr ""
-#: config/tc-i386.c:8547
+#: config/tc-i386.c:8658
#, c-format
msgid " --divide ignored\n"
msgstr ""
-#: config/tc-i386.c:8550
+#: config/tc-i386.c:8661
#, c-format
msgid ""
" -march=CPU[,+EXTENSION...]\n"
@@ -6301,29 +6434,29 @@ msgid ""
"of:\n"
msgstr ""
-#: config/tc-i386.c:8554
+#: config/tc-i386.c:8665
#, c-format
msgid " EXTENSION is combination of:\n"
msgstr ""
-#: config/tc-i386.c:8557
+#: config/tc-i386.c:8668
#, c-format
msgid " -mtune=CPU optimize for CPU, CPU is one of:\n"
msgstr ""
-#: config/tc-i386.c:8560
+#: config/tc-i386.c:8671
#, c-format
msgid " -msse2avx encode SSE instructions with VEX prefix\n"
msgstr ""
-#: config/tc-i386.c:8562
+#: config/tc-i386.c:8673
#, c-format
msgid ""
" -msse-check=[none|error|warning]\n"
" check SSE instructions\n"
msgstr ""
-#: config/tc-i386.c:8565
+#: config/tc-i386.c:8676
#, c-format
msgid ""
" -mavxscalar=[128|256] encode scalar AVX instructions with specific "
@@ -6331,71 +6464,71 @@ msgid ""
" length\n"
msgstr ""
-#: config/tc-i386.c:8568
+#: config/tc-i386.c:8679
#, c-format
msgid " -mmnemonic=[att|intel] use AT&T/Intel mnemonic\n"
msgstr ""
-#: config/tc-i386.c:8570
+#: config/tc-i386.c:8681
#, c-format
msgid " -msyntax=[att|intel] use AT&T/Intel syntax\n"
msgstr ""
-#: config/tc-i386.c:8572
+#: config/tc-i386.c:8683
#, c-format
msgid " -mindex-reg support pseudo index registers\n"
msgstr ""
-#: config/tc-i386.c:8574
+#: config/tc-i386.c:8685
#, c-format
msgid " -mnaked-reg don't require `%%' prefix for registers\n"
msgstr ""
-#: config/tc-i386.c:8576
+#: config/tc-i386.c:8687
#, c-format
msgid " -mold-gcc support old (<= 2.8.1) versions of gcc\n"
msgstr ""
-#: config/tc-i386.c:8650
+#: config/tc-i386.c:8761
msgid "Intel L1OM is 64bit only"
msgstr ""
-#: config/tc-i386.c:8872
+#: config/tc-i386.c:8767
+msgid "Intel K1OM is 64bit only"
+msgstr ""
+
+#: config/tc-i386.c:8984
#, c-format
msgid "can not do %d byte pc-relative relocation"
msgstr ""
-#: config/tc-i386.c:8890
+#: config/tc-i386.c:9002
#, c-format
msgid "can not do %d byte relocation"
msgstr ""
-#: config/tc-i386.c:8959
+#: config/tc-i386.c:9070
#, c-format
msgid "cannot represent relocation type %s in x32 mode"
msgstr ""
-#: config/tc-i386.c:8994 config/tc-s390.c:2346
+#: config/tc-i386.c:9105 config/tc-s390.c:2346
#, c-format
msgid "cannot represent relocation type %s"
msgstr ""
-#: config/tc-i386.c:9101
+#: config/tc-i386.c:9222
msgid "bad .section directive: want a,l,w,x,M,S,G,T in string"
msgstr ""
-#: config/tc-i386.c:9104
+#: config/tc-i386.c:9225
msgid "bad .section directive: want a,w,x,M,S,G,T in string"
msgstr ""
-#: config/tc-i386.c:9123
+#: config/tc-i386.c:9244
msgid ".largecomm supported only in 64bit mode, producing .comm"
msgstr ""
-#: config/tc-i386.c:9178 read.c:3859
-msgid "unexpected `\"' in expression"
-msgstr ""
-
#: config/tc-i860.c:122
msgid "Directive .dual available only with -mintel-syntax option"
msgstr ""
@@ -6417,7 +6550,7 @@ msgid "Defective assembler. No assembly attempted."
msgstr ""
#: config/tc-i860.c:393 config/tc-i860.c:939 config/tc-m68k.c:3914
-#: config/tc-m68k.c:3946 config/tc-sparc.c:2697
+#: config/tc-m68k.c:3946 config/tc-sparc.c:2824
msgid "failed sanity check."
msgstr ""
@@ -7286,7 +7419,7 @@ msgstr ""
msgid "Inserting \"%s\" into constant hash table failed: %s"
msgstr ""
-#: config/tc-ia64.c:7332 config/tc-mips.c:1916
+#: config/tc-ia64.c:7332 config/tc-mips.c:2310
msgid "Could not set architecture and machine"
msgstr ""
@@ -7348,7 +7481,8 @@ msgid "Expected '('"
msgstr ""
#: config/tc-ia64.c:7761 config/tc-pdp11.c:448 config/tc-pdp11.c:512
-#: config/tc-pdp11.c:546 config/tc-xstormy16.c:155
+#: config/tc-pdp11.c:546 config/tc-tilegx.c:991 config/tc-tilepro.c:860
+#: config/tc-xstormy16.c:155
msgid "Missing ')'"
msgstr ""
@@ -7468,12 +7602,12 @@ msgstr ""
msgid "Can't add stop bit to mark end of instruction group"
msgstr ""
-#: config/tc-ia64.c:11598 config/tc-score.c:6109 read.c:1448 read.c:2434
-#: read.c:3138 read.c:3476 read.c:3520
+#: config/tc-ia64.c:11598 config/tc-score.c:6105 read.c:1448 read.c:2434
+#: read.c:3137 read.c:3475 read.c:3519
msgid "expected symbol name"
msgstr ""
-#: config/tc-ia64.c:11608 read.c:2444 read.c:3148 read.c:3504 stabs.c:469
+#: config/tc-ia64.c:11608 read.c:2444 read.c:3147 read.c:3503 stabs.c:469
#, c-format
msgid "expected comma after \"%s\""
msgstr ""
@@ -7547,19 +7681,19 @@ msgstr ""
msgid "Unmatched high relocation"
msgstr ""
-#: config/tc-iq2000.c:829 config/tc-mips.c:15333 config/tc-score.c:5819
+#: config/tc-iq2000.c:829 config/tc-mips.c:18680 config/tc-score.c:5815
msgid ".end not in text section"
msgstr ""
-#: config/tc-iq2000.c:833 config/tc-mips.c:15337 config/tc-score.c:5822
+#: config/tc-iq2000.c:833 config/tc-mips.c:18684 config/tc-score.c:5818
msgid ".end directive without a preceding .ent directive."
msgstr ""
-#: config/tc-iq2000.c:842 config/tc-mips.c:15346 config/tc-score.c:5830
+#: config/tc-iq2000.c:842 config/tc-mips.c:18693 config/tc-score.c:5826
msgid ".end symbol does not match .ent symbol."
msgstr ""
-#: config/tc-iq2000.c:845 config/tc-mips.c:15353 config/tc-score.c:5835
+#: config/tc-iq2000.c:845 config/tc-mips.c:18700 config/tc-score.c:5831
msgid ".end directive missing or unknown symbol"
msgstr ""
@@ -7567,7 +7701,7 @@ msgstr ""
msgid "Expected simple number."
msgstr ""
-#: config/tc-iq2000.c:892 config/tc-mips.c:15258 config/tc-score.c:5670
+#: config/tc-iq2000.c:892 config/tc-mips.c:18605 config/tc-score.c:5667
#, c-format
msgid " *input_line_pointer == '%c' 0x%02x\n"
msgstr ""
@@ -7576,7 +7710,7 @@ msgstr ""
msgid "Invalid number"
msgstr ""
-#: config/tc-iq2000.c:928 config/tc-mips.c:15425 config/tc-score.c:5708
+#: config/tc-iq2000.c:928 config/tc-mips.c:18772 config/tc-score.c:5705
msgid ".ent or .aent not in text section."
msgstr ""
@@ -7598,7 +7732,7 @@ msgstr ""
msgid "Unrecognised option: -hidden"
msgstr ""
-#: config/tc-m32r.c:358 config/tc-sparc.c:583
+#: config/tc-m32r.c:358 config/tc-sparc.c:610
msgid "Unrecognized option following -K"
msgstr ""
@@ -7819,10 +7953,6 @@ msgstr ""
msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-m32r.c:1789
-msgid "Addend to unresolved symbol not on word boundary."
-msgstr ""
-
#: config/tc-m32r.c:1930 config/tc-m32r.c:1983 config/tc-sh.c:775
#: config/tc-sh.c:2456
msgid "Invalid PIC expression."
@@ -8433,10 +8563,6 @@ msgstr ""
msgid "missing label"
msgstr ""
-#: config/tc-m68k.c:6037 config/tc-m68k.c:6066
-msgid "bad register list"
-msgstr ""
-
#: config/tc-m68k.c:6039
#, c-format
msgid "bad register list: %s"
@@ -9053,798 +9179,893 @@ msgid "Absolute value in relaxation code. Assembler error....."
msgstr ""
#: config/tc-microblaze.c:2363 config/tc-mn10300.c:1067 config/tc-sh.c:804
-#: config/tc-z80.c:666 read.c:4351
+#: config/tc-z80.c:666 read.c:4350
#, c-format
msgid "unsupported BFD relocation size %u"
msgstr ""
#. Prototypes for static functions.
-#: config/tc-mips.c:1064
+#: config/tc-mips.c:1315
#, c-format
msgid "internal Error, line %d, %s"
msgstr ""
-#: config/tc-mips.c:1825 config/tc-mips.c:13188
+#: config/tc-mips.c:1710
+msgid "48-bit microMIPS instructions are not supported"
+msgstr ""
+
+#: config/tc-mips.c:2119 config/tc-mips.c:16004
#, c-format
msgid "Unrecognized register name `%s'"
msgstr ""
-#: config/tc-mips.c:1911
+#: config/tc-mips.c:2305
msgid "-G may not be used in position-independent code"
msgstr ""
-#: config/tc-mips.c:1960
+#: config/tc-mips.c:2354 config/tc-mips.c:2387
#, c-format
msgid "internal: can't hash `%s': %s"
msgstr ""
-#: config/tc-mips.c:1968
+#: config/tc-mips.c:2362
#, c-format
msgid "internal error: bad mips16 opcode: %s %s\n"
msgstr ""
-#: config/tc-mips.c:2140
+#: config/tc-mips.c:2573
#, c-format
msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
msgstr ""
-#: config/tc-mips.c:3074 config/tc-mips.c:3082
+#: config/tc-mips.c:4013
+#, c-format
+msgid "Wrong size instruction in a %u-bit branch delay slot"
+msgstr ""
+
+#: config/tc-mips.c:4061 config/tc-mips.c:4071
#, c-format
msgid "jump to misaligned address (0x%lx)"
msgstr ""
-#: config/tc-mips.c:3093 config/tc-mips.c:4042
+#: config/tc-mips.c:4086 config/tc-mips.c:5016
#, c-format
msgid "branch to misaligned address (0x%lx)"
msgstr ""
-#: config/tc-mips.c:3098 config/tc-mips.c:4045
+#: config/tc-mips.c:4092 config/tc-mips.c:5019
#, c-format
msgid "branch address range overflow (0x%lx)"
msgstr ""
-#: config/tc-mips.c:3253 config/tc-mips.c:14896
+#: config/tc-mips.c:4294 config/tc-mips.c:18182
msgid "extended instruction in delay slot"
msgstr ""
#. To reproduce this failure try assembling gas/testsuites/
#. gas/mips/mips16-intermix.s with a mips-ecoff targeted
#. assembler.
-#: config/tc-mips.c:3299
+#: config/tc-mips.c:4350
#, c-format
msgid "Unsupported MIPS relocation number %d"
msgstr ""
-#: config/tc-mips.c:3779
+#: config/tc-mips.c:4645
msgid ""
"Macro instruction expanded into multiple instructions in a branch delay slot"
msgstr ""
-#: config/tc-mips.c:3782
+#: config/tc-mips.c:4648
msgid "Macro instruction expanded into multiple instructions"
msgstr ""
-#: config/tc-mips.c:4314
+#: config/tc-mips.c:4652
+msgid ""
+"Macro instruction expanded into a wrong size instruction in a 16-bit branch "
+"delay slot"
+msgstr ""
+
+#: config/tc-mips.c:4654
+msgid ""
+"Macro instruction expanded into a wrong size instruction in a 32-bit branch "
+"delay slot"
+msgstr ""
+
+#: config/tc-mips.c:5317
msgid "operand overflow"
msgstr ""
-#: config/tc-mips.c:4333 config/tc-mips.c:4933 config/tc-mips.c:8427
+#: config/tc-mips.c:5336 config/tc-mips.c:5936 config/tc-mips.c:9932
msgid "Macro used $at after \".set noat\""
msgstr ""
-#: config/tc-mips.c:4362
+#: config/tc-mips.c:5365
msgid "unsupported large constant"
msgstr ""
-#: config/tc-mips.c:4364
+#: config/tc-mips.c:5367
#, c-format
msgid "Instruction %s requires absolute expression"
msgstr ""
-#: config/tc-mips.c:4497 config/tc-mips.c:6798 config/tc-mips.c:7390
+#: config/tc-mips.c:5500 config/tc-mips.c:8267 config/tc-mips.c:8900
#, c-format
msgid "Number (0x%s) larger than 32 bits"
msgstr ""
-#: config/tc-mips.c:4517
+#: config/tc-mips.c:5520
msgid "Number larger than 64 bits"
msgstr ""
-#: config/tc-mips.c:4811 config/tc-mips.c:4839 config/tc-mips.c:4877
-#: config/tc-mips.c:4922 config/tc-mips.c:7012 config/tc-mips.c:7051
-#: config/tc-mips.c:7090 config/tc-mips.c:7485 config/tc-mips.c:7537
+#: config/tc-mips.c:5814 config/tc-mips.c:5842 config/tc-mips.c:5880
+#: config/tc-mips.c:5925 config/tc-mips.c:8522 config/tc-mips.c:8561
+#: config/tc-mips.c:8600 config/tc-mips.c:8995 config/tc-mips.c:9047
msgid "PIC code offset overflow (max 16 signed bits)"
msgstr ""
-#: config/tc-mips.c:5244 config/tc-mips.c:5310 config/tc-mips.c:5398
-#: config/tc-mips.c:5445 config/tc-mips.c:5507 config/tc-mips.c:5556
-#: config/tc-mips.c:8521 config/tc-mips.c:8528 config/tc-mips.c:8535
-#: config/tc-mips.c:8642
+#: config/tc-mips.c:6484 config/tc-mips.c:6554 config/tc-mips.c:6640
+#: config/tc-mips.c:6686 config/tc-mips.c:6748 config/tc-mips.c:6797
+#: config/tc-mips.c:10026 config/tc-mips.c:10033 config/tc-mips.c:10040
+#: config/tc-mips.c:10147
msgid "Unsupported large constant"
msgstr ""
#. result is always true
-#: config/tc-mips.c:5276
+#: config/tc-mips.c:6518
#, c-format
msgid "Branch %s is always true"
msgstr ""
-#: config/tc-mips.c:5518 config/tc-mips.c:5567 config/tc-mips.c:9297
-#: config/tc-mips.c:9454
+#: config/tc-mips.c:6759 config/tc-mips.c:6808 config/tc-mips.c:11085
+#: config/tc-mips.c:11249
#, c-format
msgid "Improper position (%lu)"
msgstr ""
-#: config/tc-mips.c:5523 config/tc-mips.c:9364
+#: config/tc-mips.c:6764 config/tc-mips.c:11153
#, c-format
msgid "Improper extract size (%lu, position %lu)"
msgstr ""
-#: config/tc-mips.c:5572 config/tc-mips.c:9328
+#: config/tc-mips.c:6813 config/tc-mips.c:11117
#, c-format
msgid "Improper insert size (%lu, position %lu)"
msgstr ""
-#: config/tc-mips.c:5609 config/tc-mips.c:5706
+#: config/tc-mips.c:6850 config/tc-mips.c:6960
msgid "Divide by zero."
msgstr ""
-#: config/tc-mips.c:5792
+#: config/tc-mips.c:7051
msgid "dla used to load 32-bit register"
msgstr ""
-#: config/tc-mips.c:5795
+#: config/tc-mips.c:7054
msgid "la used to load 64-bit address"
msgstr ""
-#: config/tc-mips.c:5819 config/tc-mips.c:6788 config/tc-mips.c:7380
+#: config/tc-mips.c:7078 config/tc-mips.c:8257 config/tc-mips.c:8890
msgid "Expression too complex"
msgstr ""
-#: config/tc-mips.c:5907
+#: config/tc-mips.c:7166
msgid "Offset too large"
msgstr ""
-#: config/tc-mips.c:6079 config/tc-mips.c:6354
+#: config/tc-mips.c:7338 config/tc-mips.c:7613
msgid "PIC code offset overflow (max 32 signed bits)"
msgstr ""
-#: config/tc-mips.c:6432
+#: config/tc-mips.c:7713
msgid "MIPS PIC call to register other than $25"
msgstr ""
-#: config/tc-mips.c:6438 config/tc-mips.c:6449 config/tc-mips.c:6573
-#: config/tc-mips.c:6584
+#: config/tc-mips.c:7724 config/tc-mips.c:7735 config/tc-mips.c:7863
+#: config/tc-mips.c:7874
msgid "No .cprestore pseudo-op used in PIC code"
msgstr ""
-#: config/tc-mips.c:6443 config/tc-mips.c:6578
+#: config/tc-mips.c:7729 config/tc-mips.c:7868
msgid "No .frame pseudo-op used in PIC code"
msgstr ""
-#: config/tc-mips.c:6599
+#: config/tc-mips.c:7889
msgid "Non-PIC jump used in PIC library"
msgstr ""
-#: config/tc-mips.c:6765
+#: config/tc-mips.c:8249
#, c-format
msgid "Opcode not supported on this processor: %s"
msgstr ""
-#: config/tc-mips.c:7643
+#: config/tc-mips.c:9154
#, c-format
msgid "opcode not supported on this processor: %s"
msgstr ""
-#: config/tc-mips.c:7790 config/tc-mips.c:7821 config/tc-mips.c:7873
-#: config/tc-mips.c:7903
+#: config/tc-mips.c:9311 config/tc-mips.c:9342 config/tc-mips.c:9394
+#: config/tc-mips.c:9424
msgid "Improper rotate count"
msgstr ""
-#: config/tc-mips.c:7942
+#: config/tc-mips.c:9463
#, c-format
msgid "Instruction %s: result is always false"
msgstr ""
-#: config/tc-mips.c:8103
+#: config/tc-mips.c:9624
#, c-format
msgid "Instruction %s: result is always true"
msgstr ""
-#: config/tc-mips.c:8240 config/tc-mips.c:8264 config/tc-mips.c:8337
-#: config/tc-mips.c:8360
+#: config/tc-mips.c:9819
msgid "Operand overflow"
msgstr ""
#. FIXME: Check if this is one of the itbl macros, since they
#. are added dynamically.
-#: config/tc-mips.c:8423
+#: config/tc-mips.c:9928
#, c-format
msgid "Macro %s not implemented yet"
msgstr ""
-#: config/tc-mips.c:8673
+#: config/tc-mips.c:10178
#, c-format
msgid "internal: bad mips opcode (mask error): %s %s"
msgstr ""
-#: config/tc-mips.c:8718
+#: config/tc-mips.c:10223
#, c-format
msgid "internal: bad mips opcode (unknown extension operand type `+%c'): %s %s"
msgstr ""
-#: config/tc-mips.c:8797
+#: config/tc-mips.c:10304
#, c-format
msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s"
msgstr ""
-#: config/tc-mips.c:8804
+#: config/tc-mips.c:10311
#, c-format
msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s"
msgstr ""
-#: config/tc-mips.c:8927 config/tc-mips.c:8935
+#: config/tc-mips.c:10337
+#, c-format
+msgid "Internal error: bad microMIPS opcode (mask error): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10344
+#, c-format
+msgid "Internal error: bad microMIPS opcode (incorrect length: %u): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10352
+#, c-format
+msgid "Internal error: bad microMIPS opcode (opcode/length mismatch): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10383 config/tc-mips.c:10436
+#, c-format
+msgid ""
+"Internal error: bad mips opcode (unknown extension operand type `%c%c'): %s "
+"%s"
+msgstr ""
+
+#: config/tc-mips.c:10483
+#, c-format
+msgid "Internal error: bad microMIPS opcode (unknown operand type `%c'): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10492
+#, c-format
+msgid "Internal error: bad microMIPS opcode (bits 0x%lx undefined): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10496
+#, c-format
+msgid "Internal error: bad microMIPS opcode (bits 0x%lx defined): %s %s"
+msgstr ""
+
+#: config/tc-mips.c:10654
msgid "Unrecognized opcode"
msgstr ""
-#: config/tc-mips.c:8962 config/tc-mips.c:10524
+#: config/tc-mips.c:10703 config/tc-mips.c:13232
#, c-format
msgid "opcode not supported on this processor: %s (%s)"
msgstr ""
-#: config/tc-mips.c:8996
+#: config/tc-mips.c:10707
+#, c-format
+msgid "Unrecognized %u-bit version of microMIPS opcode"
+msgstr ""
+
+#: config/tc-mips.c:10738
#, c-format
msgid "BALIGN immediate not 1 or 3 (%lu)"
msgstr ""
-#: config/tc-mips.c:9009 config/tc-mips.c:9022 config/tc-mips.c:9035
-#: config/tc-mips.c:9048 config/tc-mips.c:9074 config/tc-mips.c:9118
+#: config/tc-mips.c:10752 config/tc-mips.c:10766 config/tc-mips.c:10780
+#: config/tc-mips.c:10794 config/tc-mips.c:10822 config/tc-mips.c:10869
#, c-format
msgid "DSP immediate not in range 0..%d (%lu)"
msgstr ""
-#: config/tc-mips.c:9066 config/tc-mips.c:9093
+#: config/tc-mips.c:10813 config/tc-mips.c:10842
msgid "Invalid dsp acc register"
msgstr ""
-#: config/tc-mips.c:9104 config/tc-mips.c:9135 config/tc-mips.c:9152
+#: config/tc-mips.c:10854 config/tc-mips.c:10887 config/tc-mips.c:10905
#, c-format
msgid "DSP immediate not in range %ld..%ld (%ld)"
msgstr ""
-#: config/tc-mips.c:9165
+#: config/tc-mips.c:10919
#, c-format
msgid "MT usermode bit not 0 or 1 (%lu)"
msgstr ""
-#: config/tc-mips.c:9176
+#: config/tc-mips.c:10931
#, c-format
msgid "MT load high bit not 0 or 1 (%lu)"
msgstr ""
-#: config/tc-mips.c:9193 config/tc-mips.c:9206
+#: config/tc-mips.c:10949 config/tc-mips.c:10963
msgid "Invalid dsp/smartmips acc register"
msgstr ""
-#: config/tc-mips.c:9270
+#: config/tc-mips.c:10975
+#, c-format
+msgid "Bit position for %s not in range 0..%lu (%lu)"
+msgstr ""
+
+#: config/tc-mips.c:11058
#, c-format
msgid "Illegal %s number (%lu, 0x%lx)"
msgstr ""
-#: config/tc-mips.c:9383 config/tc-mips.c:10032
+#: config/tc-mips.c:11173 config/tc-mips.c:11975
msgid "absolute expression required"
msgstr ""
-#: config/tc-mips.c:9406
+#: config/tc-mips.c:11198
#, c-format
msgid "Invalid register number (%d)"
msgstr ""
-#: config/tc-mips.c:9414
+#: config/tc-mips.c:11206
msgid "Invalid coprocessor 0 register number"
msgstr ""
-#: config/tc-mips.c:9424
+#: config/tc-mips.c:11217
#, c-format
msgid "Improper bit index (%lu)"
msgstr ""
-#: config/tc-mips.c:9485 config/tc-mips.c:9502
+#: config/tc-mips.c:11282 config/tc-mips.c:11300
#, c-format
msgid "Improper size (%lu)"
msgstr ""
-#: config/tc-mips.c:9518
+#: config/tc-mips.c:11317
#, c-format
msgid "Improper immediate (%ld)"
msgstr ""
-#: config/tc-mips.c:9535 config/tc-mips.c:9552 config/tc-mips.c:9572
+#: config/tc-mips.c:11335 config/tc-mips.c:11353 config/tc-mips.c:11374
#, c-format
msgid "Offset not in range %ld..%ld (%ld)"
msgstr ""
-#: config/tc-mips.c:9578
+#: config/tc-mips.c:11380
#, c-format
msgid "Offset not 16 bytes alignment (%ld)"
msgstr ""
-#: config/tc-mips.c:9593 config/tc-mips.c:10705
+#: config/tc-mips.c:11397 config/tc-mips.c:13413
msgid "used $at without \".set noat\""
msgstr ""
-#: config/tc-mips.c:9595 config/tc-mips.c:10707
+#: config/tc-mips.c:11399 config/tc-mips.c:13415
#, c-format
msgid "used $%u with \".set at=$%u\""
msgstr ""
-#: config/tc-mips.c:9608
+#: config/tc-mips.c:11413
#, c-format
msgid ""
-"Internal error: bad mips opcode (unknown extension operand type `+%c'): %s %s"
+"Internal error: bad %s opcode (unknown extension operand type `+%c'): %s %s"
msgstr ""
-#: config/tc-mips.c:9626
+#: config/tc-mips.c:11467
#, c-format
msgid "Improper shift amount (%lu)"
msgstr ""
-#: config/tc-mips.c:9650 config/tc-mips.c:10845 config/tc-mips.c:11098
+#: config/tc-mips.c:11493 config/tc-mips.c:13553 config/tc-mips.c:13806
#, c-format
msgid "Invalid value for `%s' (%lu)"
msgstr ""
-#: config/tc-mips.c:9686
-#, c-format
-msgid "Code for %s not in range 0..1023 (%lu)"
-msgstr ""
-
-#: config/tc-mips.c:9698
+#: config/tc-mips.c:11543 config/tc-mips.c:11581
#, c-format
-msgid "Lower code for %s not in range 0..1023 (%lu)"
+msgid "Code for %s not in range 0..%lu (%lu)"
msgstr ""
-#: config/tc-mips.c:9710
+#: config/tc-mips.c:11562
#, c-format
-msgid "Code for %s not in range 0..1048575 (%lu)"
+msgid "Lower code for %s not in range 0..%lu (%lu)"
msgstr ""
-#: config/tc-mips.c:9723
+#: config/tc-mips.c:11602
#, c-format
-msgid "Coproccesor code > 25 bits (%lu)"
+msgid "Coproccesor code > %u bits (%lu)"
msgstr ""
-#: config/tc-mips.c:9737
+#: config/tc-mips.c:11618
#, c-format
msgid "Illegal 19-bit code (%lu)"
msgstr ""
-#: config/tc-mips.c:9750
+#: config/tc-mips.c:11632
#, c-format
msgid "Invalid performance register (%lu)"
msgstr ""
-#: config/tc-mips.c:9795
+#: config/tc-mips.c:11713 config/tc-mips.c:12398
#, c-format
msgid "Used $%u with \".set at=$%u\""
msgstr ""
-#: config/tc-mips.c:9822
+#: config/tc-mips.c:11740 config/tc-mips.c:12424
msgid "Source and destination must be different"
msgstr ""
-#: config/tc-mips.c:9828
+#: config/tc-mips.c:11746 config/tc-mips.c:12430
msgid "A destination register must be supplied"
msgstr ""
-#: config/tc-mips.c:9891
+#: config/tc-mips.c:11828
#, c-format
msgid "Improper align amount (%ld), using low bits"
msgstr ""
-#: config/tc-mips.c:9905
+#: config/tc-mips.c:11843
#, c-format
msgid "Invalid MDMX Immediate (%ld)"
msgstr ""
-#: config/tc-mips.c:9943
+#: config/tc-mips.c:11882
#, c-format
msgid "Float register should be even, was %d"
msgstr ""
-#: config/tc-mips.c:9982
+#: config/tc-mips.c:11923
#, c-format
msgid "Bad element selector %ld"
msgstr ""
-#: config/tc-mips.c:9990
+#: config/tc-mips.c:11931
#, c-format
msgid "Expecting ']' found '%s'"
msgstr ""
-#: config/tc-mips.c:10096
+#: config/tc-mips.c:12039
#, c-format
msgid "Bad floating point constant: %s"
msgstr ""
-#: config/tc-mips.c:10216
+#: config/tc-mips.c:12159
msgid "Can't use floating point insn in this section"
msgstr ""
-#: config/tc-mips.c:10275
+#: config/tc-mips.c:12218
msgid "Expression out of range"
msgstr ""
-#: config/tc-mips.c:10319
+#: config/tc-mips.c:12262
#, c-format
msgid "lui expression (%lu) not in range 0..65535"
msgstr ""
-#: config/tc-mips.c:10341
+#: config/tc-mips.c:12284
#, c-format
msgid "Condition code register should be even for %s, was %d"
msgstr ""
-#: config/tc-mips.c:10347
+#: config/tc-mips.c:12290
#, c-format
msgid "Condition code register should be 0 or 4 for %s, was %d"
msgstr ""
-#: config/tc-mips.c:10374
+#: config/tc-mips.c:12317
msgid "Invalid coprocessor sub-selection value (0-7)"
msgstr ""
-#: config/tc-mips.c:10386 config/tc-mips.c:10403
+#: config/tc-mips.c:12330 config/tc-mips.c:12348
#, c-format
msgid "bad byte vector index (%ld)"
msgstr ""
-#: config/tc-mips.c:10414
+#: config/tc-mips.c:13058
+#, c-format
+msgid ""
+"Internal error: bad microMIPS opcode (unknown extension operand type `m%c'): "
+"%s %s"
+msgstr ""
+
+#: config/tc-mips.c:13110
+#, c-format
+msgid "Trap code (%lu) for %s not in 0..15 range"
+msgstr ""
+
+#: config/tc-mips.c:13119
#, c-format
msgid "Bad char = '%c'\n"
msgstr ""
-#: config/tc-mips.c:10498 config/tc-score.c:2696 config/tc-score.c:2742
+#: config/tc-mips.c:13206 config/tc-score.c:2691 config/tc-score.c:2737
msgid "unrecognized opcode"
msgstr ""
-#: config/tc-mips.c:10881 config/tc-mips.c:10962 config/tc-mips.c:10977
+#: config/tc-mips.c:13589 config/tc-mips.c:13670 config/tc-mips.c:13685
msgid "can't parse register list"
msgstr ""
-#: config/tc-mips.c:10950
+#: config/tc-mips.c:13658
msgid "more than one frame size in list"
msgstr ""
-#: config/tc-mips.c:11005
+#: config/tc-mips.c:13713
msgid "unexpected register in list"
msgstr ""
-#: config/tc-mips.c:11015
+#: config/tc-mips.c:13723
msgid "arg/static registers overlap"
msgstr ""
-#: config/tc-mips.c:11033
+#: config/tc-mips.c:13741
msgid "invalid arg register list"
msgstr ""
-#: config/tc-mips.c:11042 config/tc-mips.c:11065
+#: config/tc-mips.c:13750 config/tc-mips.c:13773
msgid "invalid static register list"
msgstr ""
-#: config/tc-mips.c:11072
+#: config/tc-mips.c:13780
msgid "missing frame size"
msgstr ""
-#: config/tc-mips.c:11075
+#: config/tc-mips.c:13783
msgid "invalid frame size"
msgstr ""
-#: config/tc-mips.c:11123
+#: config/tc-mips.c:13831
msgid "illegal operands"
msgstr ""
-#: config/tc-mips.c:11241
+#: config/tc-mips.c:13949
msgid "extended operand requested but not required"
msgstr ""
-#: config/tc-mips.c:11243
+#: config/tc-mips.c:13951
msgid "invalid unextended operand value"
msgstr ""
-#: config/tc-mips.c:11271
+#: config/tc-mips.c:13979
msgid "operand value out of range for instruction"
msgstr ""
-#: config/tc-mips.c:11376
+#: config/tc-mips.c:14084
#, c-format
msgid "relocation %s isn't supported by the current ABI"
msgstr ""
-#: config/tc-mips.c:11432
+#: config/tc-mips.c:14140
msgid "unclosed '('"
msgstr ""
-#: config/tc-mips.c:11699
+#: config/tc-mips.c:14415
#, c-format
msgid "A different %s was already specified, is now %s"
msgstr ""
-#: config/tc-mips.c:11970
+#: config/tc-mips.c:14592
+msgid "-mmicromips cannot be used with -mips16"
+msgstr ""
+
+#: config/tc-mips.c:14607
+msgid "-mips16 cannot be used with -micromips"
+msgstr ""
+
+#: config/tc-mips.c:14714
msgid "-call_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:11980
+#: config/tc-mips.c:14724
msgid "-call_nonpic is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:11990
+#: config/tc-mips.c:14734
msgid "-non_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:12023
+#: config/tc-mips.c:14767
msgid "-n32 is supported for ELF format only"
msgstr ""
-#: config/tc-mips.c:12032
+#: config/tc-mips.c:14776
msgid "-64 is supported for ELF format only"
msgstr ""
-#: config/tc-mips.c:12037 config/tc-mips.c:12090
+#: config/tc-mips.c:14781 config/tc-mips.c:14834
msgid "No compiled in support for 64 bit object file format"
msgstr ""
-#: config/tc-mips.c:12077
+#: config/tc-mips.c:14821
msgid "-mabi is supported for ELF format only"
msgstr ""
-#: config/tc-mips.c:12097
+#: config/tc-mips.c:14841
#, c-format
msgid "invalid abi -mabi=%s"
msgstr ""
-#: config/tc-mips.c:12177
+#: config/tc-mips.c:14921
msgid "-G not supported in this configuration."
msgstr ""
-#: config/tc-mips.c:12203
+#: config/tc-mips.c:14947
#, c-format
msgid "-%s conflicts with the other architecture options, which imply -%s"
msgstr ""
-#: config/tc-mips.c:12215
+#: config/tc-mips.c:14959
#, c-format
msgid "-march=%s is not compatible with the selected ABI"
msgstr ""
-#: config/tc-mips.c:12234
+#: config/tc-mips.c:14978
msgid "-mgp64 used with a 32-bit processor"
msgstr ""
-#: config/tc-mips.c:12236
+#: config/tc-mips.c:14980
msgid "-mgp32 used with a 64-bit ABI"
msgstr ""
-#: config/tc-mips.c:12238
+#: config/tc-mips.c:14982
msgid "-mgp64 used with a 32-bit ABI"
msgstr ""
-#: config/tc-mips.c:12276
+#: config/tc-mips.c:15020
msgid "-mfp64 used with a 32-bit fpu"
msgstr ""
-#: config/tc-mips.c:12279
+#: config/tc-mips.c:15023
msgid "-mfp64 used with a 32-bit ABI"
msgstr ""
-#: config/tc-mips.c:12283
+#: config/tc-mips.c:15027
msgid "-mfp32 used with a 64-bit ABI"
msgstr ""
-#: config/tc-mips.c:12297
+#: config/tc-mips.c:15041
msgid "trap exception not supported at ISA 1"
msgstr ""
-#: config/tc-mips.c:12307
+#: config/tc-mips.c:15053
msgid "-mfp32 used with -mips3d"
msgstr ""
-#: config/tc-mips.c:12313
+#: config/tc-mips.c:15059
msgid "-mfp32 used with -mdmx"
msgstr ""
-#: config/tc-mips.c:12318
+#: config/tc-mips.c:15064
#, c-format
msgid "%s ISA does not support SmartMIPS"
msgstr ""
-#: config/tc-mips.c:12324 config/tc-mips.c:13280
+#: config/tc-mips.c:15070 config/tc-mips.c:16108
#, c-format
msgid "%s ISA does not support DSP ASE"
msgstr ""
-#: config/tc-mips.c:12333 config/tc-mips.c:13293
+#: config/tc-mips.c:15079 config/tc-mips.c:16121
#, c-format
msgid "%s ISA does not support DSP R2 ASE"
msgstr ""
-#: config/tc-mips.c:12339 config/tc-mips.c:13306
+#: config/tc-mips.c:15085 config/tc-mips.c:16134
#, c-format
msgid "%s ISA does not support MT ASE"
msgstr ""
-#: config/tc-mips.c:12387
+#: config/tc-mips.c:15091
+#, c-format
+msgid "%s ISA does not support MCU ASE"
+msgstr ""
+
+#: config/tc-mips.c:15147
msgid "PC relative MIPS16 instruction references a different section"
msgstr ""
-#: config/tc-mips.c:12685 config/tc-sparc.c:3184 config/tc-sparc.c:3191
-#: config/tc-sparc.c:3198 config/tc-sparc.c:3205 config/tc-sparc.c:3212
-#: config/tc-sparc.c:3221 config/tc-sparc.c:3232 config/tc-sparc.c:3254
-#: config/tc-sparc.c:3278 write.c:1138
+#: config/tc-mips.c:15484 config/tc-sparc.c:3327 config/tc-sparc.c:3334
+#: config/tc-sparc.c:3341 config/tc-sparc.c:3348 config/tc-sparc.c:3355
+#: config/tc-sparc.c:3364 config/tc-sparc.c:3375 config/tc-sparc.c:3397
+#: config/tc-sparc.c:3421 write.c:1151
msgid "relocation overflow"
msgstr ""
-#: config/tc-mips.c:12695
+#: config/tc-mips.c:15497
#, c-format
msgid "Branch to misaligned address (%lx)"
msgstr ""
-#: config/tc-mips.c:12742
+#: config/tc-mips.c:15544
msgid "Branch out of range"
msgstr ""
-#: config/tc-mips.c:12824
+#: config/tc-mips.c:15640
#, c-format
msgid "Alignment too large: %d. assumed."
msgstr ""
-#: config/tc-mips.c:12827
+#: config/tc-mips.c:15643
msgid "Alignment negative: 0 assumed."
msgstr ""
-#: config/tc-mips.c:13085
+#: config/tc-mips.c:15901
#, c-format
msgid "%s: no such section"
msgstr ""
-#: config/tc-mips.c:13134
+#: config/tc-mips.c:15950
#, c-format
msgid ".option pic%d not supported"
msgstr ""
-#: config/tc-mips.c:13139 config/tc-mips.c:13446
+#: config/tc-mips.c:15955 config/tc-mips.c:16278
msgid "-G may not be used with SVR4 PIC code"
msgstr ""
-#: config/tc-mips.c:13145
+#: config/tc-mips.c:15961
#, c-format
msgid "Unrecognized option \"%s\""
msgstr ""
-#: config/tc-mips.c:13205
+#: config/tc-mips.c:16021
msgid "`noreorder' must be set before `nomacro'"
msgstr ""
-#: config/tc-mips.c:13231
+#: config/tc-mips.c:16047
#, c-format
msgid "%s isa does not support 64-bit registers"
msgstr ""
-#: config/tc-mips.c:13242
+#: config/tc-mips.c:16058
#, c-format
msgid "%s isa does not support 64-bit floating point registers"
msgstr ""
-#: config/tc-mips.c:13263
+#: config/tc-mips.c:16074
+msgid "`mips16' cannot be used with `micromips'"
+msgstr ""
+
+#: config/tc-mips.c:16083
+msgid "`micromips' cannot be used with `mips16'"
+msgstr ""
+
+#: config/tc-mips.c:16091
#, c-format
msgid "%s ISA does not support SmartMIPS ASE"
msgstr ""
-#: config/tc-mips.c:13330
+#: config/tc-mips.c:16162
#, c-format
msgid "unknown architecture %s"
msgstr ""
-#: config/tc-mips.c:13343 config/tc-mips.c:13373
+#: config/tc-mips.c:16175 config/tc-mips.c:16205
#, c-format
msgid "unknown ISA level %s"
msgstr ""
-#: config/tc-mips.c:13351
+#: config/tc-mips.c:16183
#, c-format
msgid "unknown ISA or architecture %s"
msgstr ""
-#: config/tc-mips.c:13401
+#: config/tc-mips.c:16233
msgid ".set pop with no .set push"
msgstr ""
-#: config/tc-mips.c:13430
+#: config/tc-mips.c:16262
#, c-format
msgid "Tried to set unrecognized symbol: %s\n"
msgstr ""
-#: config/tc-mips.c:13488
+#: config/tc-mips.c:16320
msgid ".cpload not in noreorder section"
msgstr ""
-#: config/tc-mips.c:13556 config/tc-mips.c:13575
+#: config/tc-mips.c:16388 config/tc-mips.c:16407
msgid "missing argument separator ',' for .cpsetup"
msgstr ""
-#: config/tc-mips.c:13733
+#: config/tc-mips.c:16565
#, c-format
msgid "Unsupported use of %s"
msgstr ""
-#: config/tc-mips.c:13815 config/tc-score.c:6035
+#: config/tc-mips.c:16647 config/tc-score.c:6031
msgid "Unsupported use of .gpword"
msgstr ""
-#: config/tc-mips.c:13855
+#: config/tc-mips.c:16687
msgid "Unsupported use of .gpdword"
msgstr ""
-#: config/tc-mips.c:13949
+#: config/tc-mips.c:16781
#, c-format
msgid "ignoring attempt to redefine symbol %s"
msgstr ""
-#: config/tc-mips.c:13964 ecoff.c:3378
+#: config/tc-mips.c:16796 ecoff.c:3378
msgid "bad .weakext directive"
msgstr ""
-#: config/tc-mips.c:14200
+#: config/tc-mips.c:17032
msgid "unsupported PC relative reference to different section"
msgstr ""
-#: config/tc-mips.c:14313 config/tc-xtensa.c:1583 config/tc-xtensa.c:1859
+#: config/tc-mips.c:17145 config/tc-xtensa.c:1583 config/tc-xtensa.c:1859
msgid "unsupported relocation"
msgstr ""
-#: config/tc-mips.c:14571 config/tc-pdp11.c:1424
+#: config/tc-mips.c:17577 config/tc-pdp11.c:1424
#, c-format
msgid "Can not represent %s relocation in this object file format"
msgstr ""
-#: config/tc-mips.c:14656
+#: config/tc-mips.c:17676 config/tc-mips.c:17970
msgid "Relaxed out-of-range branch into a jump"
msgstr ""
-#: config/tc-mips.c:15217
+#: config/tc-mips.c:18564
msgid "missing .end at end of assembly"
msgstr ""
-#: config/tc-mips.c:15232 config/tc-score.c:5644
+#: config/tc-mips.c:18579 config/tc-score.c:5641
msgid "expected simple number"
msgstr ""
-#: config/tc-mips.c:15260 config/tc-score.c:5671
+#: config/tc-mips.c:18607 config/tc-score.c:5668
msgid "invalid number"
msgstr ""
-#: config/tc-mips.c:15428 config/tc-score.c:5710
+#: config/tc-mips.c:18775 config/tc-score.c:5707
msgid "missing .end"
msgstr ""
-#: config/tc-mips.c:15480
+#: config/tc-mips.c:18827
msgid "Bad .frame directive"
msgstr ""
-#: config/tc-mips.c:15512
+#: config/tc-mips.c:18859
msgid ".mask/.fmask outside of .ent"
msgstr ""
-#: config/tc-mips.c:15519
+#: config/tc-mips.c:18866
msgid "Bad .mask/.fmask directive"
msgstr ""
-#: config/tc-mips.c:15796
+#: config/tc-mips.c:19145
#, c-format
msgid "Bad value (%s) for %s"
msgstr ""
-#: config/tc-mips.c:15860
+#: config/tc-mips.c:19209
#, c-format
msgid ""
"MIPS options:\n"
@@ -9855,7 +10076,7 @@ msgid ""
"\t\t\timplicitly with the gp register [default 8]\n"
msgstr ""
-#: config/tc-mips.c:15867
+#: config/tc-mips.c:19216
#, c-format
msgid ""
"-mips1\t\t\tgenerate MIPS ISA I instructions\n"
@@ -9870,7 +10091,7 @@ msgid ""
"-march=CPU/-mtune=CPU\tgenerate code/schedule for CPU, where CPU is one of:\n"
msgstr ""
-#: config/tc-mips.c:15886
+#: config/tc-mips.c:19235
#, c-format
msgid ""
"-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n"
@@ -9878,42 +10099,56 @@ msgid ""
"\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n"
msgstr ""
-#: config/tc-mips.c:15899
+#: config/tc-mips.c:19248
#, c-format
msgid ""
"-mips16\t\t\tgenerate mips16 instructions\n"
"-no-mips16\t\tdo not generate mips16 instructions\n"
msgstr ""
-#: config/tc-mips.c:15902
+#: config/tc-mips.c:19251
+#, c-format
+msgid ""
+"-mmicromips\t\tgenerate microMIPS instructions\n"
+"-mno-micromips\t\tdo not generate microMIPS instructions\n"
+msgstr ""
+
+#: config/tc-mips.c:19254
#, c-format
msgid ""
"-msmartmips\t\tgenerate smartmips instructions\n"
"-mno-smartmips\t\tdo not generate smartmips instructions\n"
msgstr ""
-#: config/tc-mips.c:15905
+#: config/tc-mips.c:19257
#, c-format
msgid ""
"-mdsp\t\t\tgenerate DSP instructions\n"
"-mno-dsp\t\tdo not generate DSP instructions\n"
msgstr ""
-#: config/tc-mips.c:15908
+#: config/tc-mips.c:19260
#, c-format
msgid ""
"-mdspr2\t\t\tgenerate DSP R2 instructions\n"
"-mno-dspr2\t\tdo not generate DSP R2 instructions\n"
msgstr ""
-#: config/tc-mips.c:15911
+#: config/tc-mips.c:19263
#, c-format
msgid ""
"-mmt\t\t\tgenerate MT instructions\n"
"-mno-mt\t\t\tdo not generate MT instructions\n"
msgstr ""
-#: config/tc-mips.c:15914
+#: config/tc-mips.c:19266
+#, c-format
+msgid ""
+"-mmcu\t\t\tgenerate MCU instructions\n"
+"-mno-mcu\t\tdo not generate MCU instructions\n"
+msgstr ""
+
+#: config/tc-mips.c:19269
#, c-format
msgid ""
"-mfix-loongson2f-jump\twork around Loongson2F JUMP instructions\n"
@@ -9931,7 +10166,7 @@ msgid ""
"--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
msgstr ""
-#: config/tc-mips.c:15928
+#: config/tc-mips.c:19283
#, c-format
msgid ""
"-mhard-float\t\tallow floating-point instructions\n"
@@ -9941,7 +10176,7 @@ msgid ""
"--[no-]construct-floats [dis]allow floating point values to be constructed\n"
msgstr ""
-#: config/tc-mips.c:15936
+#: config/tc-mips.c:19291
#, c-format
msgid ""
"-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
@@ -9955,7 +10190,7 @@ msgid ""
"-mabi=ABI\t\tcreate ABI conformant object file for:\n"
msgstr ""
-#: config/tc-mips.c:15957
+#: config/tc-mips.c:19312
#, c-format
msgid ""
"-32\t\t\tcreate o32 ABI object file (default)\n"
@@ -10847,7 +11082,8 @@ msgstr ""
msgid "6-bit displacement out of range"
msgstr ""
-#: config/tc-pdp11.c:974 config/tc-vax.c:1944
+#: config/tc-pdp11.c:974 config/tc-tilegx.c:1160 config/tc-tilepro.c:1023
+#: config/tc-vax.c:1944
msgid "Too many operands"
msgstr ""
@@ -11134,7 +11370,7 @@ msgstr ""
msgid "missing rename string"
msgstr ""
-#: config/tc-ppc.c:3864 config/tc-ppc.c:4406 read.c:3364
+#: config/tc-ppc.c:3864 config/tc-ppc.c:4406 read.c:3363
msgid "missing value"
msgstr ""
@@ -11205,188 +11441,203 @@ msgstr ""
msgid "Unrecognized symbol suffix"
msgstr ""
-#: config/tc-ppc.c:5424
+#: config/tc-ppc.c:5425
msgid "two .function pseudo-ops with no intervening .ef"
msgstr ""
-#: config/tc-ppc.c:5437
+#: config/tc-ppc.c:5438
msgid ".ef with no preceding .function"
msgstr ""
-#: config/tc-ppc.c:5566
+#: config/tc-ppc.c:5567
#, c-format
msgid "warning: symbol %s has no csect"
msgstr ""
-#: config/tc-ppc.c:5828
+#: config/tc-ppc.c:5829
msgid "symbol in .toc does not match any .tc"
msgstr ""
-#: config/tc-ppc.c:6230
+#: config/tc-ppc.c:6200
#, c-format
msgid "unsupported relocation against %s"
msgstr ""
-#: config/tc-ppc.c:6303
+#: config/tc-ppc.c:6273
#, c-format
msgid "cannot emit PC relative %s relocation against %s"
msgstr ""
-#: config/tc-ppc.c:6308
+#: config/tc-ppc.c:6278
#, c-format
msgid "cannot emit PC relative %s relocation"
msgstr ""
-#: config/tc-ppc.c:6497
+#: config/tc-ppc.c:6467
#, c-format
msgid "Unable to handle reference to symbol %s"
msgstr ""
-#: config/tc-ppc.c:6500
+#: config/tc-ppc.c:6470
msgid "Unable to resolve expression"
msgstr ""
-#: config/tc-ppc.c:6527
+#: config/tc-ppc.c:6497
msgid "must branch to an address a multiple of 4"
msgstr ""
-#: config/tc-ppc.c:6531
+#: config/tc-ppc.c:6501
#, c-format
msgid "@local or @plt branch destination is too far away, %ld bytes"
msgstr ""
-#: config/tc-ppc.c:6562
+#: config/tc-ppc.c:6532
#, c-format
msgid "Gas failure, reloc value %d\n"
msgstr ""
-#: config/tc-rx.c:133
+#: config/tc-rx.c:151
#, c-format
msgid " RX specific command line options:\n"
msgstr ""
-#: config/tc-rx.c:134
+#: config/tc-rx.c:152
#, c-format
msgid " --mbig-endian-data\n"
msgstr ""
-#: config/tc-rx.c:135
+#: config/tc-rx.c:153
#, c-format
msgid " --mlittle-endian-data [default]\n"
msgstr ""
-#: config/tc-rx.c:136
+#: config/tc-rx.c:154
#, c-format
msgid " --m32bit-doubles [default]\n"
msgstr ""
-#: config/tc-rx.c:137
+#: config/tc-rx.c:155
#, c-format
msgid " --m64bit-doubles\n"
msgstr ""
-#: config/tc-rx.c:138
+#: config/tc-rx.c:156
#, c-format
msgid " --muse-conventional-section-names\n"
msgstr ""
-#: config/tc-rx.c:139
+#: config/tc-rx.c:157
#, c-format
msgid " --muse-renesas-section-names [default]\n"
msgstr ""
-#: config/tc-rx.c:140
+#: config/tc-rx.c:158
#, c-format
msgid " --msmall-data-limit\n"
msgstr ""
-#: config/tc-rx.c:220
+#: config/tc-rx.c:159
+#, c-format
+msgid " --mrelax\n"
+msgstr ""
+
+#: config/tc-rx.c:160
+#, c-format
+msgid " --mpid\n"
+msgstr ""
+
+#: config/tc-rx.c:161
+#, c-format
+msgid " --mint-register=<value>\n"
+msgstr ""
+
+#: config/tc-rx.c:241
msgid "no filename following .INCLUDE pseudo-op"
msgstr ""
-#: config/tc-rx.c:323
+#: config/tc-rx.c:344
#, c-format
msgid "unable to locate include file: %s"
msgstr ""
-#: config/tc-rx.c:374
+#: config/tc-rx.c:395
#, c-format
msgid "unrecognised alignment value in .SECTION directive: %s"
msgstr ""
-#: config/tc-rx.c:391
+#: config/tc-rx.c:412
#, c-format
msgid "unknown parameter following .SECTION directive: %s"
msgstr ""
-#: config/tc-rx.c:480
+#: config/tc-rx.c:501
msgid "expecting either ON or OFF after .list"
msgstr ""
-#: config/tc-rx.c:516
+#: config/tc-rx.c:537
#, c-format
msgid "The \".%s\" pseudo-op is not implemented\n"
msgstr ""
-#: config/tc-rx.c:748
+#: config/tc-rx.c:797
#, c-format
msgid "Value %d doesn't fit in unsigned %d-bit field"
msgstr ""
-#: config/tc-rx.c:754
+#: config/tc-rx.c:803
#, c-format
msgid "Value %d doesn't fit in signed %d-bit field"
msgstr ""
-#: config/tc-rx.c:954
+#: config/tc-rx.c:1003
msgid "The .DEFINE pseudo-op is not implemented"
msgstr ""
-#: config/tc-rx.c:956
+#: config/tc-rx.c:1005
msgid "The .MACRO pseudo-op is not implemented"
msgstr ""
-#: config/tc-rx.c:958
+#: config/tc-rx.c:1007
msgid "The .BTEQU pseudo-op is not implemented."
msgstr ""
-#: config/tc-rx.c:1883
+#: config/tc-rx.c:1932
msgid "invalid immediate size"
msgstr ""
-#: config/tc-rx.c:1902
+#: config/tc-rx.c:1951
msgid "invalid immediate field position"
msgstr ""
-#: config/tc-rx.c:1951
+#: config/tc-rx.c:2000
#, c-format
msgid "bad frag at %p : fix %ld addr %ld %ld \n"
msgstr ""
-#: config/tc-rx.c:2018
+#: config/tc-rx.c:2067
#, c-format
msgid "unsupported constant size %d\n"
msgstr ""
-#: config/tc-rx.c:2025
+#: config/tc-rx.c:2074
msgid "difference of two symbols only supported with .long, .short, or .byte"
msgstr ""
-#: config/tc-rx.c:2069
+#: config/tc-rx.c:2118
#, c-format
msgid "jump not 3..10 bytes away (is %d)"
msgstr ""
-#: config/tc-rx.c:2215
+#: config/tc-rx.c:2264
#, c-format
msgid "Unknown reloc in md_apply_fix: %s"
msgstr ""
-#: config/tc-s390.c:332 config/tc-sparc.c:272
+#: config/tc-s390.c:332 config/tc-sparc.c:296
msgid "Invalid default architecture, broken assembler."
msgstr ""
-#: config/tc-s390.c:439 config/tc-sparc.c:475
+#: config/tc-s390.c:439 config/tc-sparc.c:499
#, c-format
msgid "invalid architecture -A%s"
msgstr ""
@@ -11552,7 +11803,7 @@ msgstr ""
msgid "S+core co-processor register expected"
msgstr ""
-#: config/tc-score.c:1074 config/tc-score.c:2073
+#: config/tc-score.c:1074 config/tc-score.c:2068
msgid "Using temp register(r1)"
msgstr ""
@@ -11561,343 +11812,343 @@ msgstr ""
msgid "register expected, not '%.100s'"
msgstr ""
-#: config/tc-score.c:1149 config/tc-score.c:5488
+#: config/tc-score.c:1149 config/tc-score.c:5485
msgid "rd must be even number."
msgstr ""
-#: config/tc-score.c:1520 config/tc-score.c:1527
+#: config/tc-score.c:1513 config/tc-score.c:1520
#, c-format
msgid "invalid constant: %d bit expression not in range %u..%u"
msgstr ""
-#: config/tc-score.c:1533 config/tc-score.c:1540 config/tc-score.c:2900
-#: config/tc-score.c:2905 config/tc-score.c:3172 config/tc-score.c:3177
-#: config/tc-score.c:3470
+#: config/tc-score.c:1526 config/tc-score.c:1533 config/tc-score.c:2895
+#: config/tc-score.c:2900 config/tc-score.c:3165 config/tc-score.c:3170
+#: config/tc-score.c:3462
#, c-format
msgid "invalid constant: %d bit expression not in range %d..%d"
msgstr ""
-#: config/tc-score.c:1565
+#: config/tc-score.c:1558
msgid "invalid constant: bit expression not defined"
msgstr ""
-#: config/tc-score.c:2087
+#: config/tc-score.c:2082
#, c-format
msgid "low register(r0-r15)expected, not '%.100s'"
msgstr ""
-#: config/tc-score.c:2149 config/tc-score.c:3491 config/tc-score.c:3659
-#: config/tc-score.c:3704
+#: config/tc-score.c:2144 config/tc-score.c:3482 config/tc-score.c:3650
+#: config/tc-score.c:3695
#, c-format
msgid "missing ["
msgstr ""
-#: config/tc-score.c:2163 config/tc-score.c:3110 config/tc-score.c:3312
-#: config/tc-score.c:3328 config/tc-score.c:3399 config/tc-score.c:3455
-#: config/tc-score.c:3680 config/tc-score.c:3725 config/tc-score.c:3874
-#: config/tc-score.c:3928 config/tc-score.c:3974
+#: config/tc-score.c:2158 config/tc-score.c:3103 config/tc-score.c:3305
+#: config/tc-score.c:3321 config/tc-score.c:3392 config/tc-score.c:3447
+#: config/tc-score.c:3671 config/tc-score.c:3716 config/tc-score.c:3865
+#: config/tc-score.c:3919 config/tc-score.c:3965
#, c-format
msgid "missing ]"
msgstr ""
-#: config/tc-score.c:2352
+#: config/tc-score.c:2347
#, c-format
msgid "Fix data dependency: %s %s -- %s %s (insert %d nop!/%d)"
msgstr ""
-#: config/tc-score.c:2371
+#: config/tc-score.c:2366
#, c-format
msgid "Fix data dependency: %s %s -- %s %s (insert 1 pflush/%d)"
msgstr ""
-#: config/tc-score.c:2387 config/tc-score.c:2394
+#: config/tc-score.c:2382 config/tc-score.c:2389
#, c-format
msgid "data dependency: %s %s -- %s %s (%d/%d bubble)"
msgstr ""
-#: config/tc-score.c:2755 config/tc-score.c:6508
+#: config/tc-score.c:2750 config/tc-score.c:6504
#, c-format
msgid "%s -- `%s'"
msgstr ""
-#: config/tc-score.c:2843
+#: config/tc-score.c:2838
msgid "address offset must be half word alignment"
msgstr ""
-#: config/tc-score.c:2851
+#: config/tc-score.c:2846
msgid "address offset must be word alignment"
msgstr ""
-#: config/tc-score.c:2993 config/tc-score.c:3130
+#: config/tc-score.c:2986 config/tc-score.c:3123
msgid "register same as write-back base"
msgstr ""
-#: config/tc-score.c:3100
+#: config/tc-score.c:3093
msgid "pre-indexed expression expected"
msgstr ""
-#: config/tc-score.c:3430
+#: config/tc-score.c:3422
#, c-format
msgid "invalid register number: %d is not in [r0--r7]"
msgstr ""
-#: config/tc-score.c:3447
+#: config/tc-score.c:3439
msgid "comma is expected"
msgstr ""
-#: config/tc-score.c:3478
+#: config/tc-score.c:3470
#, c-format
msgid "invalid constant: %d is not word align integer"
msgstr ""
-#: config/tc-score.c:3518 config/tc-score.c:3561
+#: config/tc-score.c:3509 config/tc-score.c:3552
msgid "invalid constant: 32 bit expression not word align"
msgstr ""
-#: config/tc-score.c:3527 config/tc-score.c:3570
+#: config/tc-score.c:3518 config/tc-score.c:3561
msgid "invalid constant: 32 bit expression not in range [0, 0xffffffff]"
msgstr ""
-#: config/tc-score.c:3603
+#: config/tc-score.c:3594
msgid ""
"invalid constant: 32 bit expression not in range [-0x80000000, 0x7fffffff]"
msgstr ""
-#: config/tc-score.c:3792 config/tc-score.c:3820
+#: config/tc-score.c:3783 config/tc-score.c:3811
msgid "imm5 should >= 2"
msgstr ""
-#: config/tc-score.c:3797 config/tc-score.c:3826
+#: config/tc-score.c:3788 config/tc-score.c:3817
msgid "reg should <= 31"
msgstr ""
-#: config/tc-score.c:3868 config/tc-score.c:3919
+#: config/tc-score.c:3859 config/tc-score.c:3910
msgid "missing +"
msgstr ""
-#: config/tc-score.c:3912
+#: config/tc-score.c:3903
#, c-format
msgid "%s register same as write-back base"
msgstr ""
-#: config/tc-score.c:3914
+#: config/tc-score.c:3905
msgid "destination"
msgstr ""
-#: config/tc-score.c:3914
+#: config/tc-score.c:3905
msgid "source"
msgstr ""
-#: config/tc-score.c:4244 config/tc-score.c:4320 config/tc-score.c:4949
+#: config/tc-score.c:4235 config/tc-score.c:4311 config/tc-score.c:4946
msgid "expression error"
msgstr ""
-#: config/tc-score.c:4250
+#: config/tc-score.c:4241
msgid "value not in range [0, 0xffffffff]"
msgstr ""
-#: config/tc-score.c:4326
+#: config/tc-score.c:4317
msgid "value not in range [-0xffffffff, 0xffffffff]"
msgstr ""
-#: config/tc-score.c:4354
+#: config/tc-score.c:4345
msgid "li rd label isn't correct instruction form"
msgstr ""
-#: config/tc-score.c:4523 config/tc-score.c:4674 config/tc-score.c:5200
-#: config/tc-score.c:5228
+#: config/tc-score.c:4515 config/tc-score.c:4670 config/tc-score.c:5197
+#: config/tc-score.c:5225
msgid "lacking label "
msgstr ""
-#: config/tc-score.c:4899
+#: config/tc-score.c:4896
msgid "s3_PIC code offset overflow (max 16 signed bits)"
msgstr ""
-#: config/tc-score.c:4955
+#: config/tc-score.c:4952
msgid "value not in range [0, 0x7fffffff]"
msgstr ""
-#: config/tc-score.c:4960
+#: config/tc-score.c:4957
msgid "end on line error"
msgstr ""
-#: config/tc-score.c:5207
+#: config/tc-score.c:5204
msgid "invalid constant: 25 bit expression not in range [-16777216, 16777215]"
msgstr ""
-#: config/tc-score.c:5234
+#: config/tc-score.c:5231
msgid "invalid constant: 20 bit expression not in range -2^19..2^19"
msgstr ""
-#: config/tc-score.c:5267
+#: config/tc-score.c:5264
msgid "lacking label"
msgstr ""
-#: config/tc-score.c:5272
+#: config/tc-score.c:5269
msgid "invalid constant: 10 bit expression not in range [-2^9, 2^9-1]"
msgstr ""
-#: config/tc-score.c:5368
+#: config/tc-score.c:5365
msgid "pce instruction error (16 bit || 16 bit)'"
msgstr ""
-#: config/tc-score.c:5386 config/tc-score.c:5410 config/tc-score.c:5437
-#: config/tc-score.c:5466 config/tc-score.c:5515
+#: config/tc-score.c:5383 config/tc-score.c:5407 config/tc-score.c:5434
+#: config/tc-score.c:5463 config/tc-score.c:5512
msgid "score3d instruction."
msgstr ""
-#: config/tc-score.c:6126 read.c:1465
+#: config/tc-score.c:6122 read.c:1465
msgid "missing size expression"
msgstr ""
-#: config/tc-score.c:6132
+#: config/tc-score.c:6128
#, c-format
msgid "BSS length (%d) < 0 ignored"
msgstr ""
-#: config/tc-score.c:6147 read.c:2298
+#: config/tc-score.c:6143 read.c:2298
#, c-format
msgid "error setting flags for \".sbss\": %s"
msgstr ""
-#: config/tc-score.c:6161 config/tc-sparc.c:3695
+#: config/tc-score.c:6157 config/tc-sparc.c:3838
msgid "missing alignment"
msgstr ""
-#: config/tc-score.c:6198
+#: config/tc-score.c:6194
#, c-format
msgid "alignment too large; %d assumed"
msgstr ""
-#: config/tc-score.c:6203 read.c:2359
+#: config/tc-score.c:6199 read.c:2359
msgid "alignment negative; 0 assumed"
msgstr ""
-#: config/tc-score.c:6270 ecoff.c:3365 read.c:1484 read.c:1590 read.c:2476
-#: read.c:3098 read.c:3488 symbols.c:334 symbols.c:430
+#: config/tc-score.c:6266 ecoff.c:3365 read.c:1484 read.c:1590 read.c:2476
+#: read.c:3097 read.c:3487 symbols.c:336 symbols.c:432
#, c-format
msgid "symbol `%s' is already defined"
msgstr ""
#. Error routine.
-#: config/tc-score.c:6612 config/tc-score.c:6636
+#: config/tc-score.c:6608 config/tc-score.c:6632
msgid "size is not 4 or 6"
msgstr ""
-#: config/tc-score.c:6695
+#: config/tc-score.c:6691
msgid "bad call to MD_ATOF()"
msgstr ""
-#: config/tc-score.c:7203
+#: config/tc-score.c:7198
#, c-format
msgid " branch relocation truncate (0x%x) [-2^9 ~ 2^9]"
msgstr ""
-#: config/tc-score.c:7218 config/tc-score.c:7247 config/tc-score.c:7299
+#: config/tc-score.c:7213 config/tc-score.c:7242 config/tc-score.c:7294
#, c-format
msgid " branch relocation truncate (0x%x) [-2^19 ~ 2^19]"
msgstr ""
-#: config/tc-score.c:7269 config/tc-score.c:7324
+#: config/tc-score.c:7264 config/tc-score.c:7319
#, c-format
msgid " branch relocation truncate (0x%x) [-2^9 ~ 2^9]"
msgstr ""
-#: config/tc-score.c:7500
+#: config/tc-score.c:7488
#, c-format
msgid "cannot represent %s relocation in this object file format1"
msgstr ""
-#: config/tc-score.c:7791
+#: config/tc-score.c:7779
#, c-format
msgid "Sunplus-v2-0-0-20060510\n"
msgstr ""
-#: config/tc-score.c:7811
+#: config/tc-score.c:7799
#, c-format
msgid " Score-specific assembler options:\n"
msgstr ""
-#: config/tc-score.c:7813
+#: config/tc-score.c:7801
#, c-format
msgid " -EB\t\tassemble code for a big-endian cpu\n"
msgstr ""
-#: config/tc-score.c:7818
+#: config/tc-score.c:7806
#, c-format
msgid " -EL\t\tassemble code for a little-endian cpu\n"
msgstr ""
-#: config/tc-score.c:7822
+#: config/tc-score.c:7810
#, c-format
msgid " -FIXDD\t\tassemble code for fix data dependency\n"
msgstr ""
-#: config/tc-score.c:7824
+#: config/tc-score.c:7812
#, c-format
msgid ""
" -NWARN\t\tassemble code for no warning message for fix data "
"dependency\n"
msgstr ""
-#: config/tc-score.c:7826
+#: config/tc-score.c:7814
#, c-format
msgid " -SCORE5\t\tassemble code for target is SCORE5\n"
msgstr ""
-#: config/tc-score.c:7828
+#: config/tc-score.c:7816
#, c-format
msgid " -SCORE5U\tassemble code for target is SCORE5U\n"
msgstr ""
-#: config/tc-score.c:7830
+#: config/tc-score.c:7818
#, c-format
msgid ""
" -SCORE7\t\tassemble code for target is SCORE7, this is default "
"setting\n"
msgstr ""
-#: config/tc-score.c:7832
+#: config/tc-score.c:7820
#, c-format
msgid " -SCORE3\t\tassemble code for target is SCORE3\n"
msgstr ""
-#: config/tc-score.c:7834
+#: config/tc-score.c:7822
#, c-format
msgid ""
" -march=score7\tassemble code for target is SCORE7, this is default "
"setting\n"
msgstr ""
-#: config/tc-score.c:7836
+#: config/tc-score.c:7824
#, c-format
msgid " -march=score3\tassemble code for target is SCORE3\n"
msgstr ""
-#: config/tc-score.c:7838
+#: config/tc-score.c:7826
#, c-format
msgid ""
" -USE_R1\t\tassemble code for no warning message when using temp "
"register r1\n"
msgstr ""
-#: config/tc-score.c:7840
+#: config/tc-score.c:7828
#, c-format
msgid " -KPIC\t\tassemble code for PIC\n"
msgstr ""
-#: config/tc-score.c:7842
+#: config/tc-score.c:7830
#, c-format
msgid " -O0\t\tassembler will not perform any optimizations\n"
msgstr ""
-#: config/tc-score.c:7844
+#: config/tc-score.c:7832
#, c-format
msgid ""
" -G gpnum\tassemble code for setting gpsize and default is 8 byte\n"
msgstr ""
-#: config/tc-score.c:7846
+#: config/tc-score.c:7834
#, c-format
msgid " -V \t\tSunplus release version \n"
msgstr ""
@@ -12190,8 +12441,8 @@ msgstr ""
msgid "overflow in branch to %s; converted into longer instruction sequence"
msgstr ""
-#: config/tc-sh.c:3749 config/tc-sh.c:3796 config/tc-sparc.c:4202
-#: config/tc-sparc.c:4226
+#: config/tc-sh.c:3749 config/tc-sh.c:3796 config/tc-sparc.c:4345
+#: config/tc-sparc.c:4369
msgid "misaligned data"
msgstr ""
@@ -12393,26 +12644,26 @@ msgstr ""
msgid "Invalid DataLabel expression"
msgstr ""
-#: config/tc-sparc.c:276 config/tc-sparc.c:481
+#: config/tc-sparc.c:300 config/tc-sparc.c:505
msgid "Bad opcode table, broken assembler."
msgstr ""
-#: config/tc-sparc.c:473
+#: config/tc-sparc.c:497
#, c-format
msgid "invalid architecture -xarch=%s"
msgstr ""
-#: config/tc-sparc.c:542
+#: config/tc-sparc.c:569
#, c-format
msgid "No compiled in support for %d bit object file format"
msgstr ""
-#: config/tc-sparc.c:623
+#: config/tc-sparc.c:650
#, c-format
msgid "SPARC options:\n"
msgstr ""
-#: config/tc-sparc.c:652
+#: config/tc-sparc.c:679
#, c-format
msgid ""
"\n"
@@ -12424,24 +12675,24 @@ msgid ""
"-no-relax\t\tavoid changing any jumps and branches\n"
msgstr ""
-#: config/tc-sparc.c:660
+#: config/tc-sparc.c:687
#, c-format
msgid "-k\t\t\tgenerate PIC\n"
msgstr ""
-#: config/tc-sparc.c:664
+#: config/tc-sparc.c:691
#, c-format
msgid ""
"-32\t\t\tcreate 32 bit object file\n"
"-64\t\t\tcreate 64 bit object file\n"
msgstr ""
-#: config/tc-sparc.c:667
+#: config/tc-sparc.c:694
#, c-format
msgid "\t\t\t[default is %d]\n"
msgstr ""
-#: config/tc-sparc.c:669
+#: config/tc-sparc.c:696
#, c-format
msgid ""
"-TSO\t\t\tuse Total Store Ordering\n"
@@ -12449,12 +12700,12 @@ msgid ""
"-RMO\t\t\tuse Relaxed Memory Ordering\n"
msgstr ""
-#: config/tc-sparc.c:673
+#: config/tc-sparc.c:700
#, c-format
msgid "\t\t\t[default is %s]\n"
msgstr ""
-#: config/tc-sparc.c:675
+#: config/tc-sparc.c:702
#, c-format
msgid ""
"-KPIC\t\t\tgenerate PIC\n"
@@ -12468,7 +12719,7 @@ msgid ""
"-s\t\t\tignored\n"
msgstr ""
-#: config/tc-sparc.c:687
+#: config/tc-sparc.c:714
#, c-format
msgid ""
"-EL\t\t\tgenerate code for a little endian machine\n"
@@ -12477,316 +12728,321 @@ msgid ""
" instructions and little endian data.\n"
msgstr ""
-#: config/tc-sparc.c:823
+#: config/tc-sparc.c:851
#, c-format
msgid "Internal error: losing opcode: `%s' \"%s\"\n"
msgstr ""
-#: config/tc-sparc.c:842
+#: config/tc-sparc.c:870
#, c-format
msgid "Internal error: can't find opcode `%s' for `%s'\n"
msgstr ""
-#: config/tc-sparc.c:983
+#: config/tc-sparc.c:1053
msgid "Support for 64-bit arithmetic not compiled in."
msgstr ""
-#: config/tc-sparc.c:1029
+#: config/tc-sparc.c:1099
msgid "set: number not in 0..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:1036
+#: config/tc-sparc.c:1106
msgid "set: number not in -2147483648..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:1095
+#: config/tc-sparc.c:1165
msgid "setsw: number not in -2147483648..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:1143
+#: config/tc-sparc.c:1213
msgid "setx: temporary register same as destination register"
msgstr ""
-#: config/tc-sparc.c:1214
+#: config/tc-sparc.c:1284
msgid "setx: illegal temporary register g0"
msgstr ""
-#: config/tc-sparc.c:1311
+#: config/tc-sparc.c:1381
msgid "FP branch in delay slot"
msgstr ""
-#: config/tc-sparc.c:1326
+#: config/tc-sparc.c:1396
msgid "FP branch preceded by FP instruction; NOP inserted"
msgstr ""
-#: config/tc-sparc.c:1366
+#: config/tc-sparc.c:1436
msgid "failed special case insn sanity check"
msgstr ""
-#: config/tc-sparc.c:1454
+#: config/tc-sparc.c:1562
msgid ": invalid membar mask name"
msgstr ""
-#: config/tc-sparc.c:1470
+#: config/tc-sparc.c:1578
msgid ": invalid membar mask expression"
msgstr ""
-#: config/tc-sparc.c:1475
+#: config/tc-sparc.c:1583
msgid ": invalid membar mask number"
msgstr ""
-#: config/tc-sparc.c:1490
+#: config/tc-sparc.c:1598
msgid ": invalid siam mode expression"
msgstr ""
-#: config/tc-sparc.c:1495
+#: config/tc-sparc.c:1603
msgid ": invalid siam mode number"
msgstr ""
-#: config/tc-sparc.c:1511
+#: config/tc-sparc.c:1619
msgid ": invalid prefetch function name"
msgstr ""
-#: config/tc-sparc.c:1519
+#: config/tc-sparc.c:1627
msgid ": invalid prefetch function expression"
msgstr ""
-#: config/tc-sparc.c:1524
+#: config/tc-sparc.c:1632
msgid ": invalid prefetch function number"
msgstr ""
-#: config/tc-sparc.c:1552 config/tc-sparc.c:1564
+#: config/tc-sparc.c:1660 config/tc-sparc.c:1672
msgid ": unrecognizable privileged register"
msgstr ""
-#: config/tc-sparc.c:1588 config/tc-sparc.c:1600
+#: config/tc-sparc.c:1696 config/tc-sparc.c:1708
msgid ": unrecognizable hyperprivileged register"
msgstr ""
-#: config/tc-sparc.c:1624 config/tc-sparc.c:1649
+#: config/tc-sparc.c:1732 config/tc-sparc.c:1757
msgid ": unrecognizable v9a or v9b ancillary state register"
msgstr ""
-#: config/tc-sparc.c:1629
+#: config/tc-sparc.c:1737
msgid ": rd on write only ancillary state register"
msgstr ""
#. %sys_tick and %sys_tick_cmpr are v9bnotv9a
-#: config/tc-sparc.c:1637
+#: config/tc-sparc.c:1745
msgid ": unrecognizable v9a ancillary state register"
msgstr ""
-#: config/tc-sparc.c:1673
+#: config/tc-sparc.c:1781
msgid ": asr number must be between 16 and 31"
msgstr ""
-#: config/tc-sparc.c:1681
+#: config/tc-sparc.c:1789
msgid ": asr number must be between 0 and 31"
msgstr ""
-#: config/tc-sparc.c:1691
+#: config/tc-sparc.c:1799
#, c-format
msgid ": expecting %asrN"
msgstr ""
-#: config/tc-sparc.c:1878 config/tc-sparc.c:1916 config/tc-sparc.c:2329
-#: config/tc-sparc.c:2365
+#: config/tc-sparc.c:1986 config/tc-sparc.c:2024 config/tc-sparc.c:2454
+#: config/tc-sparc.c:2490
#, c-format
msgid "Illegal operands: %%%s requires arguments in ()"
msgstr ""
-#: config/tc-sparc.c:1884
+#: config/tc-sparc.c:1992
#, c-format
msgid ""
"Illegal operands: %%%s cannot be used together with other relocs in the insn "
"()"
msgstr ""
-#: config/tc-sparc.c:1895
+#: config/tc-sparc.c:2003
#, c-format
msgid "Illegal operands: %%%s can be only used with call __tls_get_addr"
msgstr ""
-#: config/tc-sparc.c:2102
+#: config/tc-sparc.c:2210
msgid "detected global register use not covered by .register pseudo-op"
msgstr ""
-#: config/tc-sparc.c:2173
+#: config/tc-sparc.c:2285
msgid ": There are only 64 f registers; [0-63]"
msgstr ""
-#: config/tc-sparc.c:2175 config/tc-sparc.c:2193
+#: config/tc-sparc.c:2287 config/tc-sparc.c:2305
msgid ": There are only 32 f registers; [0-31]"
msgstr ""
-#: config/tc-sparc.c:2185
+#: config/tc-sparc.c:2297
msgid ": There are only 32 single precision f registers; [0-31]"
msgstr ""
-#: config/tc-sparc.c:2377
+#: config/tc-sparc.c:2502
#, c-format
msgid ""
"Illegal operands: Can't do arithmetics other than + and - involving %%%s()"
msgstr ""
-#: config/tc-sparc.c:2487
+#: config/tc-sparc.c:2614
#, c-format
msgid "Illegal operands: Can't add non-constant expression to %%%s()"
msgstr ""
-#: config/tc-sparc.c:2497
+#: config/tc-sparc.c:2624
#, c-format
msgid ""
"Illegal operands: Can't do arithmetics involving %%%s() of a relocatable "
"symbol"
msgstr ""
-#: config/tc-sparc.c:2515
+#: config/tc-sparc.c:2642
msgid ": PC-relative operand can't be a constant"
msgstr ""
-#: config/tc-sparc.c:2522
+#: config/tc-sparc.c:2649
msgid ": TLS operand can't be a constant"
msgstr ""
-#: config/tc-sparc.c:2555
+#: config/tc-sparc.c:2682
msgid ": invalid ASI name"
msgstr ""
-#: config/tc-sparc.c:2563
+#: config/tc-sparc.c:2690
msgid ": invalid ASI expression"
msgstr ""
-#: config/tc-sparc.c:2568
+#: config/tc-sparc.c:2695
msgid ": invalid ASI number"
msgstr ""
-#: config/tc-sparc.c:2665
+#: config/tc-sparc.c:2792
msgid "OPF immediate operand out of range (0-0x1ff)"
msgstr ""
-#: config/tc-sparc.c:2670
+#: config/tc-sparc.c:2797
msgid "non-immediate OPF operand, ignored"
msgstr ""
-#: config/tc-sparc.c:2689
+#: config/tc-sparc.c:2816
msgid ": invalid cpreg name"
msgstr ""
-#: config/tc-sparc.c:2718
+#: config/tc-sparc.c:2845
#, c-format
msgid "Illegal operands%s"
msgstr ""
-#: config/tc-sparc.c:2752
+#: config/tc-sparc.c:2884
#, c-format
msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\""
msgstr ""
-#: config/tc-sparc.c:2788
+#: config/tc-sparc.c:2920
#, c-format
msgid "Architecture mismatch on \"%s\"."
msgstr ""
-#: config/tc-sparc.c:2789
+#: config/tc-sparc.c:2921
#, c-format
msgid " (Requires %s; requested architecture is %s.)"
msgstr ""
-#: config/tc-sparc.c:3324
+#: config/tc-sparc.c:2933
+#, c-format
+msgid "Hardware capability \"%s\" not enabled for \"%s\"."
+msgstr ""
+
+#: config/tc-sparc.c:3467
#, c-format
msgid "bad or unhandled relocation type: 0x%02x"
msgstr ""
-#: config/tc-sparc.c:3657
+#: config/tc-sparc.c:3800
msgid "Expected comma after name"
msgstr ""
-#: config/tc-sparc.c:3666
+#: config/tc-sparc.c:3809
#, c-format
msgid "BSS length (%d.) <0! Ignored."
msgstr ""
-#: config/tc-sparc.c:3678
+#: config/tc-sparc.c:3821
msgid "bad .reserve segment -- expected BSS segment"
msgstr ""
-#: config/tc-sparc.c:3706
+#: config/tc-sparc.c:3849
#, c-format
msgid "alignment too large; assuming %d"
msgstr ""
-#: config/tc-sparc.c:3712 config/tc-sparc.c:3862
+#: config/tc-sparc.c:3855 config/tc-sparc.c:4005
msgid "negative alignment"
msgstr ""
-#: config/tc-sparc.c:3722 config/tc-sparc.c:3884 read.c:1321 read.c:2371
+#: config/tc-sparc.c:3865 config/tc-sparc.c:4027 read.c:1321 read.c:2371
msgid "alignment not a power of 2"
msgstr ""
-#: config/tc-sparc.c:3775
+#: config/tc-sparc.c:3918
#, c-format
msgid "Ignoring attempt to re-define symbol %s"
msgstr ""
-#: config/tc-sparc.c:3799 config/tc-v850.c:275
+#: config/tc-sparc.c:3942 config/tc-v850.c:275
msgid "Expected comma after symbol-name"
msgstr ""
-#: config/tc-sparc.c:3809
+#: config/tc-sparc.c:3952
#, c-format
msgid ".COMMon length (%lu) out of range ignored"
msgstr ""
-#: config/tc-sparc.c:3842
+#: config/tc-sparc.c:3985
msgid "Expected comma after common length"
msgstr ""
-#: config/tc-sparc.c:3856
+#: config/tc-sparc.c:3999
#, c-format
msgid "alignment too large; assuming %ld"
msgstr ""
-#: config/tc-sparc.c:3999
+#: config/tc-sparc.c:4142
msgid "Unknown segment type"
msgstr ""
-#: config/tc-sparc.c:4074 config/tc-sparc.c:4084
+#: config/tc-sparc.c:4217 config/tc-sparc.c:4227
#, c-format
msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"
msgstr ""
-#: config/tc-sparc.c:4102
+#: config/tc-sparc.c:4245
msgid "redefinition of global register"
msgstr ""
-#: config/tc-sparc.c:4113
+#: config/tc-sparc.c:4256
#, c-format
msgid "Register symbol %s already defined."
msgstr ""
-#: config/tc-sparc.c:4317
+#: config/tc-sparc.c:4460
#, c-format
msgid "Illegal operands: %%r_plt in %d-byte data field"
msgstr ""
-#: config/tc-sparc.c:4327
+#: config/tc-sparc.c:4470
#, c-format
msgid "Illegal operands: %%r_tls_dtpoff in %d-byte data field"
msgstr ""
-#: config/tc-sparc.c:4364 config/tc-vax.c:3312
+#: config/tc-sparc.c:4507 config/tc-vax.c:3312
#, c-format
msgid "Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"
msgstr ""
-#: config/tc-sparc.c:4372 config/tc-sparc.c:4403 config/tc-sparc.c:4412
+#: config/tc-sparc.c:4515 config/tc-sparc.c:4546 config/tc-sparc.c:4555
#: config/tc-vax.c:3320 config/tc-vax.c:3351 config/tc-vax.c:3360
#, c-format
msgid "Illegal operands: %%r_%s%d requires arguments in ()"
msgstr ""
-#: config/tc-sparc.c:4421 config/tc-vax.c:3369
+#: config/tc-sparc.c:4564 config/tc-vax.c:3369
#, c-format
msgid "Illegal operands: garbage after %%r_%s%d()"
msgstr ""
@@ -14289,6 +14545,118 @@ msgstr ""
msgid "unwound frame has negative size"
msgstr ""
+#: config/tc-tilegx.c:126
+#, c-format
+msgid ""
+" -Q ignored\n"
+" -V print assembler version number\n"
+" --32/--64 generate 32bit/64bit code\n"
+msgstr ""
+
+#: config/tc-tilegx.c:685 config/tc-tilepro.c:554
+msgid "Invalid operator for operand."
+msgstr ""
+
+#: config/tc-tilegx.c:696 config/tc-tilepro.c:565
+msgid "Operator may only be applied to symbols."
+msgstr ""
+
+#: config/tc-tilegx.c:766 config/tc-tilepro.c:635
+#, c-format
+msgid "Writes to register '%s' are not allowed."
+msgstr ""
+
+#: config/tc-tilegx.c:793 config/tc-tilepro.c:662
+#, c-format
+msgid ""
+"Two instructions in the same bundle both write to register %s, which is not "
+"allowed."
+msgstr ""
+
+#: config/tc-tilegx.c:858 config/tc-tilepro.c:726
+#, c-format
+msgid "'%s' may not be bundled with other instructions."
+msgstr ""
+
+#: config/tc-tilegx.c:888 config/tc-tilepro.c:756
+msgid "Invalid combination of instructions for bundle."
+msgstr ""
+
+#: config/tc-tilegx.c:923 config/tc-tilepro.c:791
+msgid "instruction address is not a multiple of 8"
+msgstr ""
+
+#: config/tc-tilegx.c:1000 config/tc-tilepro.c:869
+msgid "Invalid expression."
+msgstr ""
+
+#: config/tc-tilegx.c:1043 config/tc-tilepro.c:911
+#, c-format
+msgid "Expected register, got '%s'."
+msgstr ""
+
+#: config/tc-tilegx.c:1052 config/tc-tilepro.c:918
+#, c-format
+msgid "Found use of non-canonical register name %s; use %s instead."
+msgstr ""
+
+#: config/tc-tilegx.c:1114 config/tc-tilepro.c:977
+#, c-format
+msgid "Too few operands to '%s'."
+msgstr ""
+
+#: config/tc-tilegx.c:1119 config/tc-tilepro.c:982
+#, c-format
+msgid "Unexpected character '%c' after operand %d to %s."
+msgstr ""
+
+#: config/tc-tilegx.c:1140 config/tc-tilepro.c:1003
+msgid "Expected immediate expression"
+msgstr ""
+
+#: config/tc-tilegx.c:1153 config/tc-tilegx.c:1762 config/tc-tilepro.c:1016
+#: config/tc-tilepro.c:1561
+msgid "Found '}' when not bundling."
+msgstr ""
+
+#: config/tc-tilegx.c:1194 config/tc-tilepro.c:1056
+#, c-format
+msgid "Unknown opcode `%.*s'."
+msgstr ""
+
+#: config/tc-tilegx.c:1205 config/tc-tilepro.c:1067
+msgid "Too many instructions for bundle."
+msgstr ""
+
+#: config/tc-tilegx.c:1291 config/tc-tilepro.c:1152
+msgid "Bad call to md_atof ()"
+msgstr ""
+
+#: config/tc-tilegx.c:1367 config/tc-tilepro.c:1215
+msgid "This operator only produces two byte values."
+msgstr ""
+
+#: config/tc-tilegx.c:1393 config/tc-tilepro.c:1241
+#, c-format
+msgid "unsupported BFD relocation size %d"
+msgstr ""
+
+#: config/tc-tilegx.c:1707 config/tc-tilepro.c:1506
+#, c-format
+msgid "internal error? cannot generate `%s' relocation (%d, %d)"
+msgstr ""
+
+#: config/tc-tilegx.c:1750 config/tc-tilepro.c:1549
+msgid "Found '{' when already bundling."
+msgstr ""
+
+#: config/tc-tilepro.c:99
+#, c-format
+msgid ""
+" -Q ignored\n"
+" -V print assembler version number\n"
+msgstr ""
+
#: config/tc-v850.c:286
#, c-format
msgid ".COMMon length (%d.) < 0! Ignored."
@@ -15449,7 +15817,7 @@ msgstr ""
msgid "parentheses ignored"
msgstr ""
-#: config/tc-z80.c:1913 read.c:3603
+#: config/tc-z80.c:1913 read.c:3602
#, c-format
msgid "junk at end of line, first unrecognized character is `%c'"
msgstr ""
@@ -15755,38 +16123,38 @@ msgstr ""
msgid "CFI is not supported for this target"
msgstr ""
-#: dwarf2dbg.c:552 dwarf2dbg.c:587
+#: dwarf2dbg.c:585 dwarf2dbg.c:620
msgid "file number less than one"
msgstr ""
-#: dwarf2dbg.c:562
+#: dwarf2dbg.c:595
#, c-format
msgid "file number %ld already allocated"
msgstr ""
-#: dwarf2dbg.c:592 dwarf2dbg.c:1345
+#: dwarf2dbg.c:625 dwarf2dbg.c:1378
#, c-format
msgid "unassigned file number %ld"
msgstr ""
-#: dwarf2dbg.c:661
+#: dwarf2dbg.c:694
msgid "is_stmt value not 0 or 1"
msgstr ""
-#: dwarf2dbg.c:673
+#: dwarf2dbg.c:706
msgid "isa number less than zero"
msgstr ""
-#: dwarf2dbg.c:685
+#: dwarf2dbg.c:718
msgid "discriminator less than zero"
msgstr ""
-#: dwarf2dbg.c:691
+#: dwarf2dbg.c:724
#, c-format
msgid "unknown .loc sub-directive `%s'"
msgstr ""
-#: dwarf2dbg.c:1408
+#: dwarf2dbg.c:1441
msgid "internal error: unknown dwarf2 format"
msgstr ""
@@ -15976,11 +16344,11 @@ msgstr ""
msgid "GP prologue size exceeds field size, using 0 instead"
msgstr ""
-#: expr.c:87 read.c:3668
+#: expr.c:87 read.c:3667
msgid "bignum invalid"
msgstr ""
-#: expr.c:89 read.c:3670 read.c:4147 read.c:5031
+#: expr.c:89 read.c:3669 read.c:4146 read.c:5030
msgid "floating point number invalid"
msgstr ""
@@ -16024,7 +16392,7 @@ msgstr ""
msgid "missing '%c'"
msgstr ""
-#: expr.c:977 read.c:4513
+#: expr.c:977 read.c:4512
msgid "EBCDIC constants are not supported"
msgstr ""
@@ -16062,7 +16430,7 @@ msgstr ""
msgid "right operand is a float; integer 0 assumed"
msgstr ""
-#: expr.c:1879 symbols.c:1379
+#: expr.c:1879 symbols.c:1381
msgid "division by zero"
msgstr ""
@@ -16082,7 +16450,7 @@ msgstr ""
msgid "attempt to allocate data in common section"
msgstr ""
-#: frags.c:112 write.c:1379
+#: frags.c:102 write.c:1422
#, c-format
msgid "can't extend frag %u chars"
msgstr ""
@@ -16113,7 +16481,7 @@ msgstr ""
msgid "can't read from %s: %s"
msgstr ""
-#: input-file.c:267 listing.c:1397 output-file.c:69
+#: input-file.c:267 listing.c:1397 output-file.c:72
#, c-format
msgid "can't close %s: %s"
msgstr ""
@@ -16576,192 +16944,196 @@ msgstr ""
msgid "%s without %s"
msgstr ""
-#: read.c:3247
+#: read.c:3246
msgid "unsupported variable size or fill value"
msgstr ""
-#: read.c:3275
+#: read.c:3274
msgid ".space repeat count is zero, ignored"
msgstr ""
-#: read.c:3277
+#: read.c:3276
msgid ".space repeat count is negative, ignored"
msgstr ""
-#: read.c:3306
+#: read.c:3305
msgid "space allocation too complex in absolute section"
msgstr ""
-#: read.c:3312
+#: read.c:3311
msgid "space allocation too complex in common section"
msgstr ""
-#: read.c:3403 read.c:4759
+#: read.c:3402 read.c:4758
#, c-format
msgid "bad floating literal: %s"
msgstr ""
-#: read.c:3560
+#: read.c:3559
#, c-format
msgid "%s: would close weakref loop: %s"
msgstr ""
-#: read.c:3606
+#: read.c:3605
#, c-format
msgid "junk at end of line, first unrecognized character valued 0x%x"
msgstr ""
-#: read.c:3734
+#: read.c:3733
#, c-format
msgid "`%s' can't be equated to common symbol '%s'"
msgstr ""
-#: read.c:3871
+#: read.c:3858
+msgid "unexpected `\"' in expression"
+msgstr ""
+
+#: read.c:3870
msgid "rva without symbol"
msgstr ""
-#: read.c:3928
+#: read.c:3927
msgid "missing or bad offset expression"
msgstr ""
-#: read.c:3949
+#: read.c:3948
msgid "missing reloc type"
msgstr ""
-#: read.c:3961
+#: read.c:3960
msgid "unrecognized reloc type"
msgstr ""
-#: read.c:3977
+#: read.c:3976
msgid "bad reloc expression"
msgstr ""
-#: read.c:4103
+#: read.c:4102
msgid "attempt to store value in absolute section"
msgstr ""
-#: read.c:4141 read.c:5025
+#: read.c:4140 read.c:5024
msgid "zero assumed for missing expression"
msgstr ""
-#: read.c:4153 read.c:5037 write.c:266 write.c:987
+#: read.c:4152 read.c:5036 write.c:266 write.c:1000
msgid "register value used as expression"
msgstr ""
-#: read.c:4233
+#: read.c:4232
#, c-format
msgid "value 0x%llx truncated to 0x%llx"
msgstr ""
-#: read.c:4236
+#: read.c:4235
msgid "value 0x%I64x truncated to 0x%I64x"
msgstr ""
-#: read.c:4240
+#: read.c:4239
#, c-format
msgid "value 0x%lx truncated to 0x%lx"
msgstr ""
-#: read.c:4267
+#: read.c:4266
#, c-format
msgid "bignum truncated to %d bytes"
msgstr ""
-#: read.c:4586 read.c:4781
+#: read.c:4585 read.c:4780
msgid "unresolvable or nonpositive repeat count; using 1"
msgstr ""
-#: read.c:4635
+#: read.c:4634
#, c-format
msgid "unknown floating type type '%c'"
msgstr ""
-#: read.c:4657
+#: read.c:4656
msgid "floating point constant too large"
msgstr ""
-#: read.c:5193
+#: read.c:5192
msgid "strings must be placed into a section"
msgstr ""
-#: read.c:5241
+#: read.c:5240
msgid "expected <nn>"
msgstr ""
#. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:5274 read.c:5360
+#: read.c:5273 read.c:5359
msgid "unterminated string; newline inserted"
msgstr ""
-#: read.c:5368
+#: read.c:5367
msgid "bad escaped character in string"
msgstr ""
-#: read.c:5393
+#: read.c:5392
msgid "expected address expression"
msgstr ""
-#: read.c:5412
+#: read.c:5411
#, c-format
msgid "symbol \"%s\" undefined; zero assumed"
msgstr ""
-#: read.c:5415
+#: read.c:5414
msgid "some symbol undefined; zero assumed"
msgstr ""
-#: read.c:5450
+#: read.c:5449
msgid "this string may not contain '\\0'"
msgstr ""
-#: read.c:5486
+#: read.c:5485
msgid "missing string"
msgstr ""
-#: read.c:5577
+#: read.c:5576
#, c-format
msgid ".incbin count zero, ignoring `%s'"
msgstr ""
-#: read.c:5603
+#: read.c:5602
#, c-format
msgid "file not found: %s"
msgstr ""
-#: read.c:5617
+#: read.c:5616
#, c-format
msgid "seek to end of .incbin file failed `%s'"
msgstr ""
-#: read.c:5628
+#: read.c:5627
#, c-format
msgid "skip (%ld) or count (%ld) invalid for file size (%ld)"
msgstr ""
-#: read.c:5635
+#: read.c:5634
#, c-format
msgid "could not skip to %ld in file `%s'"
msgstr ""
-#: read.c:5644
+#: read.c:5643
#, c-format
msgid "truncated file `%s', %ld of %ld bytes read"
msgstr ""
-#: read.c:5803
+#: read.c:5802
msgid "missing .func"
msgstr ""
-#: read.c:5820
+#: read.c:5819
msgid ".endfunc missing for previous .func"
msgstr ""
-#: read.c:5957
+#: read.c:5956
#, c-format
msgid "missing closing `%c'"
msgstr ""
-#: read.c:5959
+#: read.c:5958
msgid "stray `\\'"
msgstr ""
@@ -16787,81 +17159,81 @@ msgstr ""
msgid "comma missing in .xstabs"
msgstr ""
-#: symbols.c:285
+#: symbols.c:287
#, c-format
msgid "cannot define symbol `%s' in absolute section"
msgstr ""
-#: symbols.c:415
+#: symbols.c:417
#, c-format
msgid "symbol `%s' is already defined as \"%s\"/%s%ld"
msgstr ""
-#: symbols.c:490 symbols.c:497
+#: symbols.c:492 symbols.c:499
#, c-format
msgid "inserting \"%s\" into symbol table failed: %s"
msgstr ""
-#: symbols.c:1008
+#: symbols.c:1010
#, c-format
msgid "invalid operands (%s and %s sections) for `%s'"
msgstr ""
-#: symbols.c:1012
+#: symbols.c:1014
#, c-format
msgid "invalid operand (%s section) for `%s'"
msgstr ""
-#: symbols.c:1020
+#: symbols.c:1022
#, c-format
msgid "invalid operands (%s and %s sections) for `%s' when setting `%s'"
msgstr ""
-#: symbols.c:1023
+#: symbols.c:1025
#, c-format
msgid "invalid operand (%s section) for `%s' when setting `%s'"
msgstr ""
-#: symbols.c:1072
+#: symbols.c:1074
#, c-format
msgid "symbol definition loop encountered at `%s'"
msgstr ""
-#: symbols.c:1099
+#: symbols.c:1101
#, c-format
msgid "cannot convert expression symbol %s to complex relocation"
msgstr ""
-#: symbols.c:1381
+#: symbols.c:1383
#, c-format
msgid "division by zero when setting `%s'"
msgstr ""
-#: symbols.c:1462 write.c:2048
+#: symbols.c:1464 write.c:2091
#, c-format
msgid "can't resolve value for symbol `%s'"
msgstr ""
-#: symbols.c:1909
+#: symbols.c:1911
#, c-format
msgid "\"%d\" (instance number %d of a %s label)"
msgstr ""
-#: symbols.c:1938
+#: symbols.c:1940
#, c-format
msgid "attempt to get value of unresolved symbol `%s'"
msgstr ""
-#: symbols.c:2213
+#: symbols.c:2226
msgid "section symbols are already global"
msgstr ""
-#: symbols.c:2326
+#: symbols.c:2339
#, c-format
msgid "Accessing function `%s' as thread-local object"
msgstr ""
-#: symbols.c:2330
+#: symbols.c:2343
#, c-format
msgid "Accessing `%s' as thread-local object"
msgstr ""
@@ -16884,108 +17256,108 @@ msgstr ""
msgid "invalid reloc expression"
msgstr ""
-#: write.c:1072
+#: write.c:1085
#, c-format
msgid "value of %s too large for field of %d bytes at %s"
msgstr ""
-#: write.c:1084
+#: write.c:1097
#, c-format
msgid "signed .word overflow; switch may be too large; %ld at 0x%lx"
msgstr ""
-#: write.c:1128
+#: write.c:1141
msgid "redefined symbol cannot be used on reloc"
msgstr ""
-#: write.c:1141
+#: write.c:1154
msgid "relocation out of range"
msgstr ""
-#: write.c:1144
+#: write.c:1157
#, c-format
msgid "%s:%u: bad return from bfd_install_relocation: %x"
msgstr ""
-#: write.c:1208
-msgid "internal error: fixup not contained within frag"
+#: write.c:1180
+msgid "reloc not within (fixed part of) section"
msgstr ""
-#: write.c:1261
-msgid "reloc not within (fixed part of) section"
+#: write.c:1250
+msgid "internal error: fixup not contained within frag"
msgstr ""
-#: write.c:1325 write.c:1455
+#: write.c:1368 write.c:1498
msgid "can't extend frag"
msgstr ""
-#: write.c:1517 write.c:1538
+#: write.c:1560 write.c:1581
#, c-format
msgid "can't write %s: %s"
msgstr ""
-#: write.c:1568
+#: write.c:1611
#, c-format
msgid "cannot write to output file '%s': %s"
msgstr ""
-#: write.c:1724
+#: write.c:1767
#, c-format
msgid "%d error%s, %d warning%s, generating bad object file"
msgstr ""
-#: write.c:1731
+#: write.c:1774
#, c-format
msgid "%d error%s, %d warning%s, no object file generated"
msgstr ""
-#: write.c:1963
+#: write.c:2006
#, c-format
msgid "%s: global symbols not supported in common sections"
msgstr ""
-#: write.c:1977
+#: write.c:2020
#, c-format
msgid "local label `%s' is not defined"
msgstr ""
-#: write.c:1999
+#: write.c:2042
#, c-format
msgid "Local symbol `%s' can't be equated to common symbol `%s'"
msgstr ""
-#: write.c:2006
+#: write.c:2049
#, c-format
msgid "can't make global register symbol `%s'"
msgstr ""
-#: write.c:2299
+#: write.c:2342
#, c-format
msgid "alignment padding (%lu bytes) not a multiple of %ld"
msgstr ""
-#: write.c:2461
+#: write.c:2504
#, c-format
msgid ".word %s-%s+%s didn't fit"
msgstr ""
-#: write.c:2555
+#: write.c:2598
msgid "padding added"
msgstr ""
-#: write.c:2605
+#: write.c:2648
msgid "attempt to move .org backwards"
msgstr ""
-#: write.c:2629
+#: write.c:2672
msgid ".space specifies non-absolute value"
msgstr ""
-#: write.c:2644
+#: write.c:2687
msgid ".space or .fill with negative value, ignored"
msgstr ""
-#: write.c:2715
+#: write.c:2758
#, c-format
msgid ""
"Infinite loop encountered whilst attempting to compute the addresses of "
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 6c4e38fd48..2210cf5266 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * gas/epiphany: New directory.
+ * gas/testsuite/gas/epiphany/addr-syntax.d: New file.
+ * gas/testsuite/gas/epiphany/addr-syntax.s: New file.
+ * gas/testsuite/gas/epiphany/allinsn.d: New file.
+ * gas/testsuite/gas/epiphany/allinsn.exp: New file.
+ * gas/testsuite/gas/epiphany/allinsn.s: New file.
+ * gas/testsuite/gas/epiphany/badpostmod.s: New file.
+ * gas/testsuite/gas/epiphany/badrelax.d: New file.
+ * gas/testsuite/gas/epiphany/badrelax.s: New file.
+ * gas/testsuite/gas/epiphany/branch_lit.d: New file.
+ * gas/testsuite/gas/epiphany/branch_lit.s: New file.
+ * gas/testsuite/gas/epiphany/regression.d: New file.
+ * gas/testsuite/gas/epiphany/regression.s: New file.
+ * gas/testsuite/gas/epiphany/sample.d: New file.
+ * gas/testsuite/gas/epiphany/sample.s: New file.
+
2011-10-24 Julian Brown <julian@codesourcery.com>
* gas/m68k/all.exp (movem-offset): Add test.
diff --git a/gas/testsuite/gas/epiphany/addr-syntax.d b/gas/testsuite/gas/epiphany/addr-syntax.d
new file mode 100644
index 0000000000..d9dc3e6e8b
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/addr-syntax.d
@@ -0,0 +1,15 @@
+#as:
+#objdump: -dr
+#name: addr-syntax
+
+.*.o: file format elf32-epiphany
+
+
+Disassembly of section \.text:
+
+00000000 \<\.text\>:
+ 0: 2bcc 01ff ldr.l r1,\[r2,-0x7ff\]
+ 4: 4c4c 0301 ldr.l r2,\[r3\],-0x8
+ 8: 107c 2201 strd.l r8,\[r4\],\+0x8
+ c: 506c 2400 ldrd sl,\[ip\]
+ 10: 587c 2400 strd sl,\[lr\]
diff --git a/gas/testsuite/gas/epiphany/addr-syntax.s b/gas/testsuite/gas/epiphany/addr-syntax.s
new file mode 100644
index 0000000000..2d12580bf5
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/addr-syntax.s
@@ -0,0 +1,9 @@
+; Check that we can do negative displacements
+ ldr r1,[r2,-2047]
+; Check postmodified immediate with positive and negative displacements
+ ldr r2,[r3],-8
+ strd r8,[r4],8
+
+; Check that zero displacements work
+ ldrd r10,[r12]
+ strd r10,[r14]
diff --git a/gas/testsuite/gas/epiphany/allinsn.d b/gas/testsuite/gas/epiphany/allinsn.d
new file mode 100644
index 0000000000..3a8039b940
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/allinsn.d
@@ -0,0 +1,1400 @@
+#as:
+#objdump: -dr
+#name: allinsn
+
+.*\.o: file format elf32-epiphany
+
+Disassembly of section .text:
+
+00000000 \<bgt16\>:
+ 0: 0260 bgt 4 \<bgt16\+0x4\>
+ 2: 0260 bgt 6 \<bgt16\+0x6\>
+ 4: fe60 bgt 0 \<bgt16\>
+ 6: fd60 bgt 0 \<bgt16\>
+ 8: 0068 0000 bgt 8 \<bgt16\+0x8\>
+ 8: R_EPIPHANY_SIMM24 \.data
+ c: 0260 bgt 10 \<bgt16\+0x10\>
+ e: f960 bgt 0 \<bgt16\>
+ 10: f860 bgt 0 \<bgt16\>
+
+00000012 \<bgtu16\>:
+ 12: 0220 bgtu 16 \<bgtu16\+0x4\>
+ 14: fe20 bgtu 10 \<bgt16\+0x10\>
+ 16: f520 bgtu 0 \<bgt16\>
+ 18: 0220 bgtu 1c \<bgtu16\+0xa\>
+ 1a: fe20 bgtu 16 \<bgtu16\+0x4\>
+ 1c: f220 bgtu 0 \<bgt16\>
+ 1e: f120 bgtu 0 \<bgt16\>
+ 20: 0220 bgtu 24 \<bgte16\+0x2\>
+
+00000022 \<bgte16\>:
+ 22: ef70 bgte 0 \<bgt16\>
+ 24: ee70 bgte 0 \<bgt16\>
+ 26: ed70 bgte 0 \<bgt16\>
+ 28: ec70 bgte 0 \<bgt16\>
+ 2a: eb70 bgte 0 \<bgt16\>
+ 2c: fe70 bgte 28 \<bgte16\+0x6\>
+ 2e: 0078 0000 bgte 2e \<bgte16\+0xc\>
+ 2e: R_EPIPHANY_SIMM24 \.data
+ 32: 0078 0000 bgte 32 \<bgte16\+0x10\>
+ 32: R_EPIPHANY_SIMM24 \.data
+
+00000036 \<bgteu16\>:
+ 36: 0230 bgteu 3a \<bgteu16\+0x4\>
+ 38: fe30 bgteu 34 \<bgte16\+0x12\>
+ 3a: 0038 0000 bgteu 3a \<bgteu16\+0x4\>
+ 3a: R_EPIPHANY_SIMM24 \.data
+ 3e: 0230 bgteu 42 \<bgteu16\+0xc\>
+ 40: e030 bgteu 0 \<bgt16\>
+ 42: 0230 bgteu 46 \<bgteu16\+0x10\>
+ 44: 0038 0000 bgteu 44 \<bgteu16\+0xe\>
+ 44: R_EPIPHANY_SIMM24 \.data
+ 48: 0038 0000 bgteu 48 \<bgteu16\+0x12\>
+ 48: R_EPIPHANY_SIMM24 \.data
+
+0000004c \<bgteu\>:
+ 4c: fe80 blt 48 \<bgteu16\+0x12\>
+ 4e: 0280 blt 52 \<bgteu\+0x6\>
+ 50: fe80 blt 4c \<bgteu\>
+ 52: 0280 blt 56 \<bgteu\+0xa\>
+ 54: fe80 blt 50 \<bgteu\+0x4\>
+ 56: 0280 blt 5a \<bgteu\+0xe\>
+ 58: 0088 0000 blt 58 \<bgteu\+0xc\>
+ 58: R_EPIPHANY_SIMM24 \.data
+ 5c: 0088 0000 blt 5c \<bgteu\+0x10\>
+ 5c: R_EPIPHANY_SIMM24 \.data
+
+00000060 \<blt\>:
+ 60: fe50 bltu 5c \<bgteu\+0x10\>
+ 62: 0250 bltu 66 \<blt\+0x6\>
+ 64: fe50 bltu 60 \<blt\>
+ 66: cd50 bltu 0 \<bgt16\>
+ 68: cc50 bltu 0 \<bgt16\>
+ 6a: cb50 bltu 0 \<bgt16\>
+ 6c: 0250 bltu 70 \<blt\+0x10\>
+ 6e: 0058 0000 bltu 6e \<blt\+0xe\>
+ 6e: R_EPIPHANY_SIMM24 \.data
+
+00000072 \<blte16\>:
+ 72: c790 blte 0 \<bgt16\>
+ 74: 0098 0000 blte 74 \<blte16\+0x2\>
+ 74: R_EPIPHANY_SIMM24 \.data
+ 78: 0098 0000 blte 78 \<blte16\+0x6\>
+ 78: R_EPIPHANY_SIMM24 \.data
+ 7c: c290 blte 0 \<bgt16\>
+ 7e: fe90 blte 7a \<blte16\+0x8\>
+ 80: c090 blte 0 \<bgt16\>
+ 82: bf90 blte 0 \<bgt16\>
+ 84: 0290 blte 88 \<blte\+0x2\>
+
+00000086 \<blte\>:
+ 86: bd40 blteu 0 \<bgt16\>
+ 88: 0048 0000 blteu 88 \<blte\+0x2\>
+ 88: R_EPIPHANY_SIMM24 \.data
+ 8c: ba40 blteu 0 \<bgt16\>
+ 8e: 0048 0000 blteu 8e \<blte\+0x8\>
+ 8e: R_EPIPHANY_SIMM24 \.data
+ 92: b740 blteu 0 \<bgt16\>
+ 94: fe40 blteu 90 \<blte\+0xa\>
+ 96: 0048 0000 blteu 96 \<blte\+0x10\>
+ 96: R_EPIPHANY_SIMM24 \.data
+ 9a: 0048 0000 blteu 9a \<blte\+0x14\>
+ 9a: R_EPIPHANY_SIMM24 \.data
+
+0000009e \<bbeq16\>:
+ 9e: b1a0 bbeq 0 \<bgt16\>
+ a0: b0a0 bbeq 0 \<bgt16\>
+ a2: 00a8 0000 bbeq a2 \<bbeq16\+0x4\>
+ a2: R_EPIPHANY_SIMM24 \.data
+ a6: ada0 bbeq 0 \<bgt16\>
+ a8: 02a0 bbeq ac \<bbeq16\+0xe\>
+ aa: 00a8 0000 bbeq aa \<bbeq16\+0xc\>
+ aa: R_EPIPHANY_SIMM24 \.data
+ ae: 00a8 0000 bbeq ae \<bbeq16\+0x10\>
+ ae: R_EPIPHANY_SIMM24 \.data
+ b2: 02a0 bbeq b6 \<bbeq\+0x2\>
+
+000000b4 \<bbeq\>:
+ b4: 00b8 0000 bbne b4 \<bbeq\>
+ b4: R_EPIPHANY_SIMM24 \.data
+ b8: feb0 bbne b4 \<bbeq\>
+ ba: 02b0 bbne be \<bbeq\+0xa\>
+ bc: a2b0 bbne 0 \<bgt16\>
+ be: 02b0 bbne c2 \<bbeq\+0xe\>
+ c0: 02b0 bbne c4 \<bbeq\+0x10\>
+ c2: 9fb0 bbne 0 \<bgt16\>
+ c4: 9eb0 bbne 0 \<bgt16\>
+
+000000c6 \<bblt16\>:
+ c6: 00c8 0000 bblt c6 \<bblt16\>
+ c6: R_EPIPHANY_SIMM24 \.data
+ ca: 02c0 bblt ce \<bblt16\+0x8\>
+ cc: 02c0 bblt d0 \<bblt16\+0xa\>
+ ce: 02c0 bblt d2 \<bblt16\+0xc\>
+ d0: fec0 bblt cc \<bblt16\+0x6\>
+ d2: 02c0 bblt d6 \<bblt16\+0x10\>
+ d4: 96c0 bblt 0 \<bgt16\>
+ d6: fec0 bblt d2 \<bblt16\+0xc\>
+
+000000d8 \<bblt\>:
+ d8: 02d0 bblte dc \<bblt\+0x4\>
+ da: 02d0 bblte de \<bblt\+0x6\>
+ dc: 92d0 bblte 0 \<bgt16\>
+ de: 91d0 bblte 0 \<bgt16\>
+ e0: 02d0 bblte e4 \<bblt\+0xc\>
+ e2: fed0 bblte de \<bblt\+0x6\>
+ e4: 00d8 0000 bblte e4 \<bblt\+0xc\>
+ e4: R_EPIPHANY_SIMM24 \.data
+ e8: 02d0 bblte ec \<b16\+0x2\>
+
+000000ea \<b16\>:
+ ea: 8be0 b 0 \<bgt16\>
+ ec: 8ae0 b 0 \<bgt16\>
+ ee: 02e0 b f2 \<b16\+0x8\>
+ f0: fee0 b ec \<b16\+0x2\>
+ f2: 87e0 b 0 \<bgt16\>
+ f4: 00e8 0000 b f4 \<b16\+0xa\>
+ f4: R_EPIPHANY_SIMM24 \.data
+ f8: 00e8 0000 b f8 \<b16\+0xe\>
+ f8: R_EPIPHANY_SIMM24 \.data
+ fc: fee0 b f8 \<b16\+0xe\>
+
+000000fe \<b\>:
+ fe: fef0 bl fa \<b16\+0x10\>
+ 100: 02f0 bl 104 \<b\+0x6\>
+ 102: 7ff8 ffff bl 0 \<bgt16\>
+ 106: fef0 bl 102 \<b\+0x4\>
+ 108: 7cf8 ffff bl 0 \<bgt16\>
+ 10c: fef0 bl 108 \<b\+0xa\>
+ 10e: fef0 bl 10a \<b\+0xc\>
+ 110: 78f8 ffff bl 0 \<bgt16\>
+
+00000114 \<bl\>:
+ 114: 114f 0402 jr ip
+ 118: 0d42 jr r3
+ 11a: 0142 jr r0
+ 11c: 0d4f 0402 jr fp
+ 120: 154f 0402 jr sp
+ 124: 0142 jr r0
+ 126: 0d42 jr r3
+ 128: 0142 jr r0
+
+0000012a \<jr\>:
+ 12a: 114f 0402 jr ip
+ 12e: 0d4f 1c02 jr r59
+ 132: 114f 0c02 jr r28
+ 136: 0d4f 0c02 jr r27
+ 13a: 154f 0402 jr sp
+ 13e: 0d4f 1802 jr r51
+ 142: 014f 1c02 jr r56
+ 146: 154f 1402 jr r45
+
+0000014a \<jalr16\>:
+ 14a: 115f 0402 jalr ip
+ 14e: 0d52 jalr r3
+ 150: 0152 jalr r0
+ 152: 0d5f 0402 jalr fp
+ 156: 155f 0402 jalr sp
+ 15a: 0d52 jalr r3
+ 15c: 0d5f 0402 jalr fp
+ 160: 115f 0402 jalr ip
+
+00000164 \<jalr\>:
+ 164: 115f 0402 jalr ip
+ 168: 0d5f 1c02 jalr r59
+ 16c: 115f 0c02 jalr r28
+ 170: 0d5f 0c02 jalr r27
+ 174: 155f 0402 jalr sp
+ 178: 0d5f 0402 jalr fp
+ 17c: 115f 0c02 jalr r28
+ 180: 0d5f 1c02 jalr r59
+
+00000184 \<ldrbx16\>:
+ 184: 9209 2480 ldrb.l ip,\[ip,\+ip]
+ 188: 6d81 ldrb r3,\[r3,r3]
+ 18a: 0001 ldrb r0,\[r0,r0]
+ 18c: 6d89 2480 ldrb.l fp,\[fp,\+fp]
+ 190: b689 2480 ldrb.l sp,\[sp,\+sp]
+ 194: 8009 2000 ldrb.l ip,\[r0,\+r0]
+ 198: 6b09 0080 ldrb.l r3,\[r2,\+lr]
+ 19c: 5189 0400 ldrb.l r2,\[ip,\+r3]
+
+000001a0 \<ldrbp16\>:
+ 1a0: a18d 2080 ldrb.l sp,\[r0],\+fp
+ 1a4: c60d 2080 ldrb.l lr,\[r1],\+ip
+ 1a8: 618d 2080 ldrb.l fp,\[r0],\+fp
+
+000001ac \<ldrbx\>:
+ 1ac: 9209 2480 ldrb.l ip,\[ip,\+ip]
+ 1b0: 6d89 ff80 ldrb.l r59,\[r59,\+r59]
+ 1b4: 9209 6d80 ldrb.l r28,\[r28,\+r28]
+ 1b8: 6d89 6d80 ldrb.l r27,\[r27,\+r27]
+ 1bc: b689 2480 ldrb.l sp,\[sp,\+sp]
+ 1c0: 2b89 aa80 ldrb.l r41,\[r18,\+r47]
+ 1c4: 6289 a900 ldrb.l r43,\[r16,\+r21]
+ 1c8: 0009 8480 ldrb.l r32,\[r8,\+r8]
+
+000001cc \<ldrbp\>:
+ 1cc: 850d 9900 ldrb.l r36,\[r49],\+r18
+ 1d0: 0d0d 9f00 ldrb.l r32,\[r59],\+r50
+ 1d4: 4c8d e580 ldrb.l r58,\[fp],\+r25
+
+000001d8 \<ldrbd16\>:
+ 1d8: 900c 2400 ldrb ip,\[ip]
+ 1dc: 6f84 ldrb r3,\[r3,0x7]
+ 1de: 0204 ldrb r0,\[r0,0x4]
+ 1e0: 6d8c 2400 ldrb.l fp,\[fp,\+0x3]
+ 1e4: b48c 2400 ldrb.l sp,\[sp,\+0x1]
+ 1e8: d48c 2400 ldrb.l lr,\[sp,\+0x1]
+ 1ec: 2004 ldrb r1,\[r0]
+ 1ee: 2484 ldrb r1,\[r1,0x1]
+
+000001f0 \<ldrbd\>:
+ 1f0: 900c 2400 ldrb ip,\[ip]
+ 1f4: 6f8c fcff ldrb.l r59,\[r59,\+0x7ff]
+ 1f8: 900c 6c80 ldrb.l r28,\[r28,\+0x400]
+ 1fc: 6f8c 6c7f ldrb.l r27,\[r27,\+0x3ff]
+ 200: b48c 2400 ldrb.l sp,\[sp,\+0x1]
+ 204: e70c 10c4 ldrb.l r7,\[r33,\+0x626]
+ 208: fa8c 60f4 ldrb.l r31,\[r6,\+0x7a5]
+ 20c: 438c 20e4 ldrb.l sl,\[r0,\+0x727]
+
+00000210 \<ldrhx16\>:
+ 210: 9229 2480 ldrh.l ip,\[ip,\+ip]
+ 214: 6da1 ldrh r3,\[r3,r3]
+ 216: 0021 ldrh r0,\[r0,r0]
+ 218: 6da9 2480 ldrh.l fp,\[fp,\+fp]
+ 21c: b6a9 2480 ldrh.l sp,\[sp,\+sp]
+ 220: 0329 0080 ldrh.l r0,\[r0,\+lr]
+ 224: daa9 2480 ldrh.l lr,\[lr,\+sp]
+ 228: 0da9 0480 ldrh.l r0,\[fp,\+fp]
+
+0000022c \<ldrhp16\>:
+ 22c: 55ad 0480 ldrh.l r2,\[sp],\+fp
+ 230: d5ad 4480 ldrh.l r22,\[sp],\+fp
+
+00000234 \<ldrhx\>:
+ 234: 9229 2480 ldrh.l ip,\[ip,\+ip]
+ 238: 6da9 ff80 ldrh.l r59,\[r59,\+r59]
+ 23c: 9229 6d80 ldrh.l r28,\[r28,\+r28]
+ 240: 6da9 6d80 ldrh.l r27,\[r27,\+r27]
+ 244: b6a9 2480 ldrh.l sp,\[sp,\+sp]
+ 248: c6a9 a900 ldrh.l r46,\[r17,\+r21]
+ 24c: c7a9 6280 ldrh.l r30,\[r1,\+r47]
+ 250: 6e29 a900 ldrh.l r43,\[r19,\+r20]
+
+00000254 \<ldrhp\>:
+ 254: 1ead 8d80 ldrh.l r32,\[r31],\+r29
+ 258: 9d2d d480 ldrh.l r52,\[r47],\+sl
+ 25c: e1ad 7400 ldrh.l r31,\[r40],\+r3
+
+00000260 \<ldrhd16\>:
+ 260: 902c 2400 ldrh ip,\[ip]
+ 264: 6fa4 ldrh r3,\[r3,0x7]
+ 266: 0224 ldrh r0,\[r0,0x4]
+ 268: 6dac 2400 ldrh.l fp,\[fp,\+0x3]
+ 26c: b4ac 2400 ldrh.l sp,\[sp,\+0x1]
+ 270: c82c 2000 ldrh lr,\[r2]
+ 274: 63a4 ldrh r3,\[r0,0x7]
+ 276: 0f24 ldrh r0,\[r3,0x6]
+
+00000278 \<ldrhd\>:
+ 278: 902c 2400 ldrh ip,\[ip]
+ 27c: 6fac fcff ldrh.l r59,\[r59,\+0x7ff]
+ 280: 902c 6c80 ldrh.l r28,\[r28,\+0x400]
+ 284: 6fac 6c7f ldrh.l r27,\[r27,\+0x3ff]
+ 288: b4ac 2400 ldrh.l sp,\[sp,\+0x1]
+ 28c: a2ac ac98 ldrh.l r45,\[r24,\+0x4c5]
+ 290: 8d2c 94d9 ldrh.l r36,\[r43,\+0x6ca]
+ 294: 40ac b803 ldrh.l r42,\[r48,\+0x19]
+
+00000298 \<ldrx16\>:
+ 298: 9249 2480 ldr.l ip,\[ip,\+ip]
+ 29c: 6dc1 ldr r3,\[r3,r3]
+ 29e: 0041 ldr r0,\[r0,r0]
+ 2a0: 6dc9 2480 ldr.l fp,\[fp,\+fp]
+ 2a4: b6c9 2480 ldr.l sp,\[sp,\+sp]
+ 2a8: 6f49 0480 ldr.l r3,\[fp,\+lr]
+ 2ac: 9949 2400 ldr.l ip,\[lr,\+r2]
+ 2b0: 6b49 0080 ldr.l r3,\[r2,\+lr]
+
+000002b4 \<ldrp16\>:
+ 2b4: cecd 2480 ldr.l lr,\[fp],\+sp
+ 2b8: 144d 0400 ldr.l r0,\[sp],\+r0
+ 2bc: 68cd 2000 ldr.l fp,\[r2],\+r1
+
+000002c0 \<ldrx\>:
+ 2c0: 9249 2480 ldr.l ip,\[ip,\+ip]
+ 2c4: 6dc9 ff80 ldr.l r59,\[r59,\+r59]
+ 2c8: 9249 6d80 ldr.l r28,\[r28,\+r28]
+ 2cc: 6dc9 6d80 ldr.l r27,\[r27,\+r27]
+ 2d0: b6c9 2480 ldr.l sp,\[sp,\+sp]
+ 2d4: 03c9 6a80 ldr.l r24,\[r16,\+r47]
+ 2d8: c4c9 5700 ldr.l r22,\[r41,\+r49]
+ 2dc: cfc9 2600 ldr.l lr,\[fp,\+r39]
+
+000002e0 \<ldrp\>:
+ 2e0: b74d 4180 ldr.l r21,\[r5],\+r30
+ 2e4: 934d 8480 ldr.l r36,\[ip],\+lr
+ 2e8: 91cd 2080 ldr.l ip,\[r4],\+fp
+
+000002ec \<ldrd16\>:
+ 2ec: 904c 2400 ldr ip,\[ip]
+ 2f0: 6fc4 ldr r3,\[r3,0x7]
+ 2f2: 0244 ldr r0,\[r0,0x4]
+ 2f4: 6dcc 2400 ldr.l fp,\[fp,\+0x3]
+ 2f8: b4cc 2400 ldr.l sp,\[sp,\+0x1]
+ 2fc: 144c 0400 ldr r0,\[sp]
+ 300: 87cc 2000 ldr.l ip,\[r1,\+0x7]
+ 304: 64cc 2000 ldr.l fp,\[r1,\+0x1]
+
+00000308 \<ldrd\>:
+ 308: 904c 2400 ldr ip,\[ip]
+ 30c: 6fcc fcff ldr.l r59,\[r59,\+0x7ff]
+ 310: 904c 6c80 ldr.l r28,\[r28,\+0x400]
+ 314: 6fcc 6c7f ldr.l r27,\[r27,\+0x3ff]
+ 318: b4cc 2400 ldr.l sp,\[sp,\+0x1]
+ 31c: dbcc 4c79 ldr.l r22,\[r30,\+0x3cf]
+ 320: f0cc 14aa ldr.l r7,\[r44,\+0x551]
+ 324: efcc 48e7 ldr.l r23,\[r19,\+0x73f]
+
+00000328 \<ldrdx16\>:
+ 328: 9269 2480 ldrd.l ip,\[ip,\+ip]
+ 32c: 8de1 ldrd r4,\[r3,r3]
+ 32e: 0061 ldrd r0,\[r0,r0]
+ 330: cde9 2480 ldrd.l lr,\[fp,\+fp]
+ 334: 16e9 4480 ldrd.l r16,\[sp,\+sp]
+ 338: ca69 6080 ldrd.l r30,\[r2,\+ip]
+ 33c: 0de9 0400 ldrd.l r0,\[fp,\+r3]
+ 340: 9369 4480 ldrd.l r20,\[ip,\+lr]
+
+00000344 \<ldrdp16\>:
+ 344: 8de5 ldrd r4,\[r3],r3
+ 346: 0ded 4480 ldrd.l r16,\[fp],\+fp
+ 34a: 96ed 4480 ldrd.l r20,\[sp],\+sp
+ 34e: 50ed 2400 ldrd.l sl,\[ip],\+r1
+ 352: cf6d 6480 ldrd.l r30,\[fp],\+lr
+ 356: daed e480 ldrd.l r62,\[lr],\+sp
+
+0000035a \<ldrdx\>:
+ 35a: 9269 2480 ldrd.l ip,\[ip,\+ip]
+ 35e: 4de9 ff80 ldrd.l r58,\[r59,\+r59]
+ 362: 9269 6d80 ldrd.l r28,\[r28,\+r28]
+ 366: 4de9 6d80 ldrd.l r26,\[r27,\+r27]
+ 36a: 96e9 2480 ldrd.l ip,\[sp,\+sp]
+ 36e: 0de9 8780 ldrd.l r32,\[fp,\+r59]
+ 372: 8769 0800 ldrd.l r4,\[r17,\+r6]
+ 376: 00e9 9400 ldrd.l r32,\[r40,\+r1]
+
+0000037a \<ldrdp\>:
+ 37a: 16ed 4480 ldrd.l r16,\[sp],\+sp
+ 37e: c76d b180 ldrd.l r46,\[r33],\+r30
+ 382: 11ed 7380 ldrd.l r24,\[r36],\+r59
+ 386: 41ed f080 ldrd.l r58,\[r32],\+fp
+
+0000038a \<ldrdd16\>:
+ 38a: 906c 2400 ldrd ip,\[ip]
+ 38e: 8fe4 ldrd r4,\[r3,0x7]
+ 390: 0264 ldrd r0,\[r0,0x4]
+ 392: 0dec 4400 ldrd.l r16,\[fp,\+0x3]
+ 396: 54ec 4400 ldrd.l r18,\[sp,\+0x1]
+ 39a: 0dec 0400 ldrd.l r0,\[fp,\+0x3]
+ 39e: cfec 2400 ldrd.l lr,\[fp,\+0x7]
+ 3a2: d0ec 2400 ldrd.l lr,\[ip,\+0x1]
+
+000003a6 \<ldrdd\>:
+ 3a6: 906c 2400 ldrd ip,\[ip]
+ 3aa: 4fec fcff ldrd.l r58,\[r59,\+0x7ff]
+ 3ae: 906c 6c80 ldrd.l r28,\[r28,\+0x400]
+ 3b2: 4fec 0c7f ldrd.l r2,\[r27,\+0x3ff]
+ 3b6: 14ec 4400 ldrd.l r16,\[sp,\+0x1]
+ 3ba: 94ec 085f ldrd.l r4,\[r21,\+0x2f9]
+ 3be: c4ec 34c2 ldrd.l lr,\[r41,\+0x611]
+ 3c2: d96c 04f0 ldrd.l r6,\[lr,\+0x782]
+
+000003c6 \<strbx16\>:
+ 3c6: 9219 2480 strb.l ip,\[ip,\+ip]
+ 3ca: 6d91 strb r3,\[r3,r3]
+ 3cc: 0011 strb r0,\[r0,r0]
+ 3ce: 6d99 2480 strb.l fp,\[fp,\+fp]
+ 3d2: b699 2480 strb.l sp,\[sp,\+sp]
+ 3d6: 3999 0400 strb.l r1,\[lr,\+r3]
+ 3da: 8f19 2080 strb.l ip,\[r3,\+lr]
+ 3de: d219 2480 strb.l lr,\[ip,\+ip]
+
+000003e2 \<strbx\>:
+ 3e2: 9219 2480 strb.l ip,\[ip,\+ip]
+ 3e6: 6d99 ff80 strb.l r59,\[r59,\+r59]
+ 3ea: 9219 6d80 strb.l r28,\[r28,\+r28]
+ 3ee: 6d99 6d80 strb.l r27,\[r27,\+r27]
+ 3f2: b699 2480 strb.l sp,\[sp,\+sp]
+ 3f6: 5e99 c480 strb.l r50,\[r15,\+sp]
+ 3fa: ce19 2700 strb.l lr,\[fp,\+r52]
+ 3fe: c199 2f00 strb.l lr,\[r24,\+r51]
+
+00000402 \<strbp16\>:
+ 402: 921d 2480 strb.l ip,\[ip],\+ip
+ 406: 6d95 strb r3,\[r3],r3
+ 408: 0015 strb r0,\[r0],r0
+ 40a: 6d9d 2480 strb.l fp,\[fp],\+fp
+ 40e: b69d 2480 strb.l sp,\[sp],\+sp
+ 412: 4e1d 0480 strb.l r2,\[fp],\+ip
+ 416: 609d 2000 strb.l fp,\[r0],\+r1
+ 41a: 4995 strb r2,\[r2],r3
+
+0000041c \<strbp\>:
+ 41c: 921d 2480 strb.l ip,\[ip],\+ip
+ 420: 6d9d ff80 strb.l r59,\[r59],\+r59
+ 424: 921d 6d80 strb.l r28,\[r28],\+r28
+ 428: 6d9d 6d80 strb.l r27,\[r27],\+r27
+ 42c: b69d 2480 strb.l sp,\[sp],\+sp
+ 430: cd1d 3800 strb.l lr,\[r51],\+r2
+ 434: d11d 1700 strb.l r6,\[r44],\+r50
+ 438: 849d a700 strb.l r44,\[sb],\+r49
+
+0000043c \<strbd16\>:
+ 43c: 901c 2400 strb ip,\[ip]
+ 440: 6f94 strb r3,\[r3,0x7]
+ 442: 0214 strb r0,\[r0,0x4]
+ 444: 6d9c 2400 strb.l fp,\[fp,\+0x3]
+ 448: b49c 2400 strb.l sp,\[sp,\+0x1]
+ 44c: 0894 strb r0,\[r2,0x1]
+ 44e: a99c 2000 strb.l sp,\[r2,\+0x3]
+ 452: 6a1c 2000 strb.l fp,\[r2,\+0x4]
+
+00000456 \<strbd\>:
+ 456: 901c 2400 strb ip,\[ip]
+ 45a: 6f9c fcff strb.l r59,\[r59,\+0x7ff]
+ 45e: 901c 6c80 strb.l r28,\[r28,\+0x400]
+ 462: 6f9c 6c7f strb.l r27,\[r27,\+0x3ff]
+ 466: b49c 2400 strb.l sp,\[sp,\+0x1]
+ 46a: ea1c 44af strb.l r23,\[sl,\+0x57c]
+ 46e: 8e9c 30b6 strb.l ip,\[r35,\+0x5b5]
+ 472: c91c dc88 strb.l r54,\[r58,\+0x442]
+
+00000476 \<strhx16\>:
+ 476: 9239 2480 strh.l ip,\[ip,\+ip]
+ 47a: 6db1 strh r3,\[r3,r3]
+ 47c: 0031 strh r0,\[r0,r0]
+ 47e: 6db9 2480 strh.l fp,\[fp,\+fp]
+ 482: b6b9 2480 strh.l sp,\[sp,\+sp]
+ 486: 0cb1 strh r0,\[r3,r1]
+ 488: 2d39 0400 strh.l r1,\[fp,\+r2]
+ 48c: 6db9 0080 strh.l r3,\[r3,\+fp]
+
+00000490 \<strhx\>:
+ 490: 9239 2480 strh.l ip,\[ip,\+ip]
+ 494: 6db9 ff80 strh.l r59,\[r59,\+r59]
+ 498: 9239 6d80 strh.l r28,\[r28,\+r28]
+ 49c: 6db9 6d80 strh.l r27,\[r27,\+r27]
+ 4a0: b6b9 2480 strh.l sp,\[sp,\+sp]
+ 4a4: 1bb9 5180 strh.l r16,\[r38,\+r31]
+ 4a8: 1239 8580 strh.l r32,\[ip,\+r28]
+ 4ac: 2cb9 e480 strh.l r57,\[fp,\+sb]
+
+000004b0 \<strhp16\>:
+ 4b0: 923d 2480 strh.l ip,\[ip],\+ip
+ 4b4: 6db5 strh r3,\[r3],r3
+ 4b6: 0035 strh r0,\[r0],r0
+ 4b8: 6dbd 2480 strh.l fp,\[fp],\+fp
+ 4bc: b6bd 2480 strh.l sp,\[sp],\+sp
+ 4c0: 0abd 0080 strh.l r0,\[r2],\+sp
+ 4c4: ac3d 2000 strh.l sp,\[r3],\+r0
+ 4c8: 2035 strh r1,\[r0],r0
+
+000004ca \<strhp\>:
+ 4ca: 923d 2480 strh.l ip,\[ip],\+ip
+ 4ce: 6dbd ff80 strh.l r59,\[r59],\+r59
+ 4d2: 923d 6d80 strh.l r28,\[r28],\+r28
+ 4d6: 6dbd 6d80 strh.l r27,\[r27],\+r27
+ 4da: b6bd 2480 strh.l sp,\[sp],\+sp
+ 4de: 773d 1300 strh.l r3,\[r37],\+r54
+ 4e2: 98bd 1980 strh.l r4,\[r54],\+r25
+ 4e6: a0bd 1180 strh.l r5,\[r32],\+r25
+
+000004ea \<strhd16\>:
+ 4ea: 903c 2400 strh ip,\[ip]
+ 4ee: 6fb4 strh r3,\[r3,0x7]
+ 4f0: 0234 strh r0,\[r0,0x4]
+ 4f2: 6dbc 2400 strh.l fp,\[fp,\+0x3]
+ 4f6: b4bc 2400 strh.l sp,\[sp,\+0x1]
+ 4fa: 61b4 strh r3,\[r0,0x3]
+ 4fc: d3bc 2400 strh.l lr,\[ip,\+0x7]
+ 500: 6bb4 strh r3,\[r2,0x7]
+
+00000502 \<strhd\>:
+ 502: 903c 2400 strh ip,\[ip]
+ 506: 6fbc fcff strh.l r59,\[r59,\+0x7ff]
+ 50a: 903c 6c80 strh.l r28,\[r28,\+0x400]
+ 50e: 6fbc 6c7f strh.l r27,\[r27,\+0x3ff]
+ 512: b4bc 2400 strh.l sp,\[sp,\+0x1]
+ 516: fabc 1093 strh.l r7,\[r38,\+0x49d]
+ 51a: 32bc 6009 strh.l r25,\[r4,\+0x4d]
+ 51e: 6fbc 244e strh.l fp,\[fp,\+0x277]
+
+00000522 \<strx16\>:
+ 522: 9259 2480 str.l ip,\[ip,\+ip]
+ 526: 6dd1 str r3,\[r3,r3]
+ 528: 0051 str r0,\[r0,r0]
+ 52a: 6dd9 2480 str.l fp,\[fp,\+fp]
+ 52e: b6d9 2480 str.l sp,\[sp,\+sp]
+ 532: cdd9 2000 str.l lr,\[r3,\+r3]
+ 536: 6c59 0400 str.l r3,\[fp,\+r0]
+ 53a: 94d9 2400 str.l ip,\[sp,\+r1]
+
+0000053e \<strx\>:
+ 53e: 9259 2480 str.l ip,\[ip,\+ip]
+ 542: 6dd9 ff80 str.l r59,\[r59,\+r59]
+ 546: 9259 6d80 str.l r28,\[r28,\+r28]
+ 54a: 6dd9 6d80 str.l r27,\[r27,\+r27]
+ 54e: b6d9 2480 str.l sp,\[sp,\+sp]
+ 552: b659 cd80 str.l r53,\[r29,\+r28]
+ 556: d959 6a00 str.l r30,\[r22,\+r34]
+ 55a: 9259 6e80 str.l r28,\[r28,\+r44]
+
+0000055e \<strp16\>:
+ 55e: 925d 2480 str.l ip,\[ip],\+ip
+ 562: 6dd5 str r3,\[r3],r3
+ 564: 0055 str r0,\[r0],r0
+ 566: 6ddd 2480 str.l fp,\[fp],\+fp
+ 56a: b6dd 2480 str.l sp,\[sp],\+sp
+ 56e: c05d 2000 str.l lr,\[r0],\+r0
+ 572: 62dd 2080 str.l fp,\[r0],\+sp
+ 576: 6c5d 0400 str.l r3,\[fp],\+r0
+
+0000057a \<strp\>:
+ 57a: 925d 2480 str.l ip,\[ip],\+ip
+ 57e: 6ddd ff80 str.l r59,\[r59],\+r59
+ 582: 925d 6d80 str.l r28,\[r28],\+r28
+ 586: 6ddd 6d80 str.l r27,\[r27],\+r27
+ 58a: b6dd 2480 str.l sp,\[sp],\+sp
+ 58e: d3dd 5080 str.l r22,\[r36],\+r15
+ 592: 97dd a680 str.l r44,\[sp],\+r47
+ 596: 62dd 5880 str.l r19,\[r48],\+sp
+
+0000059a \<strd16\>:
+ 59a: 905c 2400 str ip,\[ip]
+ 59e: 6fd4 str r3,\[r3,0x7]
+ 5a0: 0254 str r0,\[r0,0x4]
+ 5a2: 6ddc 2400 str.l fp,\[fp,\+0x3]
+ 5a6: b4dc 2400 str.l sp,\[sp,\+0x1]
+ 5aa: 6ddc 0400 str.l r3,\[fp,\+0x3]
+ 5ae: b35c 2400 str.l sp,\[ip,\+0x6]
+ 5b2: 39dc 0400 str.l r1,\[lr,\+0x3]
+
+000005b6 \<strd\>:
+ 5b6: 905c 2400 str ip,\[ip]
+ 5ba: 6fdc fcff str.l r59,\[r59,\+0x7ff]
+ 5be: 905c 6c80 str.l r28,\[r28,\+0x400]
+ 5c2: 6fdc 6c7f str.l r27,\[r27,\+0x3ff]
+ 5c6: b4dc 2400 str.l sp,\[sp,\+0x1]
+ 5ca: b15c b409 str.l r45,\[r44,\+0x4a]
+ 5ce: 495c f82e str.l r58,\[r50,\+0x172]
+ 5d2: 0d5c a04e str.l r40,\[r3,\+0x272]
+
+000005d6 \<strdx16\>:
+ 5d6: 9279 2480 strd.l ip,\[ip,\+ip]
+ 5da: 4df1 strd r2,\[r3,r3]
+ 5dc: 0071 strd r0,\[r0,r0]
+ 5de: 0df9 4480 strd.l r16,\[fp,\+fp]
+ 5e2: 56f9 4480 strd.l r18,\[sp,\+sp]
+ 5e6: 8cf9 2000 strd.l ip,\[r3,\+r1]
+ 5ea: 59f9 0480 strd.l r2,\[lr,\+fp]
+ 5ee: 8979 2000 strd.l ip,\[r2,\+r2]
+
+000005f2 \<strdx\>:
+ 5f2: 9279 2480 strd.l ip,\[ip,\+ip]
+ 5f6: 4df9 ff80 strd.l r58,\[r59,\+r59]
+ 5fa: 9279 6d80 strd.l r28,\[r28,\+r28]
+ 5fe: 4df9 6d80 strd.l r26,\[r27,\+r27]
+ 602: d6f9 2480 strd.l lr,\[sp,\+sp]
+ 606: d779 9880 strd.l r38,\[r53,\+lr]
+ 60a: 0df9 6a80 strd.l r24,\[r19,\+r43]
+ 60e: 8b79 2580 strd.l ip,\[sl,\+r30]
+
+00000612 \<strdp16\>:
+ 612: 927d 2480 strd.l ip,\[ip],\+ip
+ 616: 4df5 strd r2,\[r3],r3
+ 618: 0075 strd r0,\[r0],r0
+ 61a: cdfd 0480 strd.l r6,\[fp],\+fp
+ 61e: 96fd 0480 strd.l r4,\[sp],\+sp
+ 622: 4c75 strd r2,\[r3],r0
+ 624: 40f5 strd r2,\[r0],r1
+ 626: 58fd 0400 strd.l r2,\[lr],\+r1
+
+0000062a \<strdp\>:
+ 62a: 927d 2480 strd.l ip,\[ip],\+ip
+ 62e: 4dfd ff80 strd.l r58,\[r59],\+r59
+ 632: 927d 6d80 strd.l r28,\[r28],\+r28
+ 636: 4dfd 6d80 strd.l r26,\[r27],\+r27
+ 63a: d6fd 4480 strd.l r22,\[sp],\+sp
+ 63e: ca7d 0680 strd.l r6,\[sl],\+r44
+ 642: 4efd 3400 strd.l sl,\[r43],\+r5
+ 646: c77d a880 strd.l r46,\[r17],\+lr
+
+0000064a \<strdd16\>:
+ 64a: 107c 0400 strd r0,\[ip]
+ 64e: 4ff4 strd r2,\[r3,0x7]
+ 650: 0274 strd r0,\[r0,0x4]
+ 652: 4dfc 0400 strd.l r2,\[fp,\+0x3]
+ 656: 94fc 0400 strd.l r4,\[sp,\+0x1]
+ 65a: 4af4 strd r2,\[r2,0x5]
+ 65c: cff4 strd r6,\[r3,0x7]
+ 65e: c574 strd r6,\[r1,0x2]
+
+00000660 \<strdd\>:
+ 660: 907c 2400 strd ip,\[ip]
+ 664: 4ffc fcff strd.l r58,\[r59,\+0x7ff]
+ 668: 907c 6c80 strd.l r28,\[r28,\+0x400]
+ 66c: 4ffc 6c7f strd.l r26,\[r27,\+0x3ff]
+ 670: d4fc 2400 strd.l lr,\[sp,\+0x1]
+ 674: 93fc 7859 strd.l r28,\[r52,\+0x2cf]
+ 678: 157c b8f9 strd.l r40,\[r53,\+0x7ca]
+ 67c: 877c bc3d strd.l r44,\[r57,\+0x1ee]
+
+00000680 \<mov16EQ\>:
+ 680: 900f 2402 moveq.l ip,ip
+ 684: 6c02 moveq r3,r3
+ 686: 0002 moveq r0,r0
+ 688: 6c0f 2402 moveq.l fp,fp
+ 68c: b40f 2402 moveq.l sp,sp
+ 690: 880f 2002 moveq.l ip,r2
+ 694: 4c0f 0402 moveq.l r2,fp
+ 698: 740f 2402 moveq.l fp,sp
+
+0000069c \<movEQ\>:
+ 69c: 900f 2402 moveq.l ip,ip
+ 6a0: 6c0f fc02 moveq.l r59,r59
+ 6a4: 900f 6c02 moveq.l r28,r28
+ 6a8: 6c0f 6c02 moveq.l r27,r27
+ 6ac: b40f 2402 moveq.l sp,sp
+ 6b0: 180f 8c02 moveq.l r32,r30
+ 6b4: 7c0f b002 moveq.l r43,r39
+ 6b8: 240f 7002 moveq.l r25,r33
+
+000006bc \<mov16NE\>:
+ 6bc: 901f 2402 movne.l ip,ip
+ 6c0: 6c12 movne r3,r3
+ 6c2: 0012 movne r0,r0
+ 6c4: 6c1f 2402 movne.l fp,fp
+ 6c8: b41f 2402 movne.l sp,sp
+ 6cc: 6c12 movne r3,r3
+ 6ce: 0c1f 0402 movne.l r0,fp
+ 6d2: 6c1f 2402 movne.l fp,fp
+
+000006d6 \<movNE\>:
+ 6d6: 901f 2402 movne.l ip,ip
+ 6da: 6c1f fc02 movne.l r59,r59
+ 6de: 901f 6c02 movne.l r28,r28
+ 6e2: 6c1f 6c02 movne.l r27,r27
+ 6e6: b41f 2402 movne.l sp,sp
+ 6ea: 8c12 movne r4,r3
+ 6ec: 8c1f 6402 movne.l r28,fp
+ 6f0: fc1f 5002 movne.l r23,r39
+
+000006f4 \<mov16GT\>:
+ 6f4: 906f 2402 movgt.l ip,ip
+ 6f8: 6c62 movgt r3,r3
+ 6fa: 0062 movgt r0,r0
+ 6fc: 6c6f 2402 movgt.l fp,fp
+ 700: b46f 2402 movgt.l sp,sp
+ 704: 2c62 movgt r1,r3
+ 706: cc6f 2002 movgt.l lr,r3
+ 70a: 306f 0402 movgt.l r1,ip
+
+0000070e \<movGT\>:
+ 70e: 906f 2402 movgt.l ip,ip
+ 712: 6c6f fc02 movgt.l r59,r59
+ 716: 906f 6c02 movgt.l r28,r28
+ 71a: 6c6f 6c02 movgt.l r27,r27
+ 71e: b46f 2402 movgt.l sp,sp
+ 722: 346f 0802 movgt.l r1,r21
+ 726: ac6f 2002 movgt.l sp,r3
+ 72a: 8c6f 7402 movgt.l r28,r43
+
+0000072e \<mov16GTU\>:
+ 72e: 902f 2402 movgtu.l ip,ip
+ 732: 6c22 movgtu r3,r3
+ 734: 0022 movgtu r0,r0
+ 736: 6c2f 2402 movgtu.l fp,fp
+ 73a: b42f 2402 movgtu.l sp,sp
+ 73e: 982f 2402 movgtu.l ip,lr
+ 742: b02f 2402 movgtu.l sp,ip
+ 746: 942f 2402 movgtu.l ip,sp
+
+0000074a \<movGTU\>:
+ 74a: 902f 2402 movgtu.l ip,ip
+ 74e: 6c2f fc02 movgtu.l r59,r59
+ 752: 902f 6c02 movgtu.l r28,r28
+ 756: 6c2f 6c02 movgtu.l r27,r27
+ 75a: b42f 2402 movgtu.l sp,sp
+ 75e: 442f 9002 movgtu.l r34,r33
+ 762: 202f 5802 movgtu.l r17,r48
+ 766: 602f 8c02 movgtu.l r35,r24
+
+0000076a \<mov16GTE\>:
+ 76a: 907f 2402 movgte.l ip,ip
+ 76e: 6c72 movgte r3,r3
+ 770: 0072 movgte r0,r0
+ 772: 6c7f 2402 movgte.l fp,fp
+ 776: b47f 2402 movgte.l sp,sp
+ 77a: 0072 movgte r0,r0
+ 77c: 547f 0402 movgte.l r2,sp
+ 780: c87f 2002 movgte.l lr,r2
+
+00000784 \<movGTE\>:
+ 784: 907f 2402 movgte.l ip,ip
+ 788: 6c7f fc02 movgte.l r59,r59
+ 78c: 907f 6c02 movgte.l r28,r28
+ 790: 6c7f 6c02 movgte.l r27,r27
+ 794: b47f 2402 movgte.l sp,sp
+ 798: 8c7f 3c02 movgte.l ip,r59
+ 79c: a87f 9402 movgte.l r37,r42
+ 7a0: 887f ac02 movgte.l r44,r26
+
+000007a4 \<mov16GTEU\>:
+ 7a4: 903f 2402 movgteu.l ip,ip
+ 7a8: 6c32 movgteu r3,r3
+ 7aa: 0032 movgteu r0,r0
+ 7ac: 6c3f 2402 movgteu.l fp,fp
+ 7b0: b43f 2402 movgteu.l sp,sp
+ 7b4: d03f 2402 movgteu.l lr,ip
+ 7b8: a43f 2002 movgteu.l sp,r1
+ 7bc: 983f 2402 movgteu.l ip,lr
+
+000007c0 \<movGTEU\>:
+ 7c0: 903f 2402 movgteu.l ip,ip
+ 7c4: 6c3f fc02 movgteu.l r59,r59
+ 7c8: 903f 6c02 movgteu.l r28,r28
+ 7cc: 6c3f 6c02 movgteu.l r27,r27
+ 7d0: b43f 2402 movgteu.l sp,sp
+ 7d4: 5c3f f402 movgteu.l r58,r47
+ 7d8: 143f e002 movgteu.l r56,r5
+ 7dc: 903f 5802 movgteu.l r20,r52
+
+000007e0 \<mov16LT\>:
+ 7e0: 908f 2402 movlt.l ip,ip
+ 7e4: 6c82 movlt r3,r3
+ 7e6: 0082 movlt r0,r0
+ 7e8: 6c8f 2402 movlt.l fp,fp
+ 7ec: b48f 2402 movlt.l sp,sp
+ 7f0: 6c82 movlt r3,r3
+ 7f2: 4882 movlt r2,r2
+ 7f4: 988f 2402 movlt.l ip,lr
+
+000007f8 \<movLT\>:
+ 7f8: 908f 2402 movlt.l ip,ip
+ 7fc: 6c8f fc02 movlt.l r59,r59
+ 800: 908f 6c02 movlt.l r28,r28
+ 804: 6c8f 6c02 movlt.l r27,r27
+ 808: b48f 2402 movlt.l sp,sp
+ 80c: 908f c402 movlt.l r52,ip
+ 810: 388f e802 movlt.l r57,r22
+ 814: 1c8f 2002 movlt.l r8,r7
+
+00000818 \<mov16LTU\>:
+ 818: 905f 2402 movltu.l ip,ip
+ 81c: 6c52 movltu r3,r3
+ 81e: 0052 movltu r0,r0
+ 820: 6c5f 2402 movltu.l fp,fp
+ 824: b45f 2402 movltu.l sp,sp
+ 828: 885f 2002 movltu.l ip,r2
+ 82c: b05f 2402 movltu.l sp,ip
+ 830: 2052 movltu r1,r0
+
+00000832 \<movLTU\>:
+ 832: 905f 2402 movltu.l ip,ip
+ 836: 6c5f fc02 movltu.l r59,r59
+ 83a: 905f 6c02 movltu.l r28,r28
+ 83e: 6c5f 6c02 movltu.l r27,r27
+ 842: b45f 2402 movltu.l sp,sp
+ 846: bc5f 2c02 movltu.l sp,r31
+ 84a: 705f a402 movltu.l r43,ip
+ 84e: e05f 1c02 movltu.l r7,r56
+
+00000852 \<mov16LTE\>:
+ 852: 909f 2402 movlte.l ip,ip
+ 856: 6c92 movlte r3,r3
+ 858: 0092 movlte r0,r0
+ 85a: 6c9f 2402 movlte.l fp,fp
+ 85e: b49f 2402 movlte.l sp,sp
+ 862: 0c92 movlte r0,r3
+ 864: 709f 0402 movlte.l r3,ip
+ 868: 789f 0402 movlte.l r3,lr
+
+0000086c \<movLTE\>:
+ 86c: 909f 2402 movlte.l ip,ip
+ 870: 6c9f fc02 movlte.l r59,r59
+ 874: 909f 6c02 movlte.l r28,r28
+ 878: 6c9f 6c02 movlte.l r27,r27
+ 87c: b49f 2402 movlte.l sp,sp
+ 880: cc9f 6c02 movlte.l r30,r27
+ 884: 709f 9802 movlte.l r35,r52
+ 888: f49f 3802 movlte.l r15,r53
+
+0000088c \<mov16LTEU\>:
+ 88c: 904f 2402 movlteu.l ip,ip
+ 890: 6c42 movlteu r3,r3
+ 892: 0042 movlteu r0,r0
+ 894: 6c4f 2402 movlteu.l fp,fp
+ 898: b44f 2402 movlteu.l sp,sp
+ 89c: 984f 2402 movlteu.l ip,lr
+ 8a0: 4842 movlteu r2,r2
+ 8a2: 4c4f 0402 movlteu.l r2,fp
+
+000008a6 \<movLTEU\>:
+ 8a6: 904f 2402 movlteu.l ip,ip
+ 8aa: 6c4f fc02 movlteu.l r59,r59
+ 8ae: 904f 6c02 movlteu.l r28,r28
+ 8b2: 6c4f 6c02 movlteu.l r27,r27
+ 8b6: b44f 2402 movlteu.l sp,sp
+ 8ba: f04f 7002 movlteu.l r31,r36
+ 8be: 084f 7802 movlteu.l r24,r50
+ 8c2: 984f d802 movlteu.l r52,r54
+
+000008c6 \<mov16B\>:
+ 8c6: 90ef 2402 mov.l ip,ip
+ 8ca: 6ce2 mov r3,r3
+ 8cc: 00e2 mov r0,r0
+ 8ce: 6cef 2402 mov.l fp,fp
+ 8d2: b4ef 2402 mov.l sp,sp
+ 8d6: 84ef 2002 mov.l ip,r1
+ 8da: 80ef 2002 mov.l ip,r0
+ 8de: 10ef 0402 mov.l r0,ip
+
+000008e2 \<movB\>:
+ 8e2: 90ef 2402 mov.l ip,ip
+ 8e6: 6cef fc02 mov.l r59,r59
+ 8ea: 90ef 6c02 mov.l r28,r28
+ 8ee: 6cef 6c02 mov.l r27,r27
+ 8f2: b4ef 2402 mov.l sp,sp
+ 8f6: 2cef 1c02 mov.l r1,r59
+ 8fa: 90ef 6402 mov.l r28,ip
+ 8fe: a8ef 1402 mov.l r5,r42
+
+00000902 \<mov16BEQ\>:
+ 902: 90af 2402 movbeq.l ip,ip
+ 906: 6ca2 movbeq r3,r3
+ 908: 00a2 movbeq r0,r0
+ 90a: 6caf 2402 movbeq.l fp,fp
+ 90e: b4af 2402 movbeq.l sp,sp
+ 912: c8af 2002 movbeq.l lr,r2
+ 916: 68af 2002 movbeq.l fp,r2
+ 91a: 84af 2002 movbeq.l ip,r1
+
+0000091e \<movBEQ\>:
+ 91e: 90af 2402 movbeq.l ip,ip
+ 922: 6caf fc02 movbeq.l r59,r59
+ 926: 90af 6c02 movbeq.l r28,r28
+ 92a: 6caf 6c02 movbeq.l r27,r27
+ 92e: b4af 2402 movbeq.l sp,sp
+ 932: a0af 6802 movbeq.l r29,r16
+ 936: 58af 5402 movbeq.l r18,r46
+ 93a: c4af 2002 movbeq.l lr,r1
+
+0000093e \<mov16BNE\>:
+ 93e: 90bf 2402 movbne.l ip,ip
+ 942: 6cb2 movbne r3,r3
+ 944: 00b2 movbne r0,r0
+ 946: 6cbf 2402 movbne.l fp,fp
+ 94a: b4bf 2402 movbne.l sp,sp
+ 94e: 28b2 movbne r1,r2
+ 950: 84bf 2002 movbne.l ip,r1
+ 954: 8cbf 2002 movbne.l ip,r3
+
+00000958 \<movBNE\>:
+ 958: 90bf 2402 movbne.l ip,ip
+ 95c: 6cbf fc02 movbne.l r59,r59
+ 960: 90bf 6c02 movbne.l r28,r28
+ 964: 6cbf 6c02 movbne.l r27,r27
+ 968: b4bf 2402 movbne.l sp,sp
+ 96c: fcbf 2002 movbne.l r15,r7
+ 970: 0cbf 7402 movbne.l r24,r43
+ 974: f0bf 5802 movbne.l r23,r52
+
+00000978 \<mov16BLT\>:
+ 978: 90cf 2402 movblt.l ip,ip
+ 97c: 6cc2 movblt r3,r3
+ 97e: 00c2 movblt r0,r0
+ 980: 6ccf 2402 movblt.l fp,fp
+ 984: b4cf 2402 movblt.l sp,sp
+ 988: b8cf 2402 movblt.l sp,lr
+ 98c: 98cf 2402 movblt.l ip,lr
+ 990: d4cf 2402 movblt.l lr,sp
+
+00000994 \<movBLT\>:
+ 994: 90cf 2402 movblt.l ip,ip
+ 998: 6ccf fc02 movblt.l r59,r59
+ 99c: 90cf 6c02 movblt.l r28,r28
+ 9a0: 6ccf 6c02 movblt.l r27,r27
+ 9a4: b4cf 2402 movblt.l sp,sp
+ 9a8: 90cf d402 movblt.l r52,r44
+ 9ac: 2ccf f002 movblt.l r57,r35
+ 9b0: a4cf d002 movblt.l r53,r33
+
+000009b4 \<mov16BLTE\>:
+ 9b4: 90df 2402 movblte.l ip,ip
+ 9b8: 6cd2 movblte r3,r3
+ 9ba: 00d2 movblte r0,r0
+ 9bc: 6cdf 2402 movblte.l fp,fp
+ 9c0: b4df 2402 movblte.l sp,sp
+ 9c4: b0df 2402 movblte.l sp,ip
+ 9c8: 0cdf 0402 movblte.l r0,fp
+ 9cc: 14df 0402 movblte.l r0,sp
+
+000009d0 \<movBLTE\>:
+ 9d0: 90df 2402 movblte.l ip,ip
+ 9d4: 6cdf fc02 movblte.l r59,r59
+ 9d8: 90df 6c02 movblte.l r28,r28
+ 9dc: 6cdf 6c02 movblte.l r27,r27
+ 9e0: b4df 2402 movblte.l sp,sp
+ 9e4: 50df f402 movblte.l r58,r44
+ 9e8: 78df 8802 movblte.l r35,r22
+ 9ec: 08df 2002 movblte.l r8,r2
+
+000009f0 \<movts16\>:
+ 9f0: 810f 2002 movts.l config,ip
+ 9f4: 750f 0402 movts.l ipend,r3
+ 9f8: 010f 0402 movts.l iret,r0
+ 9fc: 6d0f 2002 movts.l debug,fp
+ a00: a50f 2002 movts.l status,sp
+ a04: 650f 2002 movts.l status,fp
+ a08: 690f 2002 movts.l pc,fp
+ a0c: 050f 0402 movts.l imask,r0
+
+00000a10 \<movts\>:
+ a10: 810f 2002 movts.l config,ip
+ a14: 750f e402 movts.l ipend,r59
+ a18: 810f 6402 movts.l iret,r28
+ a1c: 6d0f 6002 movts.l debug,r27
+ a20: a50f 2002 movts.l status,sp
+ a24: 4d0f c002 movts.l debug,r50
+ a28: 350f 8402 movts.l ipend,r33
+ a2c: 850f 2002 movts.l status,ip
+
+00000a30 \<movfs16\>:
+ a30: 811f 2002 movfs.l ip,config
+ a34: 751f 0402 movfs.l r3,ipend
+ a38: 011f 0402 movfs.l r0,iret
+ a3c: 6d1f 2002 movfs.l fp,debug
+ a40: a51f 2002 movfs.l sp,status
+ a44: 211f 0402 movfs.l r1,iret
+ a48: 4512 movfs r2,status
+ a4a: cd1f 2002 movfs.l lr,debug
+
+00000a4e \<movfs\>:
+ a4e: 811f 2002 movfs.l ip,config
+ a52: 751f e402 movfs.l r59,ipend
+ a56: 811f 6402 movfs.l r28,iret
+ a5a: 6d1f 6002 movfs.l r27,debug
+ a5e: a51f 2002 movfs.l sp,status
+ a62: ad1f 2002 movfs.l sp,debug
+ a66: e51f 2002 movfs.l r15,status
+ a6a: 051f 4402 movfs.l r16,imask
+
+00000a6e \<nop\>:
+ a6e: 01a2 nop
+
+00000a70 \<idle\>:
+ a70: 01b2 idle
+
+00000a72 \<bkpt\>:
+ a72: 01c2 bkpt
+
+00000a74 \<rti\>:
+ a74: 01d2 rti
+
+00000a76 \<trap16\>:
+ a76: 03e2 trap 0x0
+ a78: 1fe2 trap 0x7
+ a7a: 13e2 trap 0x4
+ a7c: 0fe2 trap 0x3
+ a7e: 07e2 trap 0x1
+ a80: 1be2 trap 0x6
+ a82: 0fe2 trap 0x3
+ a84: 17e2 trap 0x5
+
+00000a86 \<add16\>:
+ a86: 921f 248a add.l ip,ip,ip
+ a8a: 6d9a add r3,r3,r3
+ a8c: 001a add r0,r0,r0
+ a8e: 6d9f 248a add.l fp,fp,fp
+ a92: b69f 248a add.l sp,sp,sp
+ a96: ab1f 208a add.l sp,r2,lr
+ a9a: 089a add r0,r2,r1
+ a9c: 8d9f 248a add.l ip,fp,fp
+
+00000aa0 \<add\>:
+ aa0: 921f 248a add.l ip,ip,ip
+ aa4: 6d9f ff8a add.l r59,r59,r59
+ aa8: 921f 6d8a add.l r28,r28,r28
+ aac: 6d9f 6d8a add.l r27,r27,r27
+ ab0: b69f 248a add.l sp,sp,sp
+ ab4: 081f e50a add.l r56,sl,r16
+ ab8: 851f 8e0a add.l r36,r25,r34
+ abc: 449f 190a add.l r2,r49,r17
+
+00000ac0 \<sub16\>:
+ ac0: 923f 248a sub.l ip,ip,ip
+ ac4: 6dba sub r3,r3,r3
+ ac6: 003a sub r0,r0,r0
+ ac8: 6dbf 248a sub.l fp,fp,fp
+ acc: b6bf 248a sub.l sp,sp,sp
+ ad0: 533f 048a sub.l r2,ip,lr
+ ad4: d83f 240a sub.l lr,lr,r0
+ ad8: 6dba sub r3,r3,r3
+
+00000ada \<sub\>:
+ ada: 923f 248a sub.l ip,ip,ip
+ ade: 6dbf ff8a sub.l r59,r59,r59
+ ae2: 923f 6d8a sub.l r28,r28,r28
+ ae6: 6dbf 6d8a sub.l r27,r27,r27
+ aea: b6bf 248a sub.l sp,sp,sp
+ aee: 9a3f 250a sub.l ip,lr,r20
+ af2: 1bbf ca8a sub.l r48,r22,r47
+ af6: 62bf 588a sub.l r19,r48,sp
+
+00000afa \<and16\>:
+ afa: 925f 248a and.l ip,ip,ip
+ afe: 6dda and r3,r3,r3
+ b00: 005a and r0,r0,r0
+ b02: 6ddf 248a and.l fp,fp,fp
+ b06: b6df 248a and.l sp,sp,sp
+ b0a: 75df 240a and.l fp,sp,r3
+ b0e: 6dda and r3,r3,r3
+ b10: 96df 248a and.l ip,sp,sp
+
+00000b14 \<and\>:
+ b14: 925f 248a and.l ip,ip,ip
+ b18: 6ddf ff8a and.l r59,r59,r59
+ b1c: 925f 6d8a and.l r28,r28,r28
+ b20: 6ddf 6d8a and.l r27,r27,r27
+ b24: b6df 248a and.l sp,sp,sp
+ b28: 935f c68a and.l r52,ip,r46
+ b2c: 825f b68a and.l r44,r40,r44
+ b30: 0bdf 7d8a and.l r24,r58,r31
+
+00000b34 \<orr16\>:
+ b34: 927f 248a orr.l ip,ip,ip
+ b38: 6dfa orr r3,r3,r3
+ b3a: 007a orr r0,r0,r0
+ b3c: 6dff 248a orr.l fp,fp,fp
+ b40: b6ff 248a orr.l sp,sp,sp
+ b44: c6ff 208a orr.l lr,r1,sp
+ b48: 7b7f 048a orr.l r3,lr,lr
+ b4c: 4d7a orr r2,r3,r2
+
+00000b4e \<orr\>:
+ b4e: 927f 248a orr.l ip,ip,ip
+ b52: 6dff ff8a orr.l r59,r59,r59
+ b56: 927f 6d8a orr.l r28,r28,r28
+ b5a: 6dff 6d8a orr.l r27,r27,r27
+ b5e: b6ff 248a orr.l sp,sp,sp
+ b62: 95ff c38a orr.l r52,r5,r59
+ b66: e1ff 328a orr.l r15,r32,r43
+ b6a: 167f ee8a orr.l r56,r29,r44
+
+00000b6e \<eor16\>:
+ b6e: 920f 248a eor.l ip,ip,ip
+ b72: 6d8a eor r3,r3,r3
+ b74: 000a eor r0,r0,r0
+ b76: 6d8f 248a eor.l fp,fp,fp
+ b7a: b68f 248a eor.l sp,sp,sp
+ b7e: 8d0f 200a eor.l ip,r3,r2
+ b82: 750f 040a eor.l r3,sp,r2
+ b86: 750f 240a eor.l fp,sp,r2
+
+00000b8a \<eor\>:
+ b8a: 920f 248a eor.l ip,ip,ip
+ b8e: 6d8f ff8a eor.l r59,r59,r59
+ b92: 920f 6d8a eor.l r28,r28,r28
+ b96: 6d8f 6d8a eor.l r27,r27,r27
+ b9a: b68f 248a eor.l sp,sp,sp
+ b9e: 228f 5d8a eor.l r17,r56,r29
+ ba2: a58f 358a eor.l sp,r41,r27
+ ba6: 698f 268a eor.l fp,sl,r43
+
+00000baa \<asr16\>:
+ baa: 926f 248a asr.l ip,ip,ip
+ bae: 6dea asr r3,r3,r3
+ bb0: 006a asr r0,r0,r0
+ bb2: 6def 248a asr.l fp,fp,fp
+ bb6: b6ef 248a asr.l sp,sp,sp
+ bba: 61ea asr r3,r0,r3
+ bbc: 676f 008a asr.l r3,r1,lr
+ bc0: 0eef 048a asr.l r0,fp,sp
+
+00000bc4 \<asr\>:
+ bc4: 926f 248a asr.l ip,ip,ip
+ bc8: 6def ff8a asr.l r59,r59,r59
+ bcc: 926f 6d8a asr.l r28,r28,r28
+ bd0: 6def 6d8a asr.l r27,r27,r27
+ bd4: b6ef 248a asr.l sp,sp,sp
+ bd8: 44ef 858a asr.l r34,sb,r25
+ bdc: 64ef ca0a asr.l r51,r17,r33
+ be0: 9def 208a asr.l ip,r7,fp
+
+00000be4 \<lsr16\>:
+ be4: 924f 248a lsr.l ip,ip,ip
+ be8: 6dca lsr r3,r3,r3
+ bea: 004a lsr r0,r0,r0
+ bec: 6dcf 248a lsr.l fp,fp,fp
+ bf0: b6cf 248a lsr.l sp,sp,sp
+ bf4: adcf 208a lsr.l sp,r3,fp
+ bf8: 674f 208a lsr.l fp,r1,lr
+ bfc: c94f 200a lsr.l lr,r2,r2
+
+00000c00 \<lsr\>:
+ c00: 924f 248a lsr.l ip,ip,ip
+ c04: 6dcf ff8a lsr.l r59,r59,r59
+ c08: 924f 6d8a lsr.l r28,r28,r28
+ c0c: 6dcf 6d8a lsr.l r27,r27,r27
+ c10: b6cf 248a lsr.l sp,sp,sp
+ c14: c5cf 0d0a lsr.l r6,r25,r19
+ c18: 984f 3a0a lsr.l ip,r54,r32
+ c1c: b64f 248a lsr.l sp,sp,ip
+
+00000c20 \<lsl16\>:
+ c20: 922f 248a lsl.l ip,ip,ip
+ c24: 6daa lsl r3,r3,r3
+ c26: 002a lsl r0,r0,r0
+ c28: 6daf 248a lsl.l fp,fp,fp
+ c2c: b6af 248a lsl.l sp,sp,sp
+ c30: 922f 248a lsl.l ip,ip,ip
+ c34: c62f 208a lsl.l lr,r1,ip
+ c38: d5af 240a lsl.l lr,sp,r3
+
+00000c3c \<lsl\>:
+ c3c: 922f 248a lsl.l ip,ip,ip
+ c40: 6daf ff8a lsl.l r59,r59,r59
+ c44: 922f 6d8a lsl.l r28,r28,r28
+ c48: 6daf 6d8a lsl.l r27,r27,r27
+ c4c: b6af 248a lsl.l sp,sp,sp
+ c50: 8faf 948a lsl.l r36,r43,r15
+ c54: 5eaf 920a lsl.l r34,r39,r37
+ c58: e6af 518a lsl.l r23,r33,r29
+
+00000c5c \<addi16\>:
+ c5c: 901b 2400 add ip,ip,0
+ c60: 6f9b 0000 add r3,r3,7
+ c64: 021b 0000 add r0,r0,4
+ c68: 6d9b 2400 add fp,fp,3
+ c6c: b49b 2400 add sp,sp,1
+ c70: 6493 add r3,r1,1
+ c72: 2d9b 0400 add r1,fp,3
+ c76: 0f9b 0400 add r0,fp,7
+
+00000c7a \<addi\>:
+ c7a: 901b 2400 add ip,ip,0
+ c7e: 6f9b fc7f add r59,r59,1023
+ c82: 939b 6c04 add r28,r28,39
+ c86: 6f9b 6c7f add r27,r27,1023
+ c8a: b49b 2400 add sp,sp,1
+ c8e: 329b cc14 add r49,r28,165
+ c92: eb9b 604d add r31,r2,623
+ c96: 049b 4476 add r16,sb,945
+
+00000c9a \<subi16\>:
+ c9a: 903b 2400 sub ip,ip,0
+ c9e: 6fbb 0000 sub r3,r3,7
+ ca2: 023b 0000 sub r0,r0,4
+ ca6: 6dbb 2400 sub fp,fp,3
+ caa: b4bb 2400 sub sp,sp,1
+ cae: 8d3b 2000 sub ip,r3,2
+ cb2: ce3b 2000 sub lr,r3,4
+ cb6: 88bb 2000 sub ip,r2,1
+
+00000cba \<subi\>:
+ cba: 903b 2400 sub ip,ip,0
+ cbe: 6cbb fc00 sub r59,r59,1
+ cc2: 93bb 6c7f sub r28,r28,1023
+ cc6: 6f3b 6c7f sub r27,r27,1022
+ cca: b4bb 2400 sub sp,sp,1
+ cce: 7a3b c068 sub r51,r6,836
+ cd2: e23b b460 sub r47,r40,772
+ cd6: f03b c03d sub r55,r4,488
+
+00000cda \<lsri16\>:
+ cda: 900f 2406 lsr.l ip,ip,0x0
+ cde: 6fe6 lsr r3,r3,0x1f
+ ce0: 0206 lsr r0,r0,0x10
+ ce2: 6def 2406 lsr.l fp,fp,0xf
+ ce6: b42f 2406 lsr.l sp,sp,0x1
+ cea: 0cc6 lsr r0,r3,0x6
+ cec: 2906 lsr r1,r2,0x8
+ cee: 79cf 2406 lsr.l fp,lr,0xe
+
+00000cf2 \<lsri32\>:
+ cf2: 900f 2406 lsr.l ip,ip,0x0
+ cf6: 6fef fc06 lsr.l r59,r59,0x1f
+ cfa: 920f 6c06 lsr.l r28,r28,0x10
+ cfe: 6def 6c06 lsr.l r27,r27,0xf
+ d02: b42f 2406 lsr.l sp,sp,0x1
+ d06: c26f 7806 lsr.l r30,r48,0x13
+ d0a: 7eef a006 lsr.l r43,r7,0x17
+ d0e: 8b8f 6006 lsr.l r28,r2,0x1c
+
+00000d12 \<lsli16\>:
+ d12: 901f 2406 lsl.l ip,ip,0x0
+ d16: 6ff6 lsl r3,r3,0x1f
+ d18: 0216 lsl r0,r0,0x10
+ d1a: 6dff 2406 lsl.l fp,fp,0xf
+ d1e: b43f 2406 lsl.l sp,sp,0x1
+ d22: 4d76 lsl r2,r3,0xb
+ d24: c8df 2006 lsl.l lr,r2,0x6
+ d28: 0a16 lsl r0,r2,0x10
+
+00000d2a \<lsli32\>:
+ d2a: 901f 2406 lsl.l ip,ip,0x0
+ d2e: 6fff fc06 lsl.l r59,r59,0x1f
+ d32: 921f 6c06 lsl.l r28,r28,0x10
+ d36: 6dff 6c06 lsl.l r27,r27,0xf
+ d3a: b43f 2406 lsl.l sp,sp,0x1
+ d3e: 0e7f f806 lsl.l r56,r51,0x13
+ d42: 3e7f 5006 lsl.l r17,r39,0x13
+ d46: 519f 0406 lsl.l r2,ip,0xc
+
+00000d4a \<asri16\>:
+ d4a: 900f 240e asr.l ip,ip,0x0
+ d4e: 6fee asr r3,r3,0x1f
+ d50: 020e asr r0,r0,0x10
+ d52: 6def 240e asr.l fp,fp,0xf
+ d56: b42f 240e asr.l sp,sp,0x1
+ d5a: d2af 240e asr.l lr,ip,0x15
+ d5e: 6ece asr r3,r3,0x16
+ d60: 6d2e asr r3,r3,0x9
+
+00000d62 \<asri32\>:
+ d62: 900f 240e asr.l ip,ip,0x0
+ d66: 6fef fc0e asr.l r59,r59,0x1f
+ d6a: 920f 6c0e asr.l r28,r28,0x10
+ d6e: 6def 6c0e asr.l r27,r27,0xf
+ d72: b42f 240e asr.l sp,sp,0x1
+ d76: 9a2f d40e asr.l r52,r46,0x11
+ d7a: e2cf 5c0e asr.l r23,r56,0x16
+ d7e: bb8f 540e asr.l r21,r46,0x1c
+
+00000d82 \<mov8\>:
+ d82: 800b 2002 mov ip,0x0
+ d86: 7fe3 mov r3,0xff
+ d88: 1003 mov r0,0x80
+ d8a: 6feb 2002 mov fp,0x7f
+ d8e: a02b 2002 mov sp,0x1
+ d92: cb6b 2002 mov lr,0x5b
+ d96: 09a3 mov r0,0x4d
+ d98: 614b 2002 mov fp,0xa
+
+00000d9c \<mov16\>:
+ d9c: 800b 2002 mov ip,0x0
+ da0: 7feb eff2 mov r59,0xffff
+ da4: 800b 6802 mov r28,0x8000
+ da8: 7feb 67f2 mov r27,0x7fff
+ dac: a02b 2002 mov sp,0x1
+ db0: be2b cee2 mov r53,0xeef1
+ db4: 5deb 4cb2 mov r18,0xcbef
+ db8: 044b 48e2 mov r16,0x8e22
+
+00000dbc \<faddf16\>:
+ dbc: 920f 2487 fadd.l ip,ip,ip
+ dc0: 6d87 fadd r3,r3,r3
+ dc2: 0007 fadd r0,r0,r0
+ dc4: 6d8f 2487 fadd.l fp,fp,fp
+ dc8: b68f 2487 fadd.l sp,sp,sp
+ dcc: b10f 2407 fadd.l sp,ip,r2
+ dd0: a90f 2007 fadd.l sp,r2,r2
+ dd4: b98f 2487 fadd.l sp,lr,fp
+
+00000dd8 \<faddf32\>:
+ dd8: 920f 2487 fadd.l ip,ip,ip
+ ddc: 6d8f ff87 fadd.l r59,r59,r59
+ de0: 920f 6d87 fadd.l r28,r28,r28
+ de4: 6d8f 6d87 fadd.l r27,r27,r27
+ de8: b68f 2487 fadd.l sp,sp,sp
+ dec: b78f 2e07 fadd.l sp,r29,r39
+ df0: 018f 9407 fadd.l r32,r40,r3
+ df4: 170f ac87 fadd.l r40,r29,lr
+
+00000df8 \<fsubf16\>:
+ df8: 921f 2487 fsub.l ip,ip,ip
+ dfc: 6d97 fsub r3,r3,r3
+ dfe: 0017 fsub r0,r0,r0
+ e00: 6d9f 2487 fsub.l fp,fp,fp
+ e04: b69f 2487 fsub.l sp,sp,sp
+ e08: 5a9f 0487 fsub.l r2,lr,sp
+ e0c: 661f 0087 fsub.l r3,r1,ip
+ e10: 711f 0407 fsub.l r3,ip,r2
+
+00000e14 \<fsubf32\>:
+ e14: 921f 2487 fsub.l ip,ip,ip
+ e18: 6d9f ff87 fsub.l r59,r59,r59
+ e1c: 921f 6d87 fsub.l r28,r28,r28
+ e20: 6d9f 6d87 fsub.l r27,r27,r27
+ e24: b69f 2487 fsub.l sp,sp,sp
+ e28: 219f 1c87 fsub.l r1,r56,fp
+ e2c: 7b9f 0887 fsub.l r3,r22,r15
+ e30: c29f 1a87 fsub.l r6,r48,r45
+
+00000e34 \<fmulf16\>:
+ e34: 922f 2487 fmul.l ip,ip,ip
+ e38: 6da7 fmul r3,r3,r3
+ e3a: 0027 fmul r0,r0,r0
+ e3c: 6daf 2487 fmul.l fp,fp,fp
+ e40: b6af 2487 fmul.l sp,sp,sp
+ e44: 71af 0487 fmul.l r3,ip,fp
+ e48: c52f 2007 fmul.l lr,r1,r2
+ e4c: bb2f 2487 fmul.l sp,lr,lr
+
+00000e50 \<fmulf32\>:
+ e50: 922f 2487 fmul.l ip,ip,ip
+ e54: 6daf ff87 fmul.l r59,r59,r59
+ e58: 922f 6d87 fmul.l r28,r28,r28
+ e5c: 6daf 6d87 fmul.l r27,r27,r27
+ e60: b6af 2487 fmul.l sp,sp,sp
+ e64: 5daf eb07 fmul.l r58,r23,r51
+ e68: cbaf 4287 fmul.l r22,r2,r47
+ e6c: d92f a487 fmul.l r46,lr,sl
+
+00000e70 \<fmaddf16\>:
+ e70: 923f 2487 fmadd.l ip,ip,ip
+ e74: 6db7 fmadd r3,r3,r3
+ e76: 0037 fmadd r0,r0,r0
+ e78: 6dbf 2487 fmadd.l fp,fp,fp
+ e7c: b6bf 2487 fmadd.l sp,sp,sp
+ e80: a5bf 2007 fmadd.l sp,r1,r3
+ e84: 6c37 fmadd r3,r3,r0
+ e86: 523f 0487 fmadd.l r2,ip,ip
+
+00000e8a \<fmaddf32\>:
+ e8a: 923f 2487 fmadd.l ip,ip,ip
+ e8e: 6dbf ff87 fmadd.l r59,r59,r59
+ e92: 923f 6d87 fmadd.l r28,r28,r28
+ e96: 6dbf 6d87 fmadd.l r27,r27,r27
+ e9a: b6bf 2487 fmadd.l sp,sp,sp
+ e9e: 983f 7a07 fmadd.l r28,r54,r32
+ ea2: 89bf 2087 fmadd.l ip,r2,fp
+ ea6: 633f 3507 fmadd.l fp,r40,r22
+
+00000eaa \<fmsubf16\>:
+ eaa: 924f 2487 fmsub.l ip,ip,ip
+ eae: 6dc7 fmsub r3,r3,r3
+ eb0: 0047 fmsub r0,r0,r0
+ eb2: 6dcf 2487 fmsub.l fp,fp,fp
+ eb6: b6cf 2487 fmsub.l sp,sp,sp
+ eba: accf 2407 fmsub.l sp,fp,r1
+ ebe: 2ecf 0487 fmsub.l r1,fp,sp
+ ec2: 0c47 fmsub r0,r3,r0
+
+00000ec4 \<fmsubf32\>:
+ ec4: 924f 2487 fmsub.l ip,ip,ip
+ ec8: 6dcf ff87 fmsub.l r59,r59,r59
+ ecc: 924f 6d87 fmsub.l r28,r28,r28
+ ed0: 6dcf 6d87 fmsub.l r27,r27,r27
+ ed4: b6cf 2487 fmsub.l sp,sp,sp
+ ed8: 50cf a887 fmsub.l r42,r20,sb
+ edc: c14f 4e87 fmsub.l r22,r24,r42
+ ee0: f9cf 2907 fmsub.l r15,r22,r19
+ ee4: 2a4c 0101 ldr.l r1,\[r2,-0xc]
+ ee8: dbbc 4dff strh.l r22,\[r30,-0x7ff]
+ eec: 9bec 24ff ldrd.l ip,\[lr,\+0x7ff]
+ ef0: 201e bitr r1,r0
+ ef2: fc1f 640e bitr.l r31,r15
diff --git a/gas/testsuite/gas/epiphany/allinsn.exp b/gas/testsuite/gas/epiphany/allinsn.exp
new file mode 100644
index 0000000000..389bc98bb5
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/allinsn.exp
@@ -0,0 +1,11 @@
+# EPIPHANY assembler testsuite. -*- Tcl -*-
+
+if [istarget epiphany*-*-*] {
+ run_dump_test "allinsn"
+ run_dump_test "regression"
+ run_dump_test "sample"
+ run_dump_test "branch_lit"
+ run_dump_test "badrelax"
+ gas_test_error "badpostmod" "" "destination register modified by displacement-post-modified address"
+ run_dump_test "addr-syntax"
+}
diff --git a/gas/testsuite/gas/epiphany/allinsn.s b/gas/testsuite/gas/epiphany/allinsn.s
new file mode 100644
index 0000000000..762fe5faa6
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/allinsn.s
@@ -0,0 +1,1563 @@
+ .data
+foodata: .hword 42
+ .text
+footext:
+ .text
+ .global beq16
+
+ .text
+ .global beq
+bgt16:
+ bgt 4
+ bgt 4
+ bgt -4
+ bgt footext
+ bgt foodata
+ bgt 4
+ bgt footext
+ bgt footext
+ .text
+ .global bgt
+
+bgtu16:
+ bgtu 4
+ bgtu -4
+ bgtu footext
+ bgtu 4
+ bgtu -4
+ bgtu footext
+ bgtu footext
+ bgtu 4
+ .text
+ .global bgtu
+
+bgte16:
+ bgte footext
+ bgte footext
+ bgte footext
+ bgte footext
+ bgte footext
+ bgte -4
+ bgte foodata
+ bgte foodata
+
+ .text
+ .global bgteu16
+bgteu16:
+ bgteu 4
+ bgteu -4
+ bgteu foodata
+ bgteu 4
+ bgteu footext
+ bgteu 4
+ bgteu foodata
+ bgteu foodata
+ .text
+ .global bgteu
+bgteu:
+ .text
+ .global blt16
+blt16:
+ blt -4
+ blt 4
+ blt -4
+ blt 4
+ blt -4
+ blt 4
+ blt foodata
+ blt foodata
+ .text
+ .global blt
+blt:
+ .text
+ .global bltu16
+bltu16:
+ bltu -4
+ bltu 4
+ bltu -4
+ bltu footext
+ bltu footext
+ bltu footext
+ bltu 4
+ bltu foodata
+ .text
+ .global bltu
+bltu:
+ .text
+ .global blte16
+blte16:
+ blte footext
+ blte foodata
+ blte foodata
+ blte footext
+ blte -4
+ blte footext
+ blte footext
+ blte 4
+ .text
+ .global blte
+blte:
+ .text
+ .global blteu16
+blteu16:
+ blteu footext
+ blteu foodata
+ blteu footext
+ blteu foodata
+ blteu footext
+ blteu -4
+ blteu foodata
+ blteu foodata
+ .text
+ .global blteu
+blteu:
+ .text
+ .global bbeq16
+bbeq16:
+ bbeq footext
+ bbeq footext
+ bbeq foodata
+ bbeq footext
+ bbeq 4
+ bbeq foodata
+ bbeq foodata
+ bbeq 4
+ .text
+ .global bbeq
+bbeq:
+ .text
+ .global bbne16
+bbne16:
+ bbne foodata
+ bbne -4
+ bbne 4
+ bbne footext
+ bbne 4
+ bbne 4
+ bbne footext
+ bbne footext
+ .text
+ .global bbne
+bbne:
+ .text
+ .global bblt16
+bblt16:
+ bblt foodata
+ bblt 4
+ bblt 4
+ bblt 4
+ bblt -4
+ bblt 4
+ bblt footext
+ bblt -4
+ .text
+ .global bblt
+bblt:
+ .text
+ .global bblte16
+bblte16:
+ bblte 4
+ bblte 4
+ bblte footext
+ bblte footext
+ bblte 4
+ bblte -4
+ bblte foodata
+ bblte 4
+ .text
+ .global bblte
+bblte:
+ .text
+ .global b16
+b16:
+ b footext
+ b footext
+ b 4
+ b -4
+ b footext
+ b foodata
+ b foodata
+ b -4
+ .text
+ .global b
+b:
+ .text
+ .global bl16
+bl16:
+ bl -4
+ bl 4
+ bl footext
+ bl -4
+ bl footext
+ bl -4
+ bl -4
+ bl footext
+ .text
+ .global bl
+bl:
+ .text
+ .global jr16
+jr16:
+ jr ip
+ jr r3
+ jr r0
+ jr fp
+ jr sp
+ jr r0
+ jr r3
+ jr r0
+ .text
+ .global jr
+jr:
+ jr ip
+ jr r59
+ jr r28
+ jr r27
+ jr sp
+ jr r51
+ jr r56
+ jr r45
+ .text
+ .global jalr16
+jalr16:
+ jalr ip
+ jalr r3
+ jalr r0
+ jalr fp
+ jalr sp
+ jalr r3
+ jalr fp
+ jalr ip
+ .text
+ .global jalr
+jalr:
+ jalr ip
+ jalr r59
+ jalr r28
+ jalr r27
+ jalr sp
+ jalr r11
+ jalr r28
+ jalr r59
+ .text
+ .global ldrbx16
+ldrbx16:
+ ldrb ip,[ip,ip]
+ ldrb r3,[r3,r3]
+ ldrb r0,[r0,r0]
+ ldrb fp,[fp,fp]
+ ldrb sp,[sp,sp]
+ ldrb ip,[r0,r0]
+ ldrb r3,[r2,lr]
+ ldrb r2,[ip,r3]
+ .text
+ .global ldrbp16
+ldrbp16:
+ ldrb sp,[r0],fp
+ ldrb lr,[r1],ip
+ ldrb fp,[r0],fp
+ .text
+ .global ldrbx
+ldrbx:
+ ldrb ip,[ip,ip]
+ ldrb r59,[r59,r59]
+ ldrb r28,[r28,r28]
+ ldrb r27,[r27,r27]
+ ldrb sp,[sp,sp]
+ ldrb r41,[r18,r47]
+ ldrb r43,[r16,r21]
+ ldrb r32,[r8,r8]
+ .text
+ .global ldrbp
+ldrbp:
+ ldrb r36,[r49],r18
+ ldrb r32,[r59],r50
+ ldrb r58,[r11],r25
+ .text
+ .global ldrbd16
+ldrbd16:
+ ldrb ip,[ip,0]
+ ldrb r3,[r3,7]
+ ldrb r0,[r0,4]
+ ldrb fp,[fp,3]
+ ldrb sp,[sp,1]
+ ldrb lr,[sp,1]
+ ldrb r1,[r0,0]
+ ldrb r1,[r1,1]
+ .text
+ .global ldrbd
+ldrbd:
+ ldrb ip,[ip,0]
+ ldrb r59,[r59,2047]
+ ldrb r28,[r28,1024]
+ ldrb r27,[r27,1023]
+ ldrb sp,[sp,1]
+ ldrb r7,[r33,1574]
+ ldrb r31,[r6,1957]
+ ldrb r10,[r0,1831]
+ .text
+ .global ldrhx16
+ldrhx16:
+ ldrh ip,[ip,ip]
+ ldrh r3,[r3,r3]
+ ldrh r0,[r0,r0]
+ ldrh fp,[fp,fp]
+ ldrh sp,[sp,sp]
+ ldrh r0,[r0,lr]
+ ldrh lr,[lr,sp]
+ ldrh r0,[fp,fp]
+ .text
+ .global ldrhp16
+ldrhp16:
+ ldrh r2,[sp],fp
+ ldrh r22,[sp],fp
+ .text
+ .global ldrhx
+ldrhx:
+ ldrh ip,[ip,ip]
+ ldrh r59,[r59,r59]
+ ldrh r28,[r28,r28]
+ ldrh r27,[r27,r27]
+ ldrh sp,[sp,sp]
+ ldrh r46,[r17,r21]
+ ldrh r30,[r1,r47]
+ ldrh r43,[r19,r20]
+ .text
+ .global ldrhp
+ldrhp:
+
+
+
+ ldrh r32,[r31],r29
+ ldrh r52,[r47],r10
+ ldrh r31,[r40],r3
+ .text
+ .global ldrhd16
+ldrhd16:
+ ldrh ip,[ip,0]
+ ldrh r3,[r3,7]
+ ldrh r0,[r0,4]
+ ldrh fp,[fp,3]
+ ldrh sp,[sp,1]
+ ldrh lr,[r2,0]
+ ldrh r3,[r0,7]
+ ldrh r0,[r3,6]
+ .text
+ .global ldrhd
+ldrhd:
+ ldrh ip,[ip,0]
+ ldrh r59,[r59,2047]
+ ldrh r28,[r28,1024]
+ ldrh r27,[r27,1023]
+ ldrh sp,[sp,1]
+ ldrh r45,[r24,1221]
+ ldrh r36,[r43,1738]
+ ldrh r42,[r48,25]
+ .text
+ .global ldrx16
+ldrx16:
+ ldr ip,[ip,ip]
+ ldr r3,[r3,r3]
+ ldr r0,[r0,r0]
+ ldr fp,[fp,fp]
+ ldr sp,[sp,sp]
+ ldr r3,[fp,lr]
+ ldr ip,[lr,r2]
+ ldr r3,[r2,lr]
+ .text
+ .global ldrp16
+ldrp16:
+ ldr lr,[fp],sp
+ ldr r0,[sp],r0
+ ldr fp,[r2],r1
+ .text
+ .global ldrx
+ldrx:
+ ldr ip,[ip,ip]
+ ldr r59,[r59,r59]
+ ldr r28,[r28,r28]
+ ldr r27,[r27,r27]
+ ldr sp,[sp,sp]
+ ldr r24,[r16,r47]
+ ldr r22,[r41,r49]
+ ldr r14,[fp,r39]
+ .text
+ .global ldrp
+ldrp:
+ ldr r21,[r5],r30
+ ldr r36,[r12],r14
+ ldr r12,[r4],r11
+ .text
+ .global ldrd16
+ldrd16:
+ ldr ip,[ip,0]
+ ldr r3,[r3,7]
+ ldr r0,[r0,4]
+ ldr fp,[fp,3]
+ ldr sp,[sp,1]
+ ldr r0,[sp,0]
+ ldr ip,[r1,7]
+ ldr fp,[r1,1]
+ .text
+ .global ldrd
+ldrd:
+ ldr ip,[ip,0]
+ ldr r59,[r59,2047]
+ ldr r28,[r28,1024]
+ ldr r27,[r27,1023]
+ ldr sp,[sp,1]
+ ldr r22,[r30,975]
+ ldr r7,[r44,1361]
+ ldr r23,[r19,1855]
+ .text
+ .global ldrdx16
+ldrdx16:
+ ldrd ip,[ip,ip]
+ ldrd r4,[r3,r3]
+ ldrd r0,[r0,r0]
+ ldrd r14,[fp,fp]
+ ldrd r16,[sp,sp]
+ ldrd r30,[r2,ip]
+ ldrd r0,[fp,r3]
+ ldrd r20,[ip,lr]
+ .text
+ .global ldrdp16
+ldrdp16:
+ ldrd r4,[r3],r3
+ ldrd r16,[fp],fp
+ ldrd r20,[sp],sp
+ ldrd r10,[ip],r1
+ ldrd r30,[fp],lr
+ ldrd r62,[lr],sp
+ .text
+ .global ldrdx
+ldrdx:
+ ldrd ip,[ip,ip]
+ ldrd r58,[r59,r59]
+ ldrd r28,[r28,r28]
+ ldrd r26,[r27,r27]
+ ldrd r12,[sp,sp]
+ ldrd r32,[fp,r59]
+ ldrd r4,[r17,r6]
+ ldrd r32,[r40,r1]
+ .text
+ .global ldrdp
+ldrdp:
+ ldrd r16,[sp],sp
+ ldrd r46,[r33],r30
+ ldrd r24,[r36],r59
+ ldrd r58,[r32],r11
+ .text
+ .global ldrdd16
+ldrdd16:
+ ldrd ip,[ip,0]
+ ldrd r4,[r3,7]
+ ldrd r0,[r0,4]
+ ldrd r16,[fp,3]
+ ldrd r18,[sp,1]
+ ldrd r0,[fp,3]
+ ldrd lr,[fp,7]
+ ldrd lr,[ip,1]
+ .text
+ .global ldrdd
+ldrdd:
+ ldrd ip,[ip,0]
+ ldrd r58,[r59,2047]
+ ldrd r28,[r28,1024]
+ ldrd r2,[r27,1023]
+ ldrd r16,[sp,1]
+ ldrd r4,[r21,761]
+ ldrd lr,[r41,1553]
+ ldrd r6,[r14,1922]
+ .text
+ .global strbx16
+strbx16:
+ strb ip,[ip,ip]
+ strb r3,[r3,r3]
+ strb r0,[r0,r0]
+ strb fp,[fp,fp]
+ strb sp,[sp,sp]
+ strb r1,[lr,r3]
+ strb ip,[r3,lr]
+ strb lr,[ip,ip]
+ .text
+ .global strbx
+strbx:
+ strb ip,[ip,ip]
+ strb r59,[r59,r59]
+ strb r28,[r28,r28]
+ strb r27,[r27,r27]
+ strb sp,[sp,sp]
+ strb r50,[r15,sp]
+ strb lr,[fp,r52]
+ strb r14,[r24,r51]
+ .text
+ .global strbp16
+strbp16:
+ strb ip,[ip],ip
+ strb r3,[r3],r3
+ strb r0,[r0],r0
+ strb fp,[fp],fp
+ strb sp,[sp],sp
+ strb r2,[fp],ip
+ strb fp,[r0],r1
+ strb r2,[r2],r3
+ .text
+ .global strbp
+strbp:
+ strb ip,[ip],ip
+ strb r59,[r59],r59
+ strb r28,[r28],r28
+ strb r27,[r27],r27
+ strb sp,[sp],sp
+ strb r14,[r51],r2
+ strb r6,[r44],r50
+ strb r44,[r9],r49
+ .text
+ .global strbd16
+strbd16:
+ strb ip,[ip,0]
+ strb r3,[r3,7]
+ strb r0,[r0,4]
+ strb fp,[fp,3]
+ strb sp,[sp,1]
+ strb r0,[r2,1]
+ strb sp,[r2,3]
+ strb fp,[r2,4]
+ .text
+ .global strbd
+strbd:
+ strb ip,[ip,0]
+ strb r59,[r59,2047]
+ strb r28,[r28,1024]
+ strb r27,[r27,1023]
+ strb sp,[sp,1]
+ strb r23,[r10,1404]
+ strb r12,[r35,1461]
+ strb r54,[r58,1090]
+ .text
+ .global strhx16
+strhx16:
+ strh ip,[ip,ip]
+ strh r3,[r3,r3]
+ strh r0,[r0,r0]
+ strh fp,[fp,fp]
+ strh sp,[sp,sp]
+ strh r0,[r3,r1]
+ strh r1,[fp,r2]
+ strh r3,[r3,fp]
+ .text
+ .global strhx
+strhx:
+ strh ip,[ip,ip]
+ strh r59,[r59,r59]
+ strh r28,[r28,r28]
+ strh r27,[r27,r27]
+ strh sp,[sp,sp]
+ strh r16,[r38,r31]
+ strh r32,[r12,r28]
+ strh r57,[r11,r9]
+ .text
+ .global strhp16
+strhp16:
+ strh ip,[ip],ip
+ strh r3,[r3],r3
+ strh r0,[r0],r0
+ strh fp,[fp],fp
+ strh sp,[sp],sp
+ strh r0,[r2],sp
+ strh sp,[r3],r0
+ strh r1,[r0],r0
+ .text
+ .global strhp
+strhp:
+ strh ip,[ip],ip
+ strh r59,[r59],r59
+ strh r28,[r28],r28
+ strh r27,[r27],r27
+ strh sp,[sp],sp
+ strh r3,[r37],r54
+ strh r4,[r54],r25
+ strh r5,[r32],r25
+ .text
+ .global strhd16
+strhd16:
+ strh ip,[ip,0]
+ strh r3,[r3,7]
+ strh r0,[r0,4]
+ strh fp,[fp,3]
+ strh sp,[sp,1]
+ strh r3,[r0,3]
+ strh lr,[ip,7]
+ strh r3,[r2,7]
+ .text
+ .global strhd
+strhd:
+ strh ip,[ip,0]
+ strh r59,[r59,2047]
+ strh r28,[r28,1024]
+ strh r27,[r27,1023]
+ strh sp,[sp,1]
+ strh r7,[r38,1181]
+ strh r25,[r4,77]
+ strh r11,[fp,631]
+ .text
+ .global strx16
+strx16:
+ str ip,[ip,ip]
+ str r3,[r3,r3]
+ str r0,[r0,r0]
+ str fp,[fp,fp]
+ str sp,[sp,sp]
+ str lr,[r3,r3]
+ str r3,[fp,r0]
+ str ip,[sp,r1]
+ .text
+ .global strx
+strx:
+ str ip,[ip,ip]
+ str r59,[r59,r59]
+ str r28,[r28,r28]
+ str r27,[r27,r27]
+ str sp,[sp,sp]
+ str r53,[r29,r28]
+ str r30,[r22,r34]
+ str r28,[r28,r44]
+ .text
+ .global strp16
+strp16:
+ str ip,[ip],ip
+ str r3,[r3],r3
+ str r0,[r0],r0
+ str fp,[fp],fp
+ str sp,[sp],sp
+ str lr,[r0],r0
+ str fp,[r0],sp
+ str r3,[fp],r0
+ .text
+ .global strp
+strp:
+ str ip,[ip],ip
+ str r59,[r59],r59
+ str r28,[r28],r28
+ str r27,[r27],r27
+ str sp,[sp],sp
+ str r22,[r36],r15
+ str r44,[r13],r47
+ str r19,[r48],sp
+ .text
+ .global strd16
+strd16:
+ str ip,[ip,0]
+ str r3,[r3,7]
+ str r0,[r0,4]
+ str fp,[fp,3]
+ str sp,[sp,1]
+ str r3,[fp,3]
+ str sp,[ip,6]
+ str r1,[lr,3]
+ .text
+ .global strd
+strd:
+ str ip,[ip,0]
+ str r59,[r59,2047]
+ str r28,[r28,1024]
+ str r27,[r27,1023]
+ str sp,[sp,1]
+ str r45,[r44,74]
+ str r58,[r50,370]
+ str r40,[r3,626]
+ .text
+ .global strdx16
+strdx16:
+ strd ip,[ip,ip]
+ strd r2,[r3,r3]
+ strd r0,[r0,r0]
+ strd r16,[fp,fp]
+ strd r18,[sp,sp]
+ strd ip,[r3,r1]
+ strd r2,[lr,fp]
+ strd ip,[r2,r2]
+ .text
+ .global strdx
+strdx:
+ strd ip,[ip,ip]
+ strd r58,[r59,r59]
+ strd r28,[r28,r28]
+ strd r26,[r27,r27]
+ strd r14,[sp,sp]
+ strd r38,[r53,lr]
+ strd r24,[r19,r43]
+ strd r12,[r10,r30]
+ .text
+ .global strdp16
+strdp16:
+ strd ip,[ip],ip
+ strd r2,[r3],r3
+ strd r0,[r0],r0
+ strd r6,[fp],fp
+ strd r4,[sp],sp
+ strd r2,[r3],r0
+ strd r2,[r0],r1
+ strd r2,[lr],r1
+ .text
+ .global strdp
+strdp:
+ strd ip,[ip],ip
+ strd r58,[r59],r59
+ strd r28,[r28],r28
+ strd r26,[r27],r27
+ strd r22,[sp],sp
+ strd r6,[r10],r44
+ strd r10,[r43],r5
+ strd r46,[r17],lr
+ .text
+ .global strdd16
+strdd16:
+ strd r0,[ip,0]
+ strd r2,[r3,7]
+ strd r0,[r0,4]
+ strd r2,[fp,3]
+ strd r4,[sp,1]
+ strd r2,[r2,5]
+ strd r6,[r3,7]
+ strd r6,[r1,2]
+ .text
+ .global strdd
+strdd:
+ strd ip,[ip,0]
+ strd r58,[r59,2047]
+ strd r28,[r28,1024]
+ strd r26,[r27,1023]
+ strd r14,[sp,1]
+ strd r28,[r52,719]
+ strd r40,[r53,1994]
+ strd r44,[r57,494]
+ .text
+ .global mov16EQ
+mov16EQ:
+ moveq ip,ip
+ moveq r3,r3
+ moveq r0,r0
+ moveq fp,fp
+ moveq sp,sp
+ moveq ip,r2
+ moveq r2,fp
+ moveq fp,sp
+ .text
+ .global movEQ
+movEQ:
+ moveq ip,ip
+ moveq r59,r59
+ moveq r28,r28
+ moveq r27,r27
+ moveq sp,sp
+ moveq r32,r30
+ moveq r43,r39
+ moveq r25,r33
+ .text
+ .global mov16NE
+mov16NE:
+ movne ip,ip
+ movne r3,r3
+ movne r0,r0
+ movne fp,fp
+ movne sp,sp
+ movne r3,r3
+ movne r0,fp
+ movne fp,fp
+ .text
+ .global movNE
+movNE:
+ movne ip,ip
+ movne r59,r59
+ movne r28,r28
+ movne r27,r27
+ movne sp,sp
+ movne r4,r3
+ movne r28,fp
+ movne r23,r39
+ .text
+ .global mov16GT
+mov16GT:
+ movgt ip,ip
+ movgt r3,r3
+ movgt r0,r0
+ movgt fp,fp
+ movgt sp,sp
+ movgt r1,r3
+ movgt lr,r3
+ movgt r1,ip
+ .text
+ .global movGT
+movGT:
+ movgt ip,ip
+ movgt r59,r59
+ movgt r28,r28
+ movgt r27,r27
+ movgt sp,sp
+ movgt r1,r21
+ movgt r13,r3
+ movgt r28,r43
+ .text
+ .global mov16GTU
+mov16GTU:
+ movgtu ip,ip
+ movgtu r3,r3
+ movgtu r0,r0
+ movgtu fp,fp
+ movgtu sp,sp
+ movgtu ip,lr
+ movgtu sp,ip
+ movgtu ip,sp
+ .text
+ .global movGTU
+movGTU:
+ movgtu ip,ip
+ movgtu r59,r59
+ movgtu r28,r28
+ movgtu r27,r27
+ movgtu sp,sp
+ movgtu r34,r33
+ movgtu r17,r48
+ movgtu r35,r24
+ .text
+ .global mov16GTE
+mov16GTE:
+ movgte ip,ip
+ movgte r3,r3
+ movgte r0,r0
+ movgte fp,fp
+ movgte sp,sp
+ movgte r0,r0
+ movgte r2,sp
+ movgte lr,r2
+ .text
+ .global movGTE
+movGTE:
+ movgte ip,ip
+ movgte r59,r59
+ movgte r28,r28
+ movgte r27,r27
+ movgte sp,sp
+ movgte ip,r59
+ movgte r37,r42
+ movgte r44,r26
+ .text
+ .global mov16GTEU
+mov16GTEU:
+ movgteu ip,ip
+ movgteu r3,r3
+ movgteu r0,r0
+ movgteu fp,fp
+ movgteu sp,sp
+ movgteu lr,ip
+ movgteu sp,r1
+ movgteu ip,lr
+ .text
+ .global movGTEU
+movGTEU:
+ movgteu ip,ip
+ movgteu r59,r59
+ movgteu r28,r28
+ movgteu r27,r27
+ movgteu sp,sp
+ movgteu r58,r47
+ movgteu r56,r5
+ movgteu r20,r52
+ .text
+ .global mov16LT
+mov16LT:
+ movlt ip,ip
+ movlt r3,r3
+ movlt r0,r0
+ movlt fp,fp
+ movlt sp,sp
+ movlt r3,r3
+ movlt r2,r2
+ movlt ip,lr
+ .text
+ .global movLT
+movLT:
+ movlt ip,ip
+ movlt r59,r59
+ movlt r28,r28
+ movlt r27,r27
+ movlt sp,sp
+ movlt r52,r12
+ movlt r57,r22
+ movlt r8,r7
+ .text
+ .global mov16LTU
+mov16LTU:
+ movltu ip,ip
+ movltu r3,r3
+ movltu r0,r0
+ movltu fp,fp
+ movltu sp,sp
+ movltu ip,r2
+ movltu sp,ip
+ movltu r1,r0
+ .text
+ .global movLTU
+movLTU:
+ movltu ip,ip
+ movltu r59,r59
+ movltu r28,r28
+ movltu r27,r27
+ movltu sp,sp
+ movltu r13,r31
+ movltu r43,ip
+ movltu r7,r56
+ .text
+ .global mov16LTE
+mov16LTE:
+ movlte ip,ip
+ movlte r3,r3
+ movlte r0,r0
+ movlte fp,fp
+ movlte sp,sp
+ movlte r0,r3
+ movlte r3,ip
+ movlte r3,lr
+ .text
+ .global movLTE
+movLTE:
+ movlte ip,ip
+ movlte r59,r59
+ movlte r28,r28
+ movlte r27,r27
+ movlte sp,sp
+ movlte r30,r27
+ movlte r35,r52
+ movlte r15,r53
+ .text
+ .global mov16LTEU
+mov16LTEU:
+ movlteu ip,ip
+ movlteu r3,r3
+ movlteu r0,r0
+ movlteu fp,fp
+ movlteu sp,sp
+ movlteu ip,lr
+ movlteu r2,r2
+ movlteu r2,fp
+ .text
+ .global movLTEU
+movLTEU:
+ movlteu ip,ip
+ movlteu r59,r59
+ movlteu r28,r28
+ movlteu r27,r27
+ movlteu sp,sp
+ movlteu r31,r36
+ movlteu r24,r50
+ movlteu r52,r54
+ .text
+ .global mov16B
+mov16B:
+ mov ip,ip
+ mov r3,r3
+ mov r0,r0
+ mov fp,fp
+ mov sp,sp
+ mov ip,r1
+ mov ip,r0
+ mov r0,ip
+ .text
+ .global movB
+movB:
+ mov ip,ip
+ mov r59,r59
+ mov r28,r28
+ mov r27,r27
+ mov sp,sp
+ mov r1,r59
+ mov r28,r12
+ mov r5,r42
+ .text
+ .global mov16BEQ
+mov16BEQ:
+ movbeq ip,ip
+ movbeq r3,r3
+ movbeq r0,r0
+ movbeq fp,fp
+ movbeq sp,sp
+ movbeq lr,r2
+ movbeq fp,r2
+ movbeq ip,r1
+ .text
+ .global movBEQ
+movBEQ:
+ movbeq ip,ip
+ movbeq r59,r59
+ movbeq r28,r28
+ movbeq r27,r27
+ movbeq sp,sp
+ movbeq r29,r16
+ movbeq r18,r46
+ movbeq lr,r1
+ .text
+ .global mov16BNE
+mov16BNE:
+ movbne ip,ip
+ movbne r3,r3
+ movbne r0,r0
+ movbne fp,fp
+ movbne sp,sp
+ movbne r1,r2
+ movbne ip,r1
+ movbne ip,r3
+ .text
+ .global movBNE
+movBNE:
+ movbne ip,ip
+ movbne r59,r59
+ movbne r28,r28
+ movbne r27,r27
+ movbne sp,sp
+ movbne r15,r7
+ movbne r24,r43
+ movbne r23,r52
+ .text
+ .global mov16BLT
+mov16BLT:
+ movblt ip,ip
+ movblt r3,r3
+ movblt r0,r0
+ movblt fp,fp
+ movblt sp,sp
+ movblt sp,lr
+ movblt ip,lr
+ movblt lr,sp
+ .text
+ .global movBLT
+movBLT:
+ movblt ip,ip
+ movblt r59,r59
+ movblt r28,r28
+ movblt r27,r27
+ movblt sp,sp
+ movblt r52,r44
+ movblt r57,r35
+ movblt r53,r33
+ .text
+ .global mov16BLTE
+mov16BLTE:
+ movblte ip,ip
+ movblte r3,r3
+ movblte r0,r0
+ movblte fp,fp
+ movblte sp,sp
+ movblte sp,ip
+ movblte r0,fp
+ movblte r0,sp
+ .text
+ .global movBLTE
+movBLTE:
+ movblte ip,ip
+ movblte r59,r59
+ movblte r28,r28
+ movblte r27,r27
+ movblte sp,sp
+ movblte r58,r44
+ movblte r35,r22
+ movblte r8,r2
+ .text
+ .global movts16
+movts16:
+ movts config,ip
+ movts ipend,r3
+ movts iret,r0
+ movts debug,fp
+ movts status,sp
+ movts status,fp
+ movts pc,fp
+ movts imask,r0
+ .text
+ .global movts
+movts:
+ movts config,ip
+ movts ipend,r59
+ movts iret,r28
+ movts debug,r27
+ movts status,sp
+ movts debug,r50
+ movts ipend,r33
+ movts status,ip
+ .text
+ .global movfs16
+movfs16:
+ movfs ip,config
+ movfs r3,ipend
+ movfs r0,iret
+ movfs fp,debug
+ movfs sp,status
+ movfs r1,iret
+ movfs r2,status
+ movfs lr,debug
+ .text
+ .global movfs
+movfs:
+ movfs ip,config
+ movfs r59,ipend
+ movfs r28,iret
+ movfs r27,debug
+ movfs sp,status
+ movfs r13,debug
+ movfs r15,status
+ movfs r16,imask
+ .text
+ .global nop
+nop:
+ nop
+ .text
+ .global idle
+idle:
+ idle
+ .text
+ .global bkpt
+bkpt:
+ bkpt
+ .text
+ .global rti
+rti:
+ rti
+ .text
+ .global trap16
+trap16:
+ trap 0
+ trap 7
+ trap 4
+ trap 3
+ trap 1
+ trap 6
+ trap 3
+ trap 5
+ .text
+ .global add16
+add16:
+ add ip,ip,ip
+ add r3,r3,r3
+ add r0,r0,r0
+ add fp,fp,fp
+ add sp,sp,sp
+ add sp,r2,lr
+ add r0,r2,r1
+ add ip,fp,fp
+ .text
+ .global add
+add:
+ add ip,ip,ip
+ add r59,r59,r59
+ add r28,r28,r28
+ add r27,r27,r27
+ add sp,sp,sp
+ add r56,r10,r16
+ add r36,r25,r34
+ add r2,r49,r17
+ .text
+ .global sub16
+sub16:
+ sub ip,ip,ip
+ sub r3,r3,r3
+ sub r0,r0,r0
+ sub fp,fp,fp
+ sub sp,sp,sp
+ sub r2,ip,lr
+ sub lr,lr,r0
+ sub r3,r3,r3
+ .text
+ .global sub
+sub:
+ sub ip,ip,ip
+ sub r59,r59,r59
+ sub r28,r28,r28
+ sub r27,r27,r27
+ sub sp,sp,sp
+ sub ip,lr,r20
+ sub r48,r22,r47
+ sub r19,r48,r13
+ .text
+ .global and16
+and16:
+ and ip,ip,ip
+ and r3,r3,r3
+ and r0,r0,r0
+ and fp,fp,fp
+ and sp,sp,sp
+ and fp,sp,r3
+ and r3,r3,r3
+ and ip,sp,sp
+ .text
+ .global and
+and:
+ and ip,ip,ip
+ and r59,r59,r59
+ and r28,r28,r28
+ and r27,r27,r27
+ and sp,sp,sp
+ and r52,ip,r46
+ and r44,r40,r44
+ and r24,r58,r31
+ .text
+ .global orr16
+orr16:
+ orr ip,ip,ip
+ orr r3,r3,r3
+ orr r0,r0,r0
+ orr fp,fp,fp
+ orr sp,sp,sp
+ orr lr,r1,sp
+ orr r3,lr,lr
+ orr r2,r3,r2
+ .text
+ .global orr
+orr:
+ orr ip,ip,ip
+ orr r59,r59,r59
+ orr r28,r28,r28
+ orr r27,r27,r27
+ orr sp,sp,sp
+ orr r52,r5,r59
+ orr r15,r32,r43
+ orr r56,r29,r44
+ .text
+ .global eor16
+eor16:
+ eor ip,ip,ip
+ eor r3,r3,r3
+ eor r0,r0,r0
+ eor fp,fp,fp
+ eor sp,sp,sp
+ eor ip,r3,r2
+ eor r3,sp,r2
+ eor fp,sp,r2
+ .text
+ .global eor
+eor:
+ eor ip,ip,ip
+ eor r59,r59,r59
+ eor r28,r28,r28
+ eor r27,r27,r27
+ eor sp,sp,sp
+ eor r17,r56,r29
+ eor sp,r41,r27
+ eor r11,r10,r43
+ .text
+ .global asr16
+asr16:
+ asr ip,ip,ip
+ asr r3,r3,r3
+ asr r0,r0,r0
+ asr fp,fp,fp
+ asr sp,sp,sp
+ asr r3,r0,r3
+ asr r3,r1,lr
+ asr r0,fp,sp
+ .text
+ .global asr
+asr:
+ asr ip,ip,ip
+ asr r59,r59,r59
+ asr r28,r28,r28
+ asr r27,r27,r27
+ asr sp,sp,sp
+ asr r34,r9,r25
+ asr r51,r17,r33
+ asr ip,r7,r11
+ .text
+ .global lsr16
+lsr16:
+ lsr ip,ip,ip
+ lsr r3,r3,r3
+ lsr r0,r0,r0
+ lsr fp,fp,fp
+ lsr sp,sp,sp
+ lsr sp,r3,fp
+ lsr fp,r1,lr
+ lsr lr,r2,r2
+ .text
+ .global lsr
+lsr:
+ lsr ip,ip,ip
+ lsr r59,r59,r59
+ lsr r28,r28,r28
+ lsr r27,r27,r27
+ lsr sp,sp,sp
+ lsr r6,r25,r19
+ lsr r12,r54,r32
+ lsr r13,sp,ip
+ .text
+ .global lsl16
+lsl16:
+ lsl ip,ip,ip
+ lsl r3,r3,r3
+ lsl r0,r0,r0
+ lsl fp,fp,fp
+ lsl sp,sp,sp
+ lsl ip,ip,ip
+ lsl lr,r1,ip
+ lsl lr,sp,r3
+ .text
+ .global lsl
+lsl:
+ lsl ip,ip,ip
+ lsl r59,r59,r59
+ lsl r28,r28,r28
+ lsl r27,r27,r27
+ lsl sp,sp,sp
+ lsl r36,r43,r15
+ lsl r34,r39,r37
+ lsl r23,r33,r29
+ .text
+ .global addi16
+addi16:
+ add ip,ip,0
+ add r3,r3,7
+ add r0,r0,4
+ add fp,fp,3
+ add sp,sp,1
+ add r3,r1,1
+ add r1,fp,3
+ add r0,fp,7
+ .text
+ .global addi
+addi:
+ add ip,ip,0
+ add r59,r59,1023
+ add r28,r28,047
+ add r27,r27,1023
+ add sp,sp,1
+ add r49,r28,165
+ add r31,r2,623
+ add r16,r9,945
+ .text
+ .global subi16
+subi16:
+ sub ip,ip,0
+ sub r3,r3,7
+ sub r0,r0,4
+ sub fp,fp,3
+ sub sp,sp,1
+ sub ip,r3,2
+ sub lr,r3,4
+ sub ip,r2,1
+ .text
+ .global subi
+subi:
+ sub ip,ip,0
+ sub r59,r59,-2047
+ sub r28,r28,1023
+ sub r27,r27,1022
+ sub sp,sp,1
+ sub r51,r6,836
+ sub r47,r40,772
+ sub r55,r4,488
+ .text
+ .global lsri16
+lsri16:
+ lsr ip,ip,0
+ lsr r3,r3,31
+ lsr r0,r0,16
+ lsr fp,fp,15
+ lsr sp,sp,1
+ lsr r0,r3,6
+ lsr r1,r2,8
+ lsr fp,lr,14
+ .text
+ .global lsri32
+lsri32:
+ lsr ip,ip,0
+ lsr r59,r59,31
+ lsr r28,r28,16
+ lsr r27,r27,15
+ lsr sp,sp,1
+ lsr r30,r48,19
+ lsr r43,r7,23
+ lsr r28,r2,28
+ .text
+ .global lsli16
+lsli16:
+ lsl ip,ip,0
+ lsl r3,r3,31
+ lsl r0,r0,16
+ lsl fp,fp,15
+ lsl sp,sp,1
+ lsl r2,r3,11
+ lsl lr,r2,6
+ lsl r0,r2,16
+ .text
+ .global lsli32
+lsli32:
+ lsl ip,ip,0
+ lsl r59,r59,31
+ lsl r28,r28,16
+ lsl r27,r27,15
+ lsl sp,sp,1
+ lsl r56,r51,19
+ lsl r17,r39,19
+ lsl r2,r12,12
+ .text
+ .global asri16
+asri16:
+ asr ip,ip,0
+ asr r3,r3,31
+ asr r0,r0,16
+ asr fp,fp,15
+ asr sp,sp,1
+ asr lr,ip,21
+ asr r3,r3,22
+ asr r3,r3,9
+ .text
+ .global asri32
+asri32:
+ asr ip,ip,0
+ asr r59,r59,31
+ asr r28,r28,16
+ asr r27,r27,15
+ asr sp,sp,1
+ asr r52,r46,17
+ asr r23,r56,22
+ asr r21,r46,28
+ .text
+ .global mov8
+mov8:
+ mov ip,0
+ mov r3,255
+ mov r0,128
+ mov fp,127
+ mov sp,1
+ mov lr,91
+ mov r0,77
+ mov fp,10
+ .text
+ .global mov16
+mov16:
+ mov ip,0
+ mov r59,65535
+ mov r28,32768
+ mov r27,32767
+ mov sp,1
+ mov r53,61169
+ mov r18,52207
+ mov r16,36386
+ .text
+ .global faddf16
+faddf16:
+ fadd ip,ip,ip
+ fadd r3,r3,r3
+ fadd r0,r0,r0
+ fadd fp,fp,fp
+ fadd sp,sp,sp
+ fadd sp,ip,r2
+ fadd sp,r2,r2
+ fadd sp,lr,fp
+ .text
+ .global faddf32
+faddf32:
+ fadd ip,ip,ip
+ fadd r59,r59,r59
+ fadd r28,r28,r28
+ fadd r27,r27,r27
+ fadd sp,sp,sp
+ fadd r13,r29,r39
+ fadd r32,r40,r3
+ fadd r40,r29,lr
+ .text
+ .global fsubf16
+fsubf16:
+ fsub ip,ip,ip
+ fsub r3,r3,r3
+ fsub r0,r0,r0
+ fsub fp,fp,fp
+ fsub sp,sp,sp
+ fsub r2,lr,sp
+ fsub r3,r1,ip
+ fsub r3,ip,r2
+ .text
+ .global fsubf32
+fsubf32:
+ fsub ip,ip,ip
+ fsub r59,r59,r59
+ fsub r28,r28,r28
+ fsub r27,r27,r27
+ fsub sp,sp,sp
+ fsub r1,r56,r11
+ fsub r3,r22,r15
+ fsub r6,r48,r45
+ .text
+ .global fmulf16
+fmulf16:
+ fmul ip,ip,ip
+ fmul r3,r3,r3
+ fmul r0,r0,r0
+ fmul fp,fp,fp
+ fmul sp,sp,sp
+ fmul r3,ip,fp
+ fmul lr,r1,r2
+ fmul sp,lr,lr
+ .text
+ .global fmulf32
+fmulf32:
+ fmul ip,ip,ip
+ fmul r59,r59,r59
+ fmul r28,r28,r28
+ fmul r27,r27,r27
+ fmul sp,sp,sp
+ fmul r58,r23,r51
+ fmul r22,r2,r47
+ fmul r46,r14,r10
+ .text
+ .global fmaddf16
+fmaddf16:
+ fmadd ip,ip,ip
+ fmadd r3,r3,r3
+ fmadd r0,r0,r0
+ fmadd fp,fp,fp
+ fmadd sp,sp,sp
+ fmadd sp,r1,r3
+ fmadd r3,r3,r0
+ fmadd r2,ip,ip
+ .text
+ .global fmaddf32
+fmaddf32:
+ fmadd ip,ip,ip
+ fmadd r59,r59,r59
+ fmadd r28,r28,r28
+ fmadd r27,r27,r27
+ fmadd sp,sp,sp
+ fmadd r28,r54,r32
+ fmadd r12,r2,fp
+ fmadd fp,r40,r22
+ .text
+ .global fmsubf16
+fmsubf16:
+ fmsub ip,ip,ip
+ fmsub r3,r3,r3
+ fmsub r0,r0,r0
+ fmsub fp,fp,fp
+ fmsub sp,sp,sp
+ fmsub sp,fp,r1
+ fmsub r1,fp,sp
+ fmsub r0,r3,r0
+ .text
+ .global fmsubf32
+fmsubf32:
+ fmsub ip,ip,ip
+ fmsub r59,r59,r59
+ fmsub r28,r28,r28
+ fmsub r27,r27,r27
+ fmsub sp,sp,sp
+ fmsub r42,r20,r9
+ fmsub r22,r24,r42
+ fmsub r15,r22,r19
+
+;; add some negative displacement ld/store
+ ldr r1,[r2,-12]
+ strh r22,[r30,-2047]
+ ldrd r12,[r14,2047]
+
+;; add bitr
+ bitr r1,r0
+ bitr r31,r15
diff --git a/gas/testsuite/gas/epiphany/badpostmod.s b/gas/testsuite/gas/epiphany/badpostmod.s
new file mode 100644
index 0000000000..7a55860b73
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/badpostmod.s
@@ -0,0 +1,14 @@
+ .text
+ .global postmod
+postmod:
+ ldrd r0,[r1],r2 ; tricky because r1 is implied as destination
+
+ strb r12,[r12],r3 ; stores are okay
+ strd r12,[r13],r3
+
+ ldr r0,[r0],r0 ; ERROR
+
+ ldr r0,[r0,+128] ; ok
+ ldrd r12,[r13],-256 ; ERROR
+ ldrb r12,[r12],20 ; ERROR
+ strd r12,[r13],-256 ; ok
diff --git a/gas/testsuite/gas/epiphany/badrelax.d b/gas/testsuite/gas/epiphany/badrelax.d
new file mode 100644
index 0000000000..9e74d86824
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/badrelax.d
@@ -0,0 +1,12 @@
+#as:
+#objdump: -dr
+#name: badrelax
+
+.*\.o: file format elf32-epiphany
+
+
+Disassembly of section \.text:
+
+00000000 \<xxx\>:
+ 0: 01f0 bl 2 \<xxx\+0x2\>
+ 2: 013b 0000 sub r0,r0,2
diff --git a/gas/testsuite/gas/epiphany/badrelax.s b/gas/testsuite/gas/epiphany/badrelax.s
new file mode 100644
index 0000000000..26eaf50d75
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/badrelax.s
@@ -0,0 +1,5 @@
+ .text
+ .global xxx
+xxx:
+ bl 1f
+1: sub r0,r0,1b-xxx
diff --git a/gas/testsuite/gas/epiphany/branch_lit.d b/gas/testsuite/gas/epiphany/branch_lit.d
new file mode 100644
index 0000000000..8f8e6e47fa
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/branch_lit.d
@@ -0,0 +1,11 @@
+#as:
+#objdump: -dr
+#name: branch_lit
+
+.*.o: file format elf32-epiphany
+
+
+Disassembly of section \.text:
+
+00000000 \<\.text\>:
+ 0: 8008 0000 beq 0x100
diff --git a/gas/testsuite/gas/epiphany/branch_lit.s b/gas/testsuite/gas/epiphany/branch_lit.s
new file mode 100644
index 0000000000..47f77c0791
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/branch_lit.s
@@ -0,0 +1 @@
+ beq 256
diff --git a/gas/testsuite/gas/epiphany/regression.d b/gas/testsuite/gas/epiphany/regression.d
new file mode 100644
index 0000000000..1bb680fc13
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/regression.d
@@ -0,0 +1,300 @@
+#as:
+#objdump: -dr
+#name: regression
+
+.*\.o: file format elf32-epiphany
+
+
+Disassembly of section \.text:
+
+00000000 \<START\>:
+ 0: 000b 0802 mov r0,0x8000
+ 4: 0056 lsl r0,r0,0x2
+ 6: c0c3 mov r6,0x6
+ 8: 6063 mov r3,0x3
+ a: ff1f fc0a add.l r63,r63,r6
+ e: fd1f fc0a add.l r63,r63,r2
+ 12: dc0b e072 mov r62,0x7e0
+ 16: ff3f ff8a sub.l r63,r63,r62
+ 1a: 0300 beq 20 \<BRANCH1\>
+ 1c: 0023 mov r0,0x1
+ 1e: 0fe2 trap 0x3
+
+00000020 \<BRANCH1\>:
+ 20: 0900 beq 32 \<BRANCH2\>
+ 22: 0023 mov r0,0x1
+ 24: 0fe2 trap 0x3
+ 26: 0023 mov r0,0x1
+ 28: 0fe2 trap 0x3
+ 2a: 0023 mov r0,0x1
+ 2c: 0fe2 trap 0x3
+ 2e: 0023 mov r0,0x1
+ 30: 0fe2 trap 0x3
+
+00000032 \<BRANCH2\>:
+ 32: 1c10 bne 6a \<FAIL_BRANCH\>
+
+00000034 \<BRANCH3\>:
+ 34: 1b60 bgt 6a \<FAIL_BRANCH\>
+
+00000036 \<BRANCH4\>:
+ 36: 0370 bgte 3c \<BRANCH5\>
+ 38: 0023 mov r0,0x1
+ 3a: 0fe2 trap 0x3
+
+0000003c \<BRANCH5\>:
+ 3c: 0390 blte 42 \<BRANCH6\>
+ 3e: 0023 mov r0,0x1
+ 40: 0fe2 trap 0x3
+
+00000042 \<BRANCH6\>:
+ 42: 1480 blt 6a \<FAIL_BRANCH\>
+
+00000044 \<BRANCH8\>:
+ 44: efe8 0000 b 222 \<LONGJUMP\>
+ 48: 0023 mov r0,0x1
+ 4a: 0fe2 trap 0x3
+
+0000004c \<RETURN\>:
+ 4c: edf8 0000 bl 226 \<FUNCTION\>
+ 50: e00b e002 mov r63,0x0
+ 50: R_EPIPHANY_LOW \.text\+0x5c
+ 54: 1d4f 1c02 jr r63
+ 58: 0023 mov r0,0x1
+ 5a: 0fe2 trap 0x3
+
+0000005c \<JARLAB\>:
+ 5c: e00b e002 mov r63,0x0
+ 5c: R_EPIPHANY_LOW \.text\+0x226
+ 60: 1d5f 1c02 jalr r63
+ 64: 05e0 b 6e \<NEXT\>
+ 66: 0023 mov r0,0x1
+ 68: 0fe2 trap 0x3
+
+0000006a \<FAIL_BRANCH\>:
+ 6a: 0023 mov r0,0x1
+ 6c: 0fe2 trap 0x3
+
+0000006e \<NEXT\>:
+ 6e: 8014 strb r4,\[r0\]
+ 70: e00c e000 ldrb r63,\[r0\]
+ 74: fe3f fc0a sub.l r63,r63,r4
+ 78: 0300 beq 7e \<STOREB\>
+ 7a: 0023 mov r0,0x1
+ 7c: 0fe2 trap 0x3
+
+0000007e \<STOREB\>:
+ 7e: a39c 0001 strb.l r5,\[r0,\+0xf\]
+ 82: e38c e001 ldrb.l r63,\[r0,\+0xf\]
+ 86: febf fc0a sub.l r63,r63,r5
+ 8a: 0300 beq 90 \<STORES\>
+ 8c: 0023 mov r0,0x1
+ 8e: 0fe2 trap 0x3
+
+00000090 \<STORES\>:
+ 90: 8034 strh r4,\[r0\]
+ 92: e02c e000 ldrh r63,\[r0\]
+ 96: fe3f fc0a sub.l r63,r63,r4
+ 9a: 0300 beq a0 \<STORES2\>
+ 9c: 0023 mov r0,0x1
+ 9e: 0fe2 trap 0x3
+
+000000a0 \<STORES2\>:
+ a0: a33c 0001 strh.l r5,\[r0,\+0xe\]
+ a4: e32c e001 ldrh.l r63,\[r0,\+0xe\]
+ a8: febf fc0a sub.l r63,r63,r5
+ ac: 0300 beq b2 \<STORE\>
+ ae: 0023 mov r0,0x1
+ b0: 0fe2 trap 0x3
+
+000000b2 \<STORE\>:
+ b2: 8054 str r4,\[r0\]
+ b4: e04c e000 ldr r63,\[r0\]
+ b8: fe3f fc0a sub.l r63,r63,r4
+ bc: 0300 beq c2 \<STORE2\>
+ be: 0023 mov r0,0x1
+ c0: 0fe2 trap 0x3
+
+000000c2 \<STORE2\>:
+ c2: a25c 0001 str.l r5,\[r0,\+0xc\]
+ c6: e24c e001 ldr.l r63,\[r0,\+0xc\]
+ ca: febf fc0a sub.l r63,r63,r5
+ ce: 0300 beq d4 \<STOREBI\>
+ d0: 0023 mov r0,0x1
+ d2: 0fe2 trap 0x3
+
+000000d4 \<STOREBI\>:
+ d4: 8211 strb r4,\[r0,r4\]
+ d6: e209 e000 ldrb.l r63,\[r0,\+r4\]
+ da: fe3f fc0a sub.l r63,r63,r4
+ de: 0300 beq e4 \<STORESI\>
+ e0: 0023 mov r0,0x1
+ e2: 0fe2 trap 0x3
+
+000000e4 \<STORESI\>:
+ e4: a231 strh r5,\[r0,r4\]
+ e6: e229 e000 ldrh.l r63,\[r0,\+r4\]
+ ea: febf fc0a sub.l r63,r63,r5
+ ee: 0300 beq f4 \<STOREI\>
+ f0: 0023 mov r0,0x1
+ f2: 0fe2 trap 0x3
+
+000000f4 \<STOREI\>:
+ f4: c251 str r6,\[r0,r4\]
+ f6: e249 e000 ldr.l r63,\[r0,\+r4\]
+ fa: ff3f fc0a sub.l r63,r63,r6
+ fe: 0300 beq 104 \<PMB\>
+ 100: 0023 mov r0,0x1
+ 102: 0fe2 trap 0x3
+
+00000104 \<PMB\>:
+ 104: 8215 strb r4,\[r0\],r4
+ 106: 023b 0000 sub r0,r0,4
+ 10a: e20d e000 ldrb.l r63,\[r0\],\+r4
+ 10e: 023b 0000 sub r0,r0,4
+ 112: fe3f fc0a sub.l r63,r63,r4
+ 116: 0300 beq 11c \<PMS\>
+ 118: 0023 mov r0,0x1
+ 11a: 0fe2 trap 0x3
+
+0000011c \<PMS\>:
+ 11c: a235 strh r5,\[r0\],r4
+ 11e: 023b 0000 sub r0,r0,4
+ 122: e22d e000 ldrh.l r63,\[r0\],\+r4
+ 126: febf fc0a sub.l r63,r63,r5
+ 12a: 0300 beq 130 \<PM\>
+ 12c: 0023 mov r0,0x1
+ 12e: 0fe2 trap 0x3
+
+00000130 \<PM\>:
+ 130: 023b 0000 sub r0,r0,4
+ 134: c255 str r6,\[r0\],r4
+ 136: 023b 0000 sub r0,r0,4
+ 13a: e24d e000 ldr.l r63,\[r0\],\+r4
+ 13e: 023b 0000 sub r0,r0,4
+ 142: ff3f fc0a sub.l r63,r63,r6
+ 146: 0300 beq 14c \<MOVLAB\>
+ 148: 0023 mov r0,0x1
+ 14a: 0fe2 trap 0x3
+
+0000014c \<MOVLAB\>:
+ 14c: ffeb e002 mov r63,0xff
+ 150: 3fe3 mov r1,0xff
+ 152: fcbf fc0a sub.l r63,r63,r1
+ 156: 0300 beq 15c \<ADDLAB\>
+ 158: 0023 mov r0,0x1
+ 15a: 0fe2 trap 0x3
+
+0000015c \<ADDLAB\>:
+ 15c: e99b e000 add r63,r2,3
+ 160: febb fc00 sub r63,r63,5
+ 164: 0300 beq 16a \<SUBLAB\>
+ 166: 0023 mov r0,0x1
+ 168: 0fe2 trap 0x3
+
+0000016a \<SUBLAB\>:
+ 16a: e8bb e000 sub r63,r2,1
+ 16e: fcbb fc00 sub r63,r63,1
+ 172: 0300 beq 178 \<LSRLAB\>
+ 174: 0023 mov r0,0x1
+ 176: 0fe2 trap 0x3
+
+00000178 \<LSRLAB\>:
+ 178: f84f e006 lsr.l r63,r6,0x2
+ 17c: fcbb fc00 sub r63,r63,1
+ 180: 0300 beq 186 \<LSLLAB\>
+ 182: 0023 mov r0,0x1
+ 184: 0fe2 trap 0x3
+
+00000186 \<LSLLAB\>:
+ 186: ec5f e006 lsl.l r63,r3,0x2
+ 18a: fe3b fc01 sub r63,r63,12
+ 18e: 0300 beq 194 \<LSRILAB\>
+ 190: 0023 mov r0,0x1
+ 192: 0fe2 trap 0x3
+
+00000194 \<LSRILAB\>:
+ 194: f94f e00a lsr.l r63,r6,r2
+ 198: fcbb fc00 sub r63,r63,1
+ 19c: 0300 beq 1a2 \<LSLILAB\>
+ 19e: 0023 mov r0,0x1
+ 1a0: 0fe2 trap 0x3
+
+000001a2 \<LSLILAB\>:
+ 1a2: ed2f e00a lsl.l r63,r3,r2
+ 1a6: fe3b fc01 sub r63,r63,12
+ 1aa: 0300 beq 1b0 \<ORRLAB\>
+ 1ac: 0023 mov r0,0x1
+ 1ae: 0fe2 trap 0x3
+
+000001b0 \<ORRLAB\>:
+ 1b0: ae7a orr r5,r3,r4
+ 1b2: f7bb e000 sub r63,r5,7
+ 1b6: 0300 beq 1bc \<ANDLAB\>
+ 1b8: 0023 mov r0,0x1
+ 1ba: 0fe2 trap 0x3
+
+000001bc \<ANDLAB\>:
+ 1bc: ae5a and r5,r3,r4
+ 1be: f43b e000 sub r63,r5,0
+ 1c2: 0300 beq 1c8 \<EORLAB\>
+ 1c4: 0023 mov r0,0x1
+ 1c6: 0fe2 trap 0x3
+
+000001c8 \<EORLAB\>:
+ 1c8: ad0a eor r5,r3,r2
+ 1ca: f4bb e000 sub r63,r5,1
+ 1ce: 0300 beq 1d4 \<ADD3LAB\>
+ 1d0: 0023 mov r0,0x1
+ 1d2: 0fe2 trap 0x3
+
+000001d4 \<ADD3LAB\>:
+ 1d4: e99f e00a add.l r63,r2,r3
+ 1d8: febb fc00 sub r63,r63,5
+ 1dc: 0300 beq 1e2 \<SUB3LAB\>
+ 1de: 0023 mov r0,0x1
+ 1e0: 0fe2 trap 0x3
+
+000001e2 \<SUB3LAB\>:
+ 1e2: fa3f e00a sub.l r63,r6,r4
+ 1e6: fd3b fc00 sub r63,r63,2
+ 1ea: 0300 beq 1f0 \<MOVRLAB\>
+ 1ec: 0023 mov r0,0x1
+ 1ee: 0fe2 trap 0x3
+
+000001f0 \<MOVRLAB\>:
+ 1f0: e8ef e002 mov.l r63,r2
+ 1f4: fd3b fc00 sub r63,r63,2
+ 1f8: 0b00 beq 20e \<NOPLAB\>
+ 1fa: 0023 mov r0,0x1
+ 1fc: 0fe2 trap 0x3
+
+000001fe \<MOVTFLAB\>:
+ 1fe: 0502 movts status,r0
+ 200: e51f e002 movfs.l r63,status
+ 204: fc3f fc0a sub.l r63,r63,r0
+ 208: fb00 beq 1fe \<MOVTFLAB\>
+ 20a: 0023 mov r0,0x1
+ 20c: 0fe2 trap 0x3
+
+0000020e \<NOPLAB\>:
+ 20e: 01a2 nop
+ 210: 01a2 nop
+ 212: 01a2 nop
+ 214: 01a2 nop
+
+00000216 \<PASSED\>:
+ 216: 0003 mov r0,0x0
+ 218: 0fe2 trap 0x3
+ 21a: 01b2 idle
+
+0000021c \<FAILED\>:
+ 21c: 0023 mov r0,0x1
+ 21e: 0fe2 trap 0x3
+ 220: 01b2 idle
+
+00000222 \<LONGJUMP\>:
+ 222: 15e8 ffff b 4c \<RETURN\>
+
+00000226 \<FUNCTION\>:
+ 226: 194f 0402 rts
diff --git a/gas/testsuite/gas/epiphany/regression.s b/gas/testsuite/gas/epiphany/regression.s
new file mode 100644
index 0000000000..7ed5691a74
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/regression.s
@@ -0,0 +1,240 @@
+;; -*-asm-*-
+
+ TABLE=0x8000
+ RZ=r63
+
+ .macro FAIL
+ mov r0,#1
+ trap 3
+ .endm
+
+ .macro PASS
+ mov r0,#0
+ trap 3
+ .endm
+
+
+ .macro VERIFY ra,rb,ref,label
+ sub \ra,\rb,\ref
+ beq \label
+ FAIL
+ .endm
+
+
+/*****************************************/
+/*INITIALIZING REGISTERS */
+/*****************************************/
+/*Check that sum is correct*/
+START: MOV R0, #TABLE ; //Setting R0 to TABLE
+ LSL R0,R0,#2 ; //Create 00020000
+
+ ;; Load r1.63 with 1..63
+ .irpc num,63
+ mov r\num,#\num
+ .endr
+
+
+ ;; Sum the registers
+ .irpc num,62
+ add r63,r63,r\num
+ .endr
+
+ mov r62,#2016 ;//Correct sum of 1..63 = 63*32 + 63
+ VERIFY r63,r63,R62,BRANCH1;//CHECK SUM
+
+
+/*****************************************/
+/*BRANCHING */
+/*****************************************/
+//Check that all condition codes work
+BRANCH1: BEQ BRANCH2 ; //taken
+ FAIL ;
+ FAIL ;
+ FAIL ;
+ FAIL ;
+BRANCH2: BNE FAIL_BRANCH ; //not taken
+BRANCH3: BGT FAIL_BRANCH ; //not taken
+BRANCH4: BGTE BRANCH5 ; //taken
+ FAIL ;
+BRANCH5: BLTE BRANCH6 ; //taken
+ FAIL ;
+BRANCH6: BLT FAIL_BRANCH ; //not taken
+BRANCH8: B LONGJUMP ; //taken
+ FAIL ;
+RETURN: bl FUNCTION ; //jump to subroutine
+ MOV R63,JARLAB ;//REGISTER JUMP
+ JR R63 ;
+ FAIL ;
+JARLAB: MOV R63,FUNCTION ; //REGISTER CALL
+ JALR R63 ; //16 bit
+ B NEXT ; //jump over fail
+ FAIL ;
+
+FAIL_BRANCH: FAIL ; //fail branch
+
+/*****************************************/
+/*LOAD-STORE DISPLACEMENT */
+/*****************************************/
+//Check max displacement value(0xf)
+//Check that offset is correct
+//all load/stores are aligned
+//this gives greater range(2 more bits)
+//offset is shifted by 2x bits
+
+NEXT: STRB R4,[R0,#0x0] ;//Store Byte
+ LDRB R63,[R0,#0x0] ;//Load Byte
+ VERIFY R63,R63,R4,STOREB ;
+
+STOREB: STRB R5,[R0,#0xf] ;//Store Byte
+ LDRB R63,[R0,#0xf] ;//Load Byte
+ VERIFY R63,R63,R5,STORES ;
+
+STORES: STRH R4,[R0,#0x0] ;//Store Short
+ LDRH R63,[R0,#0x0] ;//Load Short
+ VERIFY R63,R63,R4,STORES2 ;
+
+STORES2: STRH R5,[R0,#0xe] ;//Store Short
+ LDRH R63,[R0,#0xe] ;//Load Short
+ VERIFY R63,R63,R5,STORE ;
+
+STORE: STR R4,[R0,#0x0] ;//Store Word
+ LDR R63,[R0,#0x0] ;//Load Word
+ VERIFY R63,R63,R4,STORE2 ;
+
+STORE2: STR R5,[R0,#0xc] ;//Store Word
+ LDR R63,[R0,#0xc] ;//Load Word
+ VERIFY R63,R63,R5,STOREBI ;
+
+
+/*****************************************/
+/*LOAD-STORE INDEX */
+/*****************************************/
+
+STOREBI: STRB R4,[R0,R4] ;//Store Word
+ LDRB R63,[R0,R4] ;//Load Word
+ VERIFY R63,R63,R4,STORESI ;
+
+STORESI: STRH R5,[R0,R4] ;//Store Word
+ LDRH R63,[R0,R4] ;//Load Word
+ VERIFY R63,R63,R5,STOREI ;
+
+STOREI: STR R6,[R0,R4] ;//Store Word
+ LDR R63,[R0,R4] ;//Load Word
+ VERIFY R63,R63,R6,PMB ;
+
+/*****************************************/
+/*LOAD-STORE POSTMODIFY */
+/*****************************************/
+
+PMB: STRB R4,[R0],R4 ;//Store Word
+ SUB R0,R0,#0x4 ;//restoring R0
+ LDRB R63,[R0],R4 ;//Load Word
+ SUB R0,R0,#0x4 ;//restoring R0
+ VERIFY R63,R63,R4,PMS ;
+
+PMS: STRH R5,[R0],R4 ;//Store Word
+ SUB R0,R0,#0x4 ;//restoring R0
+ LDRH R63,[R0],R4 ;//Load Word
+ VERIFY R63,R63,R5,PM ;
+
+PM: SUB R0,R0,#0x4 ;//restoring R0
+ STR R6,[R0],R4 ;//Store Word
+ SUB R0,R0,#0x4 ;//restoring R0
+ LDR R63,[R0],R4 ;//Load Word
+ SUB R0,R0,#0x4 ;//restoring R0
+ VERIFY R63,R63,R6,MOVLAB ;
+
+
+
+/*****************************************/
+/*IMMEDIATE LOAD */
+/*****************************************/
+MOVLAB: MOV R63,#0xFF;
+ MOV R1,#0xFF;
+ VERIFY R63,R63,R1,ADDLAB ;
+
+/*****************************************/
+/*2 REG ADD/SUB PROCESSING */
+/*****************************************/
+ADDLAB: ADD R63,R2,#3; //2+3=5
+ VERIFY R63,R63,#5,SUBLAB ;
+SUBLAB: SUB R63,R2,#1; //2+1=1
+ VERIFY R63,R63,#1,LSRLAB ;
+
+/*****************************************/
+/*SHIFTS */
+/*****************************************/
+//Note ASR does not work
+
+ //Immediates
+LSRLAB: LSR R63,R6,#0x2 ; //6>>2=1
+ VERIFY R63,R63,#1,LSLLAB ;
+LSLLAB: LSL R63,R3,#0x2 ; //3<<2=12
+ VERIFY R63,R63,#12,LSRILAB ;
+ //Registers
+LSRILAB: LSR R63,R6,R2 ; //6>>2=1
+ VERIFY R63,R63,#1,LSLILAB ;
+LSLILAB: LSL R63,R3,R2 ; //3<<2=12
+ VERIFY R63,R63,#12,ORRLAB ;
+
+
+/*****************************************/
+/*LOGICAL */
+/*****************************************/
+ORRLAB: ORR R5,R3,R4 ; //0x3 | 0x4 -->0x7
+ VERIFY R63,R5,#7,ANDLAB ;
+ANDLAB: AND R5,R3,R4 ; //0x3 & 0x4 -->0
+ VERIFY R63,R5,#0,EORLAB ;
+EORLAB: EOR R5,R3,R2 ; //0x3 ^ 0x2 -->1
+ VERIFY R63,R5,#1,ADD3LAB ;
+
+
+/****************************************/
+/*3-REGISTER ADD/SUB */
+/*****************************************/
+ADD3LAB: ADD R63,R2,R3 ; //3+2=5
+ VERIFY R63,R63,#5,SUB3LAB ;
+SUB3LAB: SUB R63,R6,R4 ; //6-4=2
+ VERIFY R63,R63,#2,MOVRLAB ;
+
+/*****************************************/
+/*MOVE REGISTER */
+/*****************************************/
+MOVRLAB: MOV R63,R2 ;
+ VERIFY R63,R63,#2,NOPLAB ;
+
+/*****************************************/
+/*MOVE TO/FROM SPECIAL REGISTER */
+/*****************************************/
+MOVTFLAB: MOVTS status,R0 ;
+ MOVFS R63,status ;
+ VERIFY R63,R63,R0,MOVTFLAB ;
+
+
+/*****************************************/
+/*NOP */
+/*****************************************/
+NOPLAB: NOP ;
+ NOP ;
+ NOP ;
+ NOP ;
+
+/*****************************************/
+/*PASS INDICATOR */
+/*****************************************/
+PASSED: PASS;
+ IDLE;
+/*****************************************/
+/*FAIL INDICATOR */
+/*****************************************/
+FAILED: FAIL;
+ IDLE;
+
+/*****************************************/
+/*LONG JUMP INDICATOR */
+/*****************************************/
+LONGJUMP: B RETURN; //jump back to next
+/*****************************************/
+/*SUBROUTINE */
+/*****************************************/
+FUNCTION: RTS; //return from subroutine
diff --git a/gas/testsuite/gas/epiphany/sample.d b/gas/testsuite/gas/epiphany/sample.d
new file mode 100644
index 0000000000..17b516394e
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/sample.d
@@ -0,0 +1,221 @@
+#as:
+#objdump: -dr
+#name: sample
+.*\.o: file format elf32-epiphany
+
+Disassembly of section \.text:
+
+00000000 \<beq\>:
+ \.\.\.
+
+00000002 \<bne\>:
+ 2: ff10 bne 0 \<beq\>
+
+00000004 \<bgtu\>:
+ 4: fe20 bgtu 0 \<beq\>
+
+00000006 \<bgteu\>:
+ 6: fd30 bgteu 0 \<beq\>
+
+00000008 \<blteu\>:
+ 8: fc40 blteu 0 \<beq\>
+
+0000000a \<bltu\>:
+ a: fb50 bltu 0 \<beq\>
+
+0000000c \<bgt\>:
+ c: fa60 bgt 0 \<beq\>
+
+0000000e \<bgte\>:
+ e: f970 bgte 0 \<beq\>
+
+00000010 \<blt\>:
+ 10: f880 blt 0 \<beq\>
+
+00000012 \<blte\>:
+ 12: f790 blte 0 \<beq\>
+
+00000014 \<bbeq\>:
+ 14: f6a0 bbeq 0 \<beq\>
+
+00000016 \<bbne\>:
+ 16: f5b0 bbne 0 \<beq\>
+
+00000018 \<bblt\>:
+ 18: f4c0 bblt 0 \<beq\>
+
+0000001a \<b\>:
+ 1a: f3e0 b 0 \<beq\>
+
+0000001c \<bl\>:
+ 1c: f2f0 bl 0 \<beq\>
+
+0000001e \<jr\>:
+ 1e: 0542 jr r1
+ 20: 1d4f 0c02 jr r31
+
+00000024 \<jalr\>:
+ 24: 0552 jalr r1
+ 26: 1d5f 0c02 jalr r31
+
+0000002a \<add\>:
+ 2a: 299a add r1,r2,r3
+ 2c: 051f 920a add.l r32,r33,r34
+ 30: 2993 add r1,r2,3
+ 32: 681b 2002 add fp,r2,16
+
+00000036 \<sub\>:
+ 36: 29ba sub r1,r2,r3
+ 38: 053f 920a sub.l r32,r33,r34
+ 3c: 29b3 sub r1,r2,3
+ 3e: 683b 2002 sub fp,r2,16
+
+00000042 \<asr\>:
+ 42: 29ea asr r1,r2,r3
+ 44: 056f 920a asr.l r32,r33,r34
+ 48: 286e asr r1,r2,0x3
+ 4a: 6a0f 200e asr.l fp,r2,0x10
+
+0000004e \<lsr\>:
+ 4e: 29ca lsr r1,r2,r3
+ 50: 054f 920a lsr.l r32,r33,r34
+ 54: 2866 lsr r1,r2,0x3
+ 56: 6a0f 2006 lsr.l fp,r2,0x10
+
+0000005a \<lsl\>:
+ 5a: 29aa lsl r1,r2,r3
+ 5c: 052f 920a lsl.l r32,r33,r34
+ 60: 2876 lsl r1,r2,0x3
+ 62: 6a1f 2006 lsl.l fp,r2,0x10
+
+00000066 \<orr\>:
+ 66: 29fa orr r1,r2,r3
+ 68: 72ff 248a orr.l fp,ip,sp
+
+0000006c \<and\>:
+ 6c: 29da and r1,r2,r3
+ 6e: 72df 248a and.l fp,ip,sp
+
+00000072 \<eor\>:
+ 72: 298a eor r1,r2,r3
+ 74: 728f 248a eor.l fp,ip,sp
+ 78: 0584 ldrb r0,\[r1,0x3\]
+ 7a: 478c 201f ldrb.l sl,\[r1,\+0xff\]
+ 7e: 0501 ldrb r0,\[r1,r2\]
+ 80: 0589 0080 ldrb.l r0,\[r1,\+fp\]
+ 84: 0d05 ldrb r0,\[r3\],r2
+ 86: 528d 2480 ldrb.l sl,\[ip\],\+sp
+ 8a: 05a4 ldrh r0,\[r1,0x3\]
+ 8c: 47ac 201f ldrh.l sl,\[r1,\+0xff\]
+ 90: 0521 ldrh r0,\[r1,r2\]
+ 92: 05a9 0080 ldrh.l r0,\[r1,\+fp\]
+ 96: 0d25 ldrh r0,\[r3\],r2
+ 98: 52ad 2480 ldrh.l sl,\[ip\],\+sp
+ 9c: 05c4 ldr r0,\[r1,0x3\]
+ 9e: 47cc 201f ldr.l sl,\[r1,\+0xff\]
+ a2: 0541 ldr r0,\[r1,r2\]
+ a4: 05c9 0080 ldr.l r0,\[r1,\+fp\]
+ a8: 0d45 ldr r0,\[r3\],r2
+ aa: 52cd 2480 ldr.l sl,\[ip\],\+sp
+ ae: 05e4 ldrd r0,\[r1,0x3\]
+ b0: 47ec 201f ldrd.l sl,\[r1,\+0xff\]
+ b4: 0561 ldrd r0,\[r1,r2\]
+ b6: 05e9 0080 ldrd.l r0,\[r1,\+fp\]
+ ba: 0d65 ldrd r0,\[r3\],r2
+ bc: 52ed 2480 ldrd.l sl,\[ip\],\+sp
+ c0: 0594 strb r0,\[r1,0x3\]
+ c2: 479c 201f strb.l sl,\[r1,\+0xff\]
+ c6: 0511 strb r0,\[r1,r2\]
+ c8: 0599 0080 strb.l r0,\[r1,\+fp\]
+ cc: 0d15 strb r0,\[r3\],r2
+ ce: 529d 2480 strb.l sl,\[ip\],\+sp
+ d2: 05b4 strh r0,\[r1,0x3\]
+ d4: 47bc 201f strh.l sl,\[r1,\+0xff\]
+ d8: 0531 strh r0,\[r1,r2\]
+ da: 05b9 0080 strh.l r0,\[r1,\+fp\]
+ de: 0d35 strh r0,\[r3\],r2
+ e0: 52bd 2480 strh.l sl,\[ip\],\+sp
+ e4: 05d4 str r0,\[r1,0x3\]
+ e6: 47dc 201f str.l sl,\[r1,\+0xff\]
+ ea: 0551 str r0,\[r1,r2\]
+ ec: 05d9 0080 str.l r0,\[r1,\+fp\]
+ f0: 0d55 str r0,\[r3\],r2
+ f2: 52dd 2480 str.l sl,\[ip\],\+sp
+ f6: 05f4 strd r0,\[r1,0x3\]
+ f8: 47fc 201f strd.l sl,\[r1,\+0xff\]
+ fc: 0571 strd r0,\[r1,r2\]
+ fe: 05f9 0080 strd.l r0,\[r1,\+fp\]
+ 102: 0d75 strd r0,\[r3\],r2
+ 104: 52fd 2480 strd.l sl,\[ip\],\+sp
+
+00000108 \<mov\>:
+ 108: dfe3 mov r6,0xff
+ 10a: ffeb 6ff2 mov r31,0xffff
+ 10e: 004b 0102 mov r0,0x1002
+ 112: 2802 moveq r1,r2
+ 114: 700f 2402 moveq.l fp,ip
+ 118: 2812 movne r1,r2
+ 11a: 701f 2402 movne.l fp,ip
+ 11e: 2822 movgtu r1,r2
+ 120: 702f 2402 movgtu.l fp,ip
+ 124: 2832 movgteu r1,r2
+ 126: 703f 2402 movgteu.l fp,ip
+ 12a: 2842 movlteu r1,r2
+ 12c: 704f 2402 movlteu.l fp,ip
+ 130: 2852 movltu r1,r2
+ 132: 705f 2402 movltu.l fp,ip
+ 136: 2862 movgt r1,r2
+ 138: 706f 2402 movgt.l fp,ip
+ 13c: 2872 movgte r1,r2
+ 13e: 707f 2402 movgte.l fp,ip
+ 142: 2882 movlt r1,r2
+ 144: 708f 2402 movlt.l fp,ip
+ 148: 2892 movlte r1,r2
+ 14a: 709f 2402 movlte.l fp,ip
+ 14e: 28a2 movbeq r1,r2
+ 150: 70af 2402 movbeq.l fp,ip
+ 154: 28b2 movbne r1,r2
+ 156: 70bf 2402 movbne.l fp,ip
+ 15a: 28c2 movblt r1,r2
+ 15c: 70cf 2402 movblt.l fp,ip
+ 160: 28d2 movblte r1,r2
+ 162: 70df 2402 movblte.l fp,ip
+ 166: 28e2 mov r1,r2
+ 168: 70ef 2402 mov.l fp,ip
+
+0000016c \<nop\>:
+ 16c: 01a2 nop
+
+0000016e \<idle\>:
+ 16e: 01b2 idle
+
+00000170 \<bkpt\>:
+ 170: 01c2 bkpt
+
+00000172 \<fadd\>:
+ 172: 2987 fadd r1,r2,r3
+ 174: 728f 2487 fadd.l fp,ip,sp
+
+00000178 \<fsub\>:
+ 178: 2997 fsub r1,r2,r3
+ 17a: 729f 2487 fsub.l fp,ip,sp
+
+0000017e \<fmul\>:
+ 17e: 29a7 fmul r1,r2,r3
+ 180: 72af 2487 fmul.l fp,ip,sp
+
+00000184 \<fmadd\>:
+ 184: 29b7 fmadd r1,r2,r3
+ 186: 72bf 2487 fmadd.l fp,ip,sp
+
+0000018a \<fmsub\>:
+ 18a: 29c7 fmsub r1,r2,r3
+ 18c: 72cf 2487 fmsub.l fp,ip,sp
+ 190: 2102 movts config,r1
+ 192: e50f 6002 movts.l status,r31
+ 196: 251f 0402 movfs.l r1,imask
+ 19a: e91f 6002 movfs.l r31,pc
+
+0000019e \<trap\>:
+ 19e: 03e2 trap 0x0
+ 1a0: 01d2 rti
diff --git a/gas/testsuite/gas/epiphany/sample.s b/gas/testsuite/gas/epiphany/sample.s
new file mode 100755
index 0000000000..91f394060d
--- /dev/null
+++ b/gas/testsuite/gas/epiphany/sample.s
@@ -0,0 +1,123 @@
+ .data
+foodata: .hword 42
+ .text
+footext:
+ .text
+
+ .macro test nm:req, args:vararg
+\nm: \nm \args
+ .global \nm
+ .endm
+
+;;; Basic Instruction Tests
+1: ; All branches
+ test beq,1b
+ test bne,1b
+ test bgtu,1b
+ test bgteu,1b
+ test blteu,1b
+ test bltu,1b
+ test bgt,1b
+ test bgte,1b
+ test blt,1b
+ test blte,1b
+
+ test bbeq,1b
+ test bbne,1b
+ test bblt,1b
+ test b,1b
+ test bl,1b
+
+;;; jumps
+ test jr,r1
+ jr r31
+
+ test jalr,r1
+ jalr r31
+
+
+ .macro test3i nm:req
+ test \nm,r1,r2,r3
+ \nm r32,r33,r34
+ \nm r1,r2,#3
+ \nm r11,r2,#16
+ .endm
+ test3i add
+ test3i sub
+ test3i asr
+ test3i lsr
+ test3i lsl
+
+ .macro test3 nm:req
+ test \nm,r1,r2,r3
+ \nm r11,r12,r13
+ .endm
+
+ test3 orr
+ test3 and
+ test3 eor
+
+ .macro testmem nm:req
+ \nm r0,[r1,#3]
+ \nm r10,[r1,#255]
+ \nm r0,[r1,r2]
+ \nm r0,[r1,r11]
+ \nm r0,[r3],r2
+ \nm r10,[r12],r13
+ .endm
+
+ testmem ldrb
+ testmem ldrh
+ testmem ldr
+ testmem ldrd
+
+
+ testmem strb
+ testmem strh
+ testmem str
+ testmem strd
+
+ test mov,r6,#255
+ mov r31,#65535
+ mov r0,#4098
+
+ .macro testmov cond:req
+ mov\cond r1,r2
+ mov\cond r11,r12
+ .endm
+
+ testmov eq
+ testmov ne
+ testmov gtu
+ testmov gteu
+ testmov lteu
+ testmov ltu
+ testmov gt
+ testmov gte
+ testmov lt
+ testmov lte
+ testmov beq
+ testmov bne
+ testmov blt
+ testmov blte
+ mov r1,r2
+ mov r11,r12
+
+ test nop
+ test idle
+ test bkpt
+
+ test3 fadd
+ test3 fsub
+ test3 fmul
+ test3 fmadd
+ test3 fmsub
+
+ movts config,r1
+ movts status,r31
+
+ movfs r1,imask
+ movfs r31,pc
+
+ test trap,#0 ; write syscall for simulator.
+ rti ; dummy instruction
diff --git a/include/ChangeLog b/include/ChangeLog
index 716b43b66a..cec4c43c91 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * dis-asm.h (print_insn_epiphany): Declare.
+
2011-10-21 Ulrich Drepper <drepper@gmail.com>
* obstack.h [!GNUC] (obstack_free): Avoid cast to int.
diff --git a/include/dis-asm.h b/include/dis-asm.h
index d654211c3a..ff4732568e 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -233,6 +233,7 @@ extern int print_insn_crx (bfd_vma, disassemble_info *);
extern int print_insn_d10v (bfd_vma, disassemble_info *);
extern int print_insn_d30v (bfd_vma, disassemble_info *);
extern int print_insn_dlx (bfd_vma, disassemble_info *);
+extern int print_insn_epiphany (bfd_vma, disassemble_info *);
extern int print_insn_fr30 (bfd_vma, disassemble_info *);
extern int print_insn_frv (bfd_vma, disassemble_info *);
extern int print_insn_h8300 (bfd_vma, disassemble_info *);
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index 369654393e..b269004f2f 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * epiphany.h: New file.
+ * common.h (EM_ADAPTEVA_EPIPHANY): Define.
+
2011-10-10 Alan Modra <amodra@gmail.com>
* ppc64.h (R_PPC64_TOCSAVE): Add.
diff --git a/include/elf/common.h b/include/elf/common.h
index e46ae3370d..a62db77aa4 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -401,6 +401,8 @@
#define EM_MICROBLAZE_OLD 0xbaab /* Old MicroBlaze */
+#define EM_ADAPTEVA_EPIPHANY 0x1223 /* Adapteva's Epiphany architecture. */
+
/* See the above comment before you add a new EM_* value here. */
/* Values for e_version. */
diff --git a/include/elf/epiphany.h b/include/elf/epiphany.h
new file mode 100755
index 0000000000..3337625060
--- /dev/null
+++ b/include/elf/epiphany.h
@@ -0,0 +1,59 @@
+/* Adapteva EPIPHANY ELF support for BFD.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Contributed by Embecosm on behalf of Adapteva, 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 3 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _ELF_EPIPHANY_H
+#define _ELF_EPIPHANY_H
+
+#include "elf/reloc-macros.h"
+
+/* Relocations. */
+START_RELOC_NUMBERS (elf_epiphany_reloc_type)
+ RELOC_NUMBER (R_EPIPHANY_NONE, 0)
+
+ /* Absolute address relocations. */
+ RELOC_NUMBER (R_EPIPHANY_8, 1)
+ RELOC_NUMBER (R_EPIPHANY_16, 2)
+ RELOC_NUMBER (R_EPIPHANY_32, 3)
+
+ /* PC-relative relocations. */
+ RELOC_NUMBER (R_EPIPHANY_8_PCREL, 4)
+ RELOC_NUMBER (R_EPIPHANY_16_PCREL,5)
+ RELOC_NUMBER (R_EPIPHANY_32_PCREL,6)
+
+ /* special forms for 8/24 bit branch displacements. */
+ RELOC_NUMBER (R_EPIPHANY_SIMM8, 7)
+ RELOC_NUMBER (R_EPIPHANY_SIMM24, 8)
+
+ /* HIGH and LOW relocations taking part of a 32 bit address and
+ depositing it into the IMM16 field of a destination. */
+ RELOC_NUMBER (R_EPIPHANY_HIGH, 9)
+ RELOC_NUMBER (R_EPIPHANY_LOW,10)
+
+ /* 11 bit signed immediate value. */
+ RELOC_NUMBER (R_EPIPHANY_SIMM11, 11)
+ /* 11 bit magnitude addressing displacement. */
+ RELOC_NUMBER (R_EPIPHANY_IMM11, 12)
+
+ /* 8 bit immediate for MOV.S R,IMM8. */
+ RELOC_NUMBER (R_EPIPHANY_IMM8, 13)
+
+END_RELOC_NUMBERS(R_EPIPHANY_max)
+
+#endif /* _ELF_EPIPHANY_H */
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 5cce1a99b6..95565b8d6d 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,13 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * NEWS: Mention addition of Adapteva Epiphany support.
+ * Makefile.am (ALL_EMULATION_SOURCES): Add eelf32epiphany.c .
+ (eelf32epiphany.c): New rule.
+ * configure.tgt: Handle epiphany-*-elf.
+ * emulparams/elf32epiphany.sh: New file.
+ * Makefile.in: Regenerate.
+ * po/ld.pot: Regenerate.
+
2011-10-24 Nick Clifton <nickc@redhat.com>
* po/ja.po: Updated Japanese translation.
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 5ae86ba18e..cb788da930 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -211,6 +211,7 @@ ALL_EMULATION_SOURCES = \
eelf32ebmipvxworks.c \
eelf32elmip.c \
eelf32elmipvxworks.c \
+ eelf32epiphany.c \
eelf32fr30.c \
eelf32frv.c \
eelf32frvfd.c \
@@ -990,6 +991,9 @@ eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \
$(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \
$(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)"
+eelf32epiphany.c: $(srcdir)/emulparams/elf32epiphany.sh \
+ $(ELF_DEPS) ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32epiphany "$(tdir_epiphany)"
eelf32fr30.c: $(srcdir)/emulparams/elf32fr30.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32fr30 "$(tdir_fr30)"
diff --git a/ld/Makefile.in b/ld/Makefile.in
index f062b92b53..151aaeea0b 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -517,6 +517,7 @@ ALL_EMULATION_SOURCES = \
eelf32ebmipvxworks.c \
eelf32elmip.c \
eelf32elmipvxworks.c \
+ eelf32epiphany.c \
eelf32fr30.c \
eelf32frv.c \
eelf32frvfd.c \
@@ -1117,6 +1118,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ebmipvxworks.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32elmip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32elmipvxworks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32epiphany.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32fr30.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32frv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32frvfd.Po@am__quote@
@@ -2443,6 +2445,9 @@ eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \
$(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \
$(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)"
+eelf32epiphany.c: $(srcdir)/emulparams/elf32epiphany.sh \
+ $(ELF_DEPS) ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32epiphany "$(tdir_epiphany)"
eelf32fr30.c: $(srcdir)/emulparams/elf32fr30.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32fr30 "$(tdir_fr30)"
diff --git a/ld/NEWS b/ld/NEWS
index 62406b401c..bb1f3617f8 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,18 +1,20 @@
-*- text -*-
+* Add support for the Adapteva EPIPHANY architecture.
+
Changes in 2.22:
* --copy-dt-needed-entries is no longer enabled by default. Instead
--no-copy-dt-needed-entries is the default.
* INPUT_SECTION_FLAGS has been added to the linker script language
-to allow selection of input sections by section header section flags.
+ to allow selection of input sections by section header section flags.
* Add support for the Tilera TILEPRO and TILE-Gx architectures.
* Added SORT_BY_INIT_PRIORITY to the linker script language to permit
-sorting sections by numerical value of the GCC init_priority attribute
-encoded in the section name.
+ sorting sections by numerical value of the GCC init_priority attribute
+ encoded in the section name.
Changes in 2.21:
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 23cf34748c..02f5f76b21 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -137,6 +137,8 @@ d30v-*-*) targ_emul=d30velf; targ_extra_emuls="d30v_e d30v_o"
;;
dlx-*-elf*) targ_emul=elf32_dlx
;;
+epiphany-*-elf) targ_emul=elf32epiphany
+ ;;
fido*-*-elf*) targ_emul=m68kelf ;;
fr30-*-*) targ_emul=elf32fr30
;;
diff --git a/ld/emulparams/elf32epiphany.sh b/ld/emulparams/elf32epiphany.sh
new file mode 100644
index 0000000000..fd2401296c
--- /dev/null
+++ b/ld/emulparams/elf32epiphany.sh
@@ -0,0 +1,42 @@
+TEMPLATE_NAME=elf32
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-epiphany"
+NO_REL_RELOCS=yes
+# See also `include/elf/epiphany.h'
+
+MMR_ADDR=0x00000000
+MMR_LEN=0x100
+
+#RESERVED_ADDR=0x00000100
+#RESERVED_LEN=8128
+
+IVT_ADDR=0x00000000
+IVT_LEN=0x040
+
+# ??? This fails: 'Not enough room for program headers, try linking with -N'
+#TEXT_START_ADDR=0x00000040
+
+#The following two lines would allow small to medium sized programs
+#to run in the first 1 MB.
+#TEXT_START_ADDR=0x00000060
+#EXECUTABLE_SYMBOLS='PROVIDE (___bss_start = __bss_start); PROVIDE (___heap_start = end); PROVIDE (___heap_end = (0x0c0000)); PROVIDE (___stack = (0x0ffff0));'
+
+TEXT_START_ADDR='DEFINED (___text_start) ? ___text_start : 0x80000000'
+EXECUTABLE_SYMBOLS='PROVIDE (___bss_start = __bss_start); PROVIDE (___heap_start = end); PROVIDE (___heap_end = (0x81800000)); PROVIDE (___stack = (0x81fffff0));'
+
+#Smuggle an alignemnt directive in here so that .bss is aligned.
+OTHER_SDATA_SECTIONS='. = ALIGN(8);'
+
+
+ARCH=epiphany
+ENTRY=_start
+EMBEDDED=yes
+ELFSIZE=32
+ALIGNMENT=8
+#MAXPAGESIZE=8192
+MAXPAGESIZE=1
+WRITABLE_RODATA=
+#OTHER_RELOCATING_SECTIONS=
+#OTHER_READONLY_SECTIONS=
+#OTHER_READWRITE_SECTIONS=
diff --git a/ld/po/ld.pot b/ld/po/ld.pot
index ef25380380..790cfdd8ab 100644
--- a/ld/po/ld.pot
+++ b/ld/po/ld.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2011-06-02 14:30+0100\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -33,11 +33,11 @@ msgstr ""
msgid "Errors encountered processing file %s"
msgstr ""
-#: emultempl/armcoff.em:192 emultempl/pe.em:1813
+#: emultempl/armcoff.em:192 emultempl/pe.em:1812
msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
msgstr ""
-#: emultempl/armcoff.em:197 emultempl/pe.em:1818
+#: emultempl/armcoff.em:197 emultempl/pe.em:1817
msgid "%P: warning: cannot find thumb start symbol %s\n"
msgstr ""
@@ -428,28 +428,28 @@ msgid ""
"symbols from auto-imported DLLs.\n"
msgstr ""
-#: emultempl/pe.em:1160 emultempl/pe.em:1367 emultempl/pe.em:1574 ldcref.c:490
-#: ldcref.c:588 ldmain.c:1215 ldmisc.c:290 pe-dll.c:706 pe-dll.c:1257
-#: pe-dll.c:1352
+#: emultempl/pe.em:1160 emultempl/pe.em:1366 emultempl/pe.em:1573 ldcref.c:490
+#: ldcref.c:588 ldmain.c:1158 ldmisc.c:290 pe-dll.c:706 pe-dll.c:1254
+#: pe-dll.c:1349
msgid "%B%F: could not read symbols: %E\n"
msgstr ""
-#: emultempl/pe.em:1243
+#: emultempl/pe.em:1242
msgid "%F%P: cannot perform PE operations on non PE output file '%B'.\n"
msgstr ""
-#: emultempl/pe.em:1617
+#: emultempl/pe.em:1616
#, c-format
msgid "Errors encountered processing file %s\n"
msgstr ""
-#: emultempl/pe.em:1640
+#: emultempl/pe.em:1639
#, c-format
msgid "Errors encountered processing file %s for interworking\n"
msgstr ""
-#: emultempl/pe.em:1702 ldexp.c:581 ldlang.c:3416 ldlang.c:6947 ldlang.c:6978
-#: ldmain.c:1160
+#: emultempl/pe.em:1701 ldexp.c:581 ldlang.c:3458 ldlang.c:6992 ldlang.c:7023
+#: ldmain.c:1103
msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
msgstr ""
@@ -491,7 +491,7 @@ msgstr ""
msgid "%P: symbol `%T' missing from main hash table\n"
msgstr ""
-#: ldcref.c:650 ldcref.c:657 ldmain.c:1249 ldmain.c:1256
+#: ldcref.c:650 ldcref.c:657 ldmain.c:1192 ldmain.c:1199
msgid "%B%F: could not read relocs: %E\n"
msgstr ""
@@ -672,35 +672,35 @@ msgstr ""
msgid "%P%F: cannot represent machine `%s'\n"
msgstr ""
-#: ldlang.c:1217 ldlang.c:1259 ldlang.c:3114
+#: ldlang.c:1221 ldlang.c:1263 ldlang.c:3143
msgid "%P%F: can not create hash table: %E\n"
msgstr ""
-#: ldlang.c:1310
+#: ldlang.c:1314
msgid "%P:%S: warning: redeclaration of memory region `%s'\n"
msgstr ""
-#: ldlang.c:1316
+#: ldlang.c:1320
msgid "%P:%S: warning: memory region `%s' not declared\n"
msgstr ""
-#: ldlang.c:1350
+#: ldlang.c:1354
msgid "%F%P:%S: error: alias for default memory region\n"
msgstr ""
-#: ldlang.c:1361
+#: ldlang.c:1365
msgid "%F%P:%S: error: redefinition of memory region alias `%s'\n"
msgstr ""
-#: ldlang.c:1368
+#: ldlang.c:1372
msgid "%F%P:%S: error: memory region `%s' for alias `%s' does not exist\n"
msgstr ""
-#: ldlang.c:1420 ldlang.c:1459
+#: ldlang.c:1424 ldlang.c:1463
msgid "%P%F: failed creating section `%s': %E\n"
msgstr ""
-#: ldlang.c:2021
+#: ldlang.c:2025
#, c-format
msgid ""
"\n"
@@ -708,30 +708,30 @@ msgid ""
"\n"
msgstr ""
-#: ldlang.c:2029
+#: ldlang.c:2033
msgid ""
"\n"
"Memory Configuration\n"
"\n"
msgstr ""
-#: ldlang.c:2031
+#: ldlang.c:2035
msgid "Name"
msgstr ""
-#: ldlang.c:2031
+#: ldlang.c:2035
msgid "Origin"
msgstr ""
-#: ldlang.c:2031
+#: ldlang.c:2035
msgid "Length"
msgstr ""
-#: ldlang.c:2031
+#: ldlang.c:2035
msgid "Attributes"
msgstr ""
-#: ldlang.c:2071
+#: ldlang.c:2075
#, c-format
msgid ""
"\n"
@@ -739,259 +739,259 @@ msgid ""
"\n"
msgstr ""
-#: ldlang.c:2140
+#: ldlang.c:2141
msgid "%P%F: Illegal use of `%s' section\n"
msgstr ""
-#: ldlang.c:2149
+#: ldlang.c:2150
msgid "%P%F: output format %s cannot represent section called %s\n"
msgstr ""
-#: ldlang.c:2702
+#: ldlang.c:2728
msgid "%B: file not recognized: %E\n"
msgstr ""
-#: ldlang.c:2703
+#: ldlang.c:2729
msgid "%B: matching formats:"
msgstr ""
-#: ldlang.c:2710
+#: ldlang.c:2736
msgid "%F%B: file not recognized: %E\n"
msgstr ""
-#: ldlang.c:2781
+#: ldlang.c:2810
msgid "%F%B: member %B in archive is not an object\n"
msgstr ""
-#: ldlang.c:2796 ldlang.c:2810
+#: ldlang.c:2825 ldlang.c:2839
msgid "%F%B: could not read symbols: %E\n"
msgstr ""
-#: ldlang.c:3084
+#: ldlang.c:3113
msgid ""
"%P: warning: could not find any targets that match endianness requirement\n"
msgstr ""
-#: ldlang.c:3098
+#: ldlang.c:3127
msgid "%P%F: target %s not found\n"
msgstr ""
-#: ldlang.c:3100
+#: ldlang.c:3129
msgid "%P%F: cannot open output file %s: %E\n"
msgstr ""
-#: ldlang.c:3106
+#: ldlang.c:3135
msgid "%P%F:%s: can not make object file: %E\n"
msgstr ""
-#: ldlang.c:3110
+#: ldlang.c:3139
msgid "%P%F:%s: can not set architecture: %E\n"
msgstr ""
-#: ldlang.c:3267
+#: ldlang.c:3309
msgid "%P: warning: %s contains output sections; did you forget -T?\n"
msgstr ""
-#: ldlang.c:3308
+#: ldlang.c:3350
msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
msgstr ""
-#: ldlang.c:3326
+#: ldlang.c:3368
msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
msgstr ""
-#: ldlang.c:3722
+#: ldlang.c:3764
msgid "%F%P: %s not found for insert\n"
msgstr ""
-#: ldlang.c:3937
+#: ldlang.c:3979
msgid " load address 0x%V"
msgstr ""
-#: ldlang.c:4212
+#: ldlang.c:4254
msgid "%W (size before relaxing)\n"
msgstr ""
-#: ldlang.c:4303
+#: ldlang.c:4345
#, c-format
msgid "Address of section %s set to "
msgstr ""
-#: ldlang.c:4456
+#: ldlang.c:4498
#, c-format
msgid "Fail with %d\n"
msgstr ""
-#: ldlang.c:4743
+#: ldlang.c:4785
msgid ""
"%X%P: section %s loaded at [%V,%V] overlaps section %s loaded at [%V,%V]\n"
msgstr ""
-#: ldlang.c:4759
+#: ldlang.c:4801
msgid "%X%P: region `%s' overflowed by %ld bytes\n"
msgstr ""
-#: ldlang.c:4782
+#: ldlang.c:4824
msgid "%X%P: address 0x%v of %B section `%s' is not within region `%s'\n"
msgstr ""
-#: ldlang.c:4793
+#: ldlang.c:4835
msgid "%X%P: %B section `%s' will not fit in region `%s'\n"
msgstr ""
-#: ldlang.c:4850
+#: ldlang.c:4892
#, c-format
msgid ""
"%F%S: non constant or forward reference address expression for section %s\n"
msgstr ""
-#: ldlang.c:4875
+#: ldlang.c:4917
msgid "%P%X: Internal error on COFF shared library section %s\n"
msgstr ""
-#: ldlang.c:4932
+#: ldlang.c:4974
msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
msgstr ""
-#: ldlang.c:4937
+#: ldlang.c:4979
msgid "%P: warning: no memory region specified for loadable section `%s'\n"
msgstr ""
-#: ldlang.c:4959
+#: ldlang.c:5001
msgid "%P: warning: changing start of section %s by %lu bytes\n"
msgstr ""
-#: ldlang.c:5036
+#: ldlang.c:5078
msgid "%P: warning: dot moved backwards before `%s'\n"
msgstr ""
-#: ldlang.c:5202
+#: ldlang.c:5244
msgid "%P%F: can't relax section: %E\n"
msgstr ""
-#: ldlang.c:5531
+#: ldlang.c:5573
msgid "%F%P: invalid data statement\n"
msgstr ""
-#: ldlang.c:5564
+#: ldlang.c:5606
msgid "%F%P: invalid reloc statement\n"
msgstr ""
-#: ldlang.c:5683
+#: ldlang.c:5725
msgid "%P%F: gc-sections requires either an entry or an undefined symbol\n"
msgstr ""
-#: ldlang.c:5708
+#: ldlang.c:5750
msgid "%P%F:%s: can't set start address\n"
msgstr ""
-#: ldlang.c:5721 ldlang.c:5740
+#: ldlang.c:5763 ldlang.c:5782
msgid "%P%F: can't set start address\n"
msgstr ""
-#: ldlang.c:5733
+#: ldlang.c:5775
msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
msgstr ""
-#: ldlang.c:5745
+#: ldlang.c:5787
msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
msgstr ""
-#: ldlang.c:5800
+#: ldlang.c:5842
msgid ""
"%P%F: Relocatable linking with relocations from format %s (%B) to format %s "
"(%B) is not supported\n"
msgstr ""
-#: ldlang.c:5810
+#: ldlang.c:5852
msgid ""
"%P%X: %s architecture of input file `%B' is incompatible with %s output\n"
msgstr ""
-#: ldlang.c:5832
+#: ldlang.c:5874
msgid "%P%X: failed to merge target specific data of file %B\n"
msgstr ""
-#: ldlang.c:5903
+#: ldlang.c:5945
msgid "%P%F: Could not define common symbol `%T': %E\n"
msgstr ""
-#: ldlang.c:5915
+#: ldlang.c:5957
msgid ""
"\n"
"Allocating common symbols\n"
msgstr ""
-#: ldlang.c:5916
+#: ldlang.c:5958
msgid ""
"Common symbol size file\n"
"\n"
msgstr ""
-#: ldlang.c:6062
+#: ldlang.c:6104
msgid "%P%F: invalid syntax in flags\n"
msgstr ""
-#: ldlang.c:6524
+#: ldlang.c:6566
msgid "%P%F: Failed to create hash table\n"
msgstr ""
-#: ldlang.c:6547
+#: ldlang.c:6589
msgid "%P%F: %s: plugin reported error after all symbols read\n"
msgstr ""
-#: ldlang.c:6860
+#: ldlang.c:6905
msgid "%P%F: multiple STARTUP files\n"
msgstr ""
-#: ldlang.c:6906
+#: ldlang.c:6951
msgid "%X%P:%S: section has both a load address and a load region\n"
msgstr ""
-#: ldlang.c:7093
+#: ldlang.c:7138
msgid ""
"%X%P:%S: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack "
"them\n"
msgstr ""
-#: ldlang.c:7165
+#: ldlang.c:7210
msgid "%F%P: no sections assigned to phdrs\n"
msgstr ""
-#: ldlang.c:7203
+#: ldlang.c:7248
msgid "%F%P: bfd_record_phdr failed: %E\n"
msgstr ""
-#: ldlang.c:7223
+#: ldlang.c:7268
msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
msgstr ""
-#: ldlang.c:7636
+#: ldlang.c:7677
msgid "%X%P: unknown language `%s' in version information\n"
msgstr ""
-#: ldlang.c:7781
+#: ldlang.c:7822
msgid ""
"%X%P: anonymous version tag cannot be combined with other version tags\n"
msgstr ""
-#: ldlang.c:7790
+#: ldlang.c:7831
msgid "%X%P: duplicate version tag `%s'\n"
msgstr ""
-#: ldlang.c:7811 ldlang.c:7820 ldlang.c:7838 ldlang.c:7848
+#: ldlang.c:7852 ldlang.c:7861 ldlang.c:7879 ldlang.c:7889
msgid "%X%P: duplicate expression `%s' in version information\n"
msgstr ""
-#: ldlang.c:7888
+#: ldlang.c:7929
msgid "%X%P: unable to find version dependency `%s'\n"
msgstr ""
-#: ldlang.c:7911
+#: ldlang.c:7952
msgid "%X%P: unable to read .exports section contents\n"
msgstr ""
-#: ldlang.c:8035
+#: ldlang.c:8076
msgid "%X%P: unknown feature `%s'\n"
msgstr ""
@@ -999,232 +999,224 @@ msgstr ""
msgid "%X%P: can't set BFD default target to `%s': %E\n"
msgstr ""
-#: ldmain.c:307
-msgid "%P%F: -r and -shared may not be used together\n"
-msgstr ""
-
-#: ldmain.c:350
-msgid "%P%F: -F may not be used without -shared\n"
-msgstr ""
-
-#: ldmain.c:352
-msgid "%P%F: -f may not be used without -shared\n"
+#: ldmain.c:303 lexsup.c:1071
+msgid "%P%F: %s: error loading plugin\n"
msgstr ""
-#: ldmain.c:400
+#: ldmain.c:340
msgid "using external linker script:"
msgstr ""
-#: ldmain.c:402
+#: ldmain.c:342
msgid "using internal linker script:"
msgstr ""
-#: ldmain.c:436
+#: ldmain.c:379
msgid "%P%F: no input files\n"
msgstr ""
-#: ldmain.c:440
+#: ldmain.c:383
msgid "%P: mode %s\n"
msgstr ""
-#: ldmain.c:456
+#: ldmain.c:399
msgid "%P%F: cannot open map file %s: %E\n"
msgstr ""
-#: ldmain.c:488
+#: ldmain.c:431
msgid "%P: link errors found, deleting executable `%s'\n"
msgstr ""
-#: ldmain.c:497
+#: ldmain.c:440
msgid "%F%B: final close failed: %E\n"
msgstr ""
-#: ldmain.c:523
+#: ldmain.c:466
msgid "%X%P: unable to open for source of copy `%s'\n"
msgstr ""
-#: ldmain.c:526
+#: ldmain.c:469
msgid "%X%P: unable to open for destination of copy `%s'\n"
msgstr ""
-#: ldmain.c:533
+#: ldmain.c:476
msgid "%P: Error writing file `%s'\n"
msgstr ""
-#: ldmain.c:538 pe-dll.c:1733
+#: ldmain.c:481 pe-dll.c:1739
#, c-format
msgid "%P: Error closing file `%s'\n"
msgstr ""
-#: ldmain.c:555
+#: ldmain.c:498
#, c-format
msgid "%s: total time in link: %ld.%06ld\n"
msgstr ""
-#: ldmain.c:558
+#: ldmain.c:501
#, c-format
msgid "%s: data size %ld\n"
msgstr ""
-#: ldmain.c:642
+#: ldmain.c:585
msgid "%P%F: missing argument to -m\n"
msgstr ""
-#: ldmain.c:690 ldmain.c:710 ldmain.c:742
+#: ldmain.c:633 ldmain.c:653 ldmain.c:685
msgid "%P%F: bfd_hash_table_init failed: %E\n"
msgstr ""
-#: ldmain.c:694 ldmain.c:714
+#: ldmain.c:637 ldmain.c:657
msgid "%P%F: bfd_hash_lookup failed: %E\n"
msgstr ""
-#: ldmain.c:728
+#: ldmain.c:671
msgid "%X%P: error: duplicate retain-symbols-file\n"
msgstr ""
-#: ldmain.c:772
+#: ldmain.c:715
msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
msgstr ""
-#: ldmain.c:777
+#: ldmain.c:720
msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
msgstr ""
-#: ldmain.c:877
+#: ldmain.c:820
#, c-format
msgid ""
"Archive member included because of file (symbol)\n"
"\n"
msgstr ""
-#: ldmain.c:983
+#: ldmain.c:926
msgid "%X%C: multiple definition of `%T'\n"
msgstr ""
-#: ldmain.c:986
+#: ldmain.c:929
msgid "%D: first defined here\n"
msgstr ""
-#: ldmain.c:990
+#: ldmain.c:933
msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
msgstr ""
-#: ldmain.c:1044
+#: ldmain.c:987
msgid "%B: warning: definition of `%T' overriding common\n"
msgstr ""
-#: ldmain.c:1047
+#: ldmain.c:990
msgid "%B: warning: common is here\n"
msgstr ""
-#: ldmain.c:1054
+#: ldmain.c:997
msgid "%B: warning: common of `%T' overridden by definition\n"
msgstr ""
-#: ldmain.c:1057
+#: ldmain.c:1000
msgid "%B: warning: defined here\n"
msgstr ""
-#: ldmain.c:1064
+#: ldmain.c:1007
msgid "%B: warning: common of `%T' overridden by larger common\n"
msgstr ""
-#: ldmain.c:1067
+#: ldmain.c:1010
msgid "%B: warning: larger common is here\n"
msgstr ""
-#: ldmain.c:1071
+#: ldmain.c:1014
msgid "%B: warning: common of `%T' overriding smaller common\n"
msgstr ""
-#: ldmain.c:1074
+#: ldmain.c:1017
msgid "%B: warning: smaller common is here\n"
msgstr ""
-#: ldmain.c:1078
+#: ldmain.c:1021
msgid "%B: warning: multiple common of `%T'\n"
msgstr ""
-#: ldmain.c:1080
+#: ldmain.c:1023
msgid "%B: warning: previous common is here\n"
msgstr ""
-#: ldmain.c:1100 ldmain.c:1138
+#: ldmain.c:1043 ldmain.c:1081
msgid "%P: warning: global constructor %s used\n"
msgstr ""
-#: ldmain.c:1148
+#: ldmain.c:1091
msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
msgstr ""
#. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1202 ldmain.c:1204 ldmain.c:1206 ldmain.c:1224 ldmain.c:1269
+#: ldmain.c:1145 ldmain.c:1147 ldmain.c:1149 ldmain.c:1167 ldmain.c:1212
msgid "warning: "
msgstr ""
-#: ldmain.c:1305
+#: ldmain.c:1248
msgid "%F%P: bfd_hash_table_init failed: %E\n"
msgstr ""
-#: ldmain.c:1312
+#: ldmain.c:1255
msgid "%F%P: bfd_hash_lookup failed: %E\n"
msgstr ""
-#: ldmain.c:1333
+#: ldmain.c:1276
msgid "%X%C: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1336
+#: ldmain.c:1279
msgid "%C: warning: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1342
+#: ldmain.c:1285
msgid "%X%D: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1345
+#: ldmain.c:1288
msgid "%D: warning: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1356
+#: ldmain.c:1299
msgid "%X%B: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1359
+#: ldmain.c:1302
msgid "%B: warning: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1365
+#: ldmain.c:1308
msgid "%X%B: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1368
+#: ldmain.c:1311
msgid "%B: warning: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1407
+#: ldmain.c:1350
msgid " additional relocation overflows omitted from the output\n"
msgstr ""
-#: ldmain.c:1420
+#: ldmain.c:1363
msgid " relocation truncated to fit: %s against undefined symbol `%T'"
msgstr ""
-#: ldmain.c:1425
+#: ldmain.c:1368
msgid ""
" relocation truncated to fit: %s against symbol `%T' defined in %A section "
"in %B"
msgstr ""
-#: ldmain.c:1437
+#: ldmain.c:1380
msgid " relocation truncated to fit: %s against `%T'"
msgstr ""
-#: ldmain.c:1454
+#: ldmain.c:1397
msgid "%X%H: dangerous relocation: %s\n"
msgstr ""
-#: ldmain.c:1469
+#: ldmain.c:1412
msgid "%X%H: reloc refers to symbol `%T' which is not being output\n"
msgstr ""
@@ -1304,589 +1296,593 @@ msgstr ""
msgid "%F%P: final link failed: %E\n"
msgstr ""
-#: lexsup.c:219 lexsup.c:373
+#: lexsup.c:220 lexsup.c:374
msgid "KEYWORD"
msgstr ""
-#: lexsup.c:219
+#: lexsup.c:220
msgid "Shared library control for HP/UX compatibility"
msgstr ""
-#: lexsup.c:222
+#: lexsup.c:223
msgid "ARCH"
msgstr ""
-#: lexsup.c:222
+#: lexsup.c:223
msgid "Set architecture"
msgstr ""
-#: lexsup.c:224 lexsup.c:492
+#: lexsup.c:225 lexsup.c:493
msgid "TARGET"
msgstr ""
-#: lexsup.c:224
+#: lexsup.c:225
msgid "Specify target for following input files"
msgstr ""
-#: lexsup.c:227 lexsup.c:278 lexsup.c:302 lexsup.c:315 lexsup.c:317
-#: lexsup.c:446 lexsup.c:506 lexsup.c:569 lexsup.c:582
+#: lexsup.c:228 lexsup.c:279 lexsup.c:303 lexsup.c:316 lexsup.c:318
+#: lexsup.c:447 lexsup.c:509 lexsup.c:572 lexsup.c:585
msgid "FILE"
msgstr ""
-#: lexsup.c:227
+#: lexsup.c:228
msgid "Read MRI format linker script"
msgstr ""
-#: lexsup.c:229
+#: lexsup.c:230
msgid "Force common symbols to be defined"
msgstr ""
-#: lexsup.c:233 lexsup.c:550 lexsup.c:552 lexsup.c:554 lexsup.c:556
+#: lexsup.c:234 lexsup.c:553 lexsup.c:555 lexsup.c:557 lexsup.c:559
msgid "ADDRESS"
msgstr ""
-#: lexsup.c:233
+#: lexsup.c:234
msgid "Set start address"
msgstr ""
-#: lexsup.c:235
+#: lexsup.c:236
msgid "Export all dynamic symbols"
msgstr ""
-#: lexsup.c:237
+#: lexsup.c:238
msgid "Undo the effect of --export-dynamic"
msgstr ""
-#: lexsup.c:239
+#: lexsup.c:240
msgid "Link big-endian objects"
msgstr ""
-#: lexsup.c:241
+#: lexsup.c:242
msgid "Link little-endian objects"
msgstr ""
-#: lexsup.c:243 lexsup.c:246
+#: lexsup.c:244 lexsup.c:247
msgid "SHLIB"
msgstr ""
-#: lexsup.c:243
+#: lexsup.c:244
msgid "Auxiliary filter for shared object symbol table"
msgstr ""
-#: lexsup.c:246
+#: lexsup.c:247
msgid "Filter for shared object symbol table"
msgstr ""
-#: lexsup.c:249
+#: lexsup.c:250
msgid "Ignored"
msgstr ""
-#: lexsup.c:251
+#: lexsup.c:252
msgid "SIZE"
msgstr ""
-#: lexsup.c:251
+#: lexsup.c:252
msgid "Small data size (if no size, same as --shared)"
msgstr ""
-#: lexsup.c:254
+#: lexsup.c:255
msgid "FILENAME"
msgstr ""
-#: lexsup.c:254
+#: lexsup.c:255
msgid "Set internal name of shared library"
msgstr ""
-#: lexsup.c:256
+#: lexsup.c:257
msgid "PROGRAM"
msgstr ""
-#: lexsup.c:256
+#: lexsup.c:257
msgid "Set PROGRAM as the dynamic linker to use"
msgstr ""
-#: lexsup.c:259
+#: lexsup.c:260
msgid "LIBNAME"
msgstr ""
-#: lexsup.c:259
+#: lexsup.c:260
msgid "Search for library LIBNAME"
msgstr ""
-#: lexsup.c:261
+#: lexsup.c:262
msgid "DIRECTORY"
msgstr ""
-#: lexsup.c:261
+#: lexsup.c:262
msgid "Add DIRECTORY to library search path"
msgstr ""
-#: lexsup.c:264
+#: lexsup.c:265
msgid "Override the default sysroot location"
msgstr ""
-#: lexsup.c:266
+#: lexsup.c:267
msgid "EMULATION"
msgstr ""
-#: lexsup.c:266
+#: lexsup.c:267
msgid "Set emulation"
msgstr ""
-#: lexsup.c:268
+#: lexsup.c:269
msgid "Print map file on standard output"
msgstr ""
-#: lexsup.c:270
+#: lexsup.c:271
msgid "Do not page align data"
msgstr ""
-#: lexsup.c:272
+#: lexsup.c:273
msgid "Do not page align data, do not make text readonly"
msgstr ""
-#: lexsup.c:275
+#: lexsup.c:276
msgid "Page align data, make text readonly"
msgstr ""
-#: lexsup.c:278
+#: lexsup.c:279
msgid "Set output file name"
msgstr ""
-#: lexsup.c:280
+#: lexsup.c:281
msgid "Optimize output file"
msgstr ""
-#: lexsup.c:283
+#: lexsup.c:284
msgid "PLUGIN"
msgstr ""
-#: lexsup.c:283
+#: lexsup.c:284
msgid "Load named plugin"
msgstr ""
-#: lexsup.c:285
+#: lexsup.c:286
msgid "ARG"
msgstr ""
-#: lexsup.c:285
+#: lexsup.c:286
msgid "Send arg to last-loaded plugin"
msgstr ""
-#: lexsup.c:287 lexsup.c:290
+#: lexsup.c:288 lexsup.c:291
msgid "Ignored for GCC LTO option compatibility"
msgstr ""
-#: lexsup.c:294
+#: lexsup.c:295
msgid "Ignored for SVR4 compatibility"
msgstr ""
-#: lexsup.c:298
+#: lexsup.c:299
msgid "Generate relocatable output"
msgstr ""
-#: lexsup.c:302
+#: lexsup.c:303
msgid "Just link symbols (if directory, same as --rpath)"
msgstr ""
-#: lexsup.c:305
+#: lexsup.c:306
msgid "Strip all symbols"
msgstr ""
-#: lexsup.c:307
+#: lexsup.c:308
msgid "Strip debugging symbols"
msgstr ""
-#: lexsup.c:309
+#: lexsup.c:310
msgid "Strip symbols in discarded sections"
msgstr ""
-#: lexsup.c:311
+#: lexsup.c:312
msgid "Do not strip symbols in discarded sections"
msgstr ""
-#: lexsup.c:313
+#: lexsup.c:314
msgid "Trace file opens"
msgstr ""
-#: lexsup.c:315
+#: lexsup.c:316
msgid "Read linker script"
msgstr ""
-#: lexsup.c:317
+#: lexsup.c:318
msgid "Read default linker script"
msgstr ""
-#: lexsup.c:321 lexsup.c:339 lexsup.c:423 lexsup.c:444 lexsup.c:543
-#: lexsup.c:572 lexsup.c:611
+#: lexsup.c:322 lexsup.c:340 lexsup.c:424 lexsup.c:445 lexsup.c:546
+#: lexsup.c:575 lexsup.c:614
msgid "SYMBOL"
msgstr ""
-#: lexsup.c:321
+#: lexsup.c:322
msgid "Start with undefined reference to SYMBOL"
msgstr ""
-#: lexsup.c:324
+#: lexsup.c:325
msgid "[=SECTION]"
msgstr ""
-#: lexsup.c:325
+#: lexsup.c:326
msgid "Don't merge input [SECTION | orphan] sections"
msgstr ""
-#: lexsup.c:327
+#: lexsup.c:328
msgid "Build global constructor/destructor tables"
msgstr ""
-#: lexsup.c:329
+#: lexsup.c:330
msgid "Print version information"
msgstr ""
-#: lexsup.c:331
+#: lexsup.c:332
msgid "Print version and emulation information"
msgstr ""
-#: lexsup.c:333
+#: lexsup.c:334
msgid "Discard all local symbols"
msgstr ""
-#: lexsup.c:335
+#: lexsup.c:336
msgid "Discard temporary local symbols (default)"
msgstr ""
-#: lexsup.c:337
+#: lexsup.c:338
msgid "Don't discard any local symbols"
msgstr ""
-#: lexsup.c:339
+#: lexsup.c:340
msgid "Trace mentions of SYMBOL"
msgstr ""
-#: lexsup.c:341 lexsup.c:508 lexsup.c:510
+#: lexsup.c:342 lexsup.c:511 lexsup.c:513
msgid "PATH"
msgstr ""
-#: lexsup.c:341
+#: lexsup.c:342
msgid "Default search path for Solaris compatibility"
msgstr ""
-#: lexsup.c:344
+#: lexsup.c:345
msgid "Start a group"
msgstr ""
-#: lexsup.c:346
+#: lexsup.c:347
msgid "End a group"
msgstr ""
-#: lexsup.c:350
+#: lexsup.c:351
msgid "Accept input files whose architecture cannot be determined"
msgstr ""
-#: lexsup.c:354
+#: lexsup.c:355
msgid "Reject input files whose architecture is unknown"
msgstr ""
-#: lexsup.c:366
+#: lexsup.c:367
msgid "Only set DT_NEEDED for following dynamic libs if used"
msgstr ""
-#: lexsup.c:369
+#: lexsup.c:370
msgid ""
"Always set DT_NEEDED for dynamic libraries mentioned on\n"
" the command line"
msgstr ""
-#: lexsup.c:373
+#: lexsup.c:374
msgid "Ignored for SunOS compatibility"
msgstr ""
-#: lexsup.c:375
+#: lexsup.c:376
msgid "Link against shared libraries"
msgstr ""
-#: lexsup.c:381
+#: lexsup.c:382
msgid "Do not link against shared libraries"
msgstr ""
-#: lexsup.c:389
+#: lexsup.c:390
msgid "Bind global references locally"
msgstr ""
-#: lexsup.c:391
+#: lexsup.c:392
msgid "Bind global function references locally"
msgstr ""
-#: lexsup.c:393
+#: lexsup.c:394
msgid "Check section addresses for overlaps (default)"
msgstr ""
-#: lexsup.c:396
+#: lexsup.c:397
msgid "Do not check section addresses for overlaps"
msgstr ""
-#: lexsup.c:400
+#: lexsup.c:401
msgid "Copy DT_NEEDED links mentioned inside DSOs that follow"
msgstr ""
-#: lexsup.c:404
+#: lexsup.c:405
msgid "Do not copy DT_NEEDED links mentioned inside DSOs that follow"
msgstr ""
-#: lexsup.c:408
+#: lexsup.c:409
msgid "Output cross reference table"
msgstr ""
-#: lexsup.c:410
+#: lexsup.c:411
msgid "SYMBOL=EXPRESSION"
msgstr ""
-#: lexsup.c:410
+#: lexsup.c:411
msgid "Define a symbol"
msgstr ""
-#: lexsup.c:412
+#: lexsup.c:413
msgid "[=STYLE]"
msgstr ""
-#: lexsup.c:412
+#: lexsup.c:413
msgid "Demangle symbol names [using STYLE]"
msgstr ""
-#: lexsup.c:415
+#: lexsup.c:416
msgid "Generate embedded relocs"
msgstr ""
-#: lexsup.c:417
+#: lexsup.c:418
msgid "Treat warnings as errors"
msgstr ""
-#: lexsup.c:420
+#: lexsup.c:421
msgid "Do not treat warnings as errors (default)"
msgstr ""
-#: lexsup.c:423
+#: lexsup.c:424
msgid "Call SYMBOL at unload-time"
msgstr ""
-#: lexsup.c:425
+#: lexsup.c:426
msgid "Force generation of file with .exe suffix"
msgstr ""
-#: lexsup.c:427
+#: lexsup.c:428
msgid "Remove unused sections (on some targets)"
msgstr ""
-#: lexsup.c:430
+#: lexsup.c:431
msgid "Don't remove unused sections (default)"
msgstr ""
-#: lexsup.c:433
+#: lexsup.c:434
msgid "List removed unused sections on stderr"
msgstr ""
-#: lexsup.c:436
+#: lexsup.c:437
msgid "Do not list removed unused sections"
msgstr ""
-#: lexsup.c:439
+#: lexsup.c:440
msgid "Set default hash table size close to <NUMBER>"
msgstr ""
-#: lexsup.c:442
+#: lexsup.c:443
msgid "Print option help"
msgstr ""
-#: lexsup.c:444
+#: lexsup.c:445
msgid "Call SYMBOL at load-time"
msgstr ""
-#: lexsup.c:446
+#: lexsup.c:447
msgid "Write a map file"
msgstr ""
-#: lexsup.c:448
+#: lexsup.c:449
msgid "Do not define Common storage"
msgstr ""
-#: lexsup.c:450
+#: lexsup.c:451
msgid "Do not demangle symbol names"
msgstr ""
-#: lexsup.c:452
+#: lexsup.c:453
msgid "Use less memory and more disk I/O"
msgstr ""
-#: lexsup.c:454
+#: lexsup.c:455
msgid "Do not allow unresolved references in object files"
msgstr ""
-#: lexsup.c:457
+#: lexsup.c:458
msgid "Allow unresolved references in shared libraries"
msgstr ""
-#: lexsup.c:461
+#: lexsup.c:462
msgid "Do not allow unresolved references in shared libs"
msgstr ""
-#: lexsup.c:465
+#: lexsup.c:466
msgid "Allow multiple definitions"
msgstr ""
-#: lexsup.c:467
+#: lexsup.c:468
msgid "Disallow undefined version"
msgstr ""
-#: lexsup.c:469
+#: lexsup.c:470
msgid "Create default symbol version"
msgstr ""
-#: lexsup.c:472
+#: lexsup.c:473
msgid "Create default symbol version for imported symbols"
msgstr ""
-#: lexsup.c:475
+#: lexsup.c:476
msgid "Don't warn about mismatched input files"
msgstr ""
-#: lexsup.c:478
+#: lexsup.c:479
msgid "Don't warn on finding an incompatible library"
msgstr ""
-#: lexsup.c:481
+#: lexsup.c:482
msgid "Turn off --whole-archive"
msgstr ""
-#: lexsup.c:483
+#: lexsup.c:484
msgid "Create an output file even if errors occur"
msgstr ""
-#: lexsup.c:488
+#: lexsup.c:489
msgid ""
"Only use library directories specified on\n"
" the command line"
msgstr ""
-#: lexsup.c:492
+#: lexsup.c:493
msgid "Specify target of output file"
msgstr ""
-#: lexsup.c:495
-msgid "Ignored for Linux compatibility"
+#: lexsup.c:496
+msgid "Print default output format"
msgstr ""
#: lexsup.c:498
-msgid "Reduce memory overheads, possibly taking much longer"
+msgid "Ignored for Linux compatibility"
msgstr ""
#: lexsup.c:501
+msgid "Reduce memory overheads, possibly taking much longer"
+msgstr ""
+
+#: lexsup.c:504
msgid "Reduce code size by using target specific optimizations"
msgstr ""
-#: lexsup.c:503
+#: lexsup.c:506
msgid "Do not use relaxation techniques to reduce code size"
msgstr ""
-#: lexsup.c:506
+#: lexsup.c:509
msgid "Keep only symbols listed in FILE"
msgstr ""
-#: lexsup.c:508
+#: lexsup.c:511
msgid "Set runtime shared library search path"
msgstr ""
-#: lexsup.c:510
+#: lexsup.c:513
msgid "Set link time shared library search path"
msgstr ""
-#: lexsup.c:513
+#: lexsup.c:516
msgid "Create a shared library"
msgstr ""
-#: lexsup.c:517
+#: lexsup.c:520
msgid "Create a position independent executable"
msgstr ""
-#: lexsup.c:521
+#: lexsup.c:524
msgid "[=ascending|descending]"
msgstr ""
-#: lexsup.c:522
+#: lexsup.c:525
msgid "Sort common symbols by alignment [in specified order]"
msgstr ""
-#: lexsup.c:527
+#: lexsup.c:530
msgid "name|alignment"
msgstr ""
-#: lexsup.c:528
+#: lexsup.c:531
msgid "Sort sections by name or maximum alignment"
msgstr ""
-#: lexsup.c:530
+#: lexsup.c:533
msgid "COUNT"
msgstr ""
-#: lexsup.c:530
+#: lexsup.c:533
msgid "How many tags to reserve in .dynamic section"
msgstr ""
-#: lexsup.c:533
+#: lexsup.c:536
msgid "[=SIZE]"
msgstr ""
-#: lexsup.c:533
+#: lexsup.c:536
msgid "Split output sections every SIZE octets"
msgstr ""
-#: lexsup.c:536
+#: lexsup.c:539
msgid "[=COUNT]"
msgstr ""
-#: lexsup.c:536
+#: lexsup.c:539
msgid "Split output sections every COUNT relocs"
msgstr ""
-#: lexsup.c:539
+#: lexsup.c:542
msgid "Print memory usage statistics"
msgstr ""
-#: lexsup.c:541
+#: lexsup.c:544
msgid "Display target specific options"
msgstr ""
-#: lexsup.c:543
+#: lexsup.c:546
msgid "Do task level linking"
msgstr ""
-#: lexsup.c:545
+#: lexsup.c:548
msgid "Use same format as native linker"
msgstr ""
-#: lexsup.c:547
+#: lexsup.c:550
msgid "SECTION=ADDRESS"
msgstr ""
-#: lexsup.c:547
+#: lexsup.c:550
msgid "Set address of named section"
msgstr ""
-#: lexsup.c:550
+#: lexsup.c:553
msgid "Set address of .bss section"
msgstr ""
-#: lexsup.c:552
+#: lexsup.c:555
msgid "Set address of .data section"
msgstr ""
-#: lexsup.c:554
+#: lexsup.c:557
msgid "Set address of .text section"
msgstr ""
-#: lexsup.c:556
+#: lexsup.c:559
msgid "Set address of text segment"
msgstr ""
-#: lexsup.c:559
+#: lexsup.c:562
msgid ""
"How to handle unresolved symbols. <method> is:\n"
" ignore-all, report-all, ignore-in-object-"
@@ -1894,117 +1890,113 @@ msgid ""
" ignore-in-shared-libs"
msgstr ""
-#: lexsup.c:564
+#: lexsup.c:567
msgid "[=NUMBER]"
msgstr ""
-#: lexsup.c:565
+#: lexsup.c:568
msgid "Output lots of information during link"
msgstr ""
-#: lexsup.c:569
+#: lexsup.c:572
msgid "Read version information script"
msgstr ""
-#: lexsup.c:572
+#: lexsup.c:575
msgid ""
"Take export symbols list from .exports, using\n"
" SYMBOL as the version."
msgstr ""
-#: lexsup.c:576
+#: lexsup.c:579
msgid "Add data symbols to dynamic list"
msgstr ""
-#: lexsup.c:578
+#: lexsup.c:581
msgid "Use C++ operator new/delete dynamic list"
msgstr ""
-#: lexsup.c:580
+#: lexsup.c:583
msgid "Use C++ typeinfo dynamic list"
msgstr ""
-#: lexsup.c:582
+#: lexsup.c:585
msgid "Read dynamic list"
msgstr ""
-#: lexsup.c:584
+#: lexsup.c:587
msgid "Warn about duplicate common symbols"
msgstr ""
-#: lexsup.c:586
+#: lexsup.c:589
msgid "Warn if global constructors/destructors are seen"
msgstr ""
-#: lexsup.c:589
+#: lexsup.c:592
msgid "Warn if the multiple GP values are used"
msgstr ""
-#: lexsup.c:591
+#: lexsup.c:594
msgid "Warn only once per undefined symbol"
msgstr ""
-#: lexsup.c:593
+#: lexsup.c:596
msgid "Warn if start of section changes due to alignment"
msgstr ""
-#: lexsup.c:596
+#: lexsup.c:599
msgid "Warn if shared object has DT_TEXTREL"
msgstr ""
-#: lexsup.c:599
+#: lexsup.c:602
msgid "Warn if an object has alternate ELF machine code"
msgstr ""
-#: lexsup.c:603
+#: lexsup.c:606
msgid "Report unresolved symbols as warnings"
msgstr ""
-#: lexsup.c:606
+#: lexsup.c:609
msgid "Report unresolved symbols as errors"
msgstr ""
-#: lexsup.c:608
+#: lexsup.c:611
msgid "Include all objects from following archives"
msgstr ""
-#: lexsup.c:611
+#: lexsup.c:614
msgid "Use wrapper functions for SYMBOL"
msgstr ""
-#: lexsup.c:760
+#: lexsup.c:763
msgid "%P: unrecognized option '%s'\n"
msgstr ""
-#: lexsup.c:764
+#: lexsup.c:767
msgid "%P%F: use the --help option for usage information\n"
msgstr ""
-#: lexsup.c:782
+#: lexsup.c:785
msgid "%P%F: unrecognized -a option `%s'\n"
msgstr ""
-#: lexsup.c:795
+#: lexsup.c:798
msgid "%P%F: unrecognized -assert option `%s'\n"
msgstr ""
-#: lexsup.c:838
+#: lexsup.c:841
msgid "%F%P: unknown demangling style `%s'"
msgstr ""
-#: lexsup.c:904 lexsup.c:1335
+#: lexsup.c:907 lexsup.c:1341
msgid "%P%F: invalid number `%s'\n"
msgstr ""
-#: lexsup.c:1002
+#: lexsup.c:1005
msgid "%P%F: bad --unresolved-symbols option: %s\n"
msgstr ""
-#: lexsup.c:1065 lexsup.c:1564
-msgid "%P%F: %s: error loading plugin\n"
-msgstr ""
-
-#: lexsup.c:1070
+#: lexsup.c:1076
msgid "%P%F: bad -plugin-opt option\n"
msgstr ""
@@ -2016,105 +2008,117 @@ msgstr ""
#. an error message here. We cannot just make this a warning,
#. increment optind, and continue because getopt is too confused
#. and will seg-fault the next time around.
-#: lexsup.c:1087
+#: lexsup.c:1093
msgid "%P%F: bad -rpath option\n"
msgstr ""
-#: lexsup.c:1201
+#: lexsup.c:1207
msgid "%P%F: -shared not supported\n"
msgstr ""
-#: lexsup.c:1210
+#: lexsup.c:1216
msgid "%P%F: -pie not supported\n"
msgstr ""
-#: lexsup.c:1218
+#: lexsup.c:1224
msgid "descending"
msgstr ""
-#: lexsup.c:1220
+#: lexsup.c:1226
msgid "ascending"
msgstr ""
-#: lexsup.c:1223
+#: lexsup.c:1229
msgid "%P%F: invalid common section sorting option: %s\n"
msgstr ""
-#: lexsup.c:1227
+#: lexsup.c:1233
msgid "name"
msgstr ""
-#: lexsup.c:1229
+#: lexsup.c:1235
msgid "alignment"
msgstr ""
-#: lexsup.c:1232
+#: lexsup.c:1238
msgid "%P%F: invalid section sorting option: %s\n"
msgstr ""
-#: lexsup.c:1266
+#: lexsup.c:1272
msgid "%P%F: invalid argument to option \"--section-start\"\n"
msgstr ""
-#: lexsup.c:1273
+#: lexsup.c:1279
msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
msgstr ""
-#: lexsup.c:1507
+#: lexsup.c:1513
msgid "%P%F: group ended before it began (--help for usage)\n"
msgstr ""
-#: lexsup.c:1535
+#: lexsup.c:1541
msgid "%P%X: --hash-size needs a numeric argument\n"
msgstr ""
-#: lexsup.c:1595 lexsup.c:1608
+#: lexsup.c:1572
+msgid "%P%F: -r and -shared may not be used together\n"
+msgstr ""
+
+#: lexsup.c:1615
+msgid "%P%F: -F may not be used without -shared\n"
+msgstr ""
+
+#: lexsup.c:1617
+msgid "%P%F: -f may not be used without -shared\n"
+msgstr ""
+
+#: lexsup.c:1661 lexsup.c:1674
msgid "%P%F: invalid hex number `%s'\n"
msgstr ""
-#: lexsup.c:1644
+#: lexsup.c:1710
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: lexsup.c:1646
+#: lexsup.c:1712
#, c-format
msgid "Options:\n"
msgstr ""
-#: lexsup.c:1724
+#: lexsup.c:1790
#, c-format
msgid " @FILE"
msgstr ""
-#: lexsup.c:1727
+#: lexsup.c:1793
#, c-format
msgid "Read options from FILE\n"
msgstr ""
#. Note: Various tools (such as libtool) depend upon the
#. format of the listings below - do not change them.
-#: lexsup.c:1732
+#: lexsup.c:1798
#, c-format
msgid "%s: supported targets:"
msgstr ""
-#: lexsup.c:1740
+#: lexsup.c:1806
#, c-format
msgid "%s: supported emulations: "
msgstr ""
-#: lexsup.c:1745
+#: lexsup.c:1811
#, c-format
msgid "%s: emulation specific options:\n"
msgstr ""
-#: lexsup.c:1750
+#: lexsup.c:1816
#, c-format
msgid "Report bugs to %s\n"
msgstr ""
-#: mri.c:292
+#: mri.c:294
msgid "%P%F: unknown format type %s\n"
msgstr ""
@@ -2123,117 +2127,117 @@ msgstr ""
msgid "%XUnsupported PEI architecture: %s\n"
msgstr ""
-#: pe-dll.c:791
+#: pe-dll.c:788
#, c-format
msgid "%XCannot export %s: invalid export name\n"
msgstr ""
-#: pe-dll.c:848
+#: pe-dll.c:845
#, c-format
msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
msgstr ""
-#: pe-dll.c:855
+#: pe-dll.c:852
#, c-format
msgid "Warning, duplicate EXPORT: %s\n"
msgstr ""
-#: pe-dll.c:942
+#: pe-dll.c:939
#, c-format
msgid "%XCannot export %s: symbol not defined\n"
msgstr ""
-#: pe-dll.c:948
+#: pe-dll.c:945
#, c-format
msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
msgstr ""
-#: pe-dll.c:955
+#: pe-dll.c:952
#, c-format
msgid "%XCannot export %s: symbol not found\n"
msgstr ""
-#: pe-dll.c:1069
+#: pe-dll.c:1066
#, c-format
msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
msgstr ""
-#: pe-dll.c:1450
+#: pe-dll.c:1456
#, c-format
msgid "%XError: %d-bit reloc in dll\n"
msgstr ""
-#: pe-dll.c:1578
+#: pe-dll.c:1584
#, c-format
msgid "%s: Can't open output def file %s\n"
msgstr ""
-#: pe-dll.c:1729
+#: pe-dll.c:1735
#, c-format
msgid "; no contents available\n"
msgstr ""
-#: pe-dll.c:2656
+#: pe-dll.c:2662
msgid ""
"%C: variable '%T' can't be auto-imported. Please read the documentation for "
"ld's --enable-auto-import for details.\n"
msgstr ""
-#: pe-dll.c:2686
+#: pe-dll.c:2692
#, c-format
msgid "%XCan't open .lib file: %s\n"
msgstr ""
-#: pe-dll.c:2691
+#: pe-dll.c:2697
#, c-format
msgid "Creating library file: %s\n"
msgstr ""
-#: pe-dll.c:2720
+#: pe-dll.c:2726
#, c-format
msgid "%Xbfd_openr %s: %E\n"
msgstr ""
-#: pe-dll.c:2732
+#: pe-dll.c:2738
#, c-format
msgid "%X%s(%s): can't find member in non-archive file"
msgstr ""
-#: pe-dll.c:2744
+#: pe-dll.c:2750
#, c-format
msgid "%X%s(%s): can't find member in archive"
msgstr ""
-#: pe-dll.c:3183
+#: pe-dll.c:3189
#, c-format
msgid "%XError: can't use long section names on this arch\n"
msgstr ""
-#: plugin.c:176 plugin.c:210
+#: plugin.c:177 plugin.c:211
msgid "<no plugin>"
msgstr ""
-#: plugin.c:249
+#: plugin.c:250
#, c-format
msgid "could not create dummy IR bfd: %F%E\n"
msgstr ""
-#: plugin.c:322
+#: plugin.c:343
msgid "%P%F: %s: non-ELF symbol in ELF BFD!\n"
msgstr ""
-#: plugin.c:326
+#: plugin.c:347
msgid "%P%F: unknown ELF symbol visibility: %d!\n"
msgstr ""
-#: plugin.c:559
+#: plugin.c:586
msgid "%P: %B: symbol `%s' definition: %d, visibility: %d, resolution: %d\n"
msgstr ""
-#: plugin.c:825
+#: plugin.c:863
msgid "%P%F: %s: plugin reported error claiming file\n"
msgstr ""
-#: plugin.c:896
+#: plugin.c:934
msgid "%P: %s: error in plugin cleanup (ignored)\n"
msgstr ""
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 2b444ac2a8..41212ea409 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * ld-srec/srec.exp: xfail epiphany.
+ * lib/ld-lib.exp (check_shared_lib_support): Add Epiphany to list
+ of targets not supporting shared libraries.
+
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13302
diff --git a/ld/testsuite/ld-srec/srec.exp b/ld/testsuite/ld-srec/srec.exp
index 25dfb067f6..5e741e09cc 100644
--- a/ld/testsuite/ld-srec/srec.exp
+++ b/ld/testsuite/ld-srec/srec.exp
@@ -270,6 +270,12 @@ proc run_srec_test { test objs } {
set flags "$flags --no-toc-optimize"
}
+ # Epiphany needs some help too
+ if [istarget epiphany*-*-*] {
+ set flags "$flags --defsym _start=00000060"
+ setup_xfail "epiphany*-*-*"
+ }
+
if { ![ld_simple_link $ld tmpdir/sr1 "$flags $objs"] \
|| ![ld_simple_link $ld tmpdir/sr2.sr "$flags --oformat srec $objs"] } {
fail $test
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index e76459185e..2c4512b438 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -1463,6 +1463,7 @@ proc check_shared_lib_support { } {
&& ![istarget d10v-*-*]
&& ![istarget d30v-*-*]
&& ![istarget dlx-*-*]
+ && ![istarget epiphany-*-*]
&& ![istarget fr30-*-*]
&& ![istarget frv-*-*]
&& ![istarget h8300-*-*]
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 0158cf19ad..6ad9cf386b 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,26 @@
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * Makefile.am (HFILES): Add epiphany-desc.h and epiphany-opc.h .
+ (TARGET_LIBOPCODES_CFILES): Add epiphany-asm.c, epiphany-desc.c,
+ epiphany-dis.c, epiphany-ibld.c and epiphany-opc.c .
+ (CLEANFILES): Add stamp-epiphany.
+ (EPIPHANY_DEPS): Set. Make CGEN-generated Epiphany files depend on it.
+ (stamp-epiphany): New rule.
+ * configure.in: Handle bfd_epiphany_arch.
+ * disassemble.c (ARCH_epiphany): Define.
+ (disassembler): Handle bfd_arch_epiphany.
+ * epiphany-asm.c: New file.
+ * epiphany-desc.c: New file.
+ * epiphany-desc.h: New file.
+ * epiphany-dis.c: New file.
+ * epiphany-ibld.c: New file.
+ * epiphany-opc.c: New file.
+ * epiphany-opc.h: New file.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * po/POTFILES.in: Regenerate.
+ * po/opcodes.pot: Regenerate.
+
2011-10-24 Julian Brown <julian@codesourcery.com>
* m68k-opc.c (m68k_opcodes): Fix entries for ColdFire moveml.
diff --git a/opcodes/Makefile.am b/opcodes/Makefile.am
index ec7fa3e64c..cae73c2ab6 100644
--- a/opcodes/Makefile.am
+++ b/opcodes/Makefile.am
@@ -41,6 +41,7 @@ BUILD_LIB_DEPS = @BUILD_LIB_DEPS@
# Header files.
HFILES = \
+ epiphany-desc.h epiphany-opc.h \
fr30-desc.h fr30-opc.h \
frv-desc.h frv-opc.h \
h8500-opc.h \
@@ -95,6 +96,11 @@ TARGET_LIBOPCODES_CFILES = \
d30v-dis.c \
d30v-opc.c \
dlx-dis.c \
+ epiphany-asm.c \
+ epiphany-desc.c \
+ epiphany-dis.c \
+ epiphany-ibld.c \
+ epiphany-opc.c \
fr30-asm.c \
fr30-desc.c \
fr30-dis.c \
@@ -311,7 +317,7 @@ po/POTFILES.in: @MAINT@ Makefile
&& mv tmp $(srcdir)/po/POTFILES.in
CLEANFILES = \
- stamp-fr30 stamp-frv stamp-ip2k stamp-iq2000 stamp-lm32 \
+ stamp-epiphany stamp-fr30 stamp-frv stamp-ip2k stamp-iq2000 stamp-lm32 \
stamp-m32c stamp-m32r stamp-mep stamp-mt \
stamp-openrisc stamp-xc16x stamp-xstormy16 \
libopcodes.a stamp-lib
@@ -329,9 +335,10 @@ CGENDEPS = \
$(CGENDIR)/opc-opinst.scm \
cgen-asm.in cgen-dis.in cgen-ibld.in
-CGEN_CPUS = fr30 frv ip2k iq2000 lm32 m32c m32r mep mt openrisc xc16x xstormy16
+CGEN_CPUS = epiphany fr30 frv ip2k iq2000 lm32 m32c m32r mep mt openrisc xc16x xstormy16
if CGEN_MAINT
+EPIPHANY_DEPS = stamp-epiphany
FR30_DEPS = stamp-fr30
FRV_DEPS = stamp-frv
IP2K_DEPS = stamp-ip2k
@@ -345,6 +352,7 @@ OPENRISC_DEPS = stamp-openrisc
XC16X_DEPS = stamp-xc16x
XSTORMY16_DEPS = stamp-xstormy16
else
+EPIPHANY_DEPS =
FR30_DEPS =
FRV_DEPS =
IP2K_DEPS =
@@ -376,6 +384,16 @@ run-cgen-all:
# For now, require developers to configure with --enable-cgen-maint.
+$(srcdir)/epiphany-desc.h $(srcdir)/epiphany-desc.c $(srcdir)/epiphany-opc.h \
+ $(srcdir)/epiphany-opc.c $(srcdir)/epiphany-ibld.c \
+ $(srcdir)/epiphany-opinst.c $(srcdir)/epiphany-asm.c \
+ $(srcdir)/epiphany-dis.c: $(EPIPHANY_DEPS)
+ @true
+
+stamp-epiphany: $(CGENDEPS) $(CPUDIR)/epiphany.cpu $(CPUDIR)/epiphany.opc
+ $(MAKE) run-cgen arch=epiphany prefix=epiphany options= \
+ archfile=$(CPUDIR)/epiphany.cpu opcfile=$(CPUDIR)/epiphany.opc extrafiles=
+
$(srcdir)/fr30-desc.h $(srcdir)/fr30-desc.c $(srcdir)/fr30-opc.h $(srcdir)/fr30-opc.c $(srcdir)/fr30-ibld.c $(srcdir)/fr30-asm.c $(srcdir)/fr30-dis.c: $(FR30_DEPS)
@true
stamp-fr30: $(CGENDEPS) $(CPUDIR)/fr30.cpu $(CPUDIR)/fr30.opc
diff --git a/opcodes/Makefile.in b/opcodes/Makefile.in
index 7d260a7602..6c2815d8f8 100644
--- a/opcodes/Makefile.in
+++ b/opcodes/Makefile.in
@@ -310,6 +310,7 @@ BFD_H = ../bfd/bfd.h
# Header files.
HFILES = \
+ epiphany-desc.h epiphany-opc.h \
fr30-desc.h fr30-opc.h \
frv-desc.h frv-opc.h \
h8500-opc.h \
@@ -365,6 +366,11 @@ TARGET_LIBOPCODES_CFILES = \
d30v-dis.c \
d30v-opc.c \
dlx-dis.c \
+ epiphany-asm.c \
+ epiphany-desc.c \
+ epiphany-dis.c \
+ epiphany-ibld.c \
+ epiphany-opc.c \
fr30-asm.c \
fr30-desc.c \
fr30-dis.c \
@@ -550,7 +556,7 @@ noinst_LIBRARIES = libopcodes.a
libopcodes_a_SOURCES =
POTFILES = $(HFILES) $(CFILES)
CLEANFILES = \
- stamp-fr30 stamp-frv stamp-ip2k stamp-iq2000 stamp-lm32 \
+ stamp-epiphany stamp-fr30 stamp-frv stamp-ip2k stamp-iq2000 stamp-lm32 \
stamp-m32c stamp-m32r stamp-mep stamp-mt \
stamp-openrisc stamp-xc16x stamp-xstormy16 \
libopcodes.a stamp-lib
@@ -566,7 +572,9 @@ CGENDEPS = \
$(CGENDIR)/opc-opinst.scm \
cgen-asm.in cgen-dis.in cgen-ibld.in
-CGEN_CPUS = fr30 frv ip2k iq2000 lm32 m32c m32r mep mt openrisc xc16x xstormy16
+CGEN_CPUS = epiphany fr30 frv ip2k iq2000 lm32 m32c m32r mep mt openrisc xc16x xstormy16
+@CGEN_MAINT_FALSE@EPIPHANY_DEPS =
+@CGEN_MAINT_TRUE@EPIPHANY_DEPS = stamp-epiphany
@CGEN_MAINT_FALSE@FR30_DEPS =
@CGEN_MAINT_TRUE@FR30_DEPS = stamp-fr30
@CGEN_MAINT_FALSE@FRV_DEPS =
@@ -741,6 +749,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis-init.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disassemble.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlx-dis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epiphany-asm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epiphany-desc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epiphany-dis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epiphany-ibld.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epiphany-opc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-asm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-desc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-dis.Plo@am__quote@
@@ -1229,6 +1242,16 @@ run-cgen-all:
# For now, require developers to configure with --enable-cgen-maint.
+$(srcdir)/epiphany-desc.h $(srcdir)/epiphany-desc.c $(srcdir)/epiphany-opc.h \
+ $(srcdir)/epiphany-opc.c $(srcdir)/epiphany-ibld.c \
+ $(srcdir)/epiphany-opinst.c $(srcdir)/epiphany-asm.c \
+ $(srcdir)/epiphany-dis.c: $(EPIPHANY_DEPS)
+ @true
+
+stamp-epiphany: $(CGENDEPS) $(CPUDIR)/epiphany.cpu $(CPUDIR)/epiphany.opc
+ $(MAKE) run-cgen arch=epiphany prefix=epiphany options= \
+ archfile=$(CPUDIR)/epiphany.cpu opcfile=$(CPUDIR)/epiphany.opc extrafiles=
+
$(srcdir)/fr30-desc.h $(srcdir)/fr30-desc.c $(srcdir)/fr30-opc.h $(srcdir)/fr30-opc.c $(srcdir)/fr30-ibld.c $(srcdir)/fr30-asm.c $(srcdir)/fr30-dis.c: $(FR30_DEPS)
@true
stamp-fr30: $(CGENDEPS) $(CPUDIR)/fr30.cpu $(CPUDIR)/fr30.opc
diff --git a/opcodes/configure b/opcodes/configure
index 746070e550..d89ed6a58d 100755
--- a/opcodes/configure
+++ b/opcodes/configure
@@ -12429,6 +12429,7 @@ if test x${all_targets} = xfalse ; then
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_ip2k_arch) ta="$ta ip2k-asm.lo ip2k-desc.lo ip2k-dis.lo ip2k-ibld.lo ip2k-opc.lo" using_cgen=yes ;;
+ bfd_epiphany_arch) ta="$ta epiphany-asm.lo epiphany-desc.lo epiphany-dis.lo epiphany-ibld.lo epiphany-opc.lo" using_cgen=yes ;;
bfd_iq2000_arch) ta="$ta iq2000-asm.lo iq2000-desc.lo iq2000-dis.lo iq2000-ibld.lo iq2000-opc.lo" using_cgen=yes ;;
bfd_lm32_arch) ta="$ta lm32-asm.lo lm32-desc.lo lm32-dis.lo lm32-ibld.lo lm32-opc.lo lm32-opinst.lo" using_cgen=yes ;;
bfd_m32c_arch) ta="$ta m32c-asm.lo m32c-desc.lo m32c-dis.lo m32c-ibld.lo m32c-opc.lo" using_cgen=yes ;;
diff --git a/opcodes/configure.in b/opcodes/configure.in
index 3776be37fc..fc87735f0f 100644
--- a/opcodes/configure.in
+++ b/opcodes/configure.in
@@ -243,6 +243,7 @@ if test x${all_targets} = xfalse ; then
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_ip2k_arch) ta="$ta ip2k-asm.lo ip2k-desc.lo ip2k-dis.lo ip2k-ibld.lo ip2k-opc.lo" using_cgen=yes ;;
+ bfd_epiphany_arch) ta="$ta epiphany-asm.lo epiphany-desc.lo epiphany-dis.lo epiphany-ibld.lo epiphany-opc.lo" using_cgen=yes ;;
bfd_iq2000_arch) ta="$ta iq2000-asm.lo iq2000-desc.lo iq2000-dis.lo iq2000-ibld.lo iq2000-opc.lo" using_cgen=yes ;;
bfd_lm32_arch) ta="$ta lm32-asm.lo lm32-desc.lo lm32-dis.lo lm32-ibld.lo lm32-opc.lo lm32-opinst.lo" using_cgen=yes ;;
bfd_m32c_arch) ta="$ta m32c-asm.lo m32c-desc.lo m32c-dis.lo m32c-ibld.lo m32c-opc.lo" using_cgen=yes ;;
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c
index 2919271620..a9c65f32f5 100644
--- a/opcodes/disassemble.c
+++ b/opcodes/disassemble.c
@@ -26,6 +26,7 @@
#define ARCH_alpha
#define ARCH_arc
#define ARCH_arm
+#define ARCH_epiphany
#define ARCH_avr
#define ARCH_bfin
#define ARCH_cr16
@@ -224,6 +225,11 @@ disassembler (abfd)
disassemble = print_insn_ip2k;
break;
#endif
+#ifdef ARCH_epiphany
+ case bfd_arch_epiphany:
+ disassemble = print_insn_epiphany;
+ break;
+#endif
#ifdef ARCH_fr30
case bfd_arch_fr30:
disassemble = print_insn_fr30;
diff --git a/opcodes/epiphany-asm.c b/opcodes/epiphany-asm.c
new file mode 100644
index 0000000000..31ceb3e542
--- /dev/null
+++ b/opcodes/epiphany-asm.c
@@ -0,0 +1,863 @@
+/* Assembler interface for targets using CGEN. -*- C -*-
+ CGEN: Cpu tools GENerator
+
+ THIS FILE IS MACHINE GENERATED WITH CGEN.
+ - the resultant file is machine generated, cgen-asm.in isn't
+
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005, 2007, 2008, 2010
+ Free Software Foundation, Inc.
+
+ This file is part of libopcodes.
+
+ This library 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "epiphany-desc.h"
+#include "epiphany-opc.h"
+#include "opintl.h"
+#include "xregex.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+
+static const char * parse_insn_normal
+ (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
+
+/* -- assembler routines inserted here. */
+
+/* -- asm.c */
+const char *
+parse_shortregs (CGEN_CPU_DESC cd,
+ const char ** strp,
+ CGEN_KEYWORD * keywords,
+ long * regno)
+{
+ const char * errmsg;
+
+ /* Parse register. */
+ errmsg = cgen_parse_keyword (cd, strp, keywords, regno);
+
+ if (errmsg)
+ return errmsg;
+
+ if (*regno > 7)
+ errmsg = _("register unavailable for short instructions");
+
+ return errmsg;
+}
+
+static const char * parse_simm_not_reg (CGEN_CPU_DESC, const char **, int,
+ long *);
+
+static const char *
+parse_uimm_not_reg (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ unsigned long * valuep)
+{
+ long * svalp = (void *) valuep;
+ return parse_simm_not_reg (cd, strp, opindex, svalp);
+}
+
+/* Handle simm3/simm11/imm3/imm12. */
+
+static const char *
+parse_simm_not_reg (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ long * valuep)
+{
+ const char * errmsg;
+
+ int sign = 0;
+ int bits = 0;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_SIMM3:
+ sign = 1; bits = 3; break;
+ case EPIPHANY_OPERAND_SIMM11:
+ sign = 1; bits = 11; break;
+ case EPIPHANY_OPERAND_DISP3:
+ sign = 0; bits = 3; break;
+ case EPIPHANY_OPERAND_DISP11:
+ /* Load/store displacement is a sign-magnitude 12 bit value. */
+ sign = 0; bits = 11; break;
+ }
+
+ /* First try to parse as a register name and reject the operand. */
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names,valuep);
+ if (!errmsg)
+ return _("register name used as immediate value");
+
+ errmsg = (sign ? cgen_parse_signed_integer (cd, strp, opindex, valuep)
+ : cgen_parse_unsigned_integer (cd, strp, opindex,
+ (unsigned long *) valuep));
+ if (errmsg)
+ return errmsg;
+
+ if (sign)
+ errmsg = cgen_validate_signed_integer (*valuep,
+ -((1L << bits) - 1), (1 << (bits - 1)) - 1);
+ else
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, (1L << bits) - 1);
+
+ return errmsg;
+}
+
+static const char *
+parse_postindex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ const char ** strp,
+ int opindex ATTRIBUTE_UNUSED,
+ bfd_vma * valuep)
+{
+ if (**strp == '#')
+ ++*strp; /* Skip leading hashes. */
+
+ if (**strp == '-')
+ {
+ *valuep = 1;
+ ++*strp;
+ }
+ else if (**strp == '+')
+ {
+ *valuep = 0;
+ ++*strp;
+ }
+ else
+ *valuep = 0;
+
+ return NULL;
+}
+
+static const char *
+parse_imm8 (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ bfd_reloc_code_real_type code,
+ enum cgen_parse_operand_result * result_type,
+ bfd_vma * valuep)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result rt;
+ long dummyval;
+
+ if (!result_type)
+ result_type = &rt;
+
+ code = BFD_RELOC_NONE;
+
+ if (!cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_gr_names, &dummyval)
+ || !cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_cr_names,
+ &dummyval))
+ /* Don't treat "mov ip,ip" as a move-immediate. */
+ return _("register source in immediate move");
+
+ errmsg = cgen_parse_address (cd, strp, opindex, code, result_type, valuep);
+ if (errmsg)
+ return errmsg;
+
+ if (*result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, 0xff);
+ else
+ errmsg = _("byte relocation unsupported");
+
+ *valuep &= 0xff;
+ return errmsg;
+}
+
+static const char * MISSING_CLOSE_PARENTHESIS = N_("missing `)'");
+
+static const char *
+parse_imm16 (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ bfd_reloc_code_real_type code ATTRIBUTE_UNUSED,
+ enum cgen_parse_operand_result * result_type,
+ bfd_vma * valuep)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result rt;
+ long dummyval;
+
+ if (!result_type)
+ result_type = &rt;
+
+ if (strncasecmp (*strp, "%high(", 6) == 0)
+ {
+ *strp += 6;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_EPIPHANY_HIGH,
+ result_type, valuep);
+ if (**strp != ')')
+ return MISSING_CLOSE_PARENTHESIS;
+ ++*strp;
+ *valuep >>= 16;
+ }
+ else if (strncasecmp (*strp, "%low(", 5) == 0)
+ {
+ *strp += 5;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_EPIPHANY_LOW,
+ result_type, valuep);
+ if (**strp != ')')
+ return MISSING_CLOSE_PARENTHESIS;
+ ++*strp;
+ }
+ else if (!cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_gr_names,
+ &dummyval)
+ || !cgen_parse_keyword (cd, strp, &epiphany_cgen_opval_cr_names,
+ &dummyval))
+ /* Don't treat "mov ip,ip" as a move-immediate. */
+ return _("register source in immediate move");
+ else
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16,
+ result_type, valuep);
+
+ if (!errmsg && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ errmsg = cgen_validate_unsigned_integer (*valuep, 0, 0xffff);
+
+ *valuep &= 0xffff;
+ return errmsg;
+}
+
+const char *
+parse_branch_addr (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ int opinfo ATTRIBUTE_UNUSED,
+ enum cgen_parse_operand_result * resultp ATTRIBUTE_UNUSED,
+ unsigned long * valuep ATTRIBUTE_UNUSED)
+{
+ const char * errmsg;
+ enum cgen_parse_operand_result result_type;
+ bfd_reloc_code_real_type code = BFD_RELOC_NONE;
+ bfd_vma value;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_SIMM24:
+ code = BFD_RELOC_EPIPHANY_SIMM24;
+ break;
+
+ case EPIPHANY_OPERAND_SIMM8:
+ code = BFD_RELOC_EPIPHANY_SIMM8;
+ break;
+
+ default:
+ errmsg = _("ABORT: unknown operand");
+ return errmsg;
+ }
+
+ errmsg = cgen_parse_address (cd, strp, opindex, code,
+ &result_type, &value);
+ if (errmsg == NULL)
+ {
+ if (result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ {
+ /* Act as if we had done a PC-relative branch, ala .+num. */
+ char buf[20];
+ const char * bufp = (const char *) buf;
+
+ sprintf (buf, ".+%ld", value);
+ errmsg = cgen_parse_address (cd, &bufp, opindex, code, &result_type,
+ &value);
+ }
+
+ if (result_type == CGEN_PARSE_OPERAND_RESULT_QUEUED)
+ {
+ /* This will happen for things like (s2-s1) where s2 and s1
+ are labels. */
+ /* Nothing further to be done. */
+ }
+ else
+ errmsg = _("Not a pc-relative address.");
+ }
+ return errmsg;
+}
+
+/* -- dis.c */
+
+const char * epiphany_cgen_parse_operand
+ (CGEN_CPU_DESC, int, const char **, CGEN_FIELDS *);
+
+/* Main entry point for operand parsing.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `parse_insn_normal', but keeping it
+ separate makes clear the interface between `parse_insn_normal' and each of
+ the handlers. */
+
+const char *
+epiphany_cgen_parse_operand (CGEN_CPU_DESC cd,
+ int opindex,
+ const char ** strp,
+ CGEN_FIELDS * fields)
+{
+ const char * errmsg = NULL;
+ /* Used by scalar operands that still need to be parsed. */
+ long junk ATTRIBUTE_UNUSED;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ errmsg = parse_postindex (cd, strp, EPIPHANY_OPERAND_DIRECTION, (unsigned long *) (& fields->f_addsubx));
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ errmsg = parse_uimm_not_reg (cd, strp, EPIPHANY_OPERAND_DISP11, (unsigned long *) (& fields->f_disp11));
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, EPIPHANY_OPERAND_DISP3, (unsigned long *) (& fields->f_disp3));
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ errmsg = parse_postindex (cd, strp, EPIPHANY_OPERAND_DPMI, (unsigned long *) (& fields->f_subd));
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rd);
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rd6);
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rm);
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rm6);
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rn);
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rn6);
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ {
+ bfd_vma value = 0;
+ errmsg = parse_imm16 (cd, strp, EPIPHANY_OPERAND_IMM16, 0, NULL, & value);
+ fields->f_imm16 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ {
+ bfd_vma value = 0;
+ errmsg = parse_imm8 (cd, strp, EPIPHANY_OPERAND_IMM8, 0, NULL, & value);
+ fields->f_imm8 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_RD :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rd);
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rd6);
+ break;
+ case EPIPHANY_OPERAND_RM :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rm);
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rm6);
+ break;
+ case EPIPHANY_OPERAND_RN :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rn);
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_gr_names, & fields->f_rn6);
+ break;
+ case EPIPHANY_OPERAND_SD :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_cr_names, & fields->f_sd);
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_cr_names, & fields->f_sd6);
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crdma_names, & fields->f_sd6);
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crmem_names, & fields->f_sd6);
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crmesh_names, & fields->f_sd6);
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, EPIPHANY_OPERAND_SHIFT, (unsigned long *) (& fields->f_shift));
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ errmsg = parse_simm_not_reg (cd, strp, EPIPHANY_OPERAND_SIMM11, (long *) (& fields->f_sdisp11));
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ {
+ bfd_vma value = 0;
+ errmsg = parse_branch_addr (cd, strp, EPIPHANY_OPERAND_SIMM24, 0, NULL, & value);
+ fields->f_simm24 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ errmsg = parse_simm_not_reg (cd, strp, EPIPHANY_OPERAND_SIMM3, (long *) (& fields->f_sdisp3));
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ {
+ bfd_vma value = 0;
+ errmsg = parse_branch_addr (cd, strp, EPIPHANY_OPERAND_SIMM8, 0, NULL, & value);
+ fields->f_simm8 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_SN :
+ errmsg = parse_shortregs (cd, strp, & epiphany_cgen_opval_cr_names, & fields->f_sn);
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_cr_names, & fields->f_sn6);
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crdma_names, & fields->f_sn6);
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crmem_names, & fields->f_sn6);
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ errmsg = cgen_parse_keyword (cd, strp, & epiphany_cgen_opval_crmesh_names, & fields->f_sn6);
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ errmsg = parse_uimm_not_reg (cd, strp, EPIPHANY_OPERAND_SWI_NUM, (unsigned long *) (& fields->f_trap_num));
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, EPIPHANY_OPERAND_TRAPNUM6, (unsigned long *) (& fields->f_trap_num));
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while parsing.\n"), opindex);
+ abort ();
+ }
+
+ return errmsg;
+}
+
+cgen_parse_fn * const epiphany_cgen_parse_handlers[] =
+{
+ parse_insn_normal,
+};
+
+void
+epiphany_cgen_init_asm (CGEN_CPU_DESC cd)
+{
+ epiphany_cgen_init_opcode_table (cd);
+ epiphany_cgen_init_ibld_table (cd);
+ cd->parse_handlers = & epiphany_cgen_parse_handlers[0];
+ cd->parse_operand = epiphany_cgen_parse_operand;
+#ifdef CGEN_ASM_INIT_HOOK
+CGEN_ASM_INIT_HOOK
+#endif
+}
+
+
+
+/* Regex construction routine.
+
+ This translates an opcode syntax string into a regex string,
+ by replacing any non-character syntax element (such as an
+ opcode) with the pattern '.*'
+
+ It then compiles the regex and stores it in the opcode, for
+ later use by epiphany_cgen_assemble_insn
+
+ Returns NULL for success, an error message for failure. */
+
+char *
+epiphany_cgen_build_insn_regex (CGEN_INSN *insn)
+{
+ CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
+ const char *mnem = CGEN_INSN_MNEMONIC (insn);
+ char rxbuf[CGEN_MAX_RX_ELEMENTS];
+ char *rx = rxbuf;
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+ int reg_err;
+
+ syn = CGEN_SYNTAX_STRING (CGEN_OPCODE_SYNTAX (opc));
+
+ /* Mnemonics come first in the syntax string. */
+ if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
+ return _("missing mnemonic in syntax string");
+ ++syn;
+
+ /* Generate a case sensitive regular expression that emulates case
+ insensitive matching in the "C" locale. We cannot generate a case
+ insensitive regular expression because in Turkish locales, 'i' and 'I'
+ are not equal modulo case conversion. */
+
+ /* Copy the literal mnemonic out of the insn. */
+ for (; *mnem; mnem++)
+ {
+ char c = *mnem;
+
+ if (ISALPHA (c))
+ {
+ *rx++ = '[';
+ *rx++ = TOLOWER (c);
+ *rx++ = TOUPPER (c);
+ *rx++ = ']';
+ }
+ else
+ *rx++ = c;
+ }
+
+ /* Copy any remaining literals from the syntax string into the rx. */
+ for(; * syn != 0 && rx <= rxbuf + (CGEN_MAX_RX_ELEMENTS - 7 - 4); ++syn)
+ {
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ {
+ char c = CGEN_SYNTAX_CHAR (* syn);
+
+ switch (c)
+ {
+ /* Escape any regex metacharacters in the syntax. */
+ case '.': case '[': case '\\':
+ case '*': case '^': case '$':
+
+#ifdef CGEN_ESCAPE_EXTENDED_REGEX
+ case '?': case '{': case '}':
+ case '(': case ')': case '*':
+ case '|': case '+': case ']':
+#endif
+ *rx++ = '\\';
+ *rx++ = c;
+ break;
+
+ default:
+ if (ISALPHA (c))
+ {
+ *rx++ = '[';
+ *rx++ = TOLOWER (c);
+ *rx++ = TOUPPER (c);
+ *rx++ = ']';
+ }
+ else
+ *rx++ = c;
+ break;
+ }
+ }
+ else
+ {
+ /* Replace non-syntax fields with globs. */
+ *rx++ = '.';
+ *rx++ = '*';
+ }
+ }
+
+ /* Trailing whitespace ok. */
+ * rx++ = '[';
+ * rx++ = ' ';
+ * rx++ = '\t';
+ * rx++ = ']';
+ * rx++ = '*';
+
+ /* But anchor it after that. */
+ * rx++ = '$';
+ * rx = '\0';
+
+ CGEN_INSN_RX (insn) = xmalloc (sizeof (regex_t));
+ reg_err = regcomp ((regex_t *) CGEN_INSN_RX (insn), rxbuf, REG_NOSUB);
+
+ if (reg_err == 0)
+ return NULL;
+ else
+ {
+ static char msg[80];
+
+ regerror (reg_err, (regex_t *) CGEN_INSN_RX (insn), msg, 80);
+ regfree ((regex_t *) CGEN_INSN_RX (insn));
+ free (CGEN_INSN_RX (insn));
+ (CGEN_INSN_RX (insn)) = NULL;
+ return msg;
+ }
+}
+
+
+/* Default insn parser.
+
+ The syntax string is scanned and operands are parsed and stored in FIELDS.
+ Relocs are queued as we go via other callbacks.
+
+ ??? Note that this is currently an all-or-nothing parser. If we fail to
+ parse the instruction, we return 0 and the caller will start over from
+ the beginning. Backtracking will be necessary in parsing subexpressions,
+ but that can be handled there. Not handling backtracking here may get
+ expensive in the case of the m68k. Deal with later.
+
+ Returns NULL for success, an error message for failure. */
+
+static const char *
+parse_insn_normal (CGEN_CPU_DESC cd,
+ const CGEN_INSN *insn,
+ const char **strp,
+ CGEN_FIELDS *fields)
+{
+ /* ??? Runtime added insns not handled yet. */
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ const char *str = *strp;
+ const char *errmsg;
+ const char *p;
+ const CGEN_SYNTAX_CHAR_TYPE * syn;
+#ifdef CGEN_MNEMONIC_OPERANDS
+ /* FIXME: wip */
+ int past_opcode_p;
+#endif
+
+ /* For now we assume the mnemonic is first (there are no leading operands).
+ We can parse it without needing to set up operand parsing.
+ GAS's input scrubber will ensure mnemonics are lowercase, but we may
+ not be called from GAS. */
+ p = CGEN_INSN_MNEMONIC (insn);
+ while (*p && TOLOWER (*p) == TOLOWER (*str))
+ ++p, ++str;
+
+ if (* p)
+ return _("unrecognized instruction");
+
+#ifndef CGEN_MNEMONIC_OPERANDS
+ if (* str && ! ISSPACE (* str))
+ return _("unrecognized instruction");
+#endif
+
+ CGEN_INIT_PARSE (cd);
+ cgen_init_parse_operand (cd);
+#ifdef CGEN_MNEMONIC_OPERANDS
+ past_opcode_p = 0;
+#endif
+
+ /* We don't check for (*str != '\0') here because we want to parse
+ any trailing fake arguments in the syntax string. */
+ syn = CGEN_SYNTAX_STRING (syntax);
+
+ /* Mnemonics come first for now, ensure valid string. */
+ if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
+ abort ();
+
+ ++syn;
+
+ while (* syn != 0)
+ {
+ /* Non operand chars must match exactly. */
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ {
+ /* FIXME: While we allow for non-GAS callers above, we assume the
+ first char after the mnemonic part is a space. */
+ /* FIXME: We also take inappropriate advantage of the fact that
+ GAS's input scrubber will remove extraneous blanks. */
+ if (TOLOWER (*str) == TOLOWER (CGEN_SYNTAX_CHAR (* syn)))
+ {
+#ifdef CGEN_MNEMONIC_OPERANDS
+ if (CGEN_SYNTAX_CHAR(* syn) == ' ')
+ past_opcode_p = 1;
+#endif
+ ++ syn;
+ ++ str;
+ }
+ else if (*str)
+ {
+ /* Syntax char didn't match. Can't be this insn. */
+ static char msg [80];
+
+ /* xgettext:c-format */
+ sprintf (msg, _("syntax error (expected char `%c', found `%c')"),
+ CGEN_SYNTAX_CHAR(*syn), *str);
+ return msg;
+ }
+ else
+ {
+ /* Ran out of input. */
+ static char msg [80];
+
+ /* xgettext:c-format */
+ sprintf (msg, _("syntax error (expected char `%c', found end of instruction)"),
+ CGEN_SYNTAX_CHAR(*syn));
+ return msg;
+ }
+ continue;
+ }
+
+#ifdef CGEN_MNEMONIC_OPERANDS
+ (void) past_opcode_p;
+#endif
+ /* We have an operand of some sort. */
+ errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn), &str, fields);
+ if (errmsg)
+ return errmsg;
+
+ /* Done with this operand, continue with next one. */
+ ++ syn;
+ }
+
+ /* If we're at the end of the syntax string, we're done. */
+ if (* syn == 0)
+ {
+ /* FIXME: For the moment we assume a valid `str' can only contain
+ blanks now. IE: We needn't try again with a longer version of
+ the insn and it is assumed that longer versions of insns appear
+ before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3). */
+ while (ISSPACE (* str))
+ ++ str;
+
+ if (* str != '\0')
+ return _("junk at end of line"); /* FIXME: would like to include `str' */
+
+ return NULL;
+ }
+
+ /* We couldn't parse it. */
+ return _("unrecognized instruction");
+}
+
+/* Main entry point.
+ This routine is called for each instruction to be assembled.
+ STR points to the insn to be assembled.
+ We assume all necessary tables have been initialized.
+ The assembled instruction, less any fixups, is stored in BUF.
+ Remember that if CGEN_INT_INSN_P then BUF is an int and thus the value
+ still needs to be converted to target byte order, otherwise BUF is an array
+ of bytes in target byte order.
+ The result is a pointer to the insn's entry in the opcode table,
+ or NULL if an error occured (an error message will have already been
+ printed).
+
+ Note that when processing (non-alias) macro-insns,
+ this function recurses.
+
+ ??? It's possible to make this cpu-independent.
+ One would have to deal with a few minor things.
+ At this point in time doing so would be more of a curiosity than useful
+ [for example this file isn't _that_ big], but keeping the possibility in
+ mind helps keep the design clean. */
+
+const CGEN_INSN *
+epiphany_cgen_assemble_insn (CGEN_CPU_DESC cd,
+ const char *str,
+ CGEN_FIELDS *fields,
+ CGEN_INSN_BYTES_PTR buf,
+ char **errmsg)
+{
+ const char *start;
+ CGEN_INSN_LIST *ilist;
+ const char *parse_errmsg = NULL;
+ const char *insert_errmsg = NULL;
+ int recognized_mnemonic = 0;
+
+ /* Skip leading white space. */
+ while (ISSPACE (* str))
+ ++ str;
+
+ /* The instructions are stored in hashed lists.
+ Get the first in the list. */
+ ilist = CGEN_ASM_LOOKUP_INSN (cd, str);
+
+ /* Keep looking until we find a match. */
+ start = str;
+ for ( ; ilist != NULL ; ilist = CGEN_ASM_NEXT_INSN (ilist))
+ {
+ const CGEN_INSN *insn = ilist->insn;
+ recognized_mnemonic = 1;
+
+#ifdef CGEN_VALIDATE_INSN_SUPPORTED
+ /* Not usually needed as unsupported opcodes
+ shouldn't be in the hash lists. */
+ /* Is this insn supported by the selected cpu? */
+ if (! epiphany_cgen_insn_supported (cd, insn))
+ continue;
+#endif
+ /* If the RELAXED attribute is set, this is an insn that shouldn't be
+ chosen immediately. Instead, it is used during assembler/linker
+ relaxation if possible. */
+ if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXED) != 0)
+ continue;
+
+ str = start;
+
+ /* Skip this insn if str doesn't look right lexically. */
+ if (CGEN_INSN_RX (insn) != NULL &&
+ regexec ((regex_t *) CGEN_INSN_RX (insn), str, 0, NULL, 0) == REG_NOMATCH)
+ continue;
+
+ /* Allow parse/insert handlers to obtain length of insn. */
+ CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
+
+ parse_errmsg = CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields);
+ if (parse_errmsg != NULL)
+ continue;
+
+ /* ??? 0 is passed for `pc'. */
+ insert_errmsg = CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf,
+ (bfd_vma) 0);
+ if (insert_errmsg != NULL)
+ continue;
+
+ /* It is up to the caller to actually output the insn and any
+ queued relocs. */
+ return insn;
+ }
+
+ {
+ static char errbuf[150];
+ const char *tmp_errmsg;
+#ifdef CGEN_VERBOSE_ASSEMBLER_ERRORS
+#define be_verbose 1
+#else
+#define be_verbose 0
+#endif
+
+ if (be_verbose)
+ {
+ /* If requesting verbose error messages, use insert_errmsg.
+ Failing that, use parse_errmsg. */
+ tmp_errmsg = (insert_errmsg ? insert_errmsg :
+ parse_errmsg ? parse_errmsg :
+ recognized_mnemonic ?
+ _("unrecognized form of instruction") :
+ _("unrecognized instruction"));
+
+ if (strlen (start) > 50)
+ /* xgettext:c-format */
+ sprintf (errbuf, "%s `%.50s...'", tmp_errmsg, start);
+ else
+ /* xgettext:c-format */
+ sprintf (errbuf, "%s `%.50s'", tmp_errmsg, start);
+ }
+ else
+ {
+ if (strlen (start) > 50)
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s...'"), start);
+ else
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s'"), start);
+ }
+
+ *errmsg = errbuf;
+ return NULL;
+ }
+}
diff --git a/opcodes/epiphany-desc.c b/opcodes/epiphany-desc.c
new file mode 100644
index 0000000000..271f8a78a7
--- /dev/null
+++ b/opcodes/epiphany-desc.c
@@ -0,0 +1,2271 @@
+/* CPU data for epiphany.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996-2010 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+ This file 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+*/
+
+#include "sysdep.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "epiphany-desc.h"
+#include "epiphany-opc.h"
+#include "opintl.h"
+#include "libiberty.h"
+#include "xregex.h"
+
+/* Attributes. */
+
+static const CGEN_ATTR_ENTRY bool_attr[] =
+{
+ { "#f", 0 },
+ { "#t", 1 },
+ { 0, 0 }
+};
+
+static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
+{
+ { "base", MACH_BASE },
+ { "epiphany32", MACH_EPIPHANY32 },
+ { "max", MACH_MAX },
+ { 0, 0 }
+};
+
+static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
+{
+ { "epiphany", ISA_EPIPHANY },
+ { "max", ISA_MAX },
+ { 0, 0 }
+};
+
+const CGEN_ATTR_TABLE epiphany_cgen_ifield_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "RESERVED", &bool_attr[0], &bool_attr[0] },
+ { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
+ { "SIGNED", &bool_attr[0], &bool_attr[0] },
+ { "RELOC", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE epiphany_cgen_hardware_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "PC", &bool_attr[0], &bool_attr[0] },
+ { "PROFILE", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE epiphany_cgen_operand_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
+ { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
+ { "SIGNED", &bool_attr[0], &bool_attr[0] },
+ { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
+ { "RELAX", &bool_attr[0], &bool_attr[0] },
+ { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
+ { "RELOC", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+const CGEN_ATTR_TABLE epiphany_cgen_insn_attr_table[] =
+{
+ { "MACH", & MACH_attr[0], & MACH_attr[0] },
+ { "ALIAS", &bool_attr[0], &bool_attr[0] },
+ { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
+ { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
+ { "COND-CTI", &bool_attr[0], &bool_attr[0] },
+ { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
+ { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
+ { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
+ { "RELAXED", &bool_attr[0], &bool_attr[0] },
+ { "NO-DIS", &bool_attr[0], &bool_attr[0] },
+ { "PBB", &bool_attr[0], &bool_attr[0] },
+ { "SHORT-INSN", &bool_attr[0], &bool_attr[0] },
+ { "IMM3", &bool_attr[0], &bool_attr[0] },
+ { "IMM8", &bool_attr[0], &bool_attr[0] },
+ { 0, 0, 0 }
+};
+
+/* Instruction set variants. */
+
+static const CGEN_ISA epiphany_cgen_isa_table[] = {
+ { "epiphany", 32, 32, 16, 32 },
+ { 0, 0, 0, 0, 0 }
+};
+
+/* Machine variants. */
+
+static const CGEN_MACH epiphany_cgen_mach_table[] = {
+ { "epiphany32", "epiphany32", MACH_EPIPHANY32, 0 },
+ { 0, 0, 0, 0 }
+};
+
+static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_gr_names_entries[] =
+{
+ { "sb", 9, {0, {{{0, 0}}}}, 0, 0 },
+ { "sl", 10, {0, {{{0, 0}}}}, 0, 0 },
+ { "fp", 11, {0, {{{0, 0}}}}, 0, 0 },
+ { "ip", 12, {0, {{{0, 0}}}}, 0, 0 },
+ { "sp", 13, {0, {{{0, 0}}}}, 0, 0 },
+ { "lr", 14, {0, {{{0, 0}}}}, 0, 0 },
+ { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
+ { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
+ { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
+ { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
+ { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
+ { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
+ { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
+ { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
+ { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
+ { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
+ { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
+ { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
+ { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
+ { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
+ { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
+ { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
+ { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
+ { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
+ { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
+ { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
+ { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
+ { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
+ { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
+ { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
+ { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
+ { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
+ { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
+ { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
+ { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
+ { "r32", 32, {0, {{{0, 0}}}}, 0, 0 },
+ { "r33", 33, {0, {{{0, 0}}}}, 0, 0 },
+ { "r34", 34, {0, {{{0, 0}}}}, 0, 0 },
+ { "r35", 35, {0, {{{0, 0}}}}, 0, 0 },
+ { "r36", 36, {0, {{{0, 0}}}}, 0, 0 },
+ { "r37", 37, {0, {{{0, 0}}}}, 0, 0 },
+ { "r38", 38, {0, {{{0, 0}}}}, 0, 0 },
+ { "r39", 39, {0, {{{0, 0}}}}, 0, 0 },
+ { "r40", 40, {0, {{{0, 0}}}}, 0, 0 },
+ { "r41", 41, {0, {{{0, 0}}}}, 0, 0 },
+ { "r42", 42, {0, {{{0, 0}}}}, 0, 0 },
+ { "r43", 43, {0, {{{0, 0}}}}, 0, 0 },
+ { "r44", 44, {0, {{{0, 0}}}}, 0, 0 },
+ { "r45", 45, {0, {{{0, 0}}}}, 0, 0 },
+ { "r46", 46, {0, {{{0, 0}}}}, 0, 0 },
+ { "r47", 47, {0, {{{0, 0}}}}, 0, 0 },
+ { "r48", 48, {0, {{{0, 0}}}}, 0, 0 },
+ { "r49", 49, {0, {{{0, 0}}}}, 0, 0 },
+ { "r50", 50, {0, {{{0, 0}}}}, 0, 0 },
+ { "r51", 51, {0, {{{0, 0}}}}, 0, 0 },
+ { "r52", 52, {0, {{{0, 0}}}}, 0, 0 },
+ { "r53", 53, {0, {{{0, 0}}}}, 0, 0 },
+ { "r54", 54, {0, {{{0, 0}}}}, 0, 0 },
+ { "r55", 55, {0, {{{0, 0}}}}, 0, 0 },
+ { "r56", 56, {0, {{{0, 0}}}}, 0, 0 },
+ { "r57", 57, {0, {{{0, 0}}}}, 0, 0 },
+ { "r58", 58, {0, {{{0, 0}}}}, 0, 0 },
+ { "r59", 59, {0, {{{0, 0}}}}, 0, 0 },
+ { "r60", 60, {0, {{{0, 0}}}}, 0, 0 },
+ { "r61", 61, {0, {{{0, 0}}}}, 0, 0 },
+ { "r62", 62, {0, {{{0, 0}}}}, 0, 0 },
+ { "r63", 63, {0, {{{0, 0}}}}, 0, 0 },
+ { "a1", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "a2", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "a3", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "a4", 3, {0, {{{0, 0}}}}, 0, 0 },
+ { "v1", 4, {0, {{{0, 0}}}}, 0, 0 },
+ { "v2", 5, {0, {{{0, 0}}}}, 0, 0 },
+ { "v3", 6, {0, {{{0, 0}}}}, 0, 0 },
+ { "v4", 7, {0, {{{0, 0}}}}, 0, 0 },
+ { "v5", 8, {0, {{{0, 0}}}}, 0, 0 },
+ { "v6", 9, {0, {{{0, 0}}}}, 0, 0 },
+ { "v7", 10, {0, {{{0, 0}}}}, 0, 0 },
+ { "v8", 11, {0, {{{0, 0}}}}, 0, 0 }
+};
+
+CGEN_KEYWORD epiphany_cgen_opval_gr_names =
+{
+ & epiphany_cgen_opval_gr_names_entries[0],
+ 82,
+ 0, 0, 0, 0, ""
+};
+
+static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_cr_names_entries[] =
+{
+ { "config", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "status", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "pc", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "debug", 3, {0, {{{0, 0}}}}, 0, 0 },
+ { "iab", 4, {0, {{{0, 0}}}}, 0, 0 },
+ { "lc", 5, {0, {{{0, 0}}}}, 0, 0 },
+ { "ls", 6, {0, {{{0, 0}}}}, 0, 0 },
+ { "le", 7, {0, {{{0, 0}}}}, 0, 0 },
+ { "iret", 8, {0, {{{0, 0}}}}, 0, 0 },
+ { "imask", 9, {0, {{{0, 0}}}}, 0, 0 },
+ { "ilat", 10, {0, {{{0, 0}}}}, 0, 0 },
+ { "ilatst", 11, {0, {{{0, 0}}}}, 0, 0 },
+ { "ilatcl", 12, {0, {{{0, 0}}}}, 0, 0 },
+ { "ipend", 13, {0, {{{0, 0}}}}, 0, 0 },
+ { "ctimer0", 14, {0, {{{0, 0}}}}, 0, 0 },
+ { "ctimer1", 15, {0, {{{0, 0}}}}, 0, 0 },
+ { "hstatus", 16, {0, {{{0, 0}}}}, 0, 0 }
+};
+
+CGEN_KEYWORD epiphany_cgen_opval_cr_names =
+{
+ & epiphany_cgen_opval_cr_names_entries[0],
+ 17,
+ 0, 0, 0, 0, ""
+};
+
+static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crdma_names_entries[] =
+{
+ { "dma0config", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0stride", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0count", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0srcaddr", 3, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0dstaddr", 4, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0auto0", 5, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0auto1", 6, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma0status", 7, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1config", 8, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1stride", 9, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1count", 10, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1srcaddr", 11, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1dstaddr", 12, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1auto0", 13, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1auto1", 14, {0, {{{0, 0}}}}, 0, 0 },
+ { "dma1status", 15, {0, {{{0, 0}}}}, 0, 0 }
+};
+
+CGEN_KEYWORD epiphany_cgen_opval_crdma_names =
+{
+ & epiphany_cgen_opval_crdma_names_entries[0],
+ 16,
+ 0, 0, 0, 0, ""
+};
+
+static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crmem_names_entries[] =
+{
+ { "memconfig", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "memstatus", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "memprotect", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "memreserve", 3, {0, {{{0, 0}}}}, 0, 0 }
+};
+
+CGEN_KEYWORD epiphany_cgen_opval_crmem_names =
+{
+ & epiphany_cgen_opval_crmem_names_entries[0],
+ 4,
+ 0, 0, 0, 0, ""
+};
+
+static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crmesh_names_entries[] =
+{
+ { "meshconfig", 0, {0, {{{0, 0}}}}, 0, 0 },
+ { "coreid", 1, {0, {{{0, 0}}}}, 0, 0 },
+ { "meshmulticast", 2, {0, {{{0, 0}}}}, 0, 0 },
+ { "swreset", 3, {0, {{{0, 0}}}}, 0, 0 }
+};
+
+CGEN_KEYWORD epiphany_cgen_opval_crmesh_names =
+{
+ & epiphany_cgen_opval_crmesh_names_entries[0],
+ 4,
+ 0, 0, 0, 0, ""
+};
+
+
+/* The hardware table. */
+
+#define A(a) (1 << CGEN_HW_##a)
+
+const CGEN_HW_ENTRY epiphany_cgen_hw_table[] =
+{
+ { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-registers", HW_H_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_gr_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-fpregisters", HW_H_FPREGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_gr_names, { 0|A(VIRTUAL)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-zbit", HW_H_ZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-nbit", HW_H_NBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-vbit", HW_H_VBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-vsbit", HW_H_VSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bzbit", HW_H_BZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bnbit", HW_H_BNBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bvbit", HW_H_BVBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bubit", HW_H_BUBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bibit", HW_H_BIBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bcbit", HW_H_BCBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bvsbit", HW_H_BVSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-bisbit", HW_H_BISBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-busbit", HW_H_BUSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-expcause0bit", HW_H_EXPCAUSE0BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-expcause1bit", HW_H_EXPCAUSE1BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-expcause2bit", HW_H_EXPCAUSE2BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-extFstallbit", HW_H_EXTFSTALLBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-trmbit", HW_H_TRMBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-invExcEnbit", HW_H_INVEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-ovfExcEnbit", HW_H_OVFEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-unExcEnbit", HW_H_UNEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer0bit0", HW_H_TIMER0BIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer0bit1", HW_H_TIMER0BIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer0bit2", HW_H_TIMER0BIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer0bit3", HW_H_TIMER0BIT3, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer1bit0", HW_H_TIMER1BIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer1bit1", HW_H_TIMER1BIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer1bit2", HW_H_TIMER1BIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-timer1bit3", HW_H_TIMER1BIT3, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-mbkptEnbit", HW_H_MBKPTENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-clockGateEnbit", HW_H_CLOCKGATEENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit12", HW_H_CORECFGRESBIT12, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit13", HW_H_CORECFGRESBIT13, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit14", HW_H_CORECFGRESBIT14, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit15", HW_H_CORECFGRESBIT15, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit16", HW_H_CORECFGRESBIT16, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit20", HW_H_CORECFGRESBIT20, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit21", HW_H_CORECFGRESBIT21, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit24", HW_H_CORECFGRESBIT24, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit25", HW_H_CORECFGRESBIT25, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit26", HW_H_CORECFGRESBIT26, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit27", HW_H_CORECFGRESBIT27, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit28", HW_H_CORECFGRESBIT28, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit29", HW_H_CORECFGRESBIT29, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit30", HW_H_CORECFGRESBIT30, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coreCfgResBit31", HW_H_CORECFGRESBIT31, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-arithmetic-modebit0", HW_H_ARITHMETIC_MODEBIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-arithmetic-modebit1", HW_H_ARITHMETIC_MODEBIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-arithmetic-modebit2", HW_H_ARITHMETIC_MODEBIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-gidisablebit", HW_H_GIDISABLEBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-kmbit", HW_H_KMBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-caibit", HW_H_CAIBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-sflagbit", HW_H_SFLAGBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-memaddr", HW_H_MEMADDR, CGEN_ASM_NONE, 0, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-core-registers", HW_H_CORE_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_cr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coredma-registers", HW_H_COREDMA_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crdma_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coremem-registers", HW_H_COREMEM_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crmem_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { "h-coremesh-registers", HW_H_COREMESH_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crmesh_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
+};
+
+#undef A
+
+
+/* The instruction field table. */
+
+#define A(a) (1 << CGEN_IFLD_##a)
+
+const CGEN_IFLD epiphany_cgen_ifld_table[] =
+{
+ { EPIPHANY_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC, "f-opc", 0, 32, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_4_1, "f-opc-4-1", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_6_3, "f-opc-6-3", 0, 32, 6, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_8_5, "f-opc-8-5", 0, 32, 8, 5, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_19_4, "f-opc-19-4", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_CONDCODE, "f-condcode", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SECONDARY_CCS, "f-secondary-ccs", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SHIFT, "f-shift", 0, 32, 9, 5, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_WORDSIZE, "f-wordsize", 0, 32, 6, 2, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_STORE, "f-store", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_8_1, "f-opc-8-1", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_OPC_31_32, "f-opc-31-32", 0, 32, 31, 32, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SIMM8, "f-simm8", 0, 32, 15, 8, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SIMM24, "f-simm24", 0, 32, 31, 24, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SDISP3, "f-sdisp3", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DISP3, "f-disp3", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DISP8, "f-disp8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_IMM8, "f-imm8", 0, 32, 12, 8, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_IMM_27_8, "f-imm-27-8", 0, 32, 27, 8, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_ADDSUBX, "f-addsubx", 0, 32, 20, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SUBD, "f-subd", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_PM, "f-pm", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RM, "f-rm", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RN, "f-rn", 0, 32, 12, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RD, "f-rd", 0, 32, 15, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RM_X, "f-rm-x", 0, 32, 25, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RN_X, "f-rn-x", 0, 32, 28, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RD_X, "f-rd-x", 0, 32, 31, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_9_1, "f-dc-9-1", 0, 32, 9, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SN, "f-sn", 0, 32, 12, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SD, "f-sd", 0, 32, 15, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SN_X, "f-sn-x", 0, 32, 28, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SD_X, "f-sd-x", 0, 32, 31, 3, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_7_4, "f-dc-7-4", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_TRAP_SWI_9_1, "f-trap-swi-9-1", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_GIEN_GIDIS_9_1, "f-gien-gidis-9-1", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_15_3, "f-dc-15-3", 0, 32, 15, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_15_7, "f-dc-15-7", 0, 32, 15, 7, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_15_6, "f-dc-15-6", 0, 32, 15, 6, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_TRAP_NUM, "f-trap-num", 0, 32, 15, 6, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_20_1, "f-dc-20-1", 0, 32, 20, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_21_1, "f-dc-21-1", 0, 32, 21, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_21_2, "f-dc-21-2", 0, 32, 21, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_22_3, "f-dc-22-3", 0, 32, 22, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_22_2, "f-dc-22-2", 0, 32, 22, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_22_1, "f-dc-22-1", 0, 32, 22, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_25_6, "f-dc-25-6", 0, 32, 25, 6, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_25_4, "f-dc-25-4", 0, 32, 25, 4, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_25_2, "f-dc-25-2", 0, 32, 25, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_25_1, "f-dc-25-1", 0, 32, 25, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_28_1, "f-dc-28-1", 0, 32, 28, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DC_31_3, "f-dc-31-3", 0, 32, 31, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_DISP11, "f-disp11", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SDISP11, "f-sdisp11", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_IMM16, "f-imm16", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RD6, "f-rd6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RN6, "f-rn6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_RM6, "f-rm6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SD6, "f-sd6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { EPIPHANY_F_SN6, "f-sn6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+ { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
+};
+
+#undef A
+
+
+
+/* multi ifield declarations */
+
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_DISP11_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SDISP11_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_IMM16_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RD6_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RN6_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RM6_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SD6_MULTI_IFIELD [];
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SN6_MULTI_IFIELD [];
+
+
+/* multi ifield definitions */
+
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_DISP11_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP8] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SDISP11_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP8] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_IMM16_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM8] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM_27_8] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RD6_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD_X] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RN6_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN_X] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RM6_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM_X] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SD6_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD_X] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD] } },
+ { 0, { (const PTR) 0 } }
+};
+const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SN6_MULTI_IFIELD [] =
+{
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN_X] } },
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN] } },
+ { 0, { (const PTR) 0 } }
+};
+
+/* The operand table. */
+
+#define A(a) (1 << CGEN_OPERAND_##a)
+#define OPERAND(op) EPIPHANY_OPERAND_##op
+
+const CGEN_OPERAND epiphany_cgen_operand_table[] =
+{
+/* pc: program counter */
+ { "pc", EPIPHANY_OPERAND_PC, HW_H_PC, 0, 0,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_NIL] } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* zbit: integer zero bit */
+ { "zbit", EPIPHANY_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* nbit: integer neg bit */
+ { "nbit", EPIPHANY_OPERAND_NBIT, HW_H_NBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* cbit: integer carry bit */
+ { "cbit", EPIPHANY_OPERAND_CBIT, HW_H_CBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* vbit: integer overflow bit */
+ { "vbit", EPIPHANY_OPERAND_VBIT, HW_H_VBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bzbit: floating point zero bit */
+ { "bzbit", EPIPHANY_OPERAND_BZBIT, HW_H_BZBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bnbit: floating point neg bit */
+ { "bnbit", EPIPHANY_OPERAND_BNBIT, HW_H_BNBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bvbit: floating point ovfl bit */
+ { "bvbit", EPIPHANY_OPERAND_BVBIT, HW_H_BVBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bcbit: floating point carry bit */
+ { "bcbit", EPIPHANY_OPERAND_BCBIT, HW_H_BCBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bubit: floating point underfl bit */
+ { "bubit", EPIPHANY_OPERAND_BUBIT, HW_H_BUBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bibit: floating point invalid bit */
+ { "bibit", EPIPHANY_OPERAND_BIBIT, HW_H_BIBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* vsbit: integer overflow sticky */
+ { "vsbit", EPIPHANY_OPERAND_VSBIT, HW_H_VSBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bvsbit: floating point overflow sticky */
+ { "bvsbit", EPIPHANY_OPERAND_BVSBIT, HW_H_BVSBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* bisbit: floating point invalid sticky */
+ { "bisbit", EPIPHANY_OPERAND_BISBIT, HW_H_BISBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* busbit: floating point underflow sticky */
+ { "busbit", EPIPHANY_OPERAND_BUSBIT, HW_H_BUSBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* expcause0bit: exceprion cause bit0 */
+ { "expcause0bit", EPIPHANY_OPERAND_EXPCAUSE0BIT, HW_H_EXPCAUSE0BIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* expcause1bit: exceprion cause bit1 */
+ { "expcause1bit", EPIPHANY_OPERAND_EXPCAUSE1BIT, HW_H_EXPCAUSE1BIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* expcause2bit: external load stalled bit */
+ { "expcause2bit", EPIPHANY_OPERAND_EXPCAUSE2BIT, HW_H_EXPCAUSE2BIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* extFstallbit: external fetch stalled bit */
+ { "extFstallbit", EPIPHANY_OPERAND_EXTFSTALLBIT, HW_H_EXTFSTALLBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* trmbit: 0=round to nearest, 1=trunacte selct bit */
+ { "trmbit", EPIPHANY_OPERAND_TRMBIT, HW_H_TRMBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* invExcEnbit: invalid exception enable bit */
+ { "invExcEnbit", EPIPHANY_OPERAND_INVEXCENBIT, HW_H_INVEXCENBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* ovfExcEnbit: overflow exception enable bit */
+ { "ovfExcEnbit", EPIPHANY_OPERAND_OVFEXCENBIT, HW_H_OVFEXCENBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* unExcEnbit: underflow exception enable bit */
+ { "unExcEnbit", EPIPHANY_OPERAND_UNEXCENBIT, HW_H_UNEXCENBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer0bit0: timer 0 mode selection 0 */
+ { "timer0bit0", EPIPHANY_OPERAND_TIMER0BIT0, HW_H_TIMER0BIT0, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer0bit1: timer 0 mode selection 1 */
+ { "timer0bit1", EPIPHANY_OPERAND_TIMER0BIT1, HW_H_TIMER0BIT1, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer0bit2: timer 0 mode selection 2 */
+ { "timer0bit2", EPIPHANY_OPERAND_TIMER0BIT2, HW_H_TIMER0BIT2, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer0bit3: timer 0 mode selection 3 */
+ { "timer0bit3", EPIPHANY_OPERAND_TIMER0BIT3, HW_H_TIMER0BIT3, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer1bit0: timer 1 mode selection 0 */
+ { "timer1bit0", EPIPHANY_OPERAND_TIMER1BIT0, HW_H_TIMER1BIT0, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer1bit1: timer 1 mode selection 1 */
+ { "timer1bit1", EPIPHANY_OPERAND_TIMER1BIT1, HW_H_TIMER1BIT1, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer1bit2: timer 1 mode selection 2 */
+ { "timer1bit2", EPIPHANY_OPERAND_TIMER1BIT2, HW_H_TIMER1BIT2, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* timer1bit3: timer 1 mode selection 3 */
+ { "timer1bit3", EPIPHANY_OPERAND_TIMER1BIT3, HW_H_TIMER1BIT3, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* mbkptEnbit: multicore bkpt enable */
+ { "mbkptEnbit", EPIPHANY_OPERAND_MBKPTENBIT, HW_H_MBKPTENBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* clockGateEnbit: clock gate enable enable */
+ { "clockGateEnbit", EPIPHANY_OPERAND_CLOCKGATEENBIT, HW_H_CLOCKGATEENBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* arithmetic-modebit0: arithmetic mode bit0 */
+ { "arithmetic-modebit0", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT0, HW_H_ARITHMETIC_MODEBIT0, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* arithmetic-modebit1: arithmetic mode bit1 */
+ { "arithmetic-modebit1", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT1, HW_H_ARITHMETIC_MODEBIT1, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* arithmetic-modebit2: arithmetic mode bit2 */
+ { "arithmetic-modebit2", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT2, HW_H_ARITHMETIC_MODEBIT2, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit12: core config bit 12 */
+ { "coreCfgResBit12", EPIPHANY_OPERAND_CORECFGRESBIT12, HW_H_CORECFGRESBIT12, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit13: core config bit 13 */
+ { "coreCfgResBit13", EPIPHANY_OPERAND_CORECFGRESBIT13, HW_H_CORECFGRESBIT13, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit14: core config bit 14 */
+ { "coreCfgResBit14", EPIPHANY_OPERAND_CORECFGRESBIT14, HW_H_CORECFGRESBIT14, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit15: core config bit 15 */
+ { "coreCfgResBit15", EPIPHANY_OPERAND_CORECFGRESBIT15, HW_H_CORECFGRESBIT15, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit16: core config bit 16 */
+ { "coreCfgResBit16", EPIPHANY_OPERAND_CORECFGRESBIT16, HW_H_CORECFGRESBIT16, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit20: core config bit 20 */
+ { "coreCfgResBit20", EPIPHANY_OPERAND_CORECFGRESBIT20, HW_H_CORECFGRESBIT20, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit21: core config bit 21 */
+ { "coreCfgResBit21", EPIPHANY_OPERAND_CORECFGRESBIT21, HW_H_CORECFGRESBIT21, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit24: core config bit 24 */
+ { "coreCfgResBit24", EPIPHANY_OPERAND_CORECFGRESBIT24, HW_H_CORECFGRESBIT24, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit25: core config bit 25 */
+ { "coreCfgResBit25", EPIPHANY_OPERAND_CORECFGRESBIT25, HW_H_CORECFGRESBIT25, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit26: core config bit 26 */
+ { "coreCfgResBit26", EPIPHANY_OPERAND_CORECFGRESBIT26, HW_H_CORECFGRESBIT26, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit27: core config bit 27 */
+ { "coreCfgResBit27", EPIPHANY_OPERAND_CORECFGRESBIT27, HW_H_CORECFGRESBIT27, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit28: core config bit 28 */
+ { "coreCfgResBit28", EPIPHANY_OPERAND_CORECFGRESBIT28, HW_H_CORECFGRESBIT28, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit29: core config bit 29 */
+ { "coreCfgResBit29", EPIPHANY_OPERAND_CORECFGRESBIT29, HW_H_CORECFGRESBIT29, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit30: core config bit 30 */
+ { "coreCfgResBit30", EPIPHANY_OPERAND_CORECFGRESBIT30, HW_H_CORECFGRESBIT30, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* coreCfgResBit31: core config bit 31 */
+ { "coreCfgResBit31", EPIPHANY_OPERAND_CORECFGRESBIT31, HW_H_CORECFGRESBIT31, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* gidisablebit: global interrupt disable bit */
+ { "gidisablebit", EPIPHANY_OPERAND_GIDISABLEBIT, HW_H_GIDISABLEBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* kmbit: kernel mode bit */
+ { "kmbit", EPIPHANY_OPERAND_KMBIT, HW_H_KMBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* caibit: core actibe indicator bit */
+ { "caibit", EPIPHANY_OPERAND_CAIBIT, HW_H_CAIBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* sflagbit: sflag bit */
+ { "sflagbit", EPIPHANY_OPERAND_SFLAGBIT, HW_H_SFLAGBIT, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* memaddr: memory effective address */
+ { "memaddr", EPIPHANY_OPERAND_MEMADDR, HW_H_MEMADDR, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
+/* simm24: branch address pc-relative */
+ { "simm24", EPIPHANY_OPERAND_SIMM24, HW_H_IADDR, 31, 24,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SIMM24] } },
+ { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
+/* simm8: branch address pc-relative */
+ { "simm8", EPIPHANY_OPERAND_SIMM8, HW_H_IADDR, 15, 8,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SIMM8] } },
+ { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
+/* rd: destination register */
+ { "rd", EPIPHANY_OPERAND_RD, HW_H_REGISTERS, 15, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* rn: source register */
+ { "rn", EPIPHANY_OPERAND_RN, HW_H_REGISTERS, 12, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* rm: source register */
+ { "rm", EPIPHANY_OPERAND_RM, HW_H_REGISTERS, 9, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* frd: fp destination register */
+ { "frd", EPIPHANY_OPERAND_FRD, HW_H_FPREGISTERS, 15, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* frn: fp source register */
+ { "frn", EPIPHANY_OPERAND_FRN, HW_H_FPREGISTERS, 12, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* frm: fp source register */
+ { "frm", EPIPHANY_OPERAND_FRM, HW_H_FPREGISTERS, 9, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* rd6: destination register */
+ { "rd6", EPIPHANY_OPERAND_RD6, HW_H_REGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* rn6: source register */
+ { "rn6", EPIPHANY_OPERAND_RN6, HW_H_REGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* rm6: source register */
+ { "rm6", EPIPHANY_OPERAND_RM6, HW_H_REGISTERS, 9, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RM6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* frd6: fp destination register */
+ { "frd6", EPIPHANY_OPERAND_FRD6, HW_H_FPREGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* frn6: fp source register */
+ { "frn6", EPIPHANY_OPERAND_FRN6, HW_H_FPREGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* frm6: fp source register */
+ { "frm6", EPIPHANY_OPERAND_FRM6, HW_H_FPREGISTERS, 9, 6,
+ { 2, { (const PTR) &EPIPHANY_F_RM6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sd: special destination */
+ { "sd", EPIPHANY_OPERAND_SD, HW_H_CORE_REGISTERS, 15, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* sn: special source */
+ { "sn", EPIPHANY_OPERAND_SN, HW_H_CORE_REGISTERS, 12, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* sd6: special destination register */
+ { "sd6", EPIPHANY_OPERAND_SD6, HW_H_CORE_REGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sn6: special source register */
+ { "sn6", EPIPHANY_OPERAND_SN6, HW_H_CORE_REGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sddma: dma register */
+ { "sddma", EPIPHANY_OPERAND_SDDMA, HW_H_COREDMA_REGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sndma: dma register */
+ { "sndma", EPIPHANY_OPERAND_SNDMA, HW_H_COREDMA_REGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sdmem: mem register */
+ { "sdmem", EPIPHANY_OPERAND_SDMEM, HW_H_COREMEM_REGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* snmem: mem register */
+ { "snmem", EPIPHANY_OPERAND_SNMEM, HW_H_COREMEM_REGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* sdmesh: mesh register */
+ { "sdmesh", EPIPHANY_OPERAND_SDMESH, HW_H_COREMESH_REGISTERS, 15, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* snmesh: mesh register */
+ { "snmesh", EPIPHANY_OPERAND_SNMESH, HW_H_COREMESH_REGISTERS, 12, 6,
+ { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* simm3: signed 3-bit literal */
+ { "simm3", EPIPHANY_OPERAND_SIMM3, HW_H_SINT, 9, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SDISP3] } },
+ { 0|A(RELAX), { { { (1<<MACH_BASE), 0 } } } } },
+/* simm11: signed 11-bit literal */
+ { "simm11", EPIPHANY_OPERAND_SIMM11, HW_H_SINT, 9, 11,
+ { 2, { (const PTR) &EPIPHANY_F_SDISP11_MULTI_IFIELD[0] } },
+ { 0|A(RELAX)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* disp3: short data displacement */
+ { "disp3", EPIPHANY_OPERAND_DISP3, HW_H_UINT, 9, 3,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* trapnum6: parameter for swi or trap */
+ { "trapnum6", EPIPHANY_OPERAND_TRAPNUM6, HW_H_UINT, 15, 6,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_TRAP_NUM] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* swi_num: unsigned 6-bit swi# */
+ { "swi_num", EPIPHANY_OPERAND_SWI_NUM, HW_H_UINT, 15, 6,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_TRAP_NUM] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* disp11: sign-magnitude data displacement */
+ { "disp11", EPIPHANY_OPERAND_DISP11, HW_H_UINT, 9, 11,
+ { 2, { (const PTR) &EPIPHANY_F_DISP11_MULTI_IFIELD[0] } },
+ { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* shift: immediate shift amount */
+ { "shift", EPIPHANY_OPERAND_SHIFT, HW_H_UINT, 9, 5,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SHIFT] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* imm16: 16-bit unsigned literal */
+ { "imm16", EPIPHANY_OPERAND_IMM16, HW_H_ADDR, 12, 16,
+ { 2, { (const PTR) &EPIPHANY_F_IMM16_MULTI_IFIELD[0] } },
+ { 0|A(RELAX)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
+/* imm8: 8-bit unsigned literal */
+ { "imm8", EPIPHANY_OPERAND_IMM8, HW_H_ADDR, 12, 8,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM8] } },
+ { 0|A(RELAX), { { { (1<<MACH_BASE), 0 } } } } },
+/* direction: +/- indexing */
+ { "direction", EPIPHANY_OPERAND_DIRECTION, HW_H_UINT, 20, 1,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_ADDSUBX] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* dpmi: +/- magnitude immediate displacement */
+ { "dpmi", EPIPHANY_OPERAND_DPMI, HW_H_UINT, 24, 1,
+ { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SUBD] } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* sentinel */
+ { 0, 0, 0, 0, 0,
+ { 0, { (const PTR) 0 } },
+ { 0, { { { (1<<MACH_BASE), 0 } } } } }
+};
+
+#undef A
+
+
+/* The instruction table. */
+
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+#define A(a) (1 << CGEN_INSN_##a)
+
+static const CGEN_IBASE epiphany_cgen_insn_table[MAX_INSNS] =
+{
+ /* Special null first entry.
+ A `num' value of zero is thus invalid.
+ Also, the special `invalid' insn resides here. */
+ { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
+/* beq.s $simm8 */
+ {
+ EPIPHANY_INSN_BEQ16, "beq16", "beq.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* beq.l $simm24 */
+ {
+ EPIPHANY_INSN_BEQ, "beq", "beq.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bne.s $simm8 */
+ {
+ EPIPHANY_INSN_BNE16, "bne16", "bne.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bne.l $simm24 */
+ {
+ EPIPHANY_INSN_BNE, "bne", "bne.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgtu.s $simm8 */
+ {
+ EPIPHANY_INSN_BGTU16, "bgtu16", "bgtu.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgtu.l $simm24 */
+ {
+ EPIPHANY_INSN_BGTU, "bgtu", "bgtu.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgteu.s $simm8 */
+ {
+ EPIPHANY_INSN_BGTEU16, "bgteu16", "bgteu.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgteu.l $simm24 */
+ {
+ EPIPHANY_INSN_BGTEU, "bgteu", "bgteu.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blteu.s $simm8 */
+ {
+ EPIPHANY_INSN_BLTEU16, "blteu16", "blteu.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blteu.l $simm24 */
+ {
+ EPIPHANY_INSN_BLTEU, "blteu", "blteu.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bltu.s $simm8 */
+ {
+ EPIPHANY_INSN_BLTU16, "bltu16", "bltu.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bltu.l $simm24 */
+ {
+ EPIPHANY_INSN_BLTU, "bltu", "bltu.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgt.s $simm8 */
+ {
+ EPIPHANY_INSN_BGT16, "bgt16", "bgt.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgt.l $simm24 */
+ {
+ EPIPHANY_INSN_BGT, "bgt", "bgt.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgte.s $simm8 */
+ {
+ EPIPHANY_INSN_BGTE16, "bgte16", "bgte.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgte.l $simm24 */
+ {
+ EPIPHANY_INSN_BGTE, "bgte", "bgte.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blt.s $simm8 */
+ {
+ EPIPHANY_INSN_BLT16, "blt16", "blt.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blt.l $simm24 */
+ {
+ EPIPHANY_INSN_BLT, "blt", "blt.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blte.s $simm8 */
+ {
+ EPIPHANY_INSN_BLTE16, "blte16", "blte.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blte.l $simm24 */
+ {
+ EPIPHANY_INSN_BLTE, "blte", "blte.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbeq.s $simm8 */
+ {
+ EPIPHANY_INSN_BBEQ16, "bbeq16", "bbeq.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbeq.l $simm24 */
+ {
+ EPIPHANY_INSN_BBEQ, "bbeq", "bbeq.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbne.s $simm8 */
+ {
+ EPIPHANY_INSN_BBNE16, "bbne16", "bbne.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbne.l $simm24 */
+ {
+ EPIPHANY_INSN_BBNE, "bbne", "bbne.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblt.s $simm8 */
+ {
+ EPIPHANY_INSN_BBLT16, "bblt16", "bblt.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblt.l $simm24 */
+ {
+ EPIPHANY_INSN_BBLT, "bblt", "bblt.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblte.s $simm8 */
+ {
+ EPIPHANY_INSN_BBLTE16, "bblte16", "bblte.s", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblte.l $simm24 */
+ {
+ EPIPHANY_INSN_BBLTE, "bblte", "bblte.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* b.s $simm8 */
+ {
+ EPIPHANY_INSN_B16, "b16", "b.s", 16,
+ { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* b.l $simm24 */
+ {
+ EPIPHANY_INSN_B, "b", "b.l", 32,
+ { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bl.s $simm8 */
+ {
+ EPIPHANY_INSN_BL16, "bl16", "bl.s", 16,
+ { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bl.l $simm24 */
+ {
+ EPIPHANY_INSN_BL, "bl", "bl.l", 32,
+ { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* jr $rn */
+ {
+ EPIPHANY_INSN_JR16, "jr16", "jr", 16,
+ { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* rts */
+ {
+ -1, "rts", "rts", 32,
+ { 0|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* jr $rn6 */
+ {
+ EPIPHANY_INSN_JR, "jr", "jr", 32,
+ { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* jalr $rn */
+ {
+ EPIPHANY_INSN_JALR16, "jalr16", "jalr", 16,
+ { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* jalr $rn6 */
+ {
+ EPIPHANY_INSN_JALR, "jalr", "jalr", 32,
+ { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_LDRBX16_S, "ldrbx16.s", "ldrb", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_LDRBP16_S, "ldrbp16.s", "ldrb", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_LDRBX_L, "ldrbx.l", "ldrb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_LDRBP_L, "ldrbp.l", "ldrb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_LDRBD16_S, "ldrbd16.s", "ldrb", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_LDRBD_L, "ldrbd.l", "ldrb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_LDRBDPM_L, "ldrbdpm.l", "ldrb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_LDRHX16_S, "ldrhx16.s", "ldrh", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_LDRHP16_S, "ldrhp16.s", "ldrh", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_LDRHX_L, "ldrhx.l", "ldrh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_LDRHP_L, "ldrhp.l", "ldrh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_LDRHD16_S, "ldrhd16.s", "ldrh", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_LDRHD_L, "ldrhd.l", "ldrh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_LDRHDPM_L, "ldrhdpm.l", "ldrh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_LDRX16_S, "ldrx16.s", "ldr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_LDRP16_S, "ldrp16.s", "ldr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_LDRX_L, "ldrx.l", "ldr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_LDRP_L, "ldrp.l", "ldr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_LDRD16_S, "ldrd16.s", "ldr", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_LDRD_L, "ldrd.l", "ldr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_LDRDPM_L, "ldrdpm.l", "ldr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_LDRDX16_S, "ldrdx16.s", "ldrd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_LDRDP16_S, "ldrdp16.s", "ldrd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_LDRDX_L, "ldrdx.l", "ldrd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_LDRDP_L, "ldrdp.l", "ldrd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_LDRDD16_S, "ldrdd16.s", "ldrd", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_LDRDD_L, "ldrdd.l", "ldrd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_LDRDDPM_L, "ldrddpm.l", "ldrd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testsetb $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_TESTSETBT, "testsetbt", "testsetb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testseth $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_TESTSETHT, "testsetht", "testseth", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testset $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_TESTSETT, "testsett", "testset", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_STRBX16, "strbx16", "strb", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_STRBX, "strbx", "strb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_STRBP16, "strbp16", "strb", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_STRBP, "strbp", "strb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_STRBD16, "strbd16", "strb", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_STRBD, "strbd", "strb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_STRBDPM, "strbdpm", "strb", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_STRHX16, "strhx16", "strh", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_STRHX, "strhx", "strh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_STRHP16, "strhp16", "strh", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_STRHP, "strhp", "strh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_STRHD16, "strhd16", "strh", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_STRHD, "strhd", "strh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_STRHDPM, "strhdpm", "strh", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_STRX16, "strx16", "str", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_STRX, "strx", "str", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_STRP16, "strp16", "str", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_STRP, "strp", "str", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_STRD16, "strd16", "str", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_STRD, "strd", "str", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_STRDPM, "strdpm", "str", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd,[$rn,$rm] */
+ {
+ EPIPHANY_INSN_STRDX16, "strdx16", "strd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd6,[$rn6,$direction$rm6] */
+ {
+ EPIPHANY_INSN_STRDX, "strdx", "strd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd,[$rn],$rm */
+ {
+ EPIPHANY_INSN_STRDP16, "strdp16", "strd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd6,[$rn6],$direction$rm6 */
+ {
+ EPIPHANY_INSN_STRDP, "strdp", "strd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd,[$rn,$disp3] */
+ {
+ EPIPHANY_INSN_STRDD16, "strdd16", "strd", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd6,[$rn6,$dpmi$disp11] */
+ {
+ EPIPHANY_INSN_STRDD, "strdd", "strd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd6,[$rn6],$dpmi$disp11 */
+ {
+ EPIPHANY_INSN_STRDDPM, "strddpm", "strd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* moveq $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16EQ, "cmov16EQ", "moveq", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* moveq $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVEQ, "cmovEQ", "moveq", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movne $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16NE, "cmov16NE", "movne", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movne $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVNE, "cmovNE", "movne", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgtu $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16GTU, "cmov16GTU", "movgtu", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgtu $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVGTU, "cmovGTU", "movgtu", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgteu $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16GTEU, "cmov16GTEU", "movgteu", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgteu $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVGTEU, "cmovGTEU", "movgteu", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlteu $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16LTEU, "cmov16LTEU", "movlteu", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlteu $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVLTEU, "cmovLTEU", "movlteu", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movltu $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16LTU, "cmov16LTU", "movltu", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movltu $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVLTU, "cmovLTU", "movltu", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgt $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16GT, "cmov16GT", "movgt", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgt $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVGT, "cmovGT", "movgt", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgte $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16GTE, "cmov16GTE", "movgte", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgte $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVGTE, "cmovGTE", "movgte", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlt $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16LT, "cmov16LT", "movlt", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlt $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVLT, "cmovLT", "movlt", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlte $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16LTE, "cmov16LTE", "movlte", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlte $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVLTE, "cmovLTE", "movlte", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16B, "cmov16B", "mov", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVB, "cmovB", "mov", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbeq $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16BEQ, "cmov16BEQ", "movbeq", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbeq $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVBEQ, "cmovBEQ", "movbeq", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbne $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16BNE, "cmov16BNE", "movbne", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbne $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVBNE, "cmovBNE", "movbne", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblt $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16BLT, "cmov16BLT", "movblt", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblt $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVBLT, "cmovBLT", "movblt", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblte $rd,$rn */
+ {
+ EPIPHANY_INSN_CMOV16BLTE, "cmov16BLTE", "movblte", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblte $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_CMOVBLTE, "cmovBLTE", "movblte", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts $sn,$rd */
+ {
+ EPIPHANY_INSN_MOVTS16, "movts16", "movts", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts $sn6,$rd6 */
+ {
+ EPIPHANY_INSN_MOVTS6, "movts6", "movts", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts $sndma,$rd6 */
+ {
+ EPIPHANY_INSN_MOVTSDMA, "movtsdma", "movts", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts $snmem,$rd6 */
+ {
+ EPIPHANY_INSN_MOVTSMEM, "movtsmem", "movts", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts $snmesh,$rd6 */
+ {
+ EPIPHANY_INSN_MOVTSMESH, "movtsmesh", "movts", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs $rd,$sn */
+ {
+ EPIPHANY_INSN_MOVFS16, "movfs16", "movfs", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs $rd6,$sn6 */
+ {
+ EPIPHANY_INSN_MOVFS6, "movfs6", "movfs", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs $rd6,$sndma */
+ {
+ EPIPHANY_INSN_MOVFSDMA, "movfsdma", "movfs", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs $rd6,$snmem */
+ {
+ EPIPHANY_INSN_MOVFSMEM, "movfsmem", "movfs", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs $rd6,$snmesh */
+ {
+ EPIPHANY_INSN_MOVFSMESH, "movfsmesh", "movfs", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* nop */
+ {
+ EPIPHANY_INSN_NOP, "nop", "nop", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* snop */
+ {
+ EPIPHANY_INSN_SNOP, "snop", "snop", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* unimpl */
+ {
+ EPIPHANY_INSN_UNIMPL, "unimpl", "unimpl", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* idle */
+ {
+ EPIPHANY_INSN_IDLE, "idle", "idle", 16,
+ { 0, { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bkpt */
+ {
+ EPIPHANY_INSN_BKPT, "bkpt", "bkpt", 16,
+ { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mbkpt */
+ {
+ EPIPHANY_INSN_MBKPT, "mbkpt", "mbkpt", 16,
+ { 0|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* rti */
+ {
+ EPIPHANY_INSN_RTI, "rti", "rti", 16,
+ { 0|A(UNCOND_CTI)|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* wand */
+ {
+ EPIPHANY_INSN_WAND, "wand", "wand", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sync */
+ {
+ EPIPHANY_INSN_SYNC, "sync", "sync", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* gie */
+ {
+ EPIPHANY_INSN_GIEN, "gien", "gie", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* gid */
+ {
+ EPIPHANY_INSN_GIDIS, "gidis", "gid", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* swi $swi_num */
+ {
+ EPIPHANY_INSN_SWI_NUM, "swi_num", "swi", 16,
+ { 0|A(UNCOND_CTI)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* swi */
+ {
+ -1, "swi", "swi", 16,
+ { 0|A(UNCOND_CTI)|A(SHORT_INSN)|A(ALIAS)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* trap $trapnum6 */
+ {
+ EPIPHANY_INSN_TRAP16, "trap16", "trap", 16,
+ { 0|A(UNCOND_CTI)|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_ADD16, "add16", "add", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_ADD, "add", "add", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_SUB16, "sub16", "sub", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_SUB, "sub", "sub", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* and $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_AND16, "and16", "and", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* and $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_AND, "and", "and", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* orr $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_ORR16, "orr16", "orr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* orr $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_ORR, "orr", "orr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* eor $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_EOR16, "eor16", "eor", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* eor $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_EOR, "eor", "eor", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add.s $rd,$rn,$simm3 */
+ {
+ EPIPHANY_INSN_ADDI16, "addi16", "add.s", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add.l $rd6,$rn6,$simm11 */
+ {
+ EPIPHANY_INSN_ADDI, "addi", "add.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub.s $rd,$rn,$simm3 */
+ {
+ EPIPHANY_INSN_SUBI16, "subi16", "sub.s", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub.l $rd6,$rn6,$simm11 */
+ {
+ EPIPHANY_INSN_SUBI, "subi", "sub.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_ASR16, "asr16", "asr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_ASR, "asr", "asr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_LSR16, "lsr16", "lsr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_LSR, "lsr", "lsr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_LSL16, "lsl16", "lsl", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_LSL, "lsl", "lsl", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr $rd,$rn,$shift */
+ {
+ EPIPHANY_INSN_LSRI16, "lsri16", "lsr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr $rd6,$rn6,$shift */
+ {
+ EPIPHANY_INSN_LSRI32, "lsri32", "lsr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl $rd,$rn,$shift */
+ {
+ EPIPHANY_INSN_LSLI16, "lsli16", "lsl", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl $rd6,$rn6,$shift */
+ {
+ EPIPHANY_INSN_LSLI32, "lsli32", "lsl", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr $rd,$rn,$shift */
+ {
+ EPIPHANY_INSN_ASRI16, "asri16", "asr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr $rd6,$rn6,$shift */
+ {
+ EPIPHANY_INSN_ASRI32, "asri32", "asr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bitr $rd,$rn */
+ {
+ EPIPHANY_INSN_BITR16, "bitr16", "bitr", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bitr $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_BITR, "bitr", "bitr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fext $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_FEXT, "fext", "fext", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fdep $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_FDEP, "fdep", "fdep", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lfsr $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_LFSR, "lfsr", "lfsr", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov.b $rd,$imm8 */
+ {
+ EPIPHANY_INSN_MOV8, "mov8", "mov.b", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov.l $rd6,$imm16 */
+ {
+ EPIPHANY_INSN_MOV16, "mov16", "mov.l", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movt $rd6,$imm16 */
+ {
+ EPIPHANY_INSN_MOVT, "movt", "movt", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fadd $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_F_ADDF16, "f_addf16", "fadd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fadd $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_F_ADDF32, "f_addf32", "fadd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fsub $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_F_SUBF16, "f_subf16", "fsub", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fsub $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_F_SUBF32, "f_subf32", "fsub", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmul $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_F_MULF16, "f_mulf16", "fmul", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmul $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_F_MULF32, "f_mulf32", "fmul", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmadd $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_F_MADDF16, "f_maddf16", "fmadd", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmadd $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_F_MADDF32, "f_maddf32", "fmadd", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmsub $rd,$rn,$rm */
+ {
+ EPIPHANY_INSN_F_MSUBF16, "f_msubf16", "fmsub", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmsub $rd6,$rn6,$rm6 */
+ {
+ EPIPHANY_INSN_F_MSUBF32, "f_msubf32", "fmsub", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fabs rd,rn */
+ {
+ EPIPHANY_INSN_F_ABSF16, "f_absf16", "fabs", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fabs $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_F_ABSF32, "f_absf32", "fabs", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* float $rd,$rn */
+ {
+ EPIPHANY_INSN_F_LOATF16, "f_loatf16", "float", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* float $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_F_LOATF32, "f_loatf32", "float", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fix $rd,$rn */
+ {
+ EPIPHANY_INSN_F_IXF16, "f_ixf16", "fix", 16,
+ { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fix $rd6,$rn6 */
+ {
+ EPIPHANY_INSN_F_IXF32, "f_ixf32", "fix", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* frecip $frd6,$frn6 */
+ {
+ EPIPHANY_INSN_F_RECIPF32, "f_recipf32", "frecip", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fsqrt $frd6,$frn6 */
+ {
+ EPIPHANY_INSN_F_SQRTF32, "f_sqrtf32", "fsqrt", 32,
+ { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
+ },
+};
+
+#undef OP
+#undef A
+
+/* Initialize anything needed to be done once, before any cpu_open call. */
+
+static void
+init_tables (void)
+{
+}
+
+static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
+static void build_hw_table (CGEN_CPU_TABLE *);
+static void build_ifield_table (CGEN_CPU_TABLE *);
+static void build_operand_table (CGEN_CPU_TABLE *);
+static void build_insn_table (CGEN_CPU_TABLE *);
+static void epiphany_cgen_rebuild_tables (CGEN_CPU_TABLE *);
+
+/* Subroutine of epiphany_cgen_cpu_open to look up a mach via its bfd name. */
+
+static const CGEN_MACH *
+lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
+{
+ while (table->name)
+ {
+ if (strcmp (name, table->bfd_name) == 0)
+ return table;
+ ++table;
+ }
+ abort ();
+}
+
+/* Subroutine of epiphany_cgen_cpu_open to build the hardware table. */
+
+static void
+build_hw_table (CGEN_CPU_TABLE *cd)
+{
+ int i;
+ int machs = cd->machs;
+ const CGEN_HW_ENTRY *init = & epiphany_cgen_hw_table[0];
+ /* MAX_HW is only an upper bound on the number of selected entries.
+ However each entry is indexed by it's enum so there can be holes in
+ the table. */
+ const CGEN_HW_ENTRY **selected =
+ (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
+
+ cd->hw_table.init_entries = init;
+ cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
+ memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
+ /* ??? For now we just use machs to determine which ones we want. */
+ for (i = 0; init[i].name != NULL; ++i)
+ if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
+ & machs)
+ selected[init[i].type] = &init[i];
+ cd->hw_table.entries = selected;
+ cd->hw_table.num_entries = MAX_HW;
+}
+
+/* Subroutine of epiphany_cgen_cpu_open to build the hardware table. */
+
+static void
+build_ifield_table (CGEN_CPU_TABLE *cd)
+{
+ cd->ifld_table = & epiphany_cgen_ifld_table[0];
+}
+
+/* Subroutine of epiphany_cgen_cpu_open to build the hardware table. */
+
+static void
+build_operand_table (CGEN_CPU_TABLE *cd)
+{
+ int i;
+ int machs = cd->machs;
+ const CGEN_OPERAND *init = & epiphany_cgen_operand_table[0];
+ /* MAX_OPERANDS is only an upper bound on the number of selected entries.
+ However each entry is indexed by it's enum so there can be holes in
+ the table. */
+ const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
+
+ cd->operand_table.init_entries = init;
+ cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
+ memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
+ /* ??? For now we just use mach to determine which ones we want. */
+ for (i = 0; init[i].name != NULL; ++i)
+ if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
+ & machs)
+ selected[init[i].type] = &init[i];
+ cd->operand_table.entries = selected;
+ cd->operand_table.num_entries = MAX_OPERANDS;
+}
+
+/* Subroutine of epiphany_cgen_cpu_open to build the hardware table.
+ ??? This could leave out insns not supported by the specified mach/isa,
+ but that would cause errors like "foo only supported by bar" to become
+ "unknown insn", so for now we include all insns and require the app to
+ do the checking later.
+ ??? On the other hand, parsing of such insns may require their hardware or
+ operand elements to be in the table [which they mightn't be]. */
+
+static void
+build_insn_table (CGEN_CPU_TABLE *cd)
+{
+ int i;
+ const CGEN_IBASE *ib = & epiphany_cgen_insn_table[0];
+ CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
+
+ memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
+ for (i = 0; i < MAX_INSNS; ++i)
+ insns[i].base = &ib[i];
+ cd->insn_table.init_entries = insns;
+ cd->insn_table.entry_size = sizeof (CGEN_IBASE);
+ cd->insn_table.num_init_entries = MAX_INSNS;
+}
+
+/* Subroutine of epiphany_cgen_cpu_open to rebuild the tables. */
+
+static void
+epiphany_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
+{
+ int i;
+ CGEN_BITSET *isas = cd->isas;
+ unsigned int machs = cd->machs;
+
+ cd->int_insn_p = CGEN_INT_INSN_P;
+
+ /* Data derived from the isa spec. */
+#define UNSET (CGEN_SIZE_UNKNOWN + 1)
+ cd->default_insn_bitsize = UNSET;
+ cd->base_insn_bitsize = UNSET;
+ cd->min_insn_bitsize = 65535; /* Some ridiculously big number. */
+ cd->max_insn_bitsize = 0;
+ for (i = 0; i < MAX_ISAS; ++i)
+ if (cgen_bitset_contains (isas, i))
+ {
+ const CGEN_ISA *isa = & epiphany_cgen_isa_table[i];
+
+ /* Default insn sizes of all selected isas must be
+ equal or we set the result to 0, meaning "unknown". */
+ if (cd->default_insn_bitsize == UNSET)
+ cd->default_insn_bitsize = isa->default_insn_bitsize;
+ else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
+ ; /* This is ok. */
+ else
+ cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
+
+ /* Base insn sizes of all selected isas must be equal
+ or we set the result to 0, meaning "unknown". */
+ if (cd->base_insn_bitsize == UNSET)
+ cd->base_insn_bitsize = isa->base_insn_bitsize;
+ else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
+ ; /* This is ok. */
+ else
+ cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
+
+ /* Set min,max insn sizes. */
+ if (isa->min_insn_bitsize < cd->min_insn_bitsize)
+ cd->min_insn_bitsize = isa->min_insn_bitsize;
+ if (isa->max_insn_bitsize > cd->max_insn_bitsize)
+ cd->max_insn_bitsize = isa->max_insn_bitsize;
+ }
+
+ /* Data derived from the mach spec. */
+ for (i = 0; i < MAX_MACHS; ++i)
+ if (((1 << i) & machs) != 0)
+ {
+ const CGEN_MACH *mach = & epiphany_cgen_mach_table[i];
+
+ if (mach->insn_chunk_bitsize != 0)
+ {
+ if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
+ {
+ fprintf (stderr, "epiphany_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
+ cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
+ abort ();
+ }
+
+ cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
+ }
+ }
+
+ /* Determine which hw elements are used by MACH. */
+ build_hw_table (cd);
+
+ /* Build the ifield table. */
+ build_ifield_table (cd);
+
+ /* Determine which operands are used by MACH/ISA. */
+ build_operand_table (cd);
+
+ /* Build the instruction table. */
+ build_insn_table (cd);
+}
+
+/* Initialize a cpu table and return a descriptor.
+ It's much like opening a file, and must be the first function called.
+ The arguments are a set of (type/value) pairs, terminated with
+ CGEN_CPU_OPEN_END.
+
+ Currently supported values:
+ CGEN_CPU_OPEN_ISAS: bitmap of values in enum isa_attr
+ CGEN_CPU_OPEN_MACHS: bitmap of values in enum mach_attr
+ CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
+ CGEN_CPU_OPEN_ENDIAN: specify endian choice
+ CGEN_CPU_OPEN_END: terminates arguments
+
+ ??? Simultaneous multiple isas might not make sense, but it's not (yet)
+ precluded. */
+
+CGEN_CPU_DESC
+epiphany_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
+{
+ CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
+ static int init_p;
+ CGEN_BITSET *isas = 0; /* 0 = "unspecified" */
+ unsigned int machs = 0; /* 0 = "unspecified" */
+ enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
+ va_list ap;
+
+ if (! init_p)
+ {
+ init_tables ();
+ init_p = 1;
+ }
+
+ memset (cd, 0, sizeof (*cd));
+
+ va_start (ap, arg_type);
+ while (arg_type != CGEN_CPU_OPEN_END)
+ {
+ switch (arg_type)
+ {
+ case CGEN_CPU_OPEN_ISAS :
+ isas = va_arg (ap, CGEN_BITSET *);
+ break;
+ case CGEN_CPU_OPEN_MACHS :
+ machs = va_arg (ap, unsigned int);
+ break;
+ case CGEN_CPU_OPEN_BFDMACH :
+ {
+ const char *name = va_arg (ap, const char *);
+ const CGEN_MACH *mach =
+ lookup_mach_via_bfd_name (epiphany_cgen_mach_table, name);
+
+ machs |= 1 << mach->num;
+ break;
+ }
+ case CGEN_CPU_OPEN_ENDIAN :
+ endian = va_arg (ap, enum cgen_endian);
+ break;
+ default :
+ fprintf (stderr, "epiphany_cgen_cpu_open: unsupported argument `%d'\n",
+ arg_type);
+ abort (); /* ??? return NULL? */
+ }
+ arg_type = va_arg (ap, enum cgen_cpu_open_arg);
+ }
+ va_end (ap);
+
+ /* Mach unspecified means "all". */
+ if (machs == 0)
+ machs = (1 << MAX_MACHS) - 1;
+ /* Base mach is always selected. */
+ machs |= 1;
+ if (endian == CGEN_ENDIAN_UNKNOWN)
+ {
+ /* ??? If target has only one, could have a default. */
+ fprintf (stderr, "epiphany_cgen_cpu_open: no endianness specified\n");
+ abort ();
+ }
+
+ cd->isas = cgen_bitset_copy (isas);
+ cd->machs = machs;
+ cd->endian = endian;
+ /* FIXME: for the sparc case we can determine insn-endianness statically.
+ The worry here is where both data and insn endian can be independently
+ chosen, in which case this function will need another argument.
+ Actually, will want to allow for more arguments in the future anyway. */
+ cd->insn_endian = endian;
+
+ /* Table (re)builder. */
+ cd->rebuild_tables = epiphany_cgen_rebuild_tables;
+ epiphany_cgen_rebuild_tables (cd);
+
+ /* Default to not allowing signed overflow. */
+ cd->signed_overflow_ok_p = 0;
+
+ return (CGEN_CPU_DESC) cd;
+}
+
+/* Cover fn to epiphany_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
+ MACH_NAME is the bfd name of the mach. */
+
+CGEN_CPU_DESC
+epiphany_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
+{
+ return epiphany_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
+ CGEN_CPU_OPEN_ENDIAN, endian,
+ CGEN_CPU_OPEN_END);
+}
+
+/* Close a cpu table.
+ ??? This can live in a machine independent file, but there's currently
+ no place to put this file (there's no libcgen). libopcodes is the wrong
+ place as some simulator ports use this but they don't use libopcodes. */
+
+void
+epiphany_cgen_cpu_close (CGEN_CPU_DESC cd)
+{
+ unsigned int i;
+ const CGEN_INSN *insns;
+
+ if (cd->macro_insn_table.init_entries)
+ {
+ insns = cd->macro_insn_table.init_entries;
+ for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
+ if (CGEN_INSN_RX ((insns)))
+ regfree (CGEN_INSN_RX (insns));
+ }
+
+ if (cd->insn_table.init_entries)
+ {
+ insns = cd->insn_table.init_entries;
+ for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
+ if (CGEN_INSN_RX (insns))
+ regfree (CGEN_INSN_RX (insns));
+ }
+
+ if (cd->macro_insn_table.init_entries)
+ free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
+
+ if (cd->insn_table.init_entries)
+ free ((CGEN_INSN *) cd->insn_table.init_entries);
+
+ if (cd->hw_table.entries)
+ free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
+
+ if (cd->operand_table.entries)
+ free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
+
+ free (cd);
+}
+
diff --git a/opcodes/epiphany-desc.h b/opcodes/epiphany-desc.h
new file mode 100644
index 0000000000..430210e2b5
--- /dev/null
+++ b/opcodes/epiphany-desc.h
@@ -0,0 +1,402 @@
+/* CPU data header for epiphany.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996-2010 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+ This file 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+*/
+
+#ifndef EPIPHANY_CPU_H
+#define EPIPHANY_CPU_H
+
+#define CGEN_ARCH epiphany
+
+/* Given symbol S, return epiphany_cgen_<S>. */
+#define CGEN_SYM(s) epiphany##_cgen_##s
+
+
+/* Selected cpu families. */
+#define HAVE_CPU_EPIPHANYBF
+#define HAVE_CPU_EPIPHANYMF
+
+#define CGEN_INSN_LSB0_P 1
+
+/* Minimum size of any insn (in bytes). */
+#define CGEN_MIN_INSN_SIZE 2
+
+/* Maximum size of any insn (in bytes). */
+#define CGEN_MAX_INSN_SIZE 4
+
+#define CGEN_INT_INSN_P 1
+
+/* Maximum number of syntax elements in an instruction. */
+#define CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS 19
+
+/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
+ e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands
+ we can't hash on everything up to the space. */
+#define CGEN_MNEMONIC_OPERANDS
+
+/* Maximum number of fields in an instruction. */
+#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 10
+
+/* Enums. */
+
+/* Enum declaration for opc enums. */
+typedef enum insn_opc {
+ OP4_BRANCH16, OP4_LDSTR16X, OP4_FLOW16, OP4_IMM16
+ , OP4_LDSTR16D, OP4_LDSTR16P, OP4_LSHIFT16, OP4_DSP16
+ , OP4_BRANCH, OP4_LDSTRX, OP4_ALU16, OP4_IMM32
+ , OP4_LDSTRD, OP4_LDSTRP, OP4_ASHIFT16, OP4_MISC
+} INSN_OPC;
+
+/* Enum declaration for memory access width. */
+typedef enum insn_wordsize {
+ OPW_BYTE, OPW_SHORT, OPW_WORD, OPW_DOUBLE
+} INSN_WORDSIZE;
+
+/* Enum declaration for memory access direction. */
+typedef enum insn_memory_access {
+ OP_LOAD, OP_STORE
+} INSN_MEMORY_ACCESS;
+
+/* Enum declaration for trap instruction dispatch code. */
+typedef enum trap_codes {
+ TRAP_WRITE, TRAP_READ, TRAP_OPEN, TRAP_EXIT
+ , TRAP_PASS, TRAP_FAIL, TRAP_CLOSE, TRAP_OTHER
+} TRAP_CODES;
+
+/* Enum declaration for branch conditions. */
+typedef enum insn_cond {
+ OPC_EQ, OPC_NE, OPC_GTU, OPC_GTEU
+ , OPC_LTEU, OPC_LTU, OPC_GT, OPC_GTE
+ , OPC_LT, OPC_LTE, OPC_BEQ, OPC_BNE
+ , OPC_BLT, OPC_BLTE, OPC_B, OPC_BL
+} INSN_COND;
+
+/* Enum declaration for binary operator subcodes. */
+typedef enum insn_bop {
+ OPB_EOR, OPB_ADD, OPB_LSL, OPB_SUB
+ , OPB_LSR, OPB_AND, OPB_ASR, OPB_ORR
+} INSN_BOP;
+
+/* Enum declaration for binary operator subcodes. */
+typedef enum insn_bopext {
+ OPBE_FEXT, OPBE_FDEP, OPBE_LFSR
+} INSN_BOPEXT;
+
+/* Enum declaration for floating operators. */
+typedef enum insn_fop {
+ OPF_ADD, OPF_SUB, OPF_MUL, OPF_MADD
+ , OPF_MSUB, OPF_FLOAT, OPF_FIX, OPF_FABS
+} INSN_FOP;
+
+/* Enum declaration for extended floating operators. */
+typedef enum insn_fopexn {
+ OPF_FRECIP, OPF_FSQRT
+} INSN_FOPEXN;
+
+/* Enum declaration for immediate operators. */
+typedef enum insn_immop {
+ OPI_ADD = 1, OPI_SUB = 3, OPI_TRAP = 7
+} INSN_IMMOP;
+
+/* Enum declaration for don't cares. */
+typedef enum insn_dc_25_2 {
+ OPI_25_2_MBZ
+} INSN_DC_25_2;
+
+/* Enum declaration for . */
+typedef enum gr_names {
+ H_REGISTERS_SB = 9, H_REGISTERS_SL = 10, H_REGISTERS_FP = 11, H_REGISTERS_IP = 12
+ , H_REGISTERS_SP = 13, H_REGISTERS_LR = 14, H_REGISTERS_R0 = 0, H_REGISTERS_R1 = 1
+ , H_REGISTERS_R2 = 2, H_REGISTERS_R3 = 3, H_REGISTERS_R4 = 4, H_REGISTERS_R5 = 5
+ , H_REGISTERS_R6 = 6, H_REGISTERS_R7 = 7, H_REGISTERS_R8 = 8, H_REGISTERS_R9 = 9
+ , H_REGISTERS_R10 = 10, H_REGISTERS_R11 = 11, H_REGISTERS_R12 = 12, H_REGISTERS_R13 = 13
+ , H_REGISTERS_R14 = 14, H_REGISTERS_R15 = 15, H_REGISTERS_R16 = 16, H_REGISTERS_R17 = 17
+ , H_REGISTERS_R18 = 18, H_REGISTERS_R19 = 19, H_REGISTERS_R20 = 20, H_REGISTERS_R21 = 21
+ , H_REGISTERS_R22 = 22, H_REGISTERS_R23 = 23, H_REGISTERS_R24 = 24, H_REGISTERS_R25 = 25
+ , H_REGISTERS_R26 = 26, H_REGISTERS_R27 = 27, H_REGISTERS_R28 = 28, H_REGISTERS_R29 = 29
+ , H_REGISTERS_R30 = 30, H_REGISTERS_R31 = 31, H_REGISTERS_R32 = 32, H_REGISTERS_R33 = 33
+ , H_REGISTERS_R34 = 34, H_REGISTERS_R35 = 35, H_REGISTERS_R36 = 36, H_REGISTERS_R37 = 37
+ , H_REGISTERS_R38 = 38, H_REGISTERS_R39 = 39, H_REGISTERS_R40 = 40, H_REGISTERS_R41 = 41
+ , H_REGISTERS_R42 = 42, H_REGISTERS_R43 = 43, H_REGISTERS_R44 = 44, H_REGISTERS_R45 = 45
+ , H_REGISTERS_R46 = 46, H_REGISTERS_R47 = 47, H_REGISTERS_R48 = 48, H_REGISTERS_R49 = 49
+ , H_REGISTERS_R50 = 50, H_REGISTERS_R51 = 51, H_REGISTERS_R52 = 52, H_REGISTERS_R53 = 53
+ , H_REGISTERS_R54 = 54, H_REGISTERS_R55 = 55, H_REGISTERS_R56 = 56, H_REGISTERS_R57 = 57
+ , H_REGISTERS_R58 = 58, H_REGISTERS_R59 = 59, H_REGISTERS_R60 = 60, H_REGISTERS_R61 = 61
+ , H_REGISTERS_R62 = 62, H_REGISTERS_R63 = 63, H_REGISTERS_A1 = 0, H_REGISTERS_A2 = 1
+ , H_REGISTERS_A3 = 2, H_REGISTERS_A4 = 3, H_REGISTERS_V1 = 4, H_REGISTERS_V2 = 5
+ , H_REGISTERS_V3 = 6, H_REGISTERS_V4 = 7, H_REGISTERS_V5 = 8, H_REGISTERS_V6 = 9
+ , H_REGISTERS_V7 = 10, H_REGISTERS_V8 = 11
+} GR_NAMES;
+
+/* Enum declaration for +/- index register. */
+typedef enum post_index {
+ DIR_POSTINC, DIR_POSTDEC
+} POST_INDEX;
+
+/* Enum declaration for postmodify displacement. */
+typedef enum disp_post_modify {
+ PMOD_DISP, PMOD_POST
+} DISP_POST_MODIFY;
+
+/* Enum declaration for . */
+typedef enum cr_names {
+ H_CORE_REGISTERS_CONFIG, H_CORE_REGISTERS_STATUS, H_CORE_REGISTERS_PC, H_CORE_REGISTERS_DEBUG
+ , H_CORE_REGISTERS_IAB, H_CORE_REGISTERS_LC, H_CORE_REGISTERS_LS, H_CORE_REGISTERS_LE
+ , H_CORE_REGISTERS_IRET, H_CORE_REGISTERS_IMASK, H_CORE_REGISTERS_ILAT, H_CORE_REGISTERS_ILATST
+ , H_CORE_REGISTERS_ILATCL, H_CORE_REGISTERS_IPEND, H_CORE_REGISTERS_CTIMER0, H_CORE_REGISTERS_CTIMER1
+ , H_CORE_REGISTERS_HSTATUS
+} CR_NAMES;
+
+/* Enum declaration for . */
+typedef enum crdma_names {
+ H_COREDMA_REGISTERS_DMA0CONFIG, H_COREDMA_REGISTERS_DMA0STRIDE, H_COREDMA_REGISTERS_DMA0COUNT, H_COREDMA_REGISTERS_DMA0SRCADDR
+ , H_COREDMA_REGISTERS_DMA0DSTADDR, H_COREDMA_REGISTERS_DMA0AUTO0, H_COREDMA_REGISTERS_DMA0AUTO1, H_COREDMA_REGISTERS_DMA0STATUS
+ , H_COREDMA_REGISTERS_DMA1CONFIG, H_COREDMA_REGISTERS_DMA1STRIDE, H_COREDMA_REGISTERS_DMA1COUNT, H_COREDMA_REGISTERS_DMA1SRCADDR
+ , H_COREDMA_REGISTERS_DMA1DSTADDR, H_COREDMA_REGISTERS_DMA1AUTO0, H_COREDMA_REGISTERS_DMA1AUTO1, H_COREDMA_REGISTERS_DMA1STATUS
+} CRDMA_NAMES;
+
+/* Enum declaration for . */
+typedef enum crmem_names {
+ H_COREMEM_REGISTERS_MEMCONFIG, H_COREMEM_REGISTERS_MEMSTATUS, H_COREMEM_REGISTERS_MEMPROTECT, H_COREMEM_REGISTERS_MEMRESERVE
+} CRMEM_NAMES;
+
+/* Enum declaration for . */
+typedef enum crmesh_names {
+ H_COREMESH_REGISTERS_MESHCONFIG, H_COREMESH_REGISTERS_COREID, H_COREMESH_REGISTERS_MESHMULTICAST, H_COREMESH_REGISTERS_SWRESET
+} CRMESH_NAMES;
+
+/* Attributes. */
+
+/* Enum declaration for machine type selection. */
+typedef enum mach_attr {
+ MACH_BASE, MACH_EPIPHANY32, MACH_MAX
+} MACH_ATTR;
+
+/* Enum declaration for instruction set selection. */
+typedef enum isa_attr {
+ ISA_EPIPHANY, ISA_MAX
+} ISA_ATTR;
+
+/* Number of architecture variants. */
+#define MAX_ISAS 1
+#define MAX_MACHS ((int) MACH_MAX)
+
+/* Ifield support. */
+
+/* Ifield attribute indices. */
+
+/* Enum declaration for cgen_ifld attrs. */
+typedef enum cgen_ifld_attr {
+ CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED
+ , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_RELOC, CGEN_IFLD_END_BOOLS
+ , CGEN_IFLD_START_NBOOLS = 31, CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS
+} CGEN_IFLD_ATTR;
+
+/* Number of non-boolean elements in cgen_ifld_attr. */
+#define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1)
+
+/* cgen_ifld attribute accessor macros. */
+#define CGEN_ATTR_CGEN_IFLD_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_IFLD_MACH-CGEN_IFLD_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_IFLD_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_PCREL_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_PCREL_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_ABS_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_ABS_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_RESERVED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_RESERVED)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_SIGN_OPT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_SIGN_OPT)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_SIGNED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_SIGNED)) != 0)
+#define CGEN_ATTR_CGEN_IFLD_RELOC_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_RELOC)) != 0)
+
+/* Enum declaration for epiphany ifield types. */
+typedef enum ifield_type {
+ EPIPHANY_F_NIL, EPIPHANY_F_ANYOF, EPIPHANY_F_OPC, EPIPHANY_F_OPC_4_1
+ , EPIPHANY_F_OPC_6_3, EPIPHANY_F_OPC_8_5, EPIPHANY_F_OPC_19_4, EPIPHANY_F_CONDCODE
+ , EPIPHANY_F_SECONDARY_CCS, EPIPHANY_F_SHIFT, EPIPHANY_F_WORDSIZE, EPIPHANY_F_STORE
+ , EPIPHANY_F_OPC_8_1, EPIPHANY_F_OPC_31_32, EPIPHANY_F_SIMM8, EPIPHANY_F_SIMM24
+ , EPIPHANY_F_SDISP3, EPIPHANY_F_DISP3, EPIPHANY_F_DISP8, EPIPHANY_F_IMM8
+ , EPIPHANY_F_IMM_27_8, EPIPHANY_F_ADDSUBX, EPIPHANY_F_SUBD, EPIPHANY_F_PM
+ , EPIPHANY_F_RM, EPIPHANY_F_RN, EPIPHANY_F_RD, EPIPHANY_F_RM_X
+ , EPIPHANY_F_RN_X, EPIPHANY_F_RD_X, EPIPHANY_F_DC_9_1, EPIPHANY_F_SN
+ , EPIPHANY_F_SD, EPIPHANY_F_SN_X, EPIPHANY_F_SD_X, EPIPHANY_F_DC_7_4
+ , EPIPHANY_F_TRAP_SWI_9_1, EPIPHANY_F_GIEN_GIDIS_9_1, EPIPHANY_F_DC_15_3, EPIPHANY_F_DC_15_7
+ , EPIPHANY_F_DC_15_6, EPIPHANY_F_TRAP_NUM, EPIPHANY_F_DC_20_1, EPIPHANY_F_DC_21_1
+ , EPIPHANY_F_DC_21_2, EPIPHANY_F_DC_22_3, EPIPHANY_F_DC_22_2, EPIPHANY_F_DC_22_1
+ , EPIPHANY_F_DC_25_6, EPIPHANY_F_DC_25_4, EPIPHANY_F_DC_25_2, EPIPHANY_F_DC_25_1
+ , EPIPHANY_F_DC_28_1, EPIPHANY_F_DC_31_3, EPIPHANY_F_DISP11, EPIPHANY_F_SDISP11
+ , EPIPHANY_F_IMM16, EPIPHANY_F_RD6, EPIPHANY_F_RN6, EPIPHANY_F_RM6
+ , EPIPHANY_F_SD6, EPIPHANY_F_SN6, EPIPHANY_F_MAX
+} IFIELD_TYPE;
+
+#define MAX_IFLD ((int) EPIPHANY_F_MAX)
+
+/* Hardware attribute indices. */
+
+/* Enum declaration for cgen_hw attrs. */
+typedef enum cgen_hw_attr {
+ CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE
+ , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS
+} CGEN_HW_ATTR;
+
+/* Number of non-boolean elements in cgen_hw_attr. */
+#define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1)
+
+/* cgen_hw attribute accessor macros. */
+#define CGEN_ATTR_CGEN_HW_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_HW_MACH-CGEN_HW_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_HW_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_HW_CACHE_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_CACHE_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_HW_PC_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_PC)) != 0)
+#define CGEN_ATTR_CGEN_HW_PROFILE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_PROFILE)) != 0)
+
+/* Enum declaration for epiphany hardware types. */
+typedef enum cgen_hw_type {
+ HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR
+ , HW_H_IADDR, HW_H_REGISTERS, HW_H_FPREGISTERS, HW_H_ZBIT
+ , HW_H_NBIT, HW_H_CBIT, HW_H_VBIT, HW_H_VSBIT
+ , HW_H_BZBIT, HW_H_BNBIT, HW_H_BVBIT, HW_H_BUBIT
+ , HW_H_BIBIT, HW_H_BCBIT, HW_H_BVSBIT, HW_H_BISBIT
+ , HW_H_BUSBIT, HW_H_EXPCAUSE0BIT, HW_H_EXPCAUSE1BIT, HW_H_EXPCAUSE2BIT
+ , HW_H_EXTFSTALLBIT, HW_H_TRMBIT, HW_H_INVEXCENBIT, HW_H_OVFEXCENBIT
+ , HW_H_UNEXCENBIT, HW_H_TIMER0BIT0, HW_H_TIMER0BIT1, HW_H_TIMER0BIT2
+ , HW_H_TIMER0BIT3, HW_H_TIMER1BIT0, HW_H_TIMER1BIT1, HW_H_TIMER1BIT2
+ , HW_H_TIMER1BIT3, HW_H_MBKPTENBIT, HW_H_CLOCKGATEENBIT, HW_H_CORECFGRESBIT12
+ , HW_H_CORECFGRESBIT13, HW_H_CORECFGRESBIT14, HW_H_CORECFGRESBIT15, HW_H_CORECFGRESBIT16
+ , HW_H_CORECFGRESBIT20, HW_H_CORECFGRESBIT21, HW_H_CORECFGRESBIT24, HW_H_CORECFGRESBIT25
+ , HW_H_CORECFGRESBIT26, HW_H_CORECFGRESBIT27, HW_H_CORECFGRESBIT28, HW_H_CORECFGRESBIT29
+ , HW_H_CORECFGRESBIT30, HW_H_CORECFGRESBIT31, HW_H_ARITHMETIC_MODEBIT0, HW_H_ARITHMETIC_MODEBIT1
+ , HW_H_ARITHMETIC_MODEBIT2, HW_H_GIDISABLEBIT, HW_H_KMBIT, HW_H_CAIBIT
+ , HW_H_SFLAGBIT, HW_H_PC, HW_H_MEMADDR, HW_H_CORE_REGISTERS
+ , HW_H_COREDMA_REGISTERS, HW_H_COREMEM_REGISTERS, HW_H_COREMESH_REGISTERS, HW_MAX
+} CGEN_HW_TYPE;
+
+#define MAX_HW ((int) HW_MAX)
+
+/* Operand attribute indices. */
+
+/* Enum declaration for cgen_operand attrs. */
+typedef enum cgen_operand_attr {
+ CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT
+ , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY
+ , CGEN_OPERAND_RELOC, CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH
+ , CGEN_OPERAND_END_NBOOLS
+} CGEN_OPERAND_ATTR;
+
+/* Number of non-boolean elements in cgen_operand_attr. */
+#define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1)
+
+/* cgen_operand attribute accessor macros. */
+#define CGEN_ATTR_CGEN_OPERAND_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_OPERAND_MACH-CGEN_OPERAND_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_OPERAND_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_PCREL_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_PCREL_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_ABS_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_ABS_ADDR)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SIGN_OPT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SIGN_OPT)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SIGNED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SIGNED)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_NEGATIVE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_NEGATIVE)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_RELAX_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_RELAX)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_SEM_ONLY_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SEM_ONLY)) != 0)
+#define CGEN_ATTR_CGEN_OPERAND_RELOC_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_RELOC)) != 0)
+
+/* Enum declaration for epiphany operand types. */
+typedef enum cgen_operand_type {
+ EPIPHANY_OPERAND_PC, EPIPHANY_OPERAND_ZBIT, EPIPHANY_OPERAND_NBIT, EPIPHANY_OPERAND_CBIT
+ , EPIPHANY_OPERAND_VBIT, EPIPHANY_OPERAND_BZBIT, EPIPHANY_OPERAND_BNBIT, EPIPHANY_OPERAND_BVBIT
+ , EPIPHANY_OPERAND_BCBIT, EPIPHANY_OPERAND_BUBIT, EPIPHANY_OPERAND_BIBIT, EPIPHANY_OPERAND_VSBIT
+ , EPIPHANY_OPERAND_BVSBIT, EPIPHANY_OPERAND_BISBIT, EPIPHANY_OPERAND_BUSBIT, EPIPHANY_OPERAND_EXPCAUSE0BIT
+ , EPIPHANY_OPERAND_EXPCAUSE1BIT, EPIPHANY_OPERAND_EXPCAUSE2BIT, EPIPHANY_OPERAND_EXTFSTALLBIT, EPIPHANY_OPERAND_TRMBIT
+ , EPIPHANY_OPERAND_INVEXCENBIT, EPIPHANY_OPERAND_OVFEXCENBIT, EPIPHANY_OPERAND_UNEXCENBIT, EPIPHANY_OPERAND_TIMER0BIT0
+ , EPIPHANY_OPERAND_TIMER0BIT1, EPIPHANY_OPERAND_TIMER0BIT2, EPIPHANY_OPERAND_TIMER0BIT3, EPIPHANY_OPERAND_TIMER1BIT0
+ , EPIPHANY_OPERAND_TIMER1BIT1, EPIPHANY_OPERAND_TIMER1BIT2, EPIPHANY_OPERAND_TIMER1BIT3, EPIPHANY_OPERAND_MBKPTENBIT
+ , EPIPHANY_OPERAND_CLOCKGATEENBIT, EPIPHANY_OPERAND_ARITHMETIC_MODEBIT0, EPIPHANY_OPERAND_ARITHMETIC_MODEBIT1, EPIPHANY_OPERAND_ARITHMETIC_MODEBIT2
+ , EPIPHANY_OPERAND_CORECFGRESBIT12, EPIPHANY_OPERAND_CORECFGRESBIT13, EPIPHANY_OPERAND_CORECFGRESBIT14, EPIPHANY_OPERAND_CORECFGRESBIT15
+ , EPIPHANY_OPERAND_CORECFGRESBIT16, EPIPHANY_OPERAND_CORECFGRESBIT20, EPIPHANY_OPERAND_CORECFGRESBIT21, EPIPHANY_OPERAND_CORECFGRESBIT24
+ , EPIPHANY_OPERAND_CORECFGRESBIT25, EPIPHANY_OPERAND_CORECFGRESBIT26, EPIPHANY_OPERAND_CORECFGRESBIT27, EPIPHANY_OPERAND_CORECFGRESBIT28
+ , EPIPHANY_OPERAND_CORECFGRESBIT29, EPIPHANY_OPERAND_CORECFGRESBIT30, EPIPHANY_OPERAND_CORECFGRESBIT31, EPIPHANY_OPERAND_GIDISABLEBIT
+ , EPIPHANY_OPERAND_KMBIT, EPIPHANY_OPERAND_CAIBIT, EPIPHANY_OPERAND_SFLAGBIT, EPIPHANY_OPERAND_MEMADDR
+ , EPIPHANY_OPERAND_SIMM24, EPIPHANY_OPERAND_SIMM8, EPIPHANY_OPERAND_RD, EPIPHANY_OPERAND_RN
+ , EPIPHANY_OPERAND_RM, EPIPHANY_OPERAND_FRD, EPIPHANY_OPERAND_FRN, EPIPHANY_OPERAND_FRM
+ , EPIPHANY_OPERAND_RD6, EPIPHANY_OPERAND_RN6, EPIPHANY_OPERAND_RM6, EPIPHANY_OPERAND_FRD6
+ , EPIPHANY_OPERAND_FRN6, EPIPHANY_OPERAND_FRM6, EPIPHANY_OPERAND_SD, EPIPHANY_OPERAND_SN
+ , EPIPHANY_OPERAND_SD6, EPIPHANY_OPERAND_SN6, EPIPHANY_OPERAND_SDDMA, EPIPHANY_OPERAND_SNDMA
+ , EPIPHANY_OPERAND_SDMEM, EPIPHANY_OPERAND_SNMEM, EPIPHANY_OPERAND_SDMESH, EPIPHANY_OPERAND_SNMESH
+ , EPIPHANY_OPERAND_SIMM3, EPIPHANY_OPERAND_SIMM11, EPIPHANY_OPERAND_DISP3, EPIPHANY_OPERAND_TRAPNUM6
+ , EPIPHANY_OPERAND_SWI_NUM, EPIPHANY_OPERAND_DISP11, EPIPHANY_OPERAND_SHIFT, EPIPHANY_OPERAND_IMM16
+ , EPIPHANY_OPERAND_IMM8, EPIPHANY_OPERAND_DIRECTION, EPIPHANY_OPERAND_DPMI, EPIPHANY_OPERAND_MAX
+} CGEN_OPERAND_TYPE;
+
+/* Number of operands types. */
+#define MAX_OPERANDS 91
+
+/* Maximum number of operands referenced by any insn. */
+#define MAX_OPERAND_INSTANCES 8
+
+/* Insn attribute indices. */
+
+/* Enum declaration for cgen_insn attrs. */
+typedef enum cgen_insn_attr {
+ CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI
+ , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAXED
+ , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_SHORT_INSN, CGEN_INSN_IMM3
+ , CGEN_INSN_IMM8, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31, CGEN_INSN_MACH
+ , CGEN_INSN_END_NBOOLS
+} CGEN_INSN_ATTR;
+
+/* Number of non-boolean elements in cgen_insn_attr. */
+#define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1)
+
+/* cgen_insn attribute accessor macros. */
+#define CGEN_ATTR_CGEN_INSN_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_MACH-CGEN_INSN_START_NBOOLS-1].nonbitset)
+#define CGEN_ATTR_CGEN_INSN_ALIAS_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_ALIAS)) != 0)
+#define CGEN_ATTR_CGEN_INSN_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_VIRTUAL)) != 0)
+#define CGEN_ATTR_CGEN_INSN_UNCOND_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_UNCOND_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_COND_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_COND_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_SKIP_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_SKIP_CTI)) != 0)
+#define CGEN_ATTR_CGEN_INSN_DELAY_SLOT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_DELAY_SLOT)) != 0)
+#define CGEN_ATTR_CGEN_INSN_RELAXABLE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_RELAXABLE)) != 0)
+#define CGEN_ATTR_CGEN_INSN_RELAXED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_RELAXED)) != 0)
+#define CGEN_ATTR_CGEN_INSN_NO_DIS_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_NO_DIS)) != 0)
+#define CGEN_ATTR_CGEN_INSN_PBB_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_PBB)) != 0)
+#define CGEN_ATTR_CGEN_INSN_SHORT_INSN_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_SHORT_INSN)) != 0)
+#define CGEN_ATTR_CGEN_INSN_IMM3_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_IMM3)) != 0)
+#define CGEN_ATTR_CGEN_INSN_IMM8_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_IMM8)) != 0)
+
+/* cgen.h uses things we just defined. */
+#include "opcode/cgen.h"
+
+extern const struct cgen_ifld epiphany_cgen_ifld_table[];
+
+/* Attributes. */
+extern const CGEN_ATTR_TABLE epiphany_cgen_hardware_attr_table[];
+extern const CGEN_ATTR_TABLE epiphany_cgen_ifield_attr_table[];
+extern const CGEN_ATTR_TABLE epiphany_cgen_operand_attr_table[];
+extern const CGEN_ATTR_TABLE epiphany_cgen_insn_attr_table[];
+
+/* Hardware decls. */
+
+extern CGEN_KEYWORD epiphany_cgen_opval_gr_names;
+extern CGEN_KEYWORD epiphany_cgen_opval_gr_names;
+extern CGEN_KEYWORD epiphany_cgen_opval_cr_names;
+extern CGEN_KEYWORD epiphany_cgen_opval_crdma_names;
+extern CGEN_KEYWORD epiphany_cgen_opval_crmem_names;
+extern CGEN_KEYWORD epiphany_cgen_opval_crmesh_names;
+
+extern const CGEN_HW_ENTRY epiphany_cgen_hw_table[];
+
+
+
+#endif /* EPIPHANY_CPU_H */
diff --git a/opcodes/epiphany-dis.c b/opcodes/epiphany-dis.c
new file mode 100644
index 0000000000..bd86f46219
--- /dev/null
+++ b/opcodes/epiphany-dis.c
@@ -0,0 +1,698 @@
+/* Disassembler interface for targets using CGEN. -*- C -*-
+ CGEN: Cpu tools GENerator
+
+ THIS FILE IS MACHINE GENERATED WITH CGEN.
+ - the resultant file is machine generated, cgen-dis.in isn't
+
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007,
+ 2008, 2010 Free Software Foundation, Inc.
+
+ This file is part of libopcodes.
+
+ This library 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "dis-asm.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "libiberty.h"
+#include "epiphany-desc.h"
+#include "epiphany-opc.h"
+#include "opintl.h"
+
+/* Default text to print if an instruction isn't recognized. */
+#define UNKNOWN_INSN_MSG _("*unknown*")
+
+static void print_normal
+ (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
+static void print_address
+ (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int) ATTRIBUTE_UNUSED;
+static void print_keyword
+ (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int) ATTRIBUTE_UNUSED;
+static void print_insn_normal
+ (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
+static int print_insn
+ (CGEN_CPU_DESC, bfd_vma, disassemble_info *, bfd_byte *, unsigned);
+static int default_print_insn
+ (CGEN_CPU_DESC, bfd_vma, disassemble_info *) ATTRIBUTE_UNUSED;
+static int read_insn
+ (CGEN_CPU_DESC, bfd_vma, disassemble_info *, bfd_byte *, int, CGEN_EXTRACT_INFO *,
+ unsigned long *);
+
+/* -- disassembler routines inserted here. */
+
+/* -- dis.c */
+
+#define CGEN_PRINT_INSN epiphany_print_insn
+
+static int
+epiphany_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+{
+ bfd_byte buf[CGEN_MAX_INSN_SIZE];
+ int buflen;
+ int status;
+
+ info->bytes_per_chunk = 2;
+
+ /* Attempt to read the base part of the insn. */
+ info->bytes_per_line = buflen = cd->base_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+
+ /* Try again with the minimum part, if min < base. */
+ if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
+ {
+ info->bytes_per_line = buflen = cd->min_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+ }
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ return print_insn (cd, pc, info, buf, buflen);
+}
+
+
+static void
+print_postindex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+ (*info->fprintf_func) (info->stream, value ? "-" : "+");
+}
+
+static void
+print_simm_not_reg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ print_address (cd, dis_info, value, attrs, pc, length);
+}
+
+static void
+print_uimm_not_reg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void * dis_info,
+ unsigned long value,
+ unsigned int attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *)dis_info;
+
+ if (value & 0x800)
+ (*info->fprintf_func) (info->stream, "-");
+
+ value &= 0x7ff;
+ print_address (cd, dis_info, value, attrs, pc, length);
+}
+
+
+/* -- */
+
+void epiphany_cgen_print_operand
+ (CGEN_CPU_DESC, int, PTR, CGEN_FIELDS *, void const *, bfd_vma, int);
+
+/* Main entry point for printing operands.
+ XINFO is a `void *' and not a `disassemble_info *' to not put a requirement
+ of dis-asm.h on cgen.h.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `print_insn_normal', but keeping it
+ separate makes clear the interface between `print_insn_normal' and each of
+ the handlers. */
+
+void
+epiphany_cgen_print_operand (CGEN_CPU_DESC cd,
+ int opindex,
+ void * xinfo,
+ CGEN_FIELDS *fields,
+ void const *attrs ATTRIBUTE_UNUSED,
+ bfd_vma pc,
+ int length)
+{
+ disassemble_info *info = (disassemble_info *) xinfo;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ print_postindex (cd, info, fields->f_addsubx, 0, pc, length);
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ print_uimm_not_reg (cd, info, fields->f_disp11, 0|(1<<CGEN_OPERAND_VIRTUAL), pc, length);
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ print_normal (cd, info, fields->f_disp3, 0, pc, length);
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ print_postindex (cd, info, fields->f_subd, 0, pc, length);
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rd, 0);
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rm, 0);
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rm6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rn, 0);
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ print_address (cd, info, fields->f_imm16, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_VIRTUAL), pc, length);
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ print_address (cd, info, fields->f_imm8, 0|(1<<CGEN_OPERAND_RELAX), pc, length);
+ break;
+ case EPIPHANY_OPERAND_RD :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rd, 0);
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_RM :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rm, 0);
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rm6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_RN :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rn, 0);
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_gr_names, fields->f_rn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SD :
+ print_keyword (cd, info, & epiphany_cgen_opval_cr_names, fields->f_sd, 0);
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_cr_names, fields->f_sd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ print_keyword (cd, info, & epiphany_cgen_opval_crdma_names, fields->f_sd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ print_keyword (cd, info, & epiphany_cgen_opval_crmem_names, fields->f_sd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ print_keyword (cd, info, & epiphany_cgen_opval_crmesh_names, fields->f_sd6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ print_normal (cd, info, fields->f_shift, 0, pc, length);
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ print_simm_not_reg (cd, info, fields->f_sdisp11, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_VIRTUAL), pc, length);
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ print_address (cd, info, fields->f_simm24, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ print_simm_not_reg (cd, info, fields->f_sdisp3, 0|(1<<CGEN_OPERAND_SIGNED)|(1<<CGEN_OPERAND_RELAX), pc, length);
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ print_address (cd, info, fields->f_simm8, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
+ break;
+ case EPIPHANY_OPERAND_SN :
+ print_keyword (cd, info, & epiphany_cgen_opval_cr_names, fields->f_sn, 0);
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ print_keyword (cd, info, & epiphany_cgen_opval_cr_names, fields->f_sn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ print_keyword (cd, info, & epiphany_cgen_opval_crdma_names, fields->f_sn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ print_keyword (cd, info, & epiphany_cgen_opval_crmem_names, fields->f_sn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ print_keyword (cd, info, & epiphany_cgen_opval_crmesh_names, fields->f_sn6, 0|(1<<CGEN_OPERAND_VIRTUAL));
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ print_uimm_not_reg (cd, info, fields->f_trap_num, 0, pc, length);
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ print_normal (cd, info, fields->f_trap_num, 0, pc, length);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while printing insn.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+cgen_print_fn * const epiphany_cgen_print_handlers[] =
+{
+ print_insn_normal,
+};
+
+
+void
+epiphany_cgen_init_dis (CGEN_CPU_DESC cd)
+{
+ epiphany_cgen_init_opcode_table (cd);
+ epiphany_cgen_init_ibld_table (cd);
+ cd->print_handlers = & epiphany_cgen_print_handlers[0];
+ cd->print_operand = epiphany_cgen_print_operand;
+}
+
+
+/* Default print handler. */
+
+static void
+print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void *dis_info,
+ long value,
+ unsigned int attrs,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+
+ /* Print the operand as directed by the attributes. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
+ ; /* nothing to do */
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
+ (*info->fprintf_func) (info->stream, "%ld", value);
+ else
+ (*info->fprintf_func) (info->stream, "0x%lx", value);
+}
+
+/* Default address handler. */
+
+static void
+print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void *dis_info,
+ bfd_vma value,
+ unsigned int attrs,
+ bfd_vma pc ATTRIBUTE_UNUSED,
+ int length ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+
+ /* Print the operand as directed by the attributes. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
+ ; /* Nothing to do. */
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_PCREL_ADDR))
+ (*info->print_address_func) (value, info);
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_ABS_ADDR))
+ (*info->print_address_func) (value, info);
+ else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
+ (*info->fprintf_func) (info->stream, "%ld", (long) value);
+ else
+ (*info->fprintf_func) (info->stream, "0x%lx", (long) value);
+}
+
+/* Keyword print handler. */
+
+static void
+print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ void *dis_info,
+ CGEN_KEYWORD *keyword_table,
+ long value,
+ unsigned int attrs ATTRIBUTE_UNUSED)
+{
+ disassemble_info *info = (disassemble_info *) dis_info;
+ const CGEN_KEYWORD_ENTRY *ke;
+
+ ke = cgen_keyword_lookup_value (keyword_table, value);
+ if (ke != NULL)
+ (*info->fprintf_func) (info->stream, "%s", ke->name);
+ else
+ (*info->fprintf_func) (info->stream, "???");
+}
+
+/* Default insn printer.
+
+ DIS_INFO is defined as `void *' so the disassembler needn't know anything
+ about disassemble_info. */
+
+static void
+print_insn_normal (CGEN_CPU_DESC cd,
+ void *dis_info,
+ const CGEN_INSN *insn,
+ CGEN_FIELDS *fields,
+ bfd_vma pc,
+ int length)
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ disassemble_info *info = (disassemble_info *) dis_info;
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+
+ CGEN_INIT_PRINT (cd);
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
+ {
+ if (CGEN_SYNTAX_MNEMONIC_P (*syn))
+ {
+ (*info->fprintf_func) (info->stream, "%s", CGEN_INSN_MNEMONIC (insn));
+ continue;
+ }
+ if (CGEN_SYNTAX_CHAR_P (*syn))
+ {
+ (*info->fprintf_func) (info->stream, "%c", CGEN_SYNTAX_CHAR (*syn));
+ continue;
+ }
+
+ /* We have an operand. */
+ epiphany_cgen_print_operand (cd, CGEN_SYNTAX_FIELD (*syn), info,
+ fields, CGEN_INSN_ATTRS (insn), pc, length);
+ }
+}
+
+/* Subroutine of print_insn. Reads an insn into the given buffers and updates
+ the extract info.
+ Returns 0 if all is well, non-zero otherwise. */
+
+static int
+read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ bfd_vma pc,
+ disassemble_info *info,
+ bfd_byte *buf,
+ int buflen,
+ CGEN_EXTRACT_INFO *ex_info,
+ unsigned long *insn_value)
+{
+ int status = (*info->read_memory_func) (pc, buf, buflen, info);
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ ex_info->dis_info = info;
+ ex_info->valid = (1 << buflen) - 1;
+ ex_info->insn_bytes = buf;
+
+ *insn_value = bfd_get_bits (buf, buflen * 8, info->endian == BFD_ENDIAN_BIG);
+ return 0;
+}
+
+/* Utility to print an insn.
+ BUF is the base part of the insn, target byte order, BUFLEN bytes long.
+ The result is the size of the insn in bytes or zero for an unknown insn
+ or -1 if an error occurs fetching data (memory_error_func will have
+ been called). */
+
+static int
+print_insn (CGEN_CPU_DESC cd,
+ bfd_vma pc,
+ disassemble_info *info,
+ bfd_byte *buf,
+ unsigned int buflen)
+{
+ CGEN_INSN_INT insn_value;
+ const CGEN_INSN_LIST *insn_list;
+ CGEN_EXTRACT_INFO ex_info;
+ int basesize;
+
+ /* Extract base part of instruction, just in case CGEN_DIS_* uses it. */
+ basesize = cd->base_insn_bitsize < buflen * 8 ?
+ cd->base_insn_bitsize : buflen * 8;
+ insn_value = cgen_get_insn_value (cd, buf, basesize);
+
+
+ /* Fill in ex_info fields like read_insn would. Don't actually call
+ read_insn, since the incoming buffer is already read (and possibly
+ modified a la m32r). */
+ ex_info.valid = (1 << buflen) - 1;
+ ex_info.dis_info = info;
+ ex_info.insn_bytes = buf;
+
+ /* The instructions are stored in hash lists.
+ Pick the first one and keep trying until we find the right one. */
+
+ insn_list = CGEN_DIS_LOOKUP_INSN (cd, (char *) buf, insn_value);
+ while (insn_list != NULL)
+ {
+ const CGEN_INSN *insn = insn_list->insn;
+ CGEN_FIELDS fields;
+ int length;
+ unsigned long insn_value_cropped;
+
+#ifdef CGEN_VALIDATE_INSN_SUPPORTED
+ /* Not needed as insn shouldn't be in hash lists if not supported. */
+ /* Supported by this cpu? */
+ if (! epiphany_cgen_insn_supported (cd, insn))
+ {
+ insn_list = CGEN_DIS_NEXT_INSN (insn_list);
+ continue;
+ }
+#endif
+
+ /* Basic bit mask must be correct. */
+ /* ??? May wish to allow target to defer this check until the extract
+ handler. */
+
+ /* Base size may exceed this instruction's size. Extract the
+ relevant part from the buffer. */
+ if ((unsigned) (CGEN_INSN_BITSIZE (insn) / 8) < buflen &&
+ (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
+ insn_value_cropped = bfd_get_bits (buf, CGEN_INSN_BITSIZE (insn),
+ info->endian == BFD_ENDIAN_BIG);
+ else
+ insn_value_cropped = insn_value;
+
+ if ((insn_value_cropped & CGEN_INSN_BASE_MASK (insn))
+ == CGEN_INSN_BASE_VALUE (insn))
+ {
+ /* Printing is handled in two passes. The first pass parses the
+ machine insn and extracts the fields. The second pass prints
+ them. */
+
+ /* Make sure the entire insn is loaded into insn_value, if it
+ can fit. */
+ if (((unsigned) CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize) &&
+ (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
+ {
+ unsigned long full_insn_value;
+ int rc = read_insn (cd, pc, info, buf,
+ CGEN_INSN_BITSIZE (insn) / 8,
+ & ex_info, & full_insn_value);
+ if (rc != 0)
+ return rc;
+ length = CGEN_EXTRACT_FN (cd, insn)
+ (cd, insn, &ex_info, full_insn_value, &fields, pc);
+ }
+ else
+ length = CGEN_EXTRACT_FN (cd, insn)
+ (cd, insn, &ex_info, insn_value_cropped, &fields, pc);
+
+ /* Length < 0 -> error. */
+ if (length < 0)
+ return length;
+ if (length > 0)
+ {
+ CGEN_PRINT_FN (cd, insn) (cd, info, insn, &fields, pc, length);
+ /* Length is in bits, result is in bytes. */
+ return length / 8;
+ }
+ }
+
+ insn_list = CGEN_DIS_NEXT_INSN (insn_list);
+ }
+
+ return 0;
+}
+
+/* Default value for CGEN_PRINT_INSN.
+ The result is the size of the insn in bytes or zero for an unknown insn
+ or -1 if an error occured fetching bytes. */
+
+#ifndef CGEN_PRINT_INSN
+#define CGEN_PRINT_INSN default_print_insn
+#endif
+
+static int
+default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
+{
+ bfd_byte buf[CGEN_MAX_INSN_SIZE];
+ int buflen;
+ int status;
+
+ /* Attempt to read the base part of the insn. */
+ buflen = cd->base_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+
+ /* Try again with the minimum part, if min < base. */
+ if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
+ {
+ buflen = cd->min_insn_bitsize / 8;
+ status = (*info->read_memory_func) (pc, buf, buflen, info);
+ }
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return -1;
+ }
+
+ return print_insn (cd, pc, info, buf, buflen);
+}
+
+/* Main entry point.
+ Print one instruction from PC on INFO->STREAM.
+ Return the size of the instruction (in bytes). */
+
+typedef struct cpu_desc_list
+{
+ struct cpu_desc_list *next;
+ CGEN_BITSET *isa;
+ int mach;
+ int endian;
+ CGEN_CPU_DESC cd;
+} cpu_desc_list;
+
+int
+print_insn_epiphany (bfd_vma pc, disassemble_info *info)
+{
+ static cpu_desc_list *cd_list = 0;
+ cpu_desc_list *cl = 0;
+ static CGEN_CPU_DESC cd = 0;
+ static CGEN_BITSET *prev_isa;
+ static int prev_mach;
+ static int prev_endian;
+ int length;
+ CGEN_BITSET *isa;
+ int mach;
+ int endian = (info->endian == BFD_ENDIAN_BIG
+ ? CGEN_ENDIAN_BIG
+ : CGEN_ENDIAN_LITTLE);
+ enum bfd_architecture arch;
+
+ /* ??? gdb will set mach but leave the architecture as "unknown" */
+#ifndef CGEN_BFD_ARCH
+#define CGEN_BFD_ARCH bfd_arch_epiphany
+#endif
+ arch = info->arch;
+ if (arch == bfd_arch_unknown)
+ arch = CGEN_BFD_ARCH;
+
+ /* There's no standard way to compute the machine or isa number
+ so we leave it to the target. */
+#ifdef CGEN_COMPUTE_MACH
+ mach = CGEN_COMPUTE_MACH (info);
+#else
+ mach = info->mach;
+#endif
+
+#ifdef CGEN_COMPUTE_ISA
+ {
+ static CGEN_BITSET *permanent_isa;
+
+ if (!permanent_isa)
+ permanent_isa = cgen_bitset_create (MAX_ISAS);
+ isa = permanent_isa;
+ cgen_bitset_clear (isa);
+ cgen_bitset_add (isa, CGEN_COMPUTE_ISA (info));
+ }
+#else
+ isa = info->insn_sets;
+#endif
+
+ /* If we've switched cpu's, try to find a handle we've used before */
+ if (cd
+ && (cgen_bitset_compare (isa, prev_isa) != 0
+ || mach != prev_mach
+ || endian != prev_endian))
+ {
+ cd = 0;
+ for (cl = cd_list; cl; cl = cl->next)
+ {
+ if (cgen_bitset_compare (cl->isa, isa) == 0 &&
+ cl->mach == mach &&
+ cl->endian == endian)
+ {
+ cd = cl->cd;
+ prev_isa = cd->isas;
+ break;
+ }
+ }
+ }
+
+ /* If we haven't initialized yet, initialize the opcode table. */
+ if (! cd)
+ {
+ const bfd_arch_info_type *arch_type = bfd_lookup_arch (arch, mach);
+ const char *mach_name;
+
+ if (!arch_type)
+ abort ();
+ mach_name = arch_type->printable_name;
+
+ prev_isa = cgen_bitset_copy (isa);
+ prev_mach = mach;
+ prev_endian = endian;
+ cd = epiphany_cgen_cpu_open (CGEN_CPU_OPEN_ISAS, prev_isa,
+ CGEN_CPU_OPEN_BFDMACH, mach_name,
+ CGEN_CPU_OPEN_ENDIAN, prev_endian,
+ CGEN_CPU_OPEN_END);
+ if (!cd)
+ abort ();
+
+ /* Save this away for future reference. */
+ cl = xmalloc (sizeof (struct cpu_desc_list));
+ cl->cd = cd;
+ cl->isa = prev_isa;
+ cl->mach = mach;
+ cl->endian = endian;
+ cl->next = cd_list;
+ cd_list = cl;
+
+ epiphany_cgen_init_dis (cd);
+ }
+
+ /* We try to have as much common code as possible.
+ But at this point some targets need to take over. */
+ /* ??? Some targets may need a hook elsewhere. Try to avoid this,
+ but if not possible try to move this hook elsewhere rather than
+ have two hooks. */
+ length = CGEN_PRINT_INSN (cd, pc, info);
+ if (length > 0)
+ return length;
+ if (length < 0)
+ return -1;
+
+ (*info->fprintf_func) (info->stream, UNKNOWN_INSN_MSG);
+ return cd->default_insn_bitsize / 8;
+}
diff --git a/opcodes/epiphany-ibld.c b/opcodes/epiphany-ibld.c
new file mode 100644
index 0000000000..7b332d5a4c
--- /dev/null
+++ b/opcodes/epiphany-ibld.c
@@ -0,0 +1,1709 @@
+/* Instruction building/extraction support for epiphany. -*- C -*-
+
+ THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
+ - the resultant file is machine generated, cgen-ibld.in isn't
+
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005, 2006, 2007,
+ 2008, 2010 Free Software Foundation, Inc.
+
+ This file is part of libopcodes.
+
+ This library 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* ??? Eventually more and more of this stuff can go to cpu-independent files.
+ Keep that in mind. */
+
+#include "sysdep.h"
+#include <stdio.h>
+#include "ansidecl.h"
+#include "dis-asm.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "epiphany-desc.h"
+#include "epiphany-opc.h"
+#include "cgen/basic-modes.h"
+#include "opintl.h"
+#include "safe-ctype.h"
+
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+
+/* Used by the ifield rtx function. */
+#define FLD(f) (fields->f)
+
+static const char * insert_normal
+ (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
+ unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
+static const char * insert_insn_normal
+ (CGEN_CPU_DESC, const CGEN_INSN *,
+ CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+static int extract_normal
+ (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
+ unsigned int, unsigned int, unsigned int, unsigned int,
+ unsigned int, unsigned int, bfd_vma, long *);
+static int extract_insn_normal
+ (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
+ CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+#if CGEN_INT_INSN_P
+static void put_insn_int_value
+ (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
+#endif
+#if ! CGEN_INT_INSN_P
+static CGEN_INLINE void insert_1
+ (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
+static CGEN_INLINE int fill_cache
+ (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, bfd_vma);
+static CGEN_INLINE long extract_1
+ (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
+#endif
+
+/* Operand insertion. */
+
+#if ! CGEN_INT_INSN_P
+
+/* Subroutine of insert_normal. */
+
+static CGEN_INLINE void
+insert_1 (CGEN_CPU_DESC cd,
+ unsigned long value,
+ int start,
+ int length,
+ int word_length,
+ unsigned char *bufp)
+{
+ unsigned long x,mask;
+ int shift;
+
+ x = cgen_get_insn_value (cd, bufp, word_length);
+
+ /* Written this way to avoid undefined behaviour. */
+ mask = (((1L << (length - 1)) - 1) << 1) | 1;
+ if (CGEN_INSN_LSB0_P)
+ shift = (start + 1) - length;
+ else
+ shift = (word_length - (start + length));
+ x = (x & ~(mask << shift)) | ((value & mask) << shift);
+
+ cgen_put_insn_value (cd, bufp, word_length, (bfd_vma) x);
+}
+
+#endif /* ! CGEN_INT_INSN_P */
+
+/* Default insertion routine.
+
+ ATTRS is a mask of the boolean attributes.
+ WORD_OFFSET is the offset in bits from the start of the insn of the value.
+ WORD_LENGTH is the length of the word in bits in which the value resides.
+ START is the starting bit number in the word, architecture origin.
+ LENGTH is the length of VALUE in bits.
+ TOTAL_LENGTH is the total length of the insn in bits.
+
+ The result is an error message or NULL if success. */
+
+/* ??? This duplicates functionality with bfd's howto table and
+ bfd_install_relocation. */
+/* ??? This doesn't handle bfd_vma's. Create another function when
+ necessary. */
+
+static const char *
+insert_normal (CGEN_CPU_DESC cd,
+ long value,
+ unsigned int attrs,
+ unsigned int word_offset,
+ unsigned int start,
+ unsigned int length,
+ unsigned int word_length,
+ unsigned int total_length,
+ CGEN_INSN_BYTES_PTR buffer)
+{
+ static char errbuf[100];
+ /* Written this way to avoid undefined behaviour. */
+ unsigned long mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ /* If LENGTH is zero, this operand doesn't contribute to the value. */
+ if (length == 0)
+ return NULL;
+
+ if (word_length > 8 * sizeof (CGEN_INSN_INT))
+ abort ();
+
+ /* For architectures with insns smaller than the base-insn-bitsize,
+ word_length may be too big. */
+ if (cd->min_insn_bitsize < cd->base_insn_bitsize)
+ {
+ if (word_offset == 0
+ && word_length > total_length)
+ word_length = total_length;
+ }
+
+ /* Ensure VALUE will fit. */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT))
+ {
+ long minval = - (1L << (length - 1));
+ unsigned long maxval = mask;
+
+ if ((value > 0 && (unsigned long) value > maxval)
+ || value < minval)
+ {
+ /* xgettext:c-format */
+ sprintf (errbuf,
+ _("operand out of range (%ld not between %ld and %lu)"),
+ value, minval, maxval);
+ return errbuf;
+ }
+ }
+ else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
+ {
+ unsigned long maxval = mask;
+ unsigned long val = (unsigned long) value;
+
+ /* For hosts with a word size > 32 check to see if value has been sign
+ extended beyond 32 bits. If so then ignore these higher sign bits
+ as the user is attempting to store a 32-bit signed value into an
+ unsigned 32-bit field which is allowed. */
+ if (sizeof (unsigned long) > 4 && ((value >> 32) == -1))
+ val &= 0xFFFFFFFF;
+
+ if (val > maxval)
+ {
+ /* xgettext:c-format */
+ sprintf (errbuf,
+ _("operand out of range (0x%lx not between 0 and 0x%lx)"),
+ val, maxval);
+ return errbuf;
+ }
+ }
+ else
+ {
+ if (! cgen_signed_overflow_ok_p (cd))
+ {
+ long minval = - (1L << (length - 1));
+ long maxval = (1L << (length - 1)) - 1;
+
+ if (value < minval || value > maxval)
+ {
+ sprintf
+ /* xgettext:c-format */
+ (errbuf, _("operand out of range (%ld not between %ld and %ld)"),
+ value, minval, maxval);
+ return errbuf;
+ }
+ }
+ }
+
+#if CGEN_INT_INSN_P
+
+ {
+ int shift;
+
+ if (CGEN_INSN_LSB0_P)
+ shift = (word_offset + start + 1) - length;
+ else
+ shift = total_length - (word_offset + start + length);
+ *buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift);
+ }
+
+#else /* ! CGEN_INT_INSN_P */
+
+ {
+ unsigned char *bufp = (unsigned char *) buffer + word_offset / 8;
+
+ insert_1 (cd, value, start, length, word_length, bufp);
+ }
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ return NULL;
+}
+
+/* Default insn builder (insert handler).
+ The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
+ that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
+ recorded in host byte order, otherwise BUFFER is an array of bytes
+ and the value is recorded in target byte order).
+ The result is an error message or NULL if success. */
+
+static const char *
+insert_insn_normal (CGEN_CPU_DESC cd,
+ const CGEN_INSN * insn,
+ CGEN_FIELDS * fields,
+ CGEN_INSN_BYTES_PTR buffer,
+ bfd_vma pc)
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ unsigned long value;
+ const CGEN_SYNTAX_CHAR_TYPE * syn;
+
+ CGEN_INIT_INSERT (cd);
+ value = CGEN_INSN_BASE_VALUE (insn);
+
+ /* If we're recording insns as numbers (rather than a string of bytes),
+ target byte order handling is deferred until later. */
+
+#if CGEN_INT_INSN_P
+
+ put_insn_int_value (cd, buffer, cd->base_insn_bitsize,
+ CGEN_FIELDS_BITSIZE (fields), value);
+
+#else
+
+ cgen_put_insn_value (cd, buffer, min ((unsigned) cd->base_insn_bitsize,
+ (unsigned) CGEN_FIELDS_BITSIZE (fields)),
+ value);
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ /* ??? It would be better to scan the format's fields.
+ Still need to be able to insert a value based on the operand though;
+ e.g. storing a branch displacement that got resolved later.
+ Needs more thought first. */
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); * syn; ++ syn)
+ {
+ const char *errmsg;
+
+ if (CGEN_SYNTAX_CHAR_P (* syn))
+ continue;
+
+ errmsg = (* cd->insert_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
+ fields, buffer, pc);
+ if (errmsg)
+ return errmsg;
+ }
+
+ return NULL;
+}
+
+#if CGEN_INT_INSN_P
+/* Cover function to store an insn value into an integral insn. Must go here
+ because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */
+
+static void
+put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ CGEN_INSN_BYTES_PTR buf,
+ int length,
+ int insn_length,
+ CGEN_INSN_INT value)
+{
+ /* For architectures with insns smaller than the base-insn-bitsize,
+ length may be too big. */
+ if (length > insn_length)
+ *buf = value;
+ else
+ {
+ int shift = insn_length - length;
+ /* Written this way to avoid undefined behaviour. */
+ CGEN_INSN_INT mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ *buf = (*buf & ~(mask << shift)) | ((value & mask) << shift);
+ }
+}
+#endif
+
+/* Operand extraction. */
+
+#if ! CGEN_INT_INSN_P
+
+/* Subroutine of extract_normal.
+ Ensure sufficient bytes are cached in EX_INFO.
+ OFFSET is the offset in bytes from the start of the insn of the value.
+ BYTES is the length of the needed value.
+ Returns 1 for success, 0 for failure. */
+
+static CGEN_INLINE int
+fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ CGEN_EXTRACT_INFO *ex_info,
+ int offset,
+ int bytes,
+ bfd_vma pc)
+{
+ /* It's doubtful that the middle part has already been fetched so
+ we don't optimize that case. kiss. */
+ unsigned int mask;
+ disassemble_info *info = (disassemble_info *) ex_info->dis_info;
+
+ /* First do a quick check. */
+ mask = (1 << bytes) - 1;
+ if (((ex_info->valid >> offset) & mask) == mask)
+ return 1;
+
+ /* Search for the first byte we need to read. */
+ for (mask = 1 << offset; bytes > 0; --bytes, ++offset, mask <<= 1)
+ if (! (mask & ex_info->valid))
+ break;
+
+ if (bytes)
+ {
+ int status;
+
+ pc += offset;
+ status = (*info->read_memory_func)
+ (pc, ex_info->insn_bytes + offset, bytes, info);
+
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, pc, info);
+ return 0;
+ }
+
+ ex_info->valid |= ((1 << bytes) - 1) << offset;
+ }
+
+ return 1;
+}
+
+/* Subroutine of extract_normal. */
+
+static CGEN_INLINE long
+extract_1 (CGEN_CPU_DESC cd,
+ CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+ int start,
+ int length,
+ int word_length,
+ unsigned char *bufp,
+ bfd_vma pc ATTRIBUTE_UNUSED)
+{
+ unsigned long x;
+ int shift;
+
+ x = cgen_get_insn_value (cd, bufp, word_length);
+
+ if (CGEN_INSN_LSB0_P)
+ shift = (start + 1) - length;
+ else
+ shift = (word_length - (start + length));
+ return x >> shift;
+}
+
+#endif /* ! CGEN_INT_INSN_P */
+
+/* Default extraction routine.
+
+ INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
+ or sometimes less for cases like the m32r where the base insn size is 32
+ but some insns are 16 bits.
+ ATTRS is a mask of the boolean attributes. We only need `SIGNED',
+ but for generality we take a bitmask of all of them.
+ WORD_OFFSET is the offset in bits from the start of the insn of the value.
+ WORD_LENGTH is the length of the word in bits in which the value resides.
+ START is the starting bit number in the word, architecture origin.
+ LENGTH is the length of VALUE in bits.
+ TOTAL_LENGTH is the total length of the insn in bits.
+
+ Returns 1 for success, 0 for failure. */
+
+/* ??? The return code isn't properly used. wip. */
+
+/* ??? This doesn't handle bfd_vma's. Create another function when
+ necessary. */
+
+static int
+extract_normal (CGEN_CPU_DESC cd,
+#if ! CGEN_INT_INSN_P
+ CGEN_EXTRACT_INFO *ex_info,
+#else
+ CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
+#endif
+ CGEN_INSN_INT insn_value,
+ unsigned int attrs,
+ unsigned int word_offset,
+ unsigned int start,
+ unsigned int length,
+ unsigned int word_length,
+ unsigned int total_length,
+#if ! CGEN_INT_INSN_P
+ bfd_vma pc,
+#else
+ bfd_vma pc ATTRIBUTE_UNUSED,
+#endif
+ long *valuep)
+{
+ long value, mask;
+
+ /* If LENGTH is zero, this operand doesn't contribute to the value
+ so give it a standard value of zero. */
+ if (length == 0)
+ {
+ *valuep = 0;
+ return 1;
+ }
+
+ if (word_length > 8 * sizeof (CGEN_INSN_INT))
+ abort ();
+
+ /* For architectures with insns smaller than the insn-base-bitsize,
+ word_length may be too big. */
+ if (cd->min_insn_bitsize < cd->base_insn_bitsize)
+ {
+ if (word_offset + word_length > total_length)
+ word_length = total_length - word_offset;
+ }
+
+ /* Does the value reside in INSN_VALUE, and at the right alignment? */
+
+ if (CGEN_INT_INSN_P || (word_offset == 0 && word_length == total_length))
+ {
+ if (CGEN_INSN_LSB0_P)
+ value = insn_value >> ((word_offset + start + 1) - length);
+ else
+ value = insn_value >> (total_length - ( word_offset + start + length));
+ }
+
+#if ! CGEN_INT_INSN_P
+
+ else
+ {
+ unsigned char *bufp = ex_info->insn_bytes + word_offset / 8;
+
+ if (word_length > 8 * sizeof (CGEN_INSN_INT))
+ abort ();
+
+ if (fill_cache (cd, ex_info, word_offset / 8, word_length / 8, pc) == 0)
+ return 0;
+
+ value = extract_1 (cd, ex_info, start, length, word_length, bufp, pc);
+ }
+
+#endif /* ! CGEN_INT_INSN_P */
+
+ /* Written this way to avoid undefined behaviour. */
+ mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ value &= mask;
+ /* sign extend? */
+ if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)
+ && (value & (1L << (length - 1))))
+ value |= ~mask;
+
+ *valuep = value;
+
+ return 1;
+}
+
+/* Default insn extractor.
+
+ INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
+ The extracted fields are stored in FIELDS.
+ EX_INFO is used to handle reading variable length insns.
+ Return the length of the insn in bits, or 0 if no match,
+ or -1 if an error occurs fetching data (memory_error_func will have
+ been called). */
+
+static int
+extract_insn_normal (CGEN_CPU_DESC cd,
+ const CGEN_INSN *insn,
+ CGEN_EXTRACT_INFO *ex_info,
+ CGEN_INSN_INT insn_value,
+ CGEN_FIELDS *fields,
+ bfd_vma pc)
+{
+ const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
+ const CGEN_SYNTAX_CHAR_TYPE *syn;
+
+ CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
+
+ CGEN_INIT_EXTRACT (cd);
+
+ for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
+ {
+ int length;
+
+ if (CGEN_SYNTAX_CHAR_P (*syn))
+ continue;
+
+ length = (* cd->extract_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
+ ex_info, insn_value, fields, pc);
+ if (length <= 0)
+ return length;
+ }
+
+ /* We recognized and successfully extracted this insn. */
+ return CGEN_INSN_BITSIZE (insn);
+}
+
+/* Machine generated code added here. */
+
+const char * epiphany_cgen_insert_operand
+ (CGEN_CPU_DESC, int, CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
+
+/* Main entry point for operand insertion.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `parse_insn_normal', but keeping it
+ separate makes clear the interface between `parse_insn_normal' and each of
+ the handlers. It's also needed by GAS to insert operands that couldn't be
+ resolved during parsing. */
+
+const char *
+epiphany_cgen_insert_operand (CGEN_CPU_DESC cd,
+ int opindex,
+ CGEN_FIELDS * fields,
+ CGEN_INSN_BYTES_PTR buffer,
+ bfd_vma pc ATTRIBUTE_UNUSED)
+{
+ const char * errmsg = NULL;
+ unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ errmsg = insert_normal (cd, fields->f_addsubx, 0, 0, 20, 1, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ {
+{
+ FLD (f_disp8) = ((((UINT) (FLD (f_disp11)) >> (3))) & (255));
+ FLD (f_disp3) = ((FLD (f_disp11)) & (7));
+}
+ errmsg = insert_normal (cd, fields->f_disp3, 0, 0, 9, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_disp8, 0, 0, 23, 8, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ errmsg = insert_normal (cd, fields->f_disp3, 0, 0, 9, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ errmsg = insert_normal (cd, fields->f_subd, 0, 0, 24, 1, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ {
+{
+ FLD (f_rd) = ((FLD (f_rd6)) & (7));
+ FLD (f_rd_x) = ((UINT) (FLD (f_rd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ errmsg = insert_normal (cd, fields->f_rm, 0, 0, 9, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ {
+{
+ FLD (f_rm) = ((FLD (f_rm6)) & (7));
+ FLD (f_rm_x) = ((UINT) (FLD (f_rm6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rm_x, 0, 0, 25, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rm, 0, 0, 9, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ errmsg = insert_normal (cd, fields->f_rn, 0, 0, 12, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ {
+{
+ FLD (f_rn) = ((FLD (f_rn6)) & (7));
+ FLD (f_rn_x) = ((UINT) (FLD (f_rn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ {
+{
+ FLD (f_imm8) = ((FLD (f_imm16)) & (255));
+ FLD (f_imm_27_8) = ((UINT) (FLD (f_imm16)) >> (8));
+}
+ errmsg = insert_normal (cd, fields->f_imm8, 0, 0, 12, 8, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_imm_27_8, 0, 0, 27, 8, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ errmsg = insert_normal (cd, fields->f_imm8, 0, 0, 12, 8, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_RD :
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ {
+{
+ FLD (f_rd) = ((FLD (f_rd6)) & (7));
+ FLD (f_rd_x) = ((UINT) (FLD (f_rd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_RM :
+ errmsg = insert_normal (cd, fields->f_rm, 0, 0, 9, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ {
+{
+ FLD (f_rm) = ((FLD (f_rm6)) & (7));
+ FLD (f_rm_x) = ((UINT) (FLD (f_rm6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rm_x, 0, 0, 25, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rm, 0, 0, 9, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_RN :
+ errmsg = insert_normal (cd, fields->f_rn, 0, 0, 12, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ {
+{
+ FLD (f_rn) = ((FLD (f_rn6)) & (7));
+ FLD (f_rn_x) = ((UINT) (FLD (f_rn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_rn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_rn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SD :
+ errmsg = insert_normal (cd, fields->f_sd, 0, 0, 15, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ {
+{
+ FLD (f_sd) = ((FLD (f_sd6)) & (7));
+ FLD (f_sd_x) = ((UINT) (FLD (f_sd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ {
+{
+ FLD (f_sd) = ((FLD (f_sd6)) & (7));
+ FLD (f_sd_x) = ((UINT) (FLD (f_sd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ {
+{
+ FLD (f_sd) = ((FLD (f_sd6)) & (7));
+ FLD (f_sd_x) = ((UINT) (FLD (f_sd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ {
+{
+ FLD (f_sd) = ((FLD (f_sd6)) & (7));
+ FLD (f_sd_x) = ((UINT) (FLD (f_sd6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sd_x, 0, 0, 31, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sd, 0, 0, 15, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ errmsg = insert_normal (cd, fields->f_shift, 0, 0, 9, 5, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ {
+{
+ FLD (f_disp8) = ((255) & (((USI) (FLD (f_sdisp11)) >> (3))));
+ FLD (f_disp3) = ((FLD (f_sdisp11)) & (7));
+}
+ errmsg = insert_normal (cd, fields->f_disp3, 0, 0, 9, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_disp8, 0, 0, 23, 8, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ {
+ long value = fields->f_simm24;
+ value = ((SI) (((value) - (pc))) >> (1));
+ errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_RELOC)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 31, 24, 32, total_length, buffer);
+ }
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ errmsg = insert_normal (cd, fields->f_sdisp3, 0|(1<<CGEN_IFLD_SIGNED), 0, 9, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ {
+ long value = fields->f_simm8;
+ value = ((SI) (((value) - (pc))) >> (1));
+ errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_RELOC)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 8, 32, total_length, buffer);
+ }
+ break;
+ case EPIPHANY_OPERAND_SN :
+ errmsg = insert_normal (cd, fields->f_sn, 0, 0, 12, 3, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ {
+{
+ FLD (f_sn) = ((FLD (f_sn6)) & (7));
+ FLD (f_sn_x) = ((UINT) (FLD (f_sn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ {
+{
+ FLD (f_sn) = ((FLD (f_sn6)) & (7));
+ FLD (f_sn_x) = ((UINT) (FLD (f_sn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ {
+{
+ FLD (f_sn) = ((FLD (f_sn6)) & (7));
+ FLD (f_sn_x) = ((UINT) (FLD (f_sn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ {
+{
+ FLD (f_sn) = ((FLD (f_sn6)) & (7));
+ FLD (f_sn_x) = ((UINT) (FLD (f_sn6)) >> (3));
+}
+ errmsg = insert_normal (cd, fields->f_sn_x, 0, 0, 28, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ errmsg = insert_normal (cd, fields->f_sn, 0, 0, 12, 3, 32, total_length, buffer);
+ if (errmsg)
+ break;
+ }
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ errmsg = insert_normal (cd, fields->f_trap_num, 0, 0, 15, 6, 32, total_length, buffer);
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ errmsg = insert_normal (cd, fields->f_trap_num, 0, 0, 15, 6, 32, total_length, buffer);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while building insn.\n"),
+ opindex);
+ abort ();
+ }
+
+ return errmsg;
+}
+
+int epiphany_cgen_extract_operand
+ (CGEN_CPU_DESC, int, CGEN_EXTRACT_INFO *, CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
+
+/* Main entry point for operand extraction.
+ The result is <= 0 for error, >0 for success.
+ ??? Actual values aren't well defined right now.
+
+ This function is basically just a big switch statement. Earlier versions
+ used tables to look up the function to use, but
+ - if the table contains both assembler and disassembler functions then
+ the disassembler contains much of the assembler and vice-versa,
+ - there's a lot of inlining possibilities as things grow,
+ - using a switch statement avoids the function call overhead.
+
+ This function could be moved into `print_insn_normal', but keeping it
+ separate makes clear the interface between `print_insn_normal' and each of
+ the handlers. */
+
+int
+epiphany_cgen_extract_operand (CGEN_CPU_DESC cd,
+ int opindex,
+ CGEN_EXTRACT_INFO *ex_info,
+ CGEN_INSN_INT insn_value,
+ CGEN_FIELDS * fields,
+ bfd_vma pc)
+{
+ /* Assume success (for those operands that are nops). */
+ int length = 1;
+ unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 1, 32, total_length, pc, & fields->f_addsubx);
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_disp3);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 8, 32, total_length, pc, & fields->f_disp8);
+ if (length <= 0) break;
+{
+ FLD (f_disp11) = ((((FLD (f_disp8)) << (3))) | (FLD (f_disp3)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_disp3);
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 1, 32, total_length, pc, & fields->f_subd);
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_rd);
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_rd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_rd);
+ if (length <= 0) break;
+{
+ FLD (f_rd6) = ((((FLD (f_rd_x)) << (3))) | (FLD (f_rd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_rm);
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 3, 32, total_length, pc, & fields->f_rm_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_rm);
+ if (length <= 0) break;
+{
+ FLD (f_rm6) = ((((FLD (f_rm_x)) << (3))) | (FLD (f_rm)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_rn);
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_rn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_rn);
+ if (length <= 0) break;
+{
+ FLD (f_rn6) = ((((FLD (f_rn_x)) << (3))) | (FLD (f_rn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 8, 32, total_length, pc, & fields->f_imm8);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 27, 8, 32, total_length, pc, & fields->f_imm_27_8);
+ if (length <= 0) break;
+{
+ FLD (f_imm16) = ((((FLD (f_imm_27_8)) << (8))) | (FLD (f_imm8)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 8, 32, total_length, pc, & fields->f_imm8);
+ break;
+ case EPIPHANY_OPERAND_RD :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_rd);
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_rd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_rd);
+ if (length <= 0) break;
+{
+ FLD (f_rd6) = ((((FLD (f_rd_x)) << (3))) | (FLD (f_rd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_RM :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_rm);
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 3, 32, total_length, pc, & fields->f_rm_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_rm);
+ if (length <= 0) break;
+{
+ FLD (f_rm6) = ((((FLD (f_rm_x)) << (3))) | (FLD (f_rm)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_RN :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_rn);
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_rn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_rn);
+ if (length <= 0) break;
+{
+ FLD (f_rn6) = ((((FLD (f_rn_x)) << (3))) | (FLD (f_rn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SD :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_sd);
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_sd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_sd);
+ if (length <= 0) break;
+{
+ FLD (f_sd6) = ((((FLD (f_sd_x)) << (3))) | (FLD (f_sd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_sd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_sd);
+ if (length <= 0) break;
+{
+ FLD (f_sd6) = ((((FLD (f_sd_x)) << (3))) | (FLD (f_sd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_sd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_sd);
+ if (length <= 0) break;
+{
+ FLD (f_sd6) = ((((FLD (f_sd_x)) << (3))) | (FLD (f_sd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 31, 3, 32, total_length, pc, & fields->f_sd_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_sd);
+ if (length <= 0) break;
+{
+ FLD (f_sd6) = ((((FLD (f_sd_x)) << (3))) | (FLD (f_sd)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 5, 32, total_length, pc, & fields->f_shift);
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_disp3);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 8, 32, total_length, pc, & fields->f_disp8);
+ if (length <= 0) break;
+{
+ FLD (f_sdisp11) = ((SI) (((((((FLD (f_disp8)) << (3))) | (FLD (f_disp3)))) << (21))) >> (21));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ {
+ long value;
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_RELOC)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 31, 24, 32, total_length, pc, & value);
+ value = ((((value) << (1))) + (pc));
+ fields->f_simm24 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 9, 3, 32, total_length, pc, & fields->f_sdisp3);
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ {
+ long value;
+ length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_RELOC)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 8, 32, total_length, pc, & value);
+ value = ((((value) << (1))) + (pc));
+ fields->f_simm8 = value;
+ }
+ break;
+ case EPIPHANY_OPERAND_SN :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_sn);
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_sn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_sn);
+ if (length <= 0) break;
+{
+ FLD (f_sn6) = ((((FLD (f_sn_x)) << (3))) | (FLD (f_sn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_sn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_sn);
+ if (length <= 0) break;
+{
+ FLD (f_sn6) = ((((FLD (f_sn_x)) << (3))) | (FLD (f_sn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_sn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_sn);
+ if (length <= 0) break;
+{
+ FLD (f_sn6) = ((((FLD (f_sn_x)) << (3))) | (FLD (f_sn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ {
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 3, 32, total_length, pc, & fields->f_sn_x);
+ if (length <= 0) break;
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_sn);
+ if (length <= 0) break;
+{
+ FLD (f_sn6) = ((((FLD (f_sn_x)) << (3))) | (FLD (f_sn)));
+}
+ }
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 6, 32, total_length, pc, & fields->f_trap_num);
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 6, 32, total_length, pc, & fields->f_trap_num);
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"),
+ opindex);
+ abort ();
+ }
+
+ return length;
+}
+
+cgen_insert_fn * const epiphany_cgen_insert_handlers[] =
+{
+ insert_insn_normal,
+};
+
+cgen_extract_fn * const epiphany_cgen_extract_handlers[] =
+{
+ extract_insn_normal,
+};
+
+int epiphany_cgen_get_int_operand (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
+bfd_vma epiphany_cgen_get_vma_operand (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
+
+/* Getting values from cgen_fields is handled by a collection of functions.
+ They are distinguished by the type of the VALUE argument they return.
+ TODO: floating point, inlining support, remove cases where result type
+ not appropriate. */
+
+int
+epiphany_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ int opindex,
+ const CGEN_FIELDS * fields)
+{
+ int value;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ value = fields->f_addsubx;
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ value = fields->f_disp11;
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ value = fields->f_disp3;
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ value = fields->f_subd;
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ value = fields->f_rd;
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ value = fields->f_rd6;
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ value = fields->f_rm;
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ value = fields->f_rm6;
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ value = fields->f_rn;
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ value = fields->f_rn6;
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ value = fields->f_imm16;
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ value = fields->f_imm8;
+ break;
+ case EPIPHANY_OPERAND_RD :
+ value = fields->f_rd;
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ value = fields->f_rd6;
+ break;
+ case EPIPHANY_OPERAND_RM :
+ value = fields->f_rm;
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ value = fields->f_rm6;
+ break;
+ case EPIPHANY_OPERAND_RN :
+ value = fields->f_rn;
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ value = fields->f_rn6;
+ break;
+ case EPIPHANY_OPERAND_SD :
+ value = fields->f_sd;
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ value = fields->f_shift;
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ value = fields->f_sdisp11;
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ value = fields->f_simm24;
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ value = fields->f_sdisp3;
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ value = fields->f_simm8;
+ break;
+ case EPIPHANY_OPERAND_SN :
+ value = fields->f_sn;
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ value = fields->f_trap_num;
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ value = fields->f_trap_num;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),
+ opindex);
+ abort ();
+ }
+
+ return value;
+}
+
+bfd_vma
+epiphany_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ int opindex,
+ const CGEN_FIELDS * fields)
+{
+ bfd_vma value;
+
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ value = fields->f_addsubx;
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ value = fields->f_disp11;
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ value = fields->f_disp3;
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ value = fields->f_subd;
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ value = fields->f_rd;
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ value = fields->f_rd6;
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ value = fields->f_rm;
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ value = fields->f_rm6;
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ value = fields->f_rn;
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ value = fields->f_rn6;
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ value = fields->f_imm16;
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ value = fields->f_imm8;
+ break;
+ case EPIPHANY_OPERAND_RD :
+ value = fields->f_rd;
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ value = fields->f_rd6;
+ break;
+ case EPIPHANY_OPERAND_RM :
+ value = fields->f_rm;
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ value = fields->f_rm6;
+ break;
+ case EPIPHANY_OPERAND_RN :
+ value = fields->f_rn;
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ value = fields->f_rn6;
+ break;
+ case EPIPHANY_OPERAND_SD :
+ value = fields->f_sd;
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ value = fields->f_sd6;
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ value = fields->f_shift;
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ value = fields->f_sdisp11;
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ value = fields->f_simm24;
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ value = fields->f_sdisp3;
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ value = fields->f_simm8;
+ break;
+ case EPIPHANY_OPERAND_SN :
+ value = fields->f_sn;
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ value = fields->f_sn6;
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ value = fields->f_trap_num;
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ value = fields->f_trap_num;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),
+ opindex);
+ abort ();
+ }
+
+ return value;
+}
+
+void epiphany_cgen_set_int_operand (CGEN_CPU_DESC, int, CGEN_FIELDS *, int);
+void epiphany_cgen_set_vma_operand (CGEN_CPU_DESC, int, CGEN_FIELDS *, bfd_vma);
+
+/* Stuffing values in cgen_fields is handled by a collection of functions.
+ They are distinguished by the type of the VALUE argument they accept.
+ TODO: floating point, inlining support, remove cases where argument type
+ not appropriate. */
+
+void
+epiphany_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ int opindex,
+ CGEN_FIELDS * fields,
+ int value)
+{
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ fields->f_addsubx = value;
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ fields->f_disp11 = value;
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ fields->f_disp3 = value;
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ fields->f_subd = value;
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ fields->f_rd = value;
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ fields->f_rd6 = value;
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ fields->f_rm = value;
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ fields->f_rm6 = value;
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ fields->f_rn = value;
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ fields->f_rn6 = value;
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ fields->f_imm16 = value;
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ fields->f_imm8 = value;
+ break;
+ case EPIPHANY_OPERAND_RD :
+ fields->f_rd = value;
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ fields->f_rd6 = value;
+ break;
+ case EPIPHANY_OPERAND_RM :
+ fields->f_rm = value;
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ fields->f_rm6 = value;
+ break;
+ case EPIPHANY_OPERAND_RN :
+ fields->f_rn = value;
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ fields->f_rn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SD :
+ fields->f_sd = value;
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ fields->f_shift = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ fields->f_sdisp11 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ fields->f_simm24 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ fields->f_sdisp3 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ fields->f_simm8 = value;
+ break;
+ case EPIPHANY_OPERAND_SN :
+ fields->f_sn = value;
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ fields->f_trap_num = value;
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ fields->f_trap_num = value;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+void
+epiphany_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
+ int opindex,
+ CGEN_FIELDS * fields,
+ bfd_vma value)
+{
+ switch (opindex)
+ {
+ case EPIPHANY_OPERAND_DIRECTION :
+ fields->f_addsubx = value;
+ break;
+ case EPIPHANY_OPERAND_DISP11 :
+ fields->f_disp11 = value;
+ break;
+ case EPIPHANY_OPERAND_DISP3 :
+ fields->f_disp3 = value;
+ break;
+ case EPIPHANY_OPERAND_DPMI :
+ fields->f_subd = value;
+ break;
+ case EPIPHANY_OPERAND_FRD :
+ fields->f_rd = value;
+ break;
+ case EPIPHANY_OPERAND_FRD6 :
+ fields->f_rd6 = value;
+ break;
+ case EPIPHANY_OPERAND_FRM :
+ fields->f_rm = value;
+ break;
+ case EPIPHANY_OPERAND_FRM6 :
+ fields->f_rm6 = value;
+ break;
+ case EPIPHANY_OPERAND_FRN :
+ fields->f_rn = value;
+ break;
+ case EPIPHANY_OPERAND_FRN6 :
+ fields->f_rn6 = value;
+ break;
+ case EPIPHANY_OPERAND_IMM16 :
+ fields->f_imm16 = value;
+ break;
+ case EPIPHANY_OPERAND_IMM8 :
+ fields->f_imm8 = value;
+ break;
+ case EPIPHANY_OPERAND_RD :
+ fields->f_rd = value;
+ break;
+ case EPIPHANY_OPERAND_RD6 :
+ fields->f_rd6 = value;
+ break;
+ case EPIPHANY_OPERAND_RM :
+ fields->f_rm = value;
+ break;
+ case EPIPHANY_OPERAND_RM6 :
+ fields->f_rm6 = value;
+ break;
+ case EPIPHANY_OPERAND_RN :
+ fields->f_rn = value;
+ break;
+ case EPIPHANY_OPERAND_RN6 :
+ fields->f_rn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SD :
+ fields->f_sd = value;
+ break;
+ case EPIPHANY_OPERAND_SD6 :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDDMA :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDMEM :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SDMESH :
+ fields->f_sd6 = value;
+ break;
+ case EPIPHANY_OPERAND_SHIFT :
+ fields->f_shift = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM11 :
+ fields->f_sdisp11 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM24 :
+ fields->f_simm24 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM3 :
+ fields->f_sdisp3 = value;
+ break;
+ case EPIPHANY_OPERAND_SIMM8 :
+ fields->f_simm8 = value;
+ break;
+ case EPIPHANY_OPERAND_SN :
+ fields->f_sn = value;
+ break;
+ case EPIPHANY_OPERAND_SN6 :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNDMA :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNMEM :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SNMESH :
+ fields->f_sn6 = value;
+ break;
+ case EPIPHANY_OPERAND_SWI_NUM :
+ fields->f_trap_num = value;
+ break;
+ case EPIPHANY_OPERAND_TRAPNUM6 :
+ fields->f_trap_num = value;
+ break;
+
+ default :
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),
+ opindex);
+ abort ();
+ }
+}
+
+/* Function to call before using the instruction builder tables. */
+
+void
+epiphany_cgen_init_ibld_table (CGEN_CPU_DESC cd)
+{
+ cd->insert_handlers = & epiphany_cgen_insert_handlers[0];
+ cd->extract_handlers = & epiphany_cgen_extract_handlers[0];
+
+ cd->insert_operand = epiphany_cgen_insert_operand;
+ cd->extract_operand = epiphany_cgen_extract_operand;
+
+ cd->get_int_operand = epiphany_cgen_get_int_operand;
+ cd->set_int_operand = epiphany_cgen_set_int_operand;
+ cd->get_vma_operand = epiphany_cgen_get_vma_operand;
+ cd->set_vma_operand = epiphany_cgen_set_vma_operand;
+}
diff --git a/opcodes/epiphany-opc.c b/opcodes/epiphany-opc.c
new file mode 100644
index 0000000000..e761061015
--- /dev/null
+++ b/opcodes/epiphany-opc.c
@@ -0,0 +1,4035 @@
+/* Instruction opcode table for epiphany.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996-2010 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+ This file 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+*/
+
+#include "sysdep.h"
+#include "ansidecl.h"
+#include "bfd.h"
+#include "symcat.h"
+#include "epiphany-desc.h"
+#include "epiphany-opc.h"
+#include "libiberty.h"
+
+/* -- opc.c */
+
+
+
+/* -- asm.c */
+/* The hash functions are recorded here to help keep assembler code out of
+ the disassembler and vice versa. */
+
+static int asm_hash_insn_p (const CGEN_INSN *);
+static unsigned int asm_hash_insn (const char *);
+static int dis_hash_insn_p (const CGEN_INSN *);
+static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
+
+/* Instruction formats. */
+
+#define F(f) & epiphany_cgen_ifld_table[EPIPHANY_##f]
+static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
+ 0, 0, 0x0, { { 0 } }
+};
+
+static const CGEN_IFMT ifmt_beq16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_SIMM8) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_beq ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_SIMM24) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jr16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0xe3ff, { { F (F_DC_15_3) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_rts ATTRIBUTE_UNUSED = {
+ 32, 32, 0xffffffff, { { F (F_DC_31_3) }, { F (F_RN_X) }, { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_DC_15_3) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
+ 32, 32, 0xe3ffe3ff, { { F (F_DC_31_3) }, { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_DC_15_3) }, { F (F_RN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbx16_s ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbx_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_ADDSUBX) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbp_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_DC_22_2) }, { F (F_ADDSUBX) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbd16_s ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbd_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_PM) }, { F (F_SUBD) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_DISP11) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov16EQ ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_RD) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmovEQ ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_RD) }, { F (F_SN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts6 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movtsdma ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movtsmem ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movtsmesh ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
+ 16, 16, 0xffff, { { F (F_DC_15_7) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_unimpl ATTRIBUTE_UNUSED = {
+ 32, 32, 0xffffffff, { { F (F_OPC_31_32) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_gien ATTRIBUTE_UNUSED = {
+ 16, 16, 0xffff, { { F (F_DC_15_6) }, { F (F_GIEN_GIDIS_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_swi_num ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_TRAP_NUM) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_swi ATTRIBUTE_UNUSED = {
+ 16, 16, 0xffff, { { F (F_DC_15_6) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_trap16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_TRAP_NUM) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_add16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_DC_22_3) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
+ 32, 32, 0x300007f, { { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsri16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x1f, { { F (F_RD) }, { F (F_RN) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsri32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff001f, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bitr16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_RD) }, { F (F_RN) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bitr ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_fext ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mov8 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x1f, { { F (F_RD) }, { F (F_IMM8) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mov16 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x100f001f, { { F (F_DC_28_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_IMM16) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_absf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RN) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_absf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_DC_22_3) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_loatf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RN) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_recipf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } }
+};
+
+#undef F
+
+#define A(a) (1 << CGEN_INSN_##a)
+#define OPERAND(op) EPIPHANY_OPERAND_##op
+#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+
+/* The instruction table. */
+
+static const CGEN_OPCODE epiphany_cgen_insn_opcode_table[MAX_INSNS] =
+{
+ /* Special null first entry.
+ A `num' value of zero is thus invalid.
+ Also, the special `invalid' insn resides here. */
+ { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
+/* beq.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x0 }
+ },
+/* beq.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x8 }
+ },
+/* bne.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x10 }
+ },
+/* bne.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x18 }
+ },
+/* bgtu.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x20 }
+ },
+/* bgtu.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x28 }
+ },
+/* bgteu.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x30 }
+ },
+/* bgteu.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x38 }
+ },
+/* blteu.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x40 }
+ },
+/* blteu.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x48 }
+ },
+/* bltu.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x50 }
+ },
+/* bltu.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x58 }
+ },
+/* bgt.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x60 }
+ },
+/* bgt.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x68 }
+ },
+/* bgte.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x70 }
+ },
+/* bgte.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x78 }
+ },
+/* blt.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x80 }
+ },
+/* blt.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x88 }
+ },
+/* blte.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0x90 }
+ },
+/* blte.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0x98 }
+ },
+/* bbeq.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xa0 }
+ },
+/* bbeq.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xa8 }
+ },
+/* bbne.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xb0 }
+ },
+/* bbne.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xb8 }
+ },
+/* bblt.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xc0 }
+ },
+/* bblt.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xc8 }
+ },
+/* bblte.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xd0 }
+ },
+/* bblte.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xd8 }
+ },
+/* b.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xe0 }
+ },
+/* b.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xe8 }
+ },
+/* bl.s $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16, { 0xf0 }
+ },
+/* bl.l $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq, { 0xf8 }
+ },
+/* jr $rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RN), 0 } },
+ & ifmt_jr16, { 0x142 }
+ },
+/* rts */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_rts, { 0x402194f }
+ },
+/* jr $rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RN6), 0 } },
+ & ifmt_jr, { 0x2014f }
+ },
+/* jalr $rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RN), 0 } },
+ & ifmt_jr16, { 0x152 }
+ },
+/* jalr $rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RN6), 0 } },
+ & ifmt_jr, { 0x2015f }
+ },
+/* ldrb $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x1 }
+ },
+/* ldrb $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x5 }
+ },
+/* ldrb $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x9 }
+ },
+/* ldrb $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0xd }
+ },
+/* ldrb $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x4 }
+ },
+/* ldrb $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0xc }
+ },
+/* ldrb $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200000c }
+ },
+/* ldrh $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x21 }
+ },
+/* ldrh $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x25 }
+ },
+/* ldrh $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x29 }
+ },
+/* ldrh $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x2d }
+ },
+/* ldrh $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x24 }
+ },
+/* ldrh $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x2c }
+ },
+/* ldrh $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200002c }
+ },
+/* ldr $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x41 }
+ },
+/* ldr $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x45 }
+ },
+/* ldr $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x49 }
+ },
+/* ldr $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x4d }
+ },
+/* ldr $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x44 }
+ },
+/* ldr $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x4c }
+ },
+/* ldr $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200004c }
+ },
+/* ldrd $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x61 }
+ },
+/* ldrd $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x65 }
+ },
+/* ldrd $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x69 }
+ },
+/* ldrd $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x6d }
+ },
+/* ldrd $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x64 }
+ },
+/* ldrd $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x6c }
+ },
+/* ldrd $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200006c }
+ },
+/* testsetb $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x200009 }
+ },
+/* testseth $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x200029 }
+ },
+/* testset $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x200049 }
+ },
+/* strb $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x11 }
+ },
+/* strb $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x19 }
+ },
+/* strb $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x15 }
+ },
+/* strb $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x1d }
+ },
+/* strb $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x14 }
+ },
+/* strb $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x1c }
+ },
+/* strb $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200001c }
+ },
+/* strh $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x31 }
+ },
+/* strh $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x39 }
+ },
+/* strh $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x35 }
+ },
+/* strh $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x3d }
+ },
+/* strh $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x34 }
+ },
+/* strh $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x3c }
+ },
+/* strh $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200003c }
+ },
+/* str $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x51 }
+ },
+/* str $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x59 }
+ },
+/* str $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x55 }
+ },
+/* str $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x5d }
+ },
+/* str $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x54 }
+ },
+/* str $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x5c }
+ },
+/* str $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200005c }
+ },
+/* strd $rd,[$rn,$rm] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } },
+ & ifmt_ldrbx16_s, { 0x71 }
+ },
+/* strd $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx_l, { 0x79 }
+ },
+/* strd $rd,[$rn],$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } },
+ & ifmt_ldrbx16_s, { 0x75 }
+ },
+/* strd $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp_l, { 0x7d }
+ },
+/* strd $rd,[$rn,$disp3] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } },
+ & ifmt_ldrbd16_s, { 0x74 }
+ },
+/* strd $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd_l, { 0x7c }
+ },
+/* strd $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbd_l, { 0x200007c }
+ },
+/* moveq $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x2 }
+ },
+/* moveq $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2000f }
+ },
+/* movne $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x12 }
+ },
+/* movne $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2001f }
+ },
+/* movgtu $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x22 }
+ },
+/* movgtu $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2002f }
+ },
+/* movgteu $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x32 }
+ },
+/* movgteu $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2003f }
+ },
+/* movlteu $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x42 }
+ },
+/* movlteu $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2004f }
+ },
+/* movltu $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x52 }
+ },
+/* movltu $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2005f }
+ },
+/* movgt $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x62 }
+ },
+/* movgt $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2006f }
+ },
+/* movgte $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x72 }
+ },
+/* movgte $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2007f }
+ },
+/* movlt $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x82 }
+ },
+/* movlt $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2008f }
+ },
+/* movlte $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0x92 }
+ },
+/* movlte $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x2009f }
+ },
+/* mov $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0xe2 }
+ },
+/* mov $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x200ef }
+ },
+/* movbeq $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0xa2 }
+ },
+/* movbeq $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x200af }
+ },
+/* movbne $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0xb2 }
+ },
+/* movbne $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x200bf }
+ },
+/* movblt $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0xc2 }
+ },
+/* movblt $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x200cf }
+ },
+/* movblte $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_cmov16EQ, { 0xd2 }
+ },
+/* movblte $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmovEQ, { 0x200df }
+ },
+/* movts $sn,$rd */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SN), ',', OP (RD), 0 } },
+ & ifmt_movts16, { 0x102 }
+ },
+/* movts $sn6,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SN6), ',', OP (RD6), 0 } },
+ & ifmt_movts6, { 0x2010f }
+ },
+/* movts $sndma,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNDMA), ',', OP (RD6), 0 } },
+ & ifmt_movtsdma, { 0x12010f }
+ },
+/* movts $snmem,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNMEM), ',', OP (RD6), 0 } },
+ & ifmt_movtsmem, { 0x22010f }
+ },
+/* movts $snmesh,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNMESH), ',', OP (RD6), 0 } },
+ & ifmt_movtsmesh, { 0x32010f }
+ },
+/* movfs $rd,$sn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (SN), 0 } },
+ & ifmt_movts16, { 0x112 }
+ },
+/* movfs $rd6,$sn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SN6), 0 } },
+ & ifmt_movts6, { 0x2011f }
+ },
+/* movfs $rd6,$sndma */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNDMA), 0 } },
+ & ifmt_movtsdma, { 0x12011f }
+ },
+/* movfs $rd6,$snmem */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNMEM), 0 } },
+ & ifmt_movtsmem, { 0x22011f }
+ },
+/* movfs $rd6,$snmesh */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNMESH), 0 } },
+ & ifmt_movtsmesh, { 0x32011f }
+ },
+/* nop */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x1a2 }
+ },
+/* snop */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x3a2 }
+ },
+/* unimpl */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_unimpl, { 0xf000f }
+ },
+/* idle */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x1b2 }
+ },
+/* bkpt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x1c2 }
+ },
+/* mbkpt */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x3c2 }
+ },
+/* rti */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x1d2 }
+ },
+/* wand */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x182 }
+ },
+/* sync */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_nop, { 0x1f2 }
+ },
+/* gie */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_gien, { 0x192 }
+ },
+/* gid */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_gien, { 0x392 }
+ },
+/* swi $swi_num */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SWI_NUM), 0 } },
+ & ifmt_swi_num, { 0x1e2 }
+ },
+/* swi */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, 0 } },
+ & ifmt_swi, { 0x1e2 }
+ },
+/* trap $trapnum6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (TRAPNUM6), 0 } },
+ & ifmt_trap16, { 0x3e2 }
+ },
+/* add $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x1a }
+ },
+/* add $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa001f }
+ },
+/* sub $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x3a }
+ },
+/* sub $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa003f }
+ },
+/* and $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x5a }
+ },
+/* and $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa005f }
+ },
+/* orr $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x7a }
+ },
+/* orr $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa007f }
+ },
+/* eor $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0xa }
+ },
+/* eor $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa000f }
+ },
+/* add.s $rd,$rn,$simm3 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } },
+ & ifmt_addi16, { 0x13 }
+ },
+/* add.l $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_addi, { 0x1b }
+ },
+/* sub.s $rd,$rn,$simm3 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } },
+ & ifmt_addi16, { 0x33 }
+ },
+/* sub.l $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_addi, { 0x3b }
+ },
+/* asr $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x6a }
+ },
+/* asr $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa006f }
+ },
+/* lsr $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x4a }
+ },
+/* lsr $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa004f }
+ },
+/* lsl $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x2a }
+ },
+/* lsl $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0xa002f }
+ },
+/* lsr $rd,$rn,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri16, { 0x6 }
+ },
+/* lsr $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri32, { 0x6000f }
+ },
+/* lsl $rd,$rn,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri16, { 0x16 }
+ },
+/* lsl $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri32, { 0x6001f }
+ },
+/* asr $rd,$rn,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri16, { 0xe }
+ },
+/* asr $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri32, { 0xe000f }
+ },
+/* bitr $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_bitr16, { 0x1e }
+ },
+/* bitr $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_bitr, { 0xe001f }
+ },
+/* fext $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_fext, { 0x1a000f }
+ },
+/* fdep $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_fext, { 0x1a001f }
+ },
+/* lfsr $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_fext, { 0x1a002f }
+ },
+/* mov.b $rd,$imm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (IMM8), 0 } },
+ & ifmt_mov8, { 0x3 }
+ },
+/* mov.l $rd6,$imm16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } },
+ & ifmt_mov16, { 0x2000b }
+ },
+/* movt $rd6,$imm16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } },
+ & ifmt_mov16, { 0x1002000b }
+ },
+/* fadd $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x7 }
+ },
+/* fadd $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0x7000f }
+ },
+/* fsub $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x17 }
+ },
+/* fsub $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0x7001f }
+ },
+/* fmul $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x27 }
+ },
+/* fmul $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0x7002f }
+ },
+/* fmadd $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x37 }
+ },
+/* fmadd $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0x7003f }
+ },
+/* fmsub $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_add16, { 0x47 }
+ },
+/* fmsub $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add, { 0x7004f }
+ },
+/* fabs rd,rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', 'r', 'd', ',', 'r', 'n', 0 } },
+ & ifmt_f_absf16, { 0x77 }
+ },
+/* fabs $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_absf32, { 0x7007f }
+ },
+/* float $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_f_loatf16, { 0x57 }
+ },
+/* float $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_absf32, { 0x7005f }
+ },
+/* fix $rd,$rn */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } },
+ & ifmt_f_absf16, { 0x67 }
+ },
+/* fix $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_absf32, { 0x7006f }
+ },
+/* frecip $frd6,$frn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } },
+ & ifmt_f_recipf32, { 0x17000f }
+ },
+/* fsqrt $frd6,$frn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } },
+ & ifmt_f_recipf32, { 0x17001f }
+ },
+};
+
+#undef A
+#undef OPERAND
+#undef MNEM
+#undef OP
+
+/* Formats for ALIAS macro-insns. */
+
+#define F(f) & epiphany_cgen_ifld_table[EPIPHANY_##f]
+static const CGEN_IFMT ifmt_beq16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_beq32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bne16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bne32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgtu16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgtu32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgteu16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgteu32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blteu16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blteu32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bltu16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bltu32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgt16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgt32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgte16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bgte32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blt16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blt32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blte16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blte32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbeq16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbeq32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbne16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bbne32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bblt16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bblt32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bblte16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bblte32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_b16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_b32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bl16r ATTRIBUTE_UNUSED = {
+ 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_blr ATTRIBUTE_UNUSED = {
+ 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbx ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbp ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbd ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbdpm ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrbdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhx ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhp ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhd ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhdpm ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrhdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrx ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrp ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrd ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdpm ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdx ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdp ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdd ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrddpm ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrdds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrddl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_ldrddl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_testsetbt_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_testsetht_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_testsett_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbx_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbp_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbd_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbdpm_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strbdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhx_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhp_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhd_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhdpm_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strhdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strx_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strp_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strd_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdpm_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdx_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdp_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdd_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strddpm_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strdds0 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strddl0 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_strddl0_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lEQ ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lNE ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lGTU ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lGTEU ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lLTEU ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lLTU ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lGT ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lGTE ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lLT ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lLTE ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lB ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lBEQ ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lBNE ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lBLT ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_cmov_lBLTE ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts_l6 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts_ldma ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts_lmem ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movts_lmesh ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movfs_l6 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movfs_ldma ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movfs_lmem ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movfs_lmesh ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_add_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_sub_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_and_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_orr_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_eor_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addir ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_addi32m ATTRIBUTE_UNUSED = {
+ 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_subir ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_subi32r ATTRIBUTE_UNUSED = {
+ 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_subi32m ATTRIBUTE_UNUSED = {
+ 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_asr_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsr_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsl_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsri32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lsli32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_asri32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_bitrl ATTRIBUTE_UNUSED = {
+ 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_fext_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_fdep_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_lfsr_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mov8r ATTRIBUTE_UNUSED = {
+ 16, 16, 0x1f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_RD) }, { F (F_IMM8) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_mov16r ATTRIBUTE_UNUSED = {
+ 32, 32, 0x100f001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_28_1) }, { F (F_RD6) }, { F (F_IMM16) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_movtl ATTRIBUTE_UNUSED = {
+ 32, 32, 0x100f001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_28_1) }, { F (F_RD6) }, { F (F_IMM16) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_addf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_addf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_addf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_addf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_subf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_subf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_subf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_subf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_mulf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_mulf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_mulf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_mulf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_maddf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_maddf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_maddf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_maddf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_msubf16 ATTRIBUTE_UNUSED = {
+ 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_msubf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_msubf32 ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_i_msubf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_absf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_loatf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_ixf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_recipf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } }
+};
+
+static const CGEN_IFMT ifmt_f_sqrtf32_l ATTRIBUTE_UNUSED = {
+ 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } }
+};
+
+#undef F
+
+/* Each non-simple macro entry points to an array of expansion possibilities. */
+
+#define A(a) (1 << CGEN_INSN_##a)
+#define OPERAND(op) EPIPHANY_OPERAND_##op
+#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
+#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
+
+/* The macro instruction table. */
+
+static const CGEN_IBASE epiphany_cgen_macro_insn_table[] =
+{
+/* beq $simm8 */
+ {
+ -1, "beq16r", "beq", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* beq $simm24 */
+ {
+ -1, "beq32r", "beq", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bne $simm8 */
+ {
+ -1, "bne16r", "bne", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bne $simm24 */
+ {
+ -1, "bne32r", "bne", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgtu $simm8 */
+ {
+ -1, "bgtu16r", "bgtu", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgtu $simm24 */
+ {
+ -1, "bgtu32r", "bgtu", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgteu $simm8 */
+ {
+ -1, "bgteu16r", "bgteu", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgteu $simm24 */
+ {
+ -1, "bgteu32r", "bgteu", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blteu $simm8 */
+ {
+ -1, "blteu16r", "blteu", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blteu $simm24 */
+ {
+ -1, "blteu32r", "blteu", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bltu $simm8 */
+ {
+ -1, "bltu16r", "bltu", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bltu $simm24 */
+ {
+ -1, "bltu32r", "bltu", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgt $simm8 */
+ {
+ -1, "bgt16r", "bgt", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgt $simm24 */
+ {
+ -1, "bgt32r", "bgt", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgte $simm8 */
+ {
+ -1, "bgte16r", "bgte", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bgte $simm24 */
+ {
+ -1, "bgte32r", "bgte", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blt $simm8 */
+ {
+ -1, "blt16r", "blt", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blt $simm24 */
+ {
+ -1, "blt32r", "blt", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blte $simm8 */
+ {
+ -1, "blte16r", "blte", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* blte $simm24 */
+ {
+ -1, "blte32r", "blte", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbeq $simm8 */
+ {
+ -1, "bbeq16r", "bbeq", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbeq $simm24 */
+ {
+ -1, "bbeq32r", "bbeq", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbne $simm8 */
+ {
+ -1, "bbne16r", "bbne", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bbne $simm24 */
+ {
+ -1, "bbne32r", "bbne", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblt $simm8 */
+ {
+ -1, "bblt16r", "bblt", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblt $simm24 */
+ {
+ -1, "bblt32r", "bblt", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblte $simm8 */
+ {
+ -1, "bblte16r", "bblte", 16,
+ { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bblte $simm24 */
+ {
+ -1, "bblte32r", "bblte", 32,
+ { 0|A(RELAXED)|A(COND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* b $simm8 */
+ {
+ -1, "b16r", "b", 16,
+ { 0|A(RELAXABLE)|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* b $simm24 */
+ {
+ -1, "b32r", "b", 32,
+ { 0|A(RELAXED)|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bl $simm8 */
+ {
+ -1, "bl16r", "bl", 16,
+ { 0|A(RELAXABLE)|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bl $simm24 */
+ {
+ -1, "blr", "bl", 32,
+ { 0|A(RELAXED)|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "ldrbx", "ldrb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "ldrbp", "ldrb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "ldrbd", "ldrb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "ldrbdpm", "ldrb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd,[$rn] */
+ {
+ -1, "ldrbds0", "ldrb", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb $rd6,[$rn6] */
+ {
+ -1, "ldrbdl0", "ldrb", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrb.l $rd6,[$rn6] */
+ {
+ -1, "ldrbdl0.l", "ldrb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "ldrhx", "ldrh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "ldrhp", "ldrh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "ldrhd", "ldrh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "ldrhdpm", "ldrh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd,[$rn] */
+ {
+ -1, "ldrhds0", "ldrh", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh $rd6,[$rn6] */
+ {
+ -1, "ldrhdl0", "ldrh", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrh.l $rd6,[$rn6] */
+ {
+ -1, "ldrhdl0.l", "ldrh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "ldrx", "ldr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "ldrp", "ldr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "ldrd", "ldr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "ldrdpm", "ldr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd,[$rn] */
+ {
+ -1, "ldrds0", "ldr", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr $rd6,[$rn6] */
+ {
+ -1, "ldrdl0", "ldr", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldr.l $rd6,[$rn6] */
+ {
+ -1, "ldrdl0.l", "ldr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "ldrdx", "ldrd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "ldrdp", "ldrd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "ldrdd", "ldrd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "ldrddpm", "ldrd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd,[$rn] */
+ {
+ -1, "ldrdds0", "ldrd", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd $rd6,[$rn6] */
+ {
+ -1, "ldrddl0", "ldrd", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* ldrd.l $rd6,[$rn6] */
+ {
+ -1, "ldrddl0.l", "ldrd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testsetb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "testsetbt.l", "testsetb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testseth.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "testsetht.l", "testseth.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* testset.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "testsett.l", "testset.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "strbx.l", "strb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "strbp.l", "strb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "strbd.l", "strb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "strbdpm.l", "strb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd,[$rn] */
+ {
+ -1, "strbds0", "strb", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb $rd6,[$rn6] */
+ {
+ -1, "strbdl0", "strb", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strb.l $rd6,[$rn6] */
+ {
+ -1, "strbdl0.l", "strb.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "strhx.l", "strh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "strhp.l", "strh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "strhd.l", "strh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "strhdpm.l", "strh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd,[$rn] */
+ {
+ -1, "strhds0", "strh", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh $rd6,[$rn6] */
+ {
+ -1, "strhdl0", "strh", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strh.l $rd6,[$rn6] */
+ {
+ -1, "strhdl0.l", "strh.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "strx.l", "str.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "strp.l", "str.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "strd.l", "str.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "strdpm.l", "str.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd,[$rn] */
+ {
+ -1, "strds0", "str", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str $rd6,[$rn6] */
+ {
+ -1, "strdl0", "str", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* str.l $rd6,[$rn6] */
+ {
+ -1, "strdl0.l", "str.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd.l $rd6,[$rn6,$direction$rm6] */
+ {
+ -1, "strdx.l", "strd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd.l $rd6,[$rn6],$direction$rm6 */
+ {
+ -1, "strdp.l", "strd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ -1, "strdd.l", "strd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ -1, "strddpm.l", "strd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd,[$rn] */
+ {
+ -1, "strdds0", "strd", 16,
+ { 0|A(IMM3)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd $rd6,[$rn6] */
+ {
+ -1, "strddl0", "strd", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* strd.l $rd6,[$rn6] */
+ {
+ -1, "strddl0.l", "strd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* moveq.l $rd6,$rn6 */
+ {
+ -1, "cmov.lEQ", "moveq.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movne.l $rd6,$rn6 */
+ {
+ -1, "cmov.lNE", "movne.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgtu.l $rd6,$rn6 */
+ {
+ -1, "cmov.lGTU", "movgtu.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgteu.l $rd6,$rn6 */
+ {
+ -1, "cmov.lGTEU", "movgteu.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlteu.l $rd6,$rn6 */
+ {
+ -1, "cmov.lLTEU", "movlteu.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movltu.l $rd6,$rn6 */
+ {
+ -1, "cmov.lLTU", "movltu.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgt.l $rd6,$rn6 */
+ {
+ -1, "cmov.lGT", "movgt.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movgte.l $rd6,$rn6 */
+ {
+ -1, "cmov.lGTE", "movgte.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlt.l $rd6,$rn6 */
+ {
+ -1, "cmov.lLT", "movlt.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movlte.l $rd6,$rn6 */
+ {
+ -1, "cmov.lLTE", "movlte.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov.l $rd6,$rn6 */
+ {
+ -1, "cmov.lB", "mov.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbeq.l $rd6,$rn6 */
+ {
+ -1, "cmov.lBEQ", "movbeq.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movbne.l $rd6,$rn6 */
+ {
+ -1, "cmov.lBNE", "movbne.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblt.l $rd6,$rn6 */
+ {
+ -1, "cmov.lBLT", "movblt.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movblte.l $rd6,$rn6 */
+ {
+ -1, "cmov.lBLTE", "movblte.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts.l $sn6,$rd6 */
+ {
+ -1, "movts.l6", "movts.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts.l $sndma,$rd6 */
+ {
+ -1, "movts.ldma", "movts.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts.l $snmem,$rd6 */
+ {
+ -1, "movts.lmem", "movts.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movts.l $snmesh,$rd6 */
+ {
+ -1, "movts.lmesh", "movts.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs.l $rd6,$sn6 */
+ {
+ -1, "movfs.l6", "movfs.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs.l $rd6,$sndma */
+ {
+ -1, "movfs.ldma", "movfs.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs.l $rd6,$snmem */
+ {
+ -1, "movfs.lmem", "movfs.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movfs.l $rd6,$snmesh */
+ {
+ -1, "movfs.lmesh", "movfs.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add.l $rd6,$rn6,$rm6 */
+ {
+ -1, "add.l", "add.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub.l $rd6,$rn6,$rm6 */
+ {
+ -1, "sub.l", "sub.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* and.l $rd6,$rn6,$rm6 */
+ {
+ -1, "and.l", "and.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* orr.l $rd6,$rn6,$rm6 */
+ {
+ -1, "orr.l", "orr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* eor.l $rd6,$rn6,$rm6 */
+ {
+ -1, "eor.l", "eor.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add $rd,$rn,$simm3 */
+ {
+ -1, "addir", "add", 16,
+ { 0|A(IMM3)|A(RELAXABLE)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add $rd6,$rn6,$simm11 */
+ {
+ -1, "addi32r", "add", 32,
+ { 0|A(RELAXED)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* add $rd6,$rn6,$simm11 */
+ {
+ -1, "addi32m", "add", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub $rd,$rn,$simm3 */
+ {
+ -1, "subir", "sub", 16,
+ { 0|A(IMM3)|A(RELAXABLE)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub $rd6,$rn6,$simm11 */
+ {
+ -1, "subi32r", "sub", 32,
+ { 0|A(RELAXED)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* sub $rd6,$rn6,$simm11 */
+ {
+ -1, "subi32m", "sub", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr.l $rd6,$rn6,$rm6 */
+ {
+ -1, "asr.l", "asr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr.l $rd6,$rn6,$rm6 */
+ {
+ -1, "lsr.l", "lsr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl.l $rd6,$rn6,$rm6 */
+ {
+ -1, "lsl.l", "lsl.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsr.l $rd6,$rn6,$shift */
+ {
+ -1, "lsri32.l", "lsr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lsl.l $rd6,$rn6,$shift */
+ {
+ -1, "lsli32.l", "lsl.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* asr.l $rd6,$rn6,$shift */
+ {
+ -1, "asri32.l", "asr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* bitr.l $rd6,$rn6 */
+ {
+ -1, "bitrl", "bitr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fext.l $rd6,$rn6,$rm6 */
+ {
+ -1, "fext.l", "fext.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fdep.l $rd6,$rn6,$rm6 */
+ {
+ -1, "fdep.l", "fdep.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* lfsr.l $rd6,$rn6,$rm6 */
+ {
+ -1, "lfsr.l", "lfsr.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov $rd,$imm8 */
+ {
+ -1, "mov8r", "mov", 16,
+ { 0|A(RELAXABLE)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* mov $rd6,$imm16 */
+ {
+ -1, "mov16r", "mov", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* movt.l $rd6,$imm16 */
+ {
+ -1, "movtl", "movt.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* iadd $rd,$rn,$rm */
+ {
+ -1, "i_addf16", "iadd", 16,
+ { 0|A(NO_DIS)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fadd.l $rd6,$rn6,$rm6 */
+ {
+ -1, "f_addf32.l", "fadd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* iadd $rd6,$rn6,$rm6 */
+ {
+ -1, "i_addf32", "iadd", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* iadd.l $rd6,$rn6,$rm6 */
+ {
+ -1, "i_addf32.l", "iadd.l", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* isub $rd,$rn,$rm */
+ {
+ -1, "i_subf16", "isub", 16,
+ { 0|A(NO_DIS)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fsub.l $rd6,$rn6,$rm6 */
+ {
+ -1, "f_subf32.l", "fsub.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* isub $rd6,$rn6,$rm6 */
+ {
+ -1, "i_subf32", "isub", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* isub.l $rd6,$rn6,$rm6 */
+ {
+ -1, "i_subf32.l", "isub.l", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imul $rd,$rn,$rm */
+ {
+ -1, "i_mulf16", "imul", 16,
+ { 0|A(NO_DIS)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmul.l $rd6,$rn6,$rm6 */
+ {
+ -1, "f_mulf32.l", "fmul.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imul $rd6,$rn6,$rm6 */
+ {
+ -1, "i_mulf32", "imul", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imul.l $rd6,$rn6,$rm6 */
+ {
+ -1, "i_mulf32.l", "imul.l", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imadd $rd,$rn,$rm */
+ {
+ -1, "i_maddf16", "imadd", 16,
+ { 0|A(NO_DIS)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmadd.l $rd6,$rn6,$rm6 */
+ {
+ -1, "f_maddf32.l", "fmadd.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imadd $rd6,$rn6,$rm6 */
+ {
+ -1, "i_maddf32", "imadd", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imadd.l $rd6,$rn6,$rm6 */
+ {
+ -1, "i_maddf32.l", "imadd.l", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imsub $rd,$rn,$rm */
+ {
+ -1, "i_msubf16", "imsub", 16,
+ { 0|A(NO_DIS)|A(SHORT_INSN)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fmsub.l $rd6,$rn6,$rm6 */
+ {
+ -1, "f_msubf32.l", "fmsub.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imsub $rd6,$rn6,$rm6 */
+ {
+ -1, "i_msubf32", "imsub", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* imsub.l $rd6,$rn6,$rm6 */
+ {
+ -1, "i_msubf32.l", "imsub.l", 32,
+ { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fabs.l $rd6,$rn6 */
+ {
+ -1, "f_absf32.l", "fabs.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* float.l $rd6,$rn6 */
+ {
+ -1, "f_loatf32.l", "float.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fix.l $rd6,$rn6 */
+ {
+ -1, "f_ixf32.l", "fix.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* frecip.l $frd6,$frn6 */
+ {
+ -1, "f_recipf32.l", "frecip.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+/* fsqrt.l $frd6,$frn6 */
+ {
+ -1, "f_sqrtf32.l", "fsqrt.l", 32,
+ { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
+ },
+};
+
+/* The macro instruction opcode table. */
+
+static const CGEN_OPCODE epiphany_cgen_macro_insn_opcode_table[] =
+{
+/* beq $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_beq16r, { 0x0 }
+ },
+/* beq $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_beq32r, { 0x8 }
+ },
+/* bne $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bne16r, { 0x10 }
+ },
+/* bne $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bne32r, { 0x18 }
+ },
+/* bgtu $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bgtu16r, { 0x20 }
+ },
+/* bgtu $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bgtu32r, { 0x28 }
+ },
+/* bgteu $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bgteu16r, { 0x30 }
+ },
+/* bgteu $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bgteu32r, { 0x38 }
+ },
+/* blteu $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_blteu16r, { 0x40 }
+ },
+/* blteu $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_blteu32r, { 0x48 }
+ },
+/* bltu $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bltu16r, { 0x50 }
+ },
+/* bltu $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bltu32r, { 0x58 }
+ },
+/* bgt $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bgt16r, { 0x60 }
+ },
+/* bgt $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bgt32r, { 0x68 }
+ },
+/* bgte $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bgte16r, { 0x70 }
+ },
+/* bgte $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bgte32r, { 0x78 }
+ },
+/* blt $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_blt16r, { 0x80 }
+ },
+/* blt $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_blt32r, { 0x88 }
+ },
+/* blte $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_blte16r, { 0x90 }
+ },
+/* blte $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_blte32r, { 0x98 }
+ },
+/* bbeq $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bbeq16r, { 0xa0 }
+ },
+/* bbeq $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bbeq32r, { 0xa8 }
+ },
+/* bbne $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bbne16r, { 0xb0 }
+ },
+/* bbne $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bbne32r, { 0xb8 }
+ },
+/* bblt $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bblt16r, { 0xc0 }
+ },
+/* bblt $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bblt32r, { 0xc8 }
+ },
+/* bblte $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bblte16r, { 0xd0 }
+ },
+/* bblte $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_bblte32r, { 0xd8 }
+ },
+/* b $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_b16r, { 0xe0 }
+ },
+/* b $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_b32r, { 0xe8 }
+ },
+/* bl $simm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM8), 0 } },
+ & ifmt_bl16r, { 0xf0 }
+ },
+/* bl $simm24 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SIMM24), 0 } },
+ & ifmt_blr, { 0xf8 }
+ },
+/* ldrb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrbx, { 0x9 }
+ },
+/* ldrb.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrbp, { 0xd }
+ },
+/* ldrb.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrbd, { 0xc }
+ },
+/* ldrb.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrbdpm, { 0x200000c }
+ },
+/* ldrb $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_ldrbds0, { 0x4 }
+ },
+/* ldrb $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrbdl0, { 0xc }
+ },
+/* ldrb.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrbdl0_l, { 0xc }
+ },
+/* ldrh.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrhx, { 0x29 }
+ },
+/* ldrh.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrhp, { 0x2d }
+ },
+/* ldrh.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrhd, { 0x2c }
+ },
+/* ldrh.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrhdpm, { 0x200002c }
+ },
+/* ldrh $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_ldrhds0, { 0x24 }
+ },
+/* ldrh $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrhdl0, { 0x2c }
+ },
+/* ldrh.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrhdl0_l, { 0x2c }
+ },
+/* ldr.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrx, { 0x49 }
+ },
+/* ldr.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrp, { 0x4d }
+ },
+/* ldr.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrd, { 0x4c }
+ },
+/* ldr.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrdpm, { 0x200004c }
+ },
+/* ldr $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_ldrds0, { 0x44 }
+ },
+/* ldr $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrdl0, { 0x4c }
+ },
+/* ldr.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrdl0_l, { 0x4c }
+ },
+/* ldrd.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_ldrdx, { 0x69 }
+ },
+/* ldrd.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_ldrdp, { 0x6d }
+ },
+/* ldrd.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_ldrdd, { 0x6c }
+ },
+/* ldrd.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_ldrddpm, { 0x200006c }
+ },
+/* ldrd $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_ldrdds0, { 0x64 }
+ },
+/* ldrd $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrddl0, { 0x6c }
+ },
+/* ldrd.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_ldrddl0_l, { 0x6c }
+ },
+/* testsetb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_testsetbt_l, { 0x200009 }
+ },
+/* testseth.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_testsetht_l, { 0x200029 }
+ },
+/* testset.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_testsett_l, { 0x200049 }
+ },
+/* strb.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_strbx_l, { 0x19 }
+ },
+/* strb.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_strbp_l, { 0x1d }
+ },
+/* strb.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_strbd_l, { 0x1c }
+ },
+/* strb.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_strbdpm_l, { 0x200001c }
+ },
+/* strb $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_strbds0, { 0x14 }
+ },
+/* strb $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strbdl0, { 0x1c }
+ },
+/* strb.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strbdl0_l, { 0x1c }
+ },
+/* strh.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_strhx_l, { 0x39 }
+ },
+/* strh.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_strhp_l, { 0x3d }
+ },
+/* strh.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_strhd_l, { 0x3c }
+ },
+/* strh.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_strhdpm_l, { 0x200003c }
+ },
+/* strh $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_strhds0, { 0x34 }
+ },
+/* strh $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strhdl0, { 0x3c }
+ },
+/* strh.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strhdl0_l, { 0x3c }
+ },
+/* str.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_strx_l, { 0x59 }
+ },
+/* str.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_strp_l, { 0x5d }
+ },
+/* str.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_strd_l, { 0x5c }
+ },
+/* str.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_strdpm_l, { 0x200005c }
+ },
+/* str $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_strds0, { 0x54 }
+ },
+/* str $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strdl0, { 0x5c }
+ },
+/* str.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strdl0_l, { 0x5c }
+ },
+/* strd.l $rd6,[$rn6,$direction$rm6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } },
+ & ifmt_strdx_l, { 0x79 }
+ },
+/* strd.l $rd6,[$rn6],$direction$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } },
+ & ifmt_strdp_l, { 0x7d }
+ },
+/* strd.l $rd6,[$rn6,$dpmi$disp11] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } },
+ & ifmt_strdd_l, { 0x7c }
+ },
+/* strd.l $rd6,[$rn6],$dpmi$disp11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } },
+ & ifmt_strddpm_l, { 0x200007c }
+ },
+/* strd $rd,[$rn] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', 0 } },
+ & ifmt_strdds0, { 0x74 }
+ },
+/* strd $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strddl0, { 0x7c }
+ },
+/* strd.l $rd6,[$rn6] */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', 0 } },
+ & ifmt_strddl0_l, { 0x7c }
+ },
+/* moveq.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lEQ, { 0x2000f }
+ },
+/* movne.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lNE, { 0x2001f }
+ },
+/* movgtu.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lGTU, { 0x2002f }
+ },
+/* movgteu.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lGTEU, { 0x2003f }
+ },
+/* movlteu.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lLTEU, { 0x2004f }
+ },
+/* movltu.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lLTU, { 0x2005f }
+ },
+/* movgt.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lGT, { 0x2006f }
+ },
+/* movgte.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lGTE, { 0x2007f }
+ },
+/* movlt.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lLT, { 0x2008f }
+ },
+/* movlte.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lLTE, { 0x2009f }
+ },
+/* mov.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lB, { 0x200ef }
+ },
+/* movbeq.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lBEQ, { 0x200af }
+ },
+/* movbne.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lBNE, { 0x200bf }
+ },
+/* movblt.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lBLT, { 0x200cf }
+ },
+/* movblte.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_cmov_lBLTE, { 0x200df }
+ },
+/* movts.l $sn6,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SN6), ',', OP (RD6), 0 } },
+ & ifmt_movts_l6, { 0x2010f }
+ },
+/* movts.l $sndma,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNDMA), ',', OP (RD6), 0 } },
+ & ifmt_movts_ldma, { 0x12010f }
+ },
+/* movts.l $snmem,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNMEM), ',', OP (RD6), 0 } },
+ & ifmt_movts_lmem, { 0x22010f }
+ },
+/* movts.l $snmesh,$rd6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (SNMESH), ',', OP (RD6), 0 } },
+ & ifmt_movts_lmesh, { 0x32010f }
+ },
+/* movfs.l $rd6,$sn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SN6), 0 } },
+ & ifmt_movfs_l6, { 0x2011f }
+ },
+/* movfs.l $rd6,$sndma */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNDMA), 0 } },
+ & ifmt_movfs_ldma, { 0x12011f }
+ },
+/* movfs.l $rd6,$snmem */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNMEM), 0 } },
+ & ifmt_movfs_lmem, { 0x22011f }
+ },
+/* movfs.l $rd6,$snmesh */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (SNMESH), 0 } },
+ & ifmt_movfs_lmesh, { 0x32011f }
+ },
+/* add.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_add_l, { 0xa001f }
+ },
+/* sub.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_sub_l, { 0xa003f }
+ },
+/* and.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_and_l, { 0xa005f }
+ },
+/* orr.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_orr_l, { 0xa007f }
+ },
+/* eor.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_eor_l, { 0xa000f }
+ },
+/* add $rd,$rn,$simm3 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } },
+ & ifmt_addir, { 0x13 }
+ },
+/* add $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_addi32r, { 0x1b }
+ },
+/* add $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_addi32m, { 0x1b }
+ },
+/* sub $rd,$rn,$simm3 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } },
+ & ifmt_subir, { 0x33 }
+ },
+/* sub $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_subi32r, { 0x3b }
+ },
+/* sub $rd6,$rn6,$simm11 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } },
+ & ifmt_subi32m, { 0x3b }
+ },
+/* asr.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_asr_l, { 0xa006f }
+ },
+/* lsr.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_lsr_l, { 0xa004f }
+ },
+/* lsl.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_lsl_l, { 0xa002f }
+ },
+/* lsr.l $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_lsri32_l, { 0x6000f }
+ },
+/* lsl.l $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_lsli32_l, { 0x6001f }
+ },
+/* asr.l $rd6,$rn6,$shift */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } },
+ & ifmt_asri32_l, { 0xe000f }
+ },
+/* bitr.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_bitrl, { 0xe001f }
+ },
+/* fext.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_fext_l, { 0x1a000f }
+ },
+/* fdep.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_fdep_l, { 0x1a001f }
+ },
+/* lfsr.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_lfsr_l, { 0x1a002f }
+ },
+/* mov $rd,$imm8 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (IMM8), 0 } },
+ & ifmt_mov8r, { 0x3 }
+ },
+/* mov $rd6,$imm16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } },
+ & ifmt_mov16r, { 0x2000b }
+ },
+/* movt.l $rd6,$imm16 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } },
+ & ifmt_movtl, { 0x1002000b }
+ },
+/* iadd $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_i_addf16, { 0x7 }
+ },
+/* fadd.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_f_addf32_l, { 0x7000f }
+ },
+/* iadd $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_addf32, { 0x7000f }
+ },
+/* iadd.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_addf32_l, { 0x7000f }
+ },
+/* isub $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_i_subf16, { 0x17 }
+ },
+/* fsub.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_f_subf32_l, { 0x7001f }
+ },
+/* isub $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_subf32, { 0x7001f }
+ },
+/* isub.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_subf32_l, { 0x7001f }
+ },
+/* imul $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_i_mulf16, { 0x27 }
+ },
+/* fmul.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_f_mulf32_l, { 0x7002f }
+ },
+/* imul $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_mulf32, { 0x7002f }
+ },
+/* imul.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_mulf32_l, { 0x7002f }
+ },
+/* imadd $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_i_maddf16, { 0x37 }
+ },
+/* fmadd.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_f_maddf32_l, { 0x7003f }
+ },
+/* imadd $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_maddf32, { 0x7003f }
+ },
+/* imadd.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_maddf32_l, { 0x7003f }
+ },
+/* imsub $rd,$rn,$rm */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } },
+ & ifmt_i_msubf16, { 0x47 }
+ },
+/* fmsub.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_f_msubf32_l, { 0x7004f }
+ },
+/* imsub $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_msubf32, { 0x7004f }
+ },
+/* imsub.l $rd6,$rn6,$rm6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } },
+ & ifmt_i_msubf32_l, { 0x7004f }
+ },
+/* fabs.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_absf32_l, { 0x7007f }
+ },
+/* float.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_loatf32_l, { 0x7005f }
+ },
+/* fix.l $rd6,$rn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } },
+ & ifmt_f_ixf32_l, { 0x7006f }
+ },
+/* frecip.l $frd6,$frn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } },
+ & ifmt_f_recipf32_l, { 0x17000f }
+ },
+/* fsqrt.l $frd6,$frn6 */
+ {
+ { 0, 0, 0, 0 },
+ { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } },
+ & ifmt_f_sqrtf32_l, { 0x17001f }
+ },
+};
+
+#undef A
+#undef OPERAND
+#undef MNEM
+#undef OP
+
+#ifndef CGEN_ASM_HASH_P
+#define CGEN_ASM_HASH_P(insn) 1
+#endif
+
+#ifndef CGEN_DIS_HASH_P
+#define CGEN_DIS_HASH_P(insn) 1
+#endif
+
+/* Return non-zero if INSN is to be added to the hash table.
+ Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
+
+static int
+asm_hash_insn_p (insn)
+ const CGEN_INSN *insn ATTRIBUTE_UNUSED;
+{
+ return CGEN_ASM_HASH_P (insn);
+}
+
+static int
+dis_hash_insn_p (insn)
+ const CGEN_INSN *insn;
+{
+ /* If building the hash table and the NO-DIS attribute is present,
+ ignore. */
+ if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
+ return 0;
+ return CGEN_DIS_HASH_P (insn);
+}
+
+#ifndef CGEN_ASM_HASH
+#define CGEN_ASM_HASH_SIZE 127
+#ifdef CGEN_MNEMONIC_OPERANDS
+#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
+#else
+#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
+#endif
+#endif
+
+/* It doesn't make much sense to provide a default here,
+ but while this is under development we do.
+ BUFFER is a pointer to the bytes of the insn, target order.
+ VALUE is the first base_insn_bitsize bits as an int in host order. */
+
+#ifndef CGEN_DIS_HASH
+#define CGEN_DIS_HASH_SIZE 256
+#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
+#endif
+
+/* The result is the hash value of the insn.
+ Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
+
+static unsigned int
+asm_hash_insn (mnem)
+ const char * mnem;
+{
+ return CGEN_ASM_HASH (mnem);
+}
+
+/* BUF is a pointer to the bytes of the insn, target order.
+ VALUE is the first base_insn_bitsize bits as an int in host order. */
+
+static unsigned int
+dis_hash_insn (buf, value)
+ const char * buf ATTRIBUTE_UNUSED;
+ CGEN_INSN_INT value ATTRIBUTE_UNUSED;
+{
+ return CGEN_DIS_HASH (buf, value);
+}
+
+/* Set the recorded length of the insn in the CGEN_FIELDS struct. */
+
+static void
+set_fields_bitsize (CGEN_FIELDS *fields, int size)
+{
+ CGEN_FIELDS_BITSIZE (fields) = size;
+}
+
+/* Function to call before using the operand instance table.
+ This plugs the opcode entries and macro instructions into the cpu table. */
+
+void
+epiphany_cgen_init_opcode_table (CGEN_CPU_DESC cd)
+{
+ int i;
+ int num_macros = (sizeof (epiphany_cgen_macro_insn_table) /
+ sizeof (epiphany_cgen_macro_insn_table[0]));
+ const CGEN_IBASE *ib = & epiphany_cgen_macro_insn_table[0];
+ const CGEN_OPCODE *oc = & epiphany_cgen_macro_insn_opcode_table[0];
+ CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
+
+ /* This test has been added to avoid a warning generated
+ if memset is called with a third argument of value zero. */
+ if (num_macros >= 1)
+ memset (insns, 0, num_macros * sizeof (CGEN_INSN));
+ for (i = 0; i < num_macros; ++i)
+ {
+ insns[i].base = &ib[i];
+ insns[i].opcode = &oc[i];
+ epiphany_cgen_build_insn_regex (& insns[i]);
+ }
+ cd->macro_insn_table.init_entries = insns;
+ cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
+ cd->macro_insn_table.num_init_entries = num_macros;
+
+ oc = & epiphany_cgen_insn_opcode_table[0];
+ insns = (CGEN_INSN *) cd->insn_table.init_entries;
+ for (i = 0; i < MAX_INSNS; ++i)
+ {
+ insns[i].opcode = &oc[i];
+ epiphany_cgen_build_insn_regex (& insns[i]);
+ }
+
+ cd->sizeof_fields = sizeof (CGEN_FIELDS);
+ cd->set_fields_bitsize = set_fields_bitsize;
+
+ cd->asm_hash_p = asm_hash_insn_p;
+ cd->asm_hash = asm_hash_insn;
+ cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
+
+ cd->dis_hash_p = dis_hash_insn_p;
+ cd->dis_hash = dis_hash_insn;
+ cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
+}
diff --git a/opcodes/epiphany-opc.h b/opcodes/epiphany-opc.h
new file mode 100644
index 0000000000..d3f93484d6
--- /dev/null
+++ b/opcodes/epiphany-opc.h
@@ -0,0 +1,226 @@
+/* Instruction opcode header for epiphany.
+
+THIS FILE IS MACHINE GENERATED WITH CGEN.
+
+Copyright 1996-2010 Free Software Foundation, Inc.
+
+This file is part of the GNU Binutils and/or GDB, the GNU debugger.
+
+ This file 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 3, or (at your option)
+ any later version.
+
+ It 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.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+*/
+
+#ifndef EPIPHANY_OPC_H
+#define EPIPHANY_OPC_H
+
+/* -- opc.h */
+
+/* enumerate relaxation types for gas. */
+typedef enum epiphany_relax_types
+{
+ EPIPHANY_RELAX_NONE=0,
+ EPIPHANY_RELAX_NEED_RELAXING,
+
+ EPIPHANY_RELAX_BRANCH_SHORT, /* Fits into +127..-128 */
+ EPIPHANY_RELAX_BRANCH_LONG, /* b/bl/b<cond> +-2*16 */
+
+ EPIPHANY_RELAX_ARITH_SIMM3, /* add/sub -7..3 */
+ EPIPHANY_RELAX_ARITH_SIMM11, /* add/sub -2**11-1 .. 2**10-1 */
+
+ EPIPHANY_RELAX_MOV_IMM8, /* mov r,imm8 */
+ EPIPHANY_RELAX_MOV_IMM16, /* mov r,imm16 */
+
+ EPIPHANY_RELAX_LDST_IMM3, /* (ldr|str)* r,[r,disp3] */
+ EPIPHANY_RELAX_LDST_IMM11 /* (ldr|str)* r,[r,disp11] */
+
+} EPIPHANY_RELAX_TYPES;
+
+/* Override disassembly hashing... */
+
+/* Can only depend on instruction having 4 decode bits which gets us to the
+ major groups of 16/32 instructions. */
+#undef CGEN_DIS_HASH_SIZE
+#if 1
+
+/* hash code on the 4 LSBs */
+#define CGEN_DIS_HASH_SIZE 16
+
+#define CGEN_DIS_HASH(buf, value) ((*buf) & 0xf)
+#else
+#define CGEN_DIS_HASH_SIZE 1
+#define CGEN_DIS_HASH(buf, value) 0
+#endif
+
+extern const char * parse_shortregs (CGEN_CPU_DESC cd,
+ const char ** strp,
+ CGEN_KEYWORD * keywords,
+ long * valuep);
+
+extern const char * parse_branch_addr (CGEN_CPU_DESC cd,
+ const char ** strp,
+ int opindex,
+ int opinfo,
+ enum cgen_parse_operand_result * resultp,
+ unsigned long * valuep);
+
+/* Allows reason codes to be output when assembler errors occur. */
+#define CGEN_VERBOSE_ASSEMBLER_ERRORS
+
+
+/* -- opc.c */
+/* Enum declaration for epiphany instruction types. */
+typedef enum cgen_insn_type {
+ EPIPHANY_INSN_INVALID, EPIPHANY_INSN_BEQ16, EPIPHANY_INSN_BEQ, EPIPHANY_INSN_BNE16
+ , EPIPHANY_INSN_BNE, EPIPHANY_INSN_BGTU16, EPIPHANY_INSN_BGTU, EPIPHANY_INSN_BGTEU16
+ , EPIPHANY_INSN_BGTEU, EPIPHANY_INSN_BLTEU16, EPIPHANY_INSN_BLTEU, EPIPHANY_INSN_BLTU16
+ , EPIPHANY_INSN_BLTU, EPIPHANY_INSN_BGT16, EPIPHANY_INSN_BGT, EPIPHANY_INSN_BGTE16
+ , EPIPHANY_INSN_BGTE, EPIPHANY_INSN_BLT16, EPIPHANY_INSN_BLT, EPIPHANY_INSN_BLTE16
+ , EPIPHANY_INSN_BLTE, EPIPHANY_INSN_BBEQ16, EPIPHANY_INSN_BBEQ, EPIPHANY_INSN_BBNE16
+ , EPIPHANY_INSN_BBNE, EPIPHANY_INSN_BBLT16, EPIPHANY_INSN_BBLT, EPIPHANY_INSN_BBLTE16
+ , EPIPHANY_INSN_BBLTE, EPIPHANY_INSN_B16, EPIPHANY_INSN_B, EPIPHANY_INSN_BL16
+ , EPIPHANY_INSN_BL, EPIPHANY_INSN_JR16, EPIPHANY_INSN_RTS, EPIPHANY_INSN_JR
+ , EPIPHANY_INSN_JALR16, EPIPHANY_INSN_JALR, EPIPHANY_INSN_LDRBX16_S, EPIPHANY_INSN_LDRBP16_S
+ , EPIPHANY_INSN_LDRBX_L, EPIPHANY_INSN_LDRBP_L, EPIPHANY_INSN_LDRBD16_S, EPIPHANY_INSN_LDRBD_L
+ , EPIPHANY_INSN_LDRBDPM_L, EPIPHANY_INSN_LDRHX16_S, EPIPHANY_INSN_LDRHP16_S, EPIPHANY_INSN_LDRHX_L
+ , EPIPHANY_INSN_LDRHP_L, EPIPHANY_INSN_LDRHD16_S, EPIPHANY_INSN_LDRHD_L, EPIPHANY_INSN_LDRHDPM_L
+ , EPIPHANY_INSN_LDRX16_S, EPIPHANY_INSN_LDRP16_S, EPIPHANY_INSN_LDRX_L, EPIPHANY_INSN_LDRP_L
+ , EPIPHANY_INSN_LDRD16_S, EPIPHANY_INSN_LDRD_L, EPIPHANY_INSN_LDRDPM_L, EPIPHANY_INSN_LDRDX16_S
+ , EPIPHANY_INSN_LDRDP16_S, EPIPHANY_INSN_LDRDX_L, EPIPHANY_INSN_LDRDP_L, EPIPHANY_INSN_LDRDD16_S
+ , EPIPHANY_INSN_LDRDD_L, EPIPHANY_INSN_LDRDDPM_L, EPIPHANY_INSN_TESTSETBT, EPIPHANY_INSN_TESTSETHT
+ , EPIPHANY_INSN_TESTSETT, EPIPHANY_INSN_STRBX16, EPIPHANY_INSN_STRBX, EPIPHANY_INSN_STRBP16
+ , EPIPHANY_INSN_STRBP, EPIPHANY_INSN_STRBD16, EPIPHANY_INSN_STRBD, EPIPHANY_INSN_STRBDPM
+ , EPIPHANY_INSN_STRHX16, EPIPHANY_INSN_STRHX, EPIPHANY_INSN_STRHP16, EPIPHANY_INSN_STRHP
+ , EPIPHANY_INSN_STRHD16, EPIPHANY_INSN_STRHD, EPIPHANY_INSN_STRHDPM, EPIPHANY_INSN_STRX16
+ , EPIPHANY_INSN_STRX, EPIPHANY_INSN_STRP16, EPIPHANY_INSN_STRP, EPIPHANY_INSN_STRD16
+ , EPIPHANY_INSN_STRD, EPIPHANY_INSN_STRDPM, EPIPHANY_INSN_STRDX16, EPIPHANY_INSN_STRDX
+ , EPIPHANY_INSN_STRDP16, EPIPHANY_INSN_STRDP, EPIPHANY_INSN_STRDD16, EPIPHANY_INSN_STRDD
+ , EPIPHANY_INSN_STRDDPM, EPIPHANY_INSN_CMOV16EQ, EPIPHANY_INSN_CMOVEQ, EPIPHANY_INSN_CMOV16NE
+ , EPIPHANY_INSN_CMOVNE, EPIPHANY_INSN_CMOV16GTU, EPIPHANY_INSN_CMOVGTU, EPIPHANY_INSN_CMOV16GTEU
+ , EPIPHANY_INSN_CMOVGTEU, EPIPHANY_INSN_CMOV16LTEU, EPIPHANY_INSN_CMOVLTEU, EPIPHANY_INSN_CMOV16LTU
+ , EPIPHANY_INSN_CMOVLTU, EPIPHANY_INSN_CMOV16GT, EPIPHANY_INSN_CMOVGT, EPIPHANY_INSN_CMOV16GTE
+ , EPIPHANY_INSN_CMOVGTE, EPIPHANY_INSN_CMOV16LT, EPIPHANY_INSN_CMOVLT, EPIPHANY_INSN_CMOV16LTE
+ , EPIPHANY_INSN_CMOVLTE, EPIPHANY_INSN_CMOV16B, EPIPHANY_INSN_CMOVB, EPIPHANY_INSN_CMOV16BEQ
+ , EPIPHANY_INSN_CMOVBEQ, EPIPHANY_INSN_CMOV16BNE, EPIPHANY_INSN_CMOVBNE, EPIPHANY_INSN_CMOV16BLT
+ , EPIPHANY_INSN_CMOVBLT, EPIPHANY_INSN_CMOV16BLTE, EPIPHANY_INSN_CMOVBLTE, EPIPHANY_INSN_MOVTS16
+ , EPIPHANY_INSN_MOVTS6, EPIPHANY_INSN_MOVTSDMA, EPIPHANY_INSN_MOVTSMEM, EPIPHANY_INSN_MOVTSMESH
+ , EPIPHANY_INSN_MOVFS16, EPIPHANY_INSN_MOVFS6, EPIPHANY_INSN_MOVFSDMA, EPIPHANY_INSN_MOVFSMEM
+ , EPIPHANY_INSN_MOVFSMESH, EPIPHANY_INSN_NOP, EPIPHANY_INSN_SNOP, EPIPHANY_INSN_UNIMPL
+ , EPIPHANY_INSN_IDLE, EPIPHANY_INSN_BKPT, EPIPHANY_INSN_MBKPT, EPIPHANY_INSN_RTI
+ , EPIPHANY_INSN_WAND, EPIPHANY_INSN_SYNC, EPIPHANY_INSN_GIEN, EPIPHANY_INSN_GIDIS
+ , EPIPHANY_INSN_SWI_NUM, EPIPHANY_INSN_SWI, EPIPHANY_INSN_TRAP16, EPIPHANY_INSN_ADD16
+ , EPIPHANY_INSN_ADD, EPIPHANY_INSN_SUB16, EPIPHANY_INSN_SUB, EPIPHANY_INSN_AND16
+ , EPIPHANY_INSN_AND, EPIPHANY_INSN_ORR16, EPIPHANY_INSN_ORR, EPIPHANY_INSN_EOR16
+ , EPIPHANY_INSN_EOR, EPIPHANY_INSN_ADDI16, EPIPHANY_INSN_ADDI, EPIPHANY_INSN_SUBI16
+ , EPIPHANY_INSN_SUBI, EPIPHANY_INSN_ASR16, EPIPHANY_INSN_ASR, EPIPHANY_INSN_LSR16
+ , EPIPHANY_INSN_LSR, EPIPHANY_INSN_LSL16, EPIPHANY_INSN_LSL, EPIPHANY_INSN_LSRI16
+ , EPIPHANY_INSN_LSRI32, EPIPHANY_INSN_LSLI16, EPIPHANY_INSN_LSLI32, EPIPHANY_INSN_ASRI16
+ , EPIPHANY_INSN_ASRI32, EPIPHANY_INSN_BITR16, EPIPHANY_INSN_BITR, EPIPHANY_INSN_FEXT
+ , EPIPHANY_INSN_FDEP, EPIPHANY_INSN_LFSR, EPIPHANY_INSN_MOV8, EPIPHANY_INSN_MOV16
+ , EPIPHANY_INSN_MOVT, EPIPHANY_INSN_F_ADDF16, EPIPHANY_INSN_F_ADDF32, EPIPHANY_INSN_F_SUBF16
+ , EPIPHANY_INSN_F_SUBF32, EPIPHANY_INSN_F_MULF16, EPIPHANY_INSN_F_MULF32, EPIPHANY_INSN_F_MADDF16
+ , EPIPHANY_INSN_F_MADDF32, EPIPHANY_INSN_F_MSUBF16, EPIPHANY_INSN_F_MSUBF32, EPIPHANY_INSN_F_ABSF16
+ , EPIPHANY_INSN_F_ABSF32, EPIPHANY_INSN_F_LOATF16, EPIPHANY_INSN_F_LOATF32, EPIPHANY_INSN_F_IXF16
+ , EPIPHANY_INSN_F_IXF32, EPIPHANY_INSN_F_RECIPF32, EPIPHANY_INSN_F_SQRTF32
+} CGEN_INSN_TYPE;
+
+/* Index of `invalid' insn place holder. */
+#define CGEN_INSN_INVALID EPIPHANY_INSN_INVALID
+
+/* Total number of insns in table. */
+#define MAX_INSNS ((int) EPIPHANY_INSN_F_SQRTF32 + 1)
+
+/* This struct records data prior to insertion or after extraction. */
+struct cgen_fields
+{
+ int length;
+ long f_nil;
+ long f_anyof;
+ long f_opc;
+ long f_opc_4_1;
+ long f_opc_6_3;
+ long f_opc_8_5;
+ long f_opc_19_4;
+ long f_condcode;
+ long f_secondary_ccs;
+ long f_shift;
+ long f_wordsize;
+ long f_store;
+ long f_opc_8_1;
+ long f_opc_31_32;
+ long f_simm8;
+ long f_simm24;
+ long f_sdisp3;
+ long f_disp3;
+ long f_disp8;
+ long f_imm8;
+ long f_imm_27_8;
+ long f_addsubx;
+ long f_subd;
+ long f_pm;
+ long f_rm;
+ long f_rn;
+ long f_rd;
+ long f_rm_x;
+ long f_rn_x;
+ long f_rd_x;
+ long f_dc_9_1;
+ long f_sn;
+ long f_sd;
+ long f_sn_x;
+ long f_sd_x;
+ long f_dc_7_4;
+ long f_trap_swi_9_1;
+ long f_gien_gidis_9_1;
+ long f_dc_15_3;
+ long f_dc_15_7;
+ long f_dc_15_6;
+ long f_trap_num;
+ long f_dc_20_1;
+ long f_dc_21_1;
+ long f_dc_21_2;
+ long f_dc_22_3;
+ long f_dc_22_2;
+ long f_dc_22_1;
+ long f_dc_25_6;
+ long f_dc_25_4;
+ long f_dc_25_2;
+ long f_dc_25_1;
+ long f_dc_28_1;
+ long f_dc_31_3;
+ long f_disp11;
+ long f_sdisp11;
+ long f_imm16;
+ long f_rd6;
+ long f_rn6;
+ long f_rm6;
+ long f_sd6;
+ long f_sn6;
+};
+
+#define CGEN_INIT_PARSE(od) \
+{\
+}
+#define CGEN_INIT_INSERT(od) \
+{\
+}
+#define CGEN_INIT_EXTRACT(od) \
+{\
+}
+#define CGEN_INIT_PRINT(od) \
+{\
+}
+
+
+#endif /* EPIPHANY_OPC_H */
diff --git a/opcodes/po/POTFILES.in b/opcodes/po/POTFILES.in
index bf9bf046b6..5c54192c60 100644
--- a/opcodes/po/POTFILES.in
+++ b/opcodes/po/POTFILES.in
@@ -24,6 +24,13 @@ dis-buf.c
dis-init.c
disassemble.c
dlx-dis.c
+epiphany-asm.c
+epiphany-desc.c
+epiphany-desc.h
+epiphany-dis.c
+epiphany-ibld.c
+epiphany-opc.c
+epiphany-opc.h
fr30-asm.c
fr30-desc.c
fr30-desc.h
@@ -121,6 +128,7 @@ mep-opc.c
mep-opc.h
microblaze-dis.c
microblaze-opc.h
+micromips-opc.c
mips-dis.c
mips-opc.c
mips16-opc.c
diff --git a/opcodes/po/opcodes.pot b/opcodes/po/opcodes.pot
index ecdb232edd..90a4bb5e6a 100644
--- a/opcodes/po/opcodes.pot
+++ b/opcodes/po/opcodes.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2011-06-02 14:30+0100\n"
+"POT-Creation-Date: 2011-10-25 11:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -111,23 +111,23 @@ msgstr ""
msgid "must specify .jd or no nullify suffix"
msgstr ""
-#: arm-dis.c:1994
+#: arm-dis.c:2000
msgid "<illegal precision>"
msgstr ""
#. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:4376
+#: arm-dis.c:4395
#, c-format
msgid "Unrecognised register name set: %s\n"
msgstr ""
#. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:4384
+#: arm-dis.c:4403
#, c-format
msgid "Unrecognised disassembler option: %s\n"
msgstr ""
-#: arm-dis.c:4976
+#: arm-dis.c:4995
#, c-format
msgid ""
"\n"
@@ -135,25 +135,25 @@ msgid ""
"the -M switch:\n"
msgstr ""
-#: avr-dis.c:115 avr-dis.c:135
+#: avr-dis.c:115 avr-dis.c:136
#, c-format
msgid "undefined"
msgstr ""
-#: avr-dis.c:197
+#: avr-dis.c:198
#, c-format
msgid "Internal disassembler error"
msgstr ""
-#: avr-dis.c:250
+#: avr-dis.c:251
#, c-format
msgid "unknown constraint `%c'"
msgstr ""
-#: cgen-asm.c:336 fr30-ibld.c:201 frv-ibld.c:201 ip2k-ibld.c:201
-#: iq2000-ibld.c:201 lm32-ibld.c:201 m32c-ibld.c:201 m32r-ibld.c:201
-#: mep-ibld.c:201 mt-ibld.c:201 openrisc-ibld.c:201 xc16x-ibld.c:201
-#: xstormy16-ibld.c:201
+#: cgen-asm.c:336 epiphany-ibld.c:201 fr30-ibld.c:201 frv-ibld.c:201
+#: ip2k-ibld.c:201 iq2000-ibld.c:201 lm32-ibld.c:201 m32c-ibld.c:201
+#: m32r-ibld.c:201 mep-ibld.c:201 mt-ibld.c:201 openrisc-ibld.c:201
+#: xc16x-ibld.c:201 xstormy16-ibld.c:201
#, c-format
msgid "operand out of range (%ld not between %ld and %ld)"
msgstr ""
@@ -179,36 +179,58 @@ msgstr ""
msgid "Address 0x%s is out of bounds.\n"
msgstr ""
-#: fr30-asm.c:93 m32c-asm.c:872 m32c-asm.c:879
-msgid "Register number is not valid"
+#: epiphany-asm.c:68
+msgid "register unavailable for short instructions"
msgstr ""
-#: fr30-asm.c:95
-msgid "Register must be between r0 and r7"
+#: epiphany-asm.c:115
+msgid "register name used as immediate value"
msgstr ""
-#: fr30-asm.c:97
-msgid "Register must be between r8 and r15"
+#. Don't treat "mov ip,ip" as a move-immediate.
+#: epiphany-asm.c:178 epiphany-asm.c:234
+msgid "register source in immediate move"
msgstr ""
-#: fr30-asm.c:116 m32c-asm.c:910
-msgid "Register list is not valid"
+#: epiphany-asm.c:187
+msgid "byte relocation unsupported"
+msgstr ""
+
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: epiphany-asm.c:193 frv-asm.c:972 iq2000-asm.c:56 lm32-asm.c:95
+#: lm32-asm.c:127 lm32-asm.c:157 lm32-asm.c:187 lm32-asm.c:217 lm32-asm.c:247
+#: m32c-asm.c:140 m32c-asm.c:235 m32c-asm.c:276 m32c-asm.c:334 m32c-asm.c:355
+#: m32r-asm.c:53 mep-asm.c:241 mep-asm.c:259 mep-asm.c:274 mep-asm.c:289
+#: mep-asm.c:301 openrisc-asm.c:54
+msgid "missing `)'"
msgstr ""
-#: fr30-asm.c:310 frv-asm.c:1263 ip2k-asm.c:511 iq2000-asm.c:459
-#: lm32-asm.c:349 m32c-asm.c:1584 m32r-asm.c:328 mep-asm.c:1286 mt-asm.c:595
-#: openrisc-asm.c:241 xc16x-asm.c:376 xstormy16-asm.c:276
+#: epiphany-asm.c:270
+msgid "ABORT: unknown operand"
+msgstr ""
+
+#: epiphany-asm.c:296
+msgid "Not a pc-relative address."
+msgstr ""
+
+#: epiphany-asm.c:455 fr30-asm.c:310 frv-asm.c:1263 ip2k-asm.c:511
+#: iq2000-asm.c:459 lm32-asm.c:349 m32c-asm.c:1584 m32r-asm.c:328
+#: mep-asm.c:1286 mt-asm.c:595 openrisc-asm.c:241 xc16x-asm.c:376
+#: xstormy16-asm.c:276
#, c-format
msgid "Unrecognized field %d while parsing.\n"
msgstr ""
-#: fr30-asm.c:361 frv-asm.c:1314 ip2k-asm.c:562 iq2000-asm.c:510
-#: lm32-asm.c:400 m32c-asm.c:1635 m32r-asm.c:379 mep-asm.c:1337 mt-asm.c:646
-#: openrisc-asm.c:292 xc16x-asm.c:427 xstormy16-asm.c:327
+#: epiphany-asm.c:506 fr30-asm.c:361 frv-asm.c:1314 ip2k-asm.c:562
+#: iq2000-asm.c:510 lm32-asm.c:400 m32c-asm.c:1635 m32r-asm.c:379
+#: mep-asm.c:1337 mt-asm.c:646 openrisc-asm.c:292 xc16x-asm.c:427
+#: xstormy16-asm.c:327
msgid "missing mnemonic in syntax string"
msgstr ""
#. We couldn't parse it.
+#: epiphany-asm.c:641 epiphany-asm.c:645 epiphany-asm.c:734 epiphany-asm.c:841
#: fr30-asm.c:496 fr30-asm.c:500 fr30-asm.c:589 fr30-asm.c:696 frv-asm.c:1449
#: frv-asm.c:1453 frv-asm.c:1542 frv-asm.c:1649 ip2k-asm.c:697 ip2k-asm.c:701
#: ip2k-asm.c:790 ip2k-asm.c:897 iq2000-asm.c:645 iq2000-asm.c:649
@@ -224,116 +246,147 @@ msgstr ""
msgid "unrecognized instruction"
msgstr ""
-#: fr30-asm.c:543 frv-asm.c:1496 ip2k-asm.c:744 iq2000-asm.c:692
-#: lm32-asm.c:582 m32c-asm.c:1817 m32r-asm.c:561 mep-asm.c:1519 mt-asm.c:828
-#: openrisc-asm.c:474 xc16x-asm.c:609 xstormy16-asm.c:509
+#: epiphany-asm.c:688 fr30-asm.c:543 frv-asm.c:1496 ip2k-asm.c:744
+#: iq2000-asm.c:692 lm32-asm.c:582 m32c-asm.c:1817 m32r-asm.c:561
+#: mep-asm.c:1519 mt-asm.c:828 openrisc-asm.c:474 xc16x-asm.c:609
+#: xstormy16-asm.c:509
#, c-format
msgid "syntax error (expected char `%c', found `%c')"
msgstr ""
-#: fr30-asm.c:553 frv-asm.c:1506 ip2k-asm.c:754 iq2000-asm.c:702
-#: lm32-asm.c:592 m32c-asm.c:1827 m32r-asm.c:571 mep-asm.c:1529 mt-asm.c:838
-#: openrisc-asm.c:484 xc16x-asm.c:619 xstormy16-asm.c:519
+#: epiphany-asm.c:698 fr30-asm.c:553 frv-asm.c:1506 ip2k-asm.c:754
+#: iq2000-asm.c:702 lm32-asm.c:592 m32c-asm.c:1827 m32r-asm.c:571
+#: mep-asm.c:1529 mt-asm.c:838 openrisc-asm.c:484 xc16x-asm.c:619
+#: xstormy16-asm.c:519
#, c-format
msgid "syntax error (expected char `%c', found end of instruction)"
msgstr ""
-#: fr30-asm.c:583 frv-asm.c:1536 ip2k-asm.c:784 iq2000-asm.c:732
-#: lm32-asm.c:622 m32c-asm.c:1857 m32r-asm.c:601 mep-asm.c:1559 mt-asm.c:868
-#: openrisc-asm.c:514 xc16x-asm.c:649 xstormy16-asm.c:549
+#: epiphany-asm.c:728 fr30-asm.c:583 frv-asm.c:1536 ip2k-asm.c:784
+#: iq2000-asm.c:732 lm32-asm.c:622 m32c-asm.c:1857 m32r-asm.c:601
+#: mep-asm.c:1559 mt-asm.c:868 openrisc-asm.c:514 xc16x-asm.c:649
+#: xstormy16-asm.c:549
msgid "junk at end of line"
msgstr ""
-#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:844
-#: lm32-asm.c:734 m32c-asm.c:1969 m32r-asm.c:713 mep-asm.c:1671 mt-asm.c:980
-#: openrisc-asm.c:626 xc16x-asm.c:761 xstormy16-asm.c:661
+#: epiphany-asm.c:840 fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896
+#: iq2000-asm.c:844 lm32-asm.c:734 m32c-asm.c:1969 m32r-asm.c:713
+#: mep-asm.c:1671 mt-asm.c:980 openrisc-asm.c:626 xc16x-asm.c:761
+#: xstormy16-asm.c:661
msgid "unrecognized form of instruction"
msgstr ""
-#: fr30-asm.c:709 frv-asm.c:1662 ip2k-asm.c:910 iq2000-asm.c:858
-#: lm32-asm.c:748 m32c-asm.c:1983 m32r-asm.c:727 mep-asm.c:1685 mt-asm.c:994
-#: openrisc-asm.c:640 xc16x-asm.c:775 xstormy16-asm.c:675
+#: epiphany-asm.c:854 fr30-asm.c:709 frv-asm.c:1662 ip2k-asm.c:910
+#: iq2000-asm.c:858 lm32-asm.c:748 m32c-asm.c:1983 m32r-asm.c:727
+#: mep-asm.c:1685 mt-asm.c:994 openrisc-asm.c:640 xc16x-asm.c:775
+#: xstormy16-asm.c:675
#, c-format
msgid "bad instruction `%.50s...'"
msgstr ""
-#: fr30-asm.c:712 frv-asm.c:1665 ip2k-asm.c:913 iq2000-asm.c:861
-#: lm32-asm.c:751 m32c-asm.c:1986 m32r-asm.c:730 mep-asm.c:1688 mt-asm.c:997
-#: openrisc-asm.c:643 xc16x-asm.c:778 xstormy16-asm.c:678
+#: epiphany-asm.c:857 fr30-asm.c:712 frv-asm.c:1665 ip2k-asm.c:913
+#: iq2000-asm.c:861 lm32-asm.c:751 m32c-asm.c:1986 m32r-asm.c:730
+#: mep-asm.c:1688 mt-asm.c:997 openrisc-asm.c:643 xc16x-asm.c:778
+#: xstormy16-asm.c:678
#, c-format
msgid "bad instruction `%.50s'"
msgstr ""
#. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 lm32-dis.c:41
-#: m32c-dis.c:41 m32r-dis.c:41 mep-dis.c:41 mmix-dis.c:277 mt-dis.c:41
-#: openrisc-dis.c:41 xc16x-dis.c:41 xstormy16-dis.c:41
+#: epiphany-dis.c:41 fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41
+#: lm32-dis.c:41 m32c-dis.c:41 m32r-dis.c:41 mep-dis.c:41 mmix-dis.c:277
+#: mt-dis.c:41 openrisc-dis.c:41 xc16x-dis.c:41 xstormy16-dis.c:41
msgid "*unknown*"
msgstr ""
-#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 lm32-dis.c:147
-#: m32c-dis.c:891 m32r-dis.c:279 mep-dis.c:1187 mt-dis.c:290
-#: openrisc-dis.c:135 xc16x-dis.c:420 xstormy16-dis.c:168
+#: epiphany-dis.c:277 fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288
+#: iq2000-dis.c:189 lm32-dis.c:147 m32c-dis.c:891 m32r-dis.c:279
+#: mep-dis.c:1187 mt-dis.c:290 openrisc-dis.c:135 xc16x-dis.c:420
+#: xstormy16-dis.c:168
#, c-format
msgid "Unrecognized field %d while printing insn.\n"
msgstr ""
-#: fr30-ibld.c:164 frv-ibld.c:164 ip2k-ibld.c:164 iq2000-ibld.c:164
-#: lm32-ibld.c:164 m32c-ibld.c:164 m32r-ibld.c:164 mep-ibld.c:164
-#: mt-ibld.c:164 openrisc-ibld.c:164 xc16x-ibld.c:164 xstormy16-ibld.c:164
+#: epiphany-ibld.c:164 fr30-ibld.c:164 frv-ibld.c:164 ip2k-ibld.c:164
+#: iq2000-ibld.c:164 lm32-ibld.c:164 m32c-ibld.c:164 m32r-ibld.c:164
+#: mep-ibld.c:164 mt-ibld.c:164 openrisc-ibld.c:164 xc16x-ibld.c:164
+#: xstormy16-ibld.c:164
#, c-format
msgid "operand out of range (%ld not between %ld and %lu)"
msgstr ""
-#: fr30-ibld.c:185 frv-ibld.c:185 ip2k-ibld.c:185 iq2000-ibld.c:185
-#: lm32-ibld.c:185 m32c-ibld.c:185 m32r-ibld.c:185 mep-ibld.c:185
-#: mt-ibld.c:185 openrisc-ibld.c:185 xc16x-ibld.c:185 xstormy16-ibld.c:185
+#: epiphany-ibld.c:185 fr30-ibld.c:185 frv-ibld.c:185 ip2k-ibld.c:185
+#: iq2000-ibld.c:185 lm32-ibld.c:185 m32c-ibld.c:185 m32r-ibld.c:185
+#: mep-ibld.c:185 mt-ibld.c:185 openrisc-ibld.c:185 xc16x-ibld.c:185
+#: xstormy16-ibld.c:185
#, c-format
msgid "operand out of range (0x%lx not between 0 and 0x%lx)"
msgstr ""
-#: fr30-ibld.c:727 frv-ibld.c:853 ip2k-ibld.c:604 iq2000-ibld.c:710
-#: lm32-ibld.c:631 m32c-ibld.c:1728 m32r-ibld.c:662 mep-ibld.c:1205
-#: mt-ibld.c:746 openrisc-ibld.c:630 xc16x-ibld.c:749 xstormy16-ibld.c:675
+#: epiphany-ibld.c:872 fr30-ibld.c:727 frv-ibld.c:853 ip2k-ibld.c:604
+#: iq2000-ibld.c:710 lm32-ibld.c:631 m32c-ibld.c:1728 m32r-ibld.c:662
+#: mep-ibld.c:1205 mt-ibld.c:746 openrisc-ibld.c:630 xc16x-ibld.c:749
+#: xstormy16-ibld.c:675
#, c-format
msgid "Unrecognized field %d while building insn.\n"
msgstr ""
-#: fr30-ibld.c:932 frv-ibld.c:1170 ip2k-ibld.c:679 iq2000-ibld.c:885
-#: lm32-ibld.c:735 m32c-ibld.c:2889 m32r-ibld.c:799 mep-ibld.c:1804
-#: mt-ibld.c:966 openrisc-ibld.c:730 xc16x-ibld.c:969 xstormy16-ibld.c:821
+#: epiphany-ibld.c:1166 fr30-ibld.c:932 frv-ibld.c:1170 ip2k-ibld.c:679
+#: iq2000-ibld.c:885 lm32-ibld.c:735 m32c-ibld.c:2889 m32r-ibld.c:799
+#: mep-ibld.c:1804 mt-ibld.c:966 openrisc-ibld.c:730 xc16x-ibld.c:969
+#: xstormy16-ibld.c:821
#, c-format
msgid "Unrecognized field %d while decoding insn.\n"
msgstr ""
-#: fr30-ibld.c:1078 frv-ibld.c:1448 ip2k-ibld.c:753 iq2000-ibld.c:1016
-#: lm32-ibld.c:824 m32c-ibld.c:3506 m32r-ibld.c:912 mep-ibld.c:2274
-#: mt-ibld.c:1166 openrisc-ibld.c:807 xc16x-ibld.c:1190 xstormy16-ibld.c:931
+#: epiphany-ibld.c:1309 fr30-ibld.c:1078 frv-ibld.c:1448 ip2k-ibld.c:753
+#: iq2000-ibld.c:1016 lm32-ibld.c:824 m32c-ibld.c:3506 m32r-ibld.c:912
+#: mep-ibld.c:2274 mt-ibld.c:1166 openrisc-ibld.c:807 xc16x-ibld.c:1190
+#: xstormy16-ibld.c:931
#, c-format
msgid "Unrecognized field %d while getting int operand.\n"
msgstr ""
-#: fr30-ibld.c:1206 frv-ibld.c:1708 ip2k-ibld.c:809 iq2000-ibld.c:1129
-#: lm32-ibld.c:895 m32c-ibld.c:4105 m32r-ibld.c:1007 mep-ibld.c:2726
-#: mt-ibld.c:1348 openrisc-ibld.c:866 xc16x-ibld.c:1393 xstormy16-ibld.c:1023
+#: epiphany-ibld.c:1434 fr30-ibld.c:1206 frv-ibld.c:1708 ip2k-ibld.c:809
+#: iq2000-ibld.c:1129 lm32-ibld.c:895 m32c-ibld.c:4105 m32r-ibld.c:1007
+#: mep-ibld.c:2726 mt-ibld.c:1348 openrisc-ibld.c:866 xc16x-ibld.c:1393
+#: xstormy16-ibld.c:1023
#, c-format
msgid "Unrecognized field %d while getting vma operand.\n"
msgstr ""
-#: fr30-ibld.c:1337 frv-ibld.c:1975 ip2k-ibld.c:868 iq2000-ibld.c:1249
-#: lm32-ibld.c:973 m32c-ibld.c:4692 m32r-ibld.c:1108 mep-ibld.c:3139
-#: mt-ibld.c:1537 openrisc-ibld.c:932 xc16x-ibld.c:1597 xstormy16-ibld.c:1122
+#: epiphany-ibld.c:1566 fr30-ibld.c:1337 frv-ibld.c:1975 ip2k-ibld.c:868
+#: iq2000-ibld.c:1249 lm32-ibld.c:973 m32c-ibld.c:4692 m32r-ibld.c:1108
+#: mep-ibld.c:3139 mt-ibld.c:1537 openrisc-ibld.c:932 xc16x-ibld.c:1597
+#: xstormy16-ibld.c:1122
#, c-format
msgid "Unrecognized field %d while setting int operand.\n"
msgstr ""
-#: fr30-ibld.c:1458 frv-ibld.c:2232 ip2k-ibld.c:917 iq2000-ibld.c:1359
-#: lm32-ibld.c:1041 m32c-ibld.c:5269 m32r-ibld.c:1199 mep-ibld.c:3542
-#: mt-ibld.c:1716 openrisc-ibld.c:988 xc16x-ibld.c:1791 xstormy16-ibld.c:1211
+#: epiphany-ibld.c:1688 fr30-ibld.c:1458 frv-ibld.c:2232 ip2k-ibld.c:917
+#: iq2000-ibld.c:1359 lm32-ibld.c:1041 m32c-ibld.c:5269 m32r-ibld.c:1199
+#: mep-ibld.c:3542 mt-ibld.c:1716 openrisc-ibld.c:988 xc16x-ibld.c:1791
+#: xstormy16-ibld.c:1211
#, c-format
msgid "Unrecognized field %d while setting vma operand.\n"
msgstr ""
+#: fr30-asm.c:93 m32c-asm.c:872 m32c-asm.c:879
+msgid "Register number is not valid"
+msgstr ""
+
+#: fr30-asm.c:95
+msgid "Register must be between r0 and r7"
+msgstr ""
+
+#: fr30-asm.c:97
+msgid "Register must be between r8 and r15"
+msgstr ""
+
+#: fr30-asm.c:116 m32c-asm.c:910
+msgid "Register list is not valid"
+msgstr ""
+
#: frv-asm.c:608
msgid "missing `]'"
msgstr ""
@@ -350,15 +403,6 @@ msgstr ""
msgid "register number must be even"
msgstr ""
-#. -- assembler routines inserted here.
-#. -- asm.c
-#: frv-asm.c:972 iq2000-asm.c:56 lm32-asm.c:95 lm32-asm.c:127 lm32-asm.c:157
-#: lm32-asm.c:187 lm32-asm.c:217 lm32-asm.c:247 m32c-asm.c:140 m32c-asm.c:235
-#: m32c-asm.c:276 m32c-asm.c:334 m32c-asm.c:355 m32r-asm.c:53 mep-asm.c:241
-#: mep-asm.c:259 mep-asm.c:274 mep-asm.c:289 mep-asm.c:301 openrisc-asm.c:54
-msgid "missing `)'"
-msgstr ""
-
#: h8300-dis.c:314
#, c-format
msgid "Hmmmm 0x%x"
@@ -380,11 +424,11 @@ msgstr ""
msgid "%02x\t\t*unknown*"
msgstr ""
-#: i386-dis.c:10774
+#: i386-dis.c:10504
msgid "<internal disassembler error>"
msgstr ""
-#: i386-dis.c:11071
+#: i386-dis.c:10801
#, c-format
msgid ""
"\n"
@@ -393,126 +437,126 @@ msgid ""
"with the -M switch (multiple options should be separated by commas):\n"
msgstr ""
-#: i386-dis.c:11075
+#: i386-dis.c:10805
#, c-format
msgid " x86-64 Disassemble in 64bit mode\n"
msgstr ""
-#: i386-dis.c:11076
+#: i386-dis.c:10806
#, c-format
msgid " i386 Disassemble in 32bit mode\n"
msgstr ""
-#: i386-dis.c:11077
+#: i386-dis.c:10807
#, c-format
msgid " i8086 Disassemble in 16bit mode\n"
msgstr ""
-#: i386-dis.c:11078
+#: i386-dis.c:10808
#, c-format
msgid " att Display instruction in AT&T syntax\n"
msgstr ""
-#: i386-dis.c:11079
+#: i386-dis.c:10809
#, c-format
msgid " intel Display instruction in Intel syntax\n"
msgstr ""
-#: i386-dis.c:11080
+#: i386-dis.c:10810
#, c-format
msgid ""
" att-mnemonic\n"
" Display instruction in AT&T mnemonic\n"
msgstr ""
-#: i386-dis.c:11082
+#: i386-dis.c:10812
#, c-format
msgid ""
" intel-mnemonic\n"
" Display instruction in Intel mnemonic\n"
msgstr ""
-#: i386-dis.c:11084
+#: i386-dis.c:10814
#, c-format
msgid " addr64 Assume 64bit address size\n"
msgstr ""
-#: i386-dis.c:11085
+#: i386-dis.c:10815
#, c-format
msgid " addr32 Assume 32bit address size\n"
msgstr ""
-#: i386-dis.c:11086
+#: i386-dis.c:10816
#, c-format
msgid " addr16 Assume 16bit address size\n"
msgstr ""
-#: i386-dis.c:11087
+#: i386-dis.c:10817
#, c-format
msgid " data32 Assume 32bit data size\n"
msgstr ""
-#: i386-dis.c:11088
+#: i386-dis.c:10818
#, c-format
msgid " data16 Assume 16bit data size\n"
msgstr ""
-#: i386-dis.c:11089
+#: i386-dis.c:10819
#, c-format
msgid " suffix Always display instruction suffix in AT&T syntax\n"
msgstr ""
-#: i386-gen.c:467 ia64-gen.c:307
+#: i386-gen.c:483 ia64-gen.c:307
#, c-format
msgid "%s: Error: "
msgstr ""
-#: i386-gen.c:599
+#: i386-gen.c:615
#, c-format
msgid "%s: %d: Unknown bitfield: %s\n"
msgstr ""
-#: i386-gen.c:601
+#: i386-gen.c:617
#, c-format
msgid "Unknown bitfield: %s\n"
msgstr ""
-#: i386-gen.c:657
+#: i386-gen.c:673
#, c-format
msgid "%s: %d: Missing `)' in bitfield: %s\n"
msgstr ""
-#: i386-gen.c:922
+#: i386-gen.c:938
#, c-format
msgid "can't find i386-opc.tbl for reading, errno = %s\n"
msgstr ""
-#: i386-gen.c:1053
+#: i386-gen.c:1069
#, c-format
msgid "can't find i386-reg.tbl for reading, errno = %s\n"
msgstr ""
-#: i386-gen.c:1130
+#: i386-gen.c:1146
#, c-format
msgid "can't create i386-init.h, errno = %s\n"
msgstr ""
-#: i386-gen.c:1219 ia64-gen.c:2820
+#: i386-gen.c:1235 ia64-gen.c:2820
#, c-format
msgid "unable to change directory to \"%s\", errno = %s\n"
msgstr ""
-#: i386-gen.c:1226
+#: i386-gen.c:1242
#, c-format
msgid "%d unused bits in i386_cpu_flags.\n"
msgstr ""
-#: i386-gen.c:1233
+#: i386-gen.c:1249
#, c-format
msgid "%d unused bits in i386_operand_type.\n"
msgstr ""
-#: i386-gen.c:1247
+#: i386-gen.c:1263
#, c-format
msgid "can't create i386-tbl.h, errno = %s\n"
msgstr ""
@@ -830,26 +874,41 @@ msgstr ""
msgid "Value is not aligned enough"
msgstr ""
-#: mips-dis.c:845
+#: mips-dis.c:947
msgid "# internal error, incomplete extension sequence (+)"
msgstr ""
-#: mips-dis.c:1011
+#: mips-dis.c:1113
#, c-format
msgid "# internal error, undefined extension sequence (+%c)"
msgstr ""
-#: mips-dis.c:1371
+#: mips-dis.c:1485
#, c-format
msgid "# internal error, undefined modifier (%c)"
msgstr ""
-#: mips-dis.c:1975
+#: mips-dis.c:2089
#, c-format
msgid "# internal disassembler error, unrecognised modifier (%c)"
msgstr ""
-#: mips-dis.c:2213
+#: mips-dis.c:2664
+#, c-format
+msgid "# internal disassembler error, unrecognized modifier (+%c)"
+msgstr ""
+
+#: mips-dis.c:2894
+#, c-format
+msgid "# internal disassembler error, unrecognized modifier (m%c)"
+msgstr ""
+
+#: mips-dis.c:2904
+#, c-format
+msgid "# internal disassembler error, unrecognized modifier (%c)"
+msgstr ""
+
+#: mips-dis.c:3052
#, c-format
msgid ""
"\n"
@@ -857,7 +916,7 @@ msgid ""
"with the -M switch (multiple options should be separated by commas):\n"
msgstr ""
-#: mips-dis.c:2217
+#: mips-dis.c:3056
#, c-format
msgid ""
"\n"
@@ -865,7 +924,7 @@ msgid ""
" Default: based on binary being disassembled.\n"
msgstr ""
-#: mips-dis.c:2221
+#: mips-dis.c:3060
#, c-format
msgid ""
"\n"
@@ -873,7 +932,7 @@ msgid ""
" Default: numeric.\n"
msgstr ""
-#: mips-dis.c:2225
+#: mips-dis.c:3064
#, c-format
msgid ""
"\n"
@@ -882,7 +941,7 @@ msgid ""
" Default: based on binary being disassembled.\n"
msgstr ""
-#: mips-dis.c:2230
+#: mips-dis.c:3069
#, c-format
msgid ""
"\n"
@@ -891,7 +950,7 @@ msgid ""
" Default: based on binary being disassembled.\n"
msgstr ""
-#: mips-dis.c:2235
+#: mips-dis.c:3074
#, c-format
msgid ""
"\n"
@@ -899,7 +958,7 @@ msgid ""
" specified ABI.\n"
msgstr ""
-#: mips-dis.c:2239
+#: mips-dis.c:3078
#, c-format
msgid ""
"\n"
@@ -907,7 +966,7 @@ msgid ""
" specified architecture.\n"
msgstr ""
-#: mips-dis.c:2243
+#: mips-dis.c:3082
#, c-format
msgid ""
"\n"
@@ -915,12 +974,12 @@ msgid ""
" "
msgstr ""
-#: mips-dis.c:2248 mips-dis.c:2256 mips-dis.c:2258
+#: mips-dis.c:3087 mips-dis.c:3095 mips-dis.c:3097
#, c-format
msgid "\n"
msgstr ""
-#: mips-dis.c:2250
+#: mips-dis.c:3089
#, c-format
msgid ""
"\n"
@@ -995,43 +1054,51 @@ msgid ""
"the -M switch:\n"
msgstr ""
-#: ppc-opc.c:879 ppc-opc.c:907
+#: ppc-opc.c:906 ppc-opc.c:936
msgid "invalid conditional option"
msgstr ""
-#: ppc-opc.c:909
+#: ppc-opc.c:908 ppc-opc.c:938
+msgid "invalid counter access"
+msgstr ""
+
+#: ppc-opc.c:940
msgid "attempt to set y bit when using + or - modifier"
msgstr ""
-#: ppc-opc.c:941
+#: ppc-opc.c:972
msgid "invalid mask field"
msgstr ""
-#: ppc-opc.c:967
+#: ppc-opc.c:998
msgid "ignoring invalid mfcr mask"
msgstr ""
-#: ppc-opc.c:1017 ppc-opc.c:1052
+#: ppc-opc.c:1048 ppc-opc.c:1083
msgid "illegal bitmask"
msgstr ""
-#: ppc-opc.c:1172
+#: ppc-opc.c:1170
+msgid "address register in load range"
+msgstr ""
+
+#: ppc-opc.c:1223
msgid "index register in load range"
msgstr ""
-#: ppc-opc.c:1188
+#: ppc-opc.c:1239 ppc-opc.c:1295
msgid "source and target register operands must be different"
msgstr ""
-#: ppc-opc.c:1203
+#: ppc-opc.c:1254
msgid "invalid register operand when updating"
msgstr ""
-#: ppc-opc.c:1282
+#: ppc-opc.c:1349
msgid "invalid sprg number"
msgstr ""
-#: ppc-opc.c:1452
+#: ppc-opc.c:1519
msgid "invalid constant"
msgstr ""
@@ -1058,23 +1125,23 @@ msgstr ""
msgid "<illegal instruction>"
msgstr ""
-#: sparc-dis.c:283
+#: sparc-dis.c:285
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:294
+#: sparc-dis.c:296
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:344
+#: sparc-dis.c:346
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
msgstr ""
#. Mark as non-valid instruction.
-#: sparc-dis.c:1015
+#: sparc-dis.c:1028
msgid "unknown"
msgstr ""