z8k fixes

This commit is contained in:
Nick Clifton 2001-04-24 15:22:25 +00:00
parent b3baf5d0a8
commit 6840198f93
19 changed files with 8211 additions and 5821 deletions

View File

@ -1,3 +1,8 @@
2001-04-24 Christian Groessler <cpg@aladdin.de>
* coff-z8k.c (extra_case): added handler for R_DISP7, R_CALLR
and R_REL16 reloc types; accept odd values for R_REL16 type
2001-04-24 Johan Rydberg <jrydberg@opencores.org>
* cpu-openrisc.c: New file.

View File

@ -49,10 +49,23 @@ HOWTO (R_IMM8, 0, 1, 8, false, 0,
complain_overflow_bitfield, 0, "r_imm8", true, 0x000000ff, 0x000000ff,
false);
static reloc_howto_type r_rel16 =
HOWTO (R_REL16, 0, 1, 16, false, 0,
complain_overflow_bitfield, 0, "r_rel16", true, 0x0000ffff, 0x0000ffff,
true);
static reloc_howto_type r_jr =
HOWTO (R_JR, 0, 1, 8, true, 0, complain_overflow_signed, 0,
"r_jr", true, 0, 0, true);
static reloc_howto_type r_disp7 =
HOWTO (R_DISP7, 0, 1, 7, true, 0, complain_overflow_bitfield, 0,
"r_disp7", true, 0, 0, true);
static reloc_howto_type r_callr =
HOWTO (R_CALLR, 0, 1, 12, true, 0, complain_overflow_signed, 0,
"r_callr", true, 0xfff, 0xfff, true);
/* Turn a howto into a reloc number */
static int
@ -97,6 +110,15 @@ rtype2howto (internal, dst)
case R_JR:
internal->howto = &r_jr;
break;
case R_DISP7:
internal->howto = &r_disp7;
break;
case R_CALLR:
internal->howto = &r_callr;
break;
case R_REL16:
internal->howto = &r_rel16;
break;
case R_IMM32:
internal->howto = &r_imm32;
break;
@ -215,6 +237,87 @@ extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
(*src_ptr)++;
break;
}
case R_DISP7:
{
bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
bfd_vma dot = (link_order->offset
+ *dst_ptr
+ input_section->output_section->vma);
int gap = dst - dot - 1;/* -1 since were in the odd byte of the
word and the pc's been incremented */
if (gap & 1)
abort ();
gap /= 2;
if (gap > 0 || gap < -128)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_8 (in_abfd,
(bfd_get_8 ( in_abfd, data + *dst_ptr) & 0x80) + (-gap & 0x7f),
data + *dst_ptr);
(*dst_ptr)++;
(*src_ptr)++;
break;
}
case R_CALLR:
{
bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
bfd_vma dot = (link_order->offset
+ *dst_ptr
+ input_section->output_section->vma);
int gap = dst - dot - 2;
if (gap & 1)
abort ();
gap /= 2;
if (gap > 8191 || gap < -8192)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_16 (in_abfd,
(bfd_get_16 ( in_abfd, data + *dst_ptr) & 0xf000) | (-gap & 0x0fff),
data + *dst_ptr);
(*dst_ptr) += 2;
(*src_ptr) += 2;
break;
}
case R_REL16:
{
bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
bfd_vma dot = (link_order->offset
+ *dst_ptr
+ input_section->output_section->vma);
int gap = dst - dot - 2;
if (gap > 32767 || gap < -32768)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_16 (in_abfd,gap,data + *dst_ptr);
(*dst_ptr) += 2;
(*src_ptr) += 2;
break;
}
default:
abort ();
}

View File

@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-04-24 16:35+0100\n"
"POT-Creation-Date: 2001-04-24 17:11+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"
@ -564,13 +564,13 @@ msgstr ""
#: elf-m10200.c:451 elf-m10300.c:663 elf32-arm.h:1939 elf32-avr.c:842
#: elf32-cris.c:1335 elf32-d10v.c:478 elf32-fr30.c:648 elf32-i860.c:1049
#: elf32-m32r.c:1266 elf32-openrisc.c:448 elf32-v850.c:1681
#: elf32-m32r.c:1266 elf32-openrisc.c:449 elf32-v850.c:1681
msgid "internal error: out of range error"
msgstr ""
#: elf-m10200.c:455 elf-m10300.c:667 elf32-arm.h:1943 elf32-avr.c:846
#: elf32-cris.c:1339 elf32-d10v.c:482 elf32-fr30.c:652 elf32-i860.c:1053
#: elf32-m32r.c:1270 elf32-mips.c:7046 elf32-openrisc.c:452 elf32-v850.c:1685
#: elf32-m32r.c:1270 elf32-mips.c:7046 elf32-openrisc.c:453 elf32-v850.c:1685
msgid "internal error: unsupported relocation error"
msgstr ""
@ -581,7 +581,7 @@ msgstr ""
#: elf-m10200.c:463 elf-m10300.c:675 elf32-arm.h:1951 elf32-avr.c:854
#: elf32-cris.c:1347 elf32-d10v.c:490 elf32-fr30.c:660 elf32-i860.c:1061
#: elf32-m32r.c:1278 elf32-openrisc.c:460 elf32-v850.c:1705
#: elf32-m32r.c:1278 elf32-openrisc.c:461 elf32-v850.c:1705
msgid "internal error: unknown error"
msgstr ""
@ -736,7 +736,7 @@ msgid "<Unrecognised flag bits set>"
msgstr ""
#: elf32-avr.c:850 elf32-cris.c:1343 elf32-fr30.c:656 elf32-i860.c:1057
#: elf32-openrisc.c:456 elf32-v850.c:1689
#: elf32-openrisc.c:457 elf32-v850.c:1689
msgid "internal error: dangerous relocation"
msgstr ""

View File

@ -1,3 +1,8 @@
2001-04-24 Christian Groessler <cpg@aladdin.de>
* config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now
generate R_CALLR and R_REL16 relocations
2000-04-20 Jason Eckhardt <jle@redhat.com>
* config/tc-d10v.h (tc_frob_label): Update the symbol's frag

View File

@ -1948,7 +1948,7 @@ configure configure.in gdbinit.in itbl-lex.c itbl-parse.c
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
TAR = gtar
GZIP_ENV = --best
SOURCES = $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(gasp_new_SOURCES)
OBJECTS = $(itbl_test_OBJECTS) $(as_new_OBJECTS) $(gasp_new_OBJECTS)

18
gas/aclocal.m4 vendored
View File

@ -83,24 +83,6 @@ AC_DEFUN([CY_WITH_NLS],)
AC_SUBST(INTLLIBS)
])
#serial 1
# This test replaces the one in autoconf.
# Currently this macro should have the same name as the autoconf macro
# because gettext's gettext.m4 (distributed in the automake package)
# still uses it. Otherwise, the use in gettext.m4 makes autoheader
# give these diagnostics:
# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
undefine([AC_ISC_POSIX])
AC_DEFUN(AC_ISC_POSIX,
[
dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
]
)
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.

View File

@ -1,176 +1,147 @@
/* config.in. Generated automatically from configure.in by autoheader. */
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Use BFD interface? */
#undef BFD_ASSEMBLER
/* Define to empty if the keyword does not work. */
#undef const
/* assert broken? */
#undef BROKEN_ASSERT
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define if you have alloca, as a function or macro. */
/* Compiling cross-assembler? */
#undef CROSS_COMPILE
/* Define if using `alloca.c'. */
#undef C_ALLOCA
/* Default architecture. */
#undef DEFAULT_ARCH
/* Default emulation. */
#undef DEFAULT_EMULATION
/* Supported emulations. */
#undef EMULATIONS
/* Define to 1 if NLS is requested */
#undef ENABLE_NLS
/* Define if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if lex declares yytext as a char * by default, not a char[]. */
#undef YYTEXT_POINTER
/* Define if you have the __argz_count function. */
#undef HAVE___ARGZ_COUNT
/* Define if you have the __argz_next function. */
#undef HAVE___ARGZ_NEXT
/* Define if you have the __argz_stringify function. */
#undef HAVE___ARGZ_STRINGIFY
/* Define if you have the dcgettext function. */
#undef HAVE_DCGETTEXT
/* Define if you have the getcwd function. */
#undef HAVE_GETCWD
/* Define if you have the getpagesize function. */
#undef HAVE_GETPAGESIZE
/* Define if you have the munmap function. */
#undef HAVE_MUNMAP
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
/* Define if you have the remove function. */
#undef HAVE_REMOVE
/* Define if you have the sbrk function. */
#undef HAVE_SBRK
/* Define if you have the setenv function. */
#undef HAVE_SETENV
/* Define if you have the setlocale function. */
#undef HAVE_SETLOCALE
/* Define if you have the stpcpy function. */
#undef HAVE_STPCPY
/* Define if you have the strcasecmp function. */
#undef HAVE_STRCASECMP
/* Define if you have the strchr function. */
#undef HAVE_STRCHR
/* Define if you have the unlink function. */
#undef HAVE_UNLINK
/* Define if you have the <argz.h> header file. */
/* Define if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
/* Define if you have the <errno.h> header file. */
/* Define if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
/* Define if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
/* Define if you have the <limits.h> header file. */
/* Define if you have the `getcwd' function. */
#undef HAVE_GETCWD
/* Define if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Define if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define if you have the <memory.h> header file. */
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if you have the <nl_types.h> header file. */
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define if you have the `munmap' function. */
#undef HAVE_MUNMAP
/* Define if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H
/* Define if you have the <stdarg.h> header file. */
/* Define if you have the `putenv' function. */
#undef HAVE_PUTENV
/* Define if you have the `remove' function. */
#undef HAVE_REMOVE
/* Define if you have the `sbrk' function. */
#undef HAVE_SBRK
/* Define if you have the `setenv' function. */
#undef HAVE_SETENV
/* Define if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
/* Define if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
/* Define if you have the <stdlib.h> header file. */
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the stpcpy function */
#undef HAVE_STPCPY
/* Define if you have the <strings.h> header file. */
/* Define if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define if you have the `strchr' function. */
#undef HAVE_STRCHR
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <sys/param.h> header file. */
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <sys/types.h> header file. */
/* Define if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define if you have the <unistd.h> header file. */
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <values.h> header file. */
/* Define if you have the `unlink' function. */
#undef HAVE_UNLINK
/* Define if you have the <values.h> header file. */
#undef HAVE_VALUES_H
/* Define if you have the <varargs.h> header file. */
/* Define if you have the <varargs.h> header file. */
#undef HAVE_VARARGS_H
/* Name of package */
#undef PACKAGE
/* Define if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT
/* Version number of package */
#undef VERSION
/* Define if you have the `__argz_next' function. */
#undef HAVE___ARGZ_NEXT
/* Define if defaulting to ELF on SCO 5. */
#undef SCO_ELF
/* Using strict COFF? */
#undef STRICTCOFF
/* Use ELF stabs for MIPS, not ECOFF stabs */
#undef MIPS_STABS_ELF
/* Define if default target is PowerPC Solaris. */
#undef TARGET_SOLARIS_COMMENT
/* Define as 1 if big endian. */
#undef TARGET_BYTES_BIG_ENDIAN
/* Default architecture. */
#undef DEFAULT_ARCH
/* Default architecture. */
#undef DEFAULT_ARCH
/* Default architecture. */
#undef DEFAULT_ARCH
/* Using cgen code? */
#undef USING_CGEN
/* Define if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY
/* Using i386 COFF? */
#undef I386COFF
@ -181,6 +152,30 @@
/* Using m88k COFF? */
#undef M88KCOFF
/* old COFF support? */
#undef MANY_SEGMENTS
/* Use ELF stabs for MIPS, not ECOFF stabs */
#undef MIPS_STABS_ELF
/* Define if environ is not declared in system header files. */
#undef NEED_DECLARATION_ENVIRON
/* Define if errno is not declared in system header files. */
#undef NEED_DECLARATION_ERRNO
/* Define if free is not declared in system header files. */
#undef NEED_DECLARATION_FREE
/* Define if malloc is not declared in system header files. */
#undef NEED_DECLARATION_MALLOC
/* Define if sbrk is not declared in system header files. */
#undef NEED_DECLARATION_SBRK
/* Define if strstr is not declared in system header files. */
#undef NEED_DECLARATION_STRSTR
/* a.out support? */
#undef OBJ_MAYBE_AOUT
@ -211,69 +206,72 @@
/* VMS support? */
#undef OBJ_MAYBE_VMS
/* Use emulation support? */
#undef USE_EMULATIONS
/* Name of package */
#undef PACKAGE
/* Supported emulations. */
#undef EMULATIONS
/* Define if defaulting to ELF on SCO 5. */
#undef SCO_ELF
/* Default emulation. */
#undef DEFAULT_EMULATION
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* old COFF support? */
#undef MANY_SEGMENTS
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Use BFD interface? */
#undef BFD_ASSEMBLER
/* Using strict COFF? */
#undef STRICTCOFF
/* Target alias. */
#undef TARGET_ALIAS
/* Define as 1 if big endian. */
#undef TARGET_BYTES_BIG_ENDIAN
/* Canonical target. */
#undef TARGET_CANONICAL
/* Target CPU. */
#undef TARGET_CPU
/* Target vendor. */
#undef TARGET_VENDOR
/* Target OS. */
#undef TARGET_OS
/* Define if you have the stpcpy function */
#undef HAVE_STPCPY
/* Define if default target is PowerPC Solaris. */
#undef TARGET_SOLARIS_COMMENT
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Target vendor. */
#undef TARGET_VENDOR
/* Define to 1 if NLS is requested */
#undef ENABLE_NLS
/* Use emulation support? */
#undef USE_EMULATIONS
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Using cgen code? */
#undef USING_CGEN
/* Compiling cross-assembler? */
#undef CROSS_COMPILE
/* Version number of package */
#undef VERSION
/* assert broken? */
#undef BROKEN_ASSERT
/* Define if `lex' declares `yytext' as a `char *' by default, not a `char[]'.
*/
#undef YYTEXT_POINTER
/* Define if strstr is not declared in system header files. */
#undef NEED_DECLARATION_STRSTR
/* Define if you need to in order for stat and other things to work. */
#undef _POSIX_SOURCE
/* Define if malloc is not declared in system header files. */
#undef NEED_DECLARATION_MALLOC
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define if free is not declared in system header files. */
#undef NEED_DECLARATION_FREE
/* Define as `__inline' if that's what the C compiler calls it, or to nothing
if it is not supported. */
#undef inline
/* Define if sbrk is not declared in system header files. */
#undef NEED_DECLARATION_SBRK
/* Define if environ is not declared in system header files. */
#undef NEED_DECLARATION_ENVIRON
/* Define if errno is not declared in system header files. */
#undef NEED_DECLARATION_ERRNO
/* Define to `long' if <sys/types.h> does not define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

View File

@ -1107,7 +1107,17 @@ build_bytes (this_try, operand)
*output_ptr++ = reg[c & 0xf];
break;
case CLASS_DISP:
switch (c & ARG_MASK)
{
case ARG_DISP12:
output_ptr = apply_fix (output_ptr, R_CALLR, da_operand, 4);
break;
case ARG_DISP16:
output_ptr = apply_fix (output_ptr, R_REL16, da_operand, 4);
break;
default:
output_ptr = apply_fix (output_ptr, R_IMM16, da_operand, 4);
}
da_operand = 0;
break;

8708
gas/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -132,7 +132,31 @@ man_MANS = as.1
info_TEXINFOS = as.texinfo gasp.texi
CPU_DOCS = c-a29k.texi c-arc.texi c-arm.texi c-d10v.texi c-h8300.texi c-h8500.texi c-hppa.texi c-i370.texi c-i386.texi c-i860.texi c-i960.texi c-m32r.texi c-m68hc11.texi c-m68k.texi c-mips.texi c-ns32k.texi c-pdp11.texi c-pj.texi c-sh.texi c-sparc.texi c-tic54x.texi c-vax.texi c-v850.texi c-z8k.texi
CPU_DOCS = \
c-a29k.texi \
c-arc.texi \
c-arm.texi \
c-d10v.texi \
c-h8300.texi \
c-h8500.texi \
c-hppa.texi \
c-i370.texi \
c-i386.texi \
c-i860.texi \
c-i960.texi \
c-m32r.texi \
c-m68hc11.texi \
c-m68k.texi \
c-mips.texi \
c-ns32k.texi \
c-pdp11.texi \
c-pj.texi \
c-sh.texi \
c-sparc.texi \
c-tic54x.texi \
c-vax.texi \
c-v850.texi \
c-z8k.texi
# This one isn't ready for prime time yet. Not even a little bit.
@ -340,7 +364,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,14 @@
2001-04-24 Christian Groessler <cpg@aladdin.de>
* z8k-dis.c: add names of control registers (ctrl_names);
(seg_length): provides instruction length fixup for segmented
mode; (unpack_instr): correctly handle ARG_DISP16, ARG_DISP12,
CLASS_0DISP7, CLASS_1DISP7, CLASS_DISP8 and CLASS_PR cases;
(unparse_intr): handle CLASS_PR, print addresses without '#'
* z8k-opc.h: re-created with new z8kgen
* z8kgen.c: merged in fixes which were in existing z8k-opc.h; new
entries for ldctl/ldctlb instruction
2001-04-06 Andreas Jaeger <aj@suse.de>
* i386-dis.c: Add ffreep instruction.

View File

@ -374,7 +374,7 @@ acinclude.m4 aclocal.m4 config.in configure configure.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
TAR = gtar
GZIP_ENV = --best
SOURCES = libopcodes.a.c $(libopcodes_la_SOURCES)
OBJECTS = libopcodes.a.$(OBJEXT) $(libopcodes_la_OBJECTS)

View File

@ -1,132 +1,135 @@
/* config.in. Generated automatically from configure.in by autoheader. */
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define to empty if the keyword does not work. */
#undef const
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define if you have alloca, as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if you have the __argz_count function. */
#undef HAVE___ARGZ_COUNT
/* Define if you have the __argz_next function. */
#undef HAVE___ARGZ_NEXT
/* Define if you have the __argz_stringify function. */
#undef HAVE___ARGZ_STRINGIFY
/* Define if you have the dcgettext function. */
#undef HAVE_DCGETTEXT
/* Define if you have the getcwd function. */
#undef HAVE_GETCWD
/* Define if you have the getpagesize function. */
#undef HAVE_GETPAGESIZE
/* Define if you have the munmap function. */
#undef HAVE_MUNMAP
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
/* Define if you have the setenv function. */
#undef HAVE_SETENV
/* Define if you have the setlocale function. */
#undef HAVE_SETLOCALE
/* Define if you have the stpcpy function. */
#undef HAVE_STPCPY
/* Define if you have the strcasecmp function. */
#undef HAVE_STRCASECMP
/* Define if you have the strchr function. */
#undef HAVE_STRCHR
/* Define if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <values.h> header file. */
#undef HAVE_VALUES_H
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
/* Define if you have the stpcpy function */
#undef HAVE_STPCPY
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define if using `alloca.c'. */
#undef C_ALLOCA
/* Define to 1 if NLS is requested */
#undef ENABLE_NLS
/* Define if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
/* Define if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
/* Define if you have the `getcwd' function. */
#undef HAVE_GETCWD
/* Define if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Define if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define if you have the `munmap' function. */
#undef HAVE_MUNMAP
/* Define if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H
/* Define if you have the `putenv' function. */
#undef HAVE_PUTENV
/* Define if you have the `setenv' function. */
#undef HAVE_SETENV
/* Define if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you have the stpcpy function */
#undef HAVE_STPCPY
/* Define if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define if you have the `strchr' function. */
#undef HAVE_STRCHR
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <values.h> header file. */
#undef HAVE_VALUES_H
/* Define if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT
/* Define if you have the `__argz_next' function. */
#undef HAVE___ARGZ_NEXT
/* Define if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY
/* Name of package */
#undef PACKAGE
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define as `__inline' if that's what the C compiler calls it, or to nothing
if it is not supported. */
#undef inline
/* Define to `long' if <sys/types.h> does not define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

View File

@ -1,13 +1,12 @@
# SOME DESCRIPTIVE TITLE.
# Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
# (C) YEAR
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-03-06 12:07-0800\n"
"POT-Creation-Date: 2001-04-24 17:11+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"
@ -23,25 +22,21 @@ msgstr ""
msgid "jump hint unaligned"
msgstr ""
#: arc-dis.c:52
msgid "Illegal limm reference in last instruction!\n"
msgstr ""
#: arm-dis.c:489
#: arm-dis.c:490
msgid "<illegal precision>"
msgstr ""
#: arm-dis.c:904
#: arm-dis.c:922
#, c-format
msgid "Unrecognised register name set: %s\n"
msgstr ""
#: arm-dis.c:911
#: arm-dis.c:929
#, c-format
msgid "Unrecognised disassembler option: %s\n"
msgstr ""
#: arm-dis.c:1083
#: arm-dis.c:1101
msgid ""
"\n"
"The following ARM specific disassembler options are supported for use with\n"
@ -81,12 +76,12 @@ msgid "<unknown register %d>"
msgstr ""
#. Can't happen.
#: dis-buf.c:56
#: dis-buf.c:57
#, c-format
msgid "Unknown error %d\n"
msgstr ""
#: dis-buf.c:61
#: dis-buf.c:62
#, c-format
msgid "Address 0x%x is out of bounds.\n"
msgstr ""
@ -126,11 +121,6 @@ msgstr ""
msgid "bad instruction `%.50s'"
msgstr ""
#. Default text to print if an instruction isn't recognized.
#: fr30-dis.c:39 m32r-dis.c:39
msgid "*unknown*"
msgstr ""
#: fr30-dis.c:300 m32r-dis.c:239
#, c-format
msgid "Unrecognized field %d while printing insn.\n"
@ -192,10 +182,6 @@ msgstr ""
msgid "%02x\t\t*unknown*"
msgstr ""
#: i386-dis.c:2742
msgid "<internal disassembler error>"
msgstr ""
#: m10200-dis.c:199
#, c-format
msgid "unknown\t0x%02x"
@ -211,12 +197,12 @@ msgstr ""
msgid "unknown\t0x%04x"
msgstr ""
#: m68k-dis.c:429
#: m68k-dis.c:430
#, c-format
msgid "<internal error in opcode table: %s %s>\n"
msgstr ""
#: m68k-dis.c:1007
#: m68k-dis.c:1008
#, c-format
msgid "<function code %d>"
msgstr ""
@ -226,7 +212,7 @@ msgstr ""
msgid "# <dis error: %08x>"
msgstr ""
#: mips-dis.c:273
#: mips-dis.c:274
#, c-format
msgid "# internal error, undefined modifier(%c)"
msgstr ""
@ -237,54 +223,54 @@ msgstr ""
#. * aoffsetp by since whatever generated this is broken
#. * anyway!
#.
#: ns32k-dis.c:618
#: ns32k-dis.c:619
msgid "$<undefined>"
msgstr ""
#: ppc-opc.c:619 ppc-opc.c:650
#: ppc-opc.c:620 ppc-opc.c:651
msgid "invalid conditional option"
msgstr ""
#: ppc-opc.c:652
#: ppc-opc.c:653
msgid "attempt to set y bit when using + or - modifier"
msgstr ""
#: ppc-opc.c:707
#: ppc-opc.c:708
msgid "ignoring least significant bits in branch offset"
msgstr ""
#: ppc-opc.c:742 ppc-opc.c:779
#: ppc-opc.c:743 ppc-opc.c:780
msgid "illegal bitmask"
msgstr ""
#: ppc-opc.c:848
#: ppc-opc.c:849
msgid "value out of range"
msgstr ""
#: ppc-opc.c:922
#: ppc-opc.c:923
msgid "index register in load range"
msgstr ""
#: ppc-opc.c:937
#: ppc-opc.c:938
msgid "invalid register operand when updating"
msgstr ""
#. Mark as non-valid instruction
#: sparc-dis.c:748
#: sparc-dis.c:749
msgid "unknown"
msgstr ""
#: sparc-dis.c:823
#: sparc-dis.c:824
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
#: sparc-dis.c:834
#: sparc-dis.c:835
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
#: sparc-dis.c:883
#: sparc-dis.c:884
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
msgstr ""

View File

@ -125,11 +125,24 @@ static char *codes[16] =
"nc/uge"
};
static char *ctrl_names[8] =
{
"<invld>",
"flags",
"fcw",
"refresh",
"psapseg",
"psapoff",
"nspseg",
"nspoff"
};
static int seg_length;
int z8k_lookup_instr PARAMS ((unsigned char *, disassemble_info *));
static void output_instr
PARAMS ((instr_data_s *, unsigned long, disassemble_info *));
static void unpack_instr PARAMS ((instr_data_s *, int, disassemble_info *));
static void unparse_instr PARAMS ((instr_data_s *));
static void unparse_instr PARAMS ((instr_data_s *,int));
static int
print_insn_z8k (addr, info, is_segmented)
@ -150,9 +163,9 @@ print_insn_z8k (addr, info, is_segmented)
if (instr_data.tabl_index > 0)
{
unpack_instr (&instr_data, is_segmented, info);
unparse_instr (&instr_data);
unparse_instr (&instr_data, is_segmented);
output_instr (&instr_data, addr, info);
return z8k_table[instr_data.tabl_index].length;
return z8k_table[instr_data.tabl_index].length + seg_length;
}
else
{
@ -275,7 +288,7 @@ output_instr (instr_data, addr, info)
strcpy (out_str, "\t");
loop_limit = z8k_table[instr_data->tabl_index].length * 2;
loop_limit = (z8k_table[instr_data->tabl_index].length + seg_length) * 2;
FETCH_DATA (info, loop_limit);
for (loop = 0; loop < loop_limit; loop++)
{
@ -302,16 +315,18 @@ unpack_instr (instr_data, is_segmented, info)
int nibl_count, loop;
unsigned short instr_nibl, instr_byte, instr_word;
long instr_long;
unsigned short tabl_datum, datum_class, datum_value;
unsigned int tabl_datum, datum_class;
unsigned short datum_value;
nibl_count = 0;
loop = 0;
seg_length = 0;
while (z8k_table[instr_data->tabl_index].byte_info[loop] != 0)
{
FETCH_DATA (info, nibl_count + 4 - (nibl_count % 4));
instr_nibl = instr_data->nibbles[nibl_count];
instr_byte = instr_data->bytes[nibl_count];
instr_word = instr_data->words[nibl_count];
instr_byte = instr_data->bytes[nibl_count&~1];
instr_word = instr_data->words[nibl_count&~3];
tabl_datum = z8k_table[instr_data->tabl_index].byte_info[loop];
datum_class = tabl_datum & CLASS_MASK;
@ -332,11 +347,18 @@ unpack_instr (instr_data, is_segmented, info)
switch (datum_value)
{
case ARG_DISP16:
instr_data->displacement = instr_word;
instr_data->displacement = instr_data->insn_start + 4 +
(signed short)(instr_word & 0xffff);
nibl_count += 3;
break;
case ARG_DISP12:
instr_data->displacement = instr_word & 0x0fff;
if (instr_word & 0x800) { /* neg. 12 bit displacement */
instr_data->displacement = instr_data->insn_start + 2 -
(signed short)((instr_word & 0xfff) | 0xf000) * 2;
}
else {
instr_data->displacement = instr_data->insn_start + 2 - (instr_word & 0x0fff) * 2;
}
nibl_count += 2;
break;
default:
@ -390,9 +412,11 @@ unpack_instr (instr_data, is_segmented, info)
case CLASS_CC:
instr_data->cond_code = instr_nibl;
break;
#if 0
case CLASS_CTRL:
instr_data->ctrl_code = instr_nibl;
break;
#endif
case CLASS_DA:
case CLASS_ADDRESS:
if (is_segmented)
@ -405,6 +429,7 @@ unpack_instr (instr_data, is_segmented, info)
instr_data->address = ((instr_word & 0x7f00) << 8) +
(instr_long & 0xffff);
nibl_count += 7;
seg_length = 2;
}
else
{
@ -420,17 +445,15 @@ unpack_instr (instr_data, is_segmented, info)
}
break;
case CLASS_0CCC:
instr_data->cond_code = instr_nibl & 0x7;
break;
case CLASS_1CCC:
instr_data->cond_code = instr_nibl & 0x7;
instr_data->ctrl_code = instr_nibl & 0x7;
break;
case CLASS_0DISP7:
instr_data->displacement = instr_byte & 0x7f;
instr_data->displacement = instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
nibl_count += 1;
break;
case CLASS_1DISP7:
instr_data->displacement = instr_byte & 0x7f;
instr_data->displacement = instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
nibl_count += 1;
break;
case CLASS_01II:
@ -440,7 +463,7 @@ unpack_instr (instr_data, is_segmented, info)
instr_data->interrupts = instr_nibl & 0x3;
break;
case CLASS_BIT:
/* Do nothing. */
instr_data->ctrl_code = instr_nibl & 0x7;
break;
case CLASS_IR:
instr_data->arg_reg[datum_value] = instr_nibl;
@ -466,6 +489,13 @@ unpack_instr (instr_data, is_segmented, info)
case CLASS_REGN0:
instr_data->arg_reg[datum_value] = instr_nibl;
break;
case CLASS_PR:
instr_data->arg_reg[datum_value] = instr_nibl;
break;
case CLASS_DISP8:
instr_data->displacement = instr_data->insn_start + 2 + (signed char)instr_byte * 2;
nibl_count += 1;
break;
default:
break;
}
@ -476,10 +506,12 @@ unpack_instr (instr_data, is_segmented, info)
}
static void
unparse_instr (instr_data)
unparse_instr (instr_data,is_segmented)
instr_data_s *instr_data;
int is_segmented;
{
unsigned short tabl_datum, datum_class, datum_value;
unsigned short datum_value;
unsigned int tabl_datum, datum_class;
int loop, loop_limit;
char out_str[80], tmp_str[25];
@ -513,7 +545,7 @@ unparse_instr (instr_data)
strcat (out_str, tmp_str);
break;
case CLASS_DISP:
sprintf (tmp_str, "#0x%0lx", instr_data->displacement);
sprintf (tmp_str, "0x%0lx", instr_data->displacement);
strcat (out_str, tmp_str);
break;
case CLASS_IMM:
@ -525,12 +557,12 @@ unparse_instr (instr_data)
strcat (out_str, tmp_str);
break;
case CLASS_CTRL:
sprintf (tmp_str, "0x%0lx", instr_data->ctrl_code);
sprintf (tmp_str, "%s", ctrl_names[instr_data->ctrl_code]);
strcat (out_str, tmp_str);
break;
case CLASS_DA:
case CLASS_ADDRESS:
sprintf (tmp_str, "#0x%0lx", instr_data->address);
sprintf (tmp_str, "0x%0lx", instr_data->address);
strcat (out_str, tmp_str);
break;
case CLASS_IR:
@ -565,6 +597,13 @@ unparse_instr (instr_data)
sprintf (tmp_str, "rr%ld", instr_data->arg_reg[datum_value]);
strcat (out_str, tmp_str);
break;
case CLASS_PR:
if (is_segmented)
sprintf (tmp_str, "rr%ld", instr_data->arg_reg[datum_value]);
else
sprintf (tmp_str, "r%ld", instr_data->arg_reg[datum_value]);
strcat (out_str, tmp_str);
break;
default:
break;
}

File diff suppressed because it is too large Load Diff

View File

@ -52,9 +52,9 @@ struct op opt[] =
"------", 10, 8, "1011 1001 imm8", "rsvdb9", 0,
"------", 10, 8, "1011 1111 imm8", "rsvdbf", 0,
"---V--", 11, 16, "1011 1011 ssN0 1001 0000 rrrr ddN0 1000", "ldd @rs,@rd,rr", 0,
"---V--", 11, 16, "1011 1011 ssN0 1001 0000 rrrr ddN0 0000", "lddr @rs,@rd,rr", 0,
"---V--", 11, 8, "1011 1011 ssN0 1001 0000 rrrr ddN0 0000", "lddrb @rs,@rd,rr", 0,
"---V--", 11, 16, "1011 1011 ssN0 1001 0000 rrrr ddN0 1000", "ldd @rd,@rs,rr", 0,
"---V--", 11, 16, "1011 1011 ssN0 1001 0000 rrrr ddN0 0000", "lddr @rd,@rs,rr", 0,
"---V--", 11, 8, "1011 1010 ssN0 1001 0000 rrrr ddN0 0000", "lddrb @rd,@rs,rr", 0,
"---V--", 11, 16, "1011 1011 ssN0 0001 0000 rrrr ddN0 0000", "ldir @rd,@rs,rr", 0,
"CZSV--", 11, 16, "1011 1011 ssN0 0000 0000 rrrr dddd cccc", "cpi rd,@rs,rr,cc", 0,
"CZSV--", 11, 16, "1011 1011 ssN0 0100 0000 rrrr dddd cccc", "cpir rd,@rs,rr,cc", 0,
@ -62,7 +62,7 @@ struct op opt[] =
"---V--", 11, 16, "1011 1011 ssN0 0001 0000 rrrr ddN0 1000", "ldi @rd,@rs,rr", 0,
"CZSV--", 11, 16, "1011 1011 ssN0 1000 0000 rrrr dddd cccc", "cpd rd,@rs,rr,cc", 0,
"---V--", 11, 8, "1011 1010 ssN0 0001 0000 rrrr ddN0 0000", "ldirb @rd,@rs,rr", 0,
"---V--", 11, 8, "1011 1010 ssN0 1001 0000 rrrr ddN0 1000", "lddb @rs,@rd,rr", 0,
"---V--", 11, 8, "1011 1010 ssN0 1001 0000 rrrr ddN0 1000", "lddb @rd,@rs,rr", 0,
"---V--", 11, 8, "1011 1010 ssN0 0001 0000 rrrr ddN0 1000", "ldib @rd,@rs,rr", 0,
"CZSV--", 11, 8, "1011 1010 ssN0 1000 0000 rrrr dddd cccc", "cpdb rbd,@rs,rr,cc", 0,
"CZSV--", 11, 8, "1011 1010 ssN0 1100 0000 rrrr dddd cccc", "cpdrb rbd,@rs,rr,cc", 0,
@ -140,7 +140,7 @@ struct op opt[] =
"-ZSP--", 15, 8, "0100 1100 0000 0000 address_dst", "comb address_dst", 0,
"-ZSP--", 16, 8, "0100 1100 ddN0 0000 address_dst", "comb address_dst(rd)", 0,
"-ZSP--", 7, 8, "1000 1100 dddd 0000", "comb rbd", 0,
"CZSP--", 7, 16, "1000 1101 imm4 0101", "comflg flags", 0,
"CZSP--", 7, 16, "1000 1101 flags 0101", "comflg flags", 0,
"CZSV--", 11, 16, "0000 1101 ddN0 0001 imm16", "cp @rd,imm16", 0,
"CZSV--", 15, 16, "0100 1101 ddN0 0001 address_dst imm16", "cp address_dst(rd),imm16", 0,
@ -168,7 +168,7 @@ struct op opt[] =
"CZSV--", 8, 32, "1001 0000 ssss dddd", "cpl rrd,rrs", 0,
"CZS---", 5, 8, "1011 0000 dddd 0000", "dab rbd", 0,
"------", 11, 16, "1111 dddd 1disp7", "dbjnz rbd,disp7", 0,
"------", 11, 16, "1111 dddd 0disp7", "dbjnz rbd,disp7", 0,
"-ZSV--", 11, 16, "0010 1011 ddN0 imm4m1", "dec @rd,imm4m1", 0,
"-ZSV--", 14, 16, "0110 1011 ddN0 imm4m1 address_dst", "dec address_dst(rd),imm4m1", 0,
"-ZSV--", 13, 16, "0110 1011 0000 imm4m1 address_dst", "dec address_dst,imm4m1", 0,
@ -190,7 +190,7 @@ struct op opt[] =
"CZSV--", 744, 32, "0001 1010 0000 dddd imm32", "divl rqd,imm32", 0,
"CZSV--", 744, 32, "1001 1010 ssss dddd", "divl rqd,rrs", 0,
"------", 11, 16, "1111 dddd 0disp7", "djnz rd,disp7", 0,
"------", 11, 16, "1111 dddd 1disp7", "djnz rd,disp7", 0,
"------", 7, 16, "0111 1100 0000 01ii", "ei i2", 0,
"------", 6, 16, "1010 1101 ssss dddd", "ex rd,rs", 0,
"------", 12, 16, "0010 1101 ssN0 dddd", "ex rd,@rs", 0,
@ -210,7 +210,7 @@ struct op opt[] =
"------", 10, 16, "0011 1101 ssN0 dddd", "in rd,@rs", 0,
"------", 12, 16, "0011 1101 dddd 0100 imm16", "in rd,imm16", 0,
"------", 12, 8, "0011 1100 ssN0 dddd", "inb rbd,@rs", 0,
"------", 10, 8, "0011 1100 dddd 0100 imm16", "inb rbd,imm16", 0,
"------", 10, 8, "0011 1010 dddd 0100 imm16", "inb rbd,imm16", 0,
"-ZSV--", 11, 16, "0010 1001 ddN0 imm4m1", "inc @rd,imm4m1", 0,
"-ZSV--", 14, 16, "0110 1001 ddN0 imm4m1 address_dst", "inc address_dst(rd),imm4m1", 0,
"-ZSV--", 13, 16, "0110 1001 0000 imm4m1 address_dst", "inc address_dst,imm4m1", 0,
@ -221,8 +221,8 @@ struct op opt[] =
"-ZSV--", 4, 8, "1010 1000 dddd imm4m1", "incb rbd,imm4m1", 0,
"---V--", 21, 16, "0011 1011 ssN0 1000 0000 aaaa ddN0 1000", "ind @rd,@rs,ra", 0,
"---V--", 21, 8, "0011 1010 ssN0 1000 0000 aaaa ddN0 1000", "indb @rd,@rs,rba", 0,
"---V--", 21, 8, "0011 1100 ssN0 0000 0000 aaaa ddN0 1000", "inib @rd,@rs,ra", 0,
"---V--", 21, 16, "0011 1100 ssN0 0000 0000 aaaa ddN0 0000", "inibr @rd,@rs,ra", 0,
"---V--", 21, 8, "0011 1010 ssN0 0000 0000 aaaa ddN0 1000", "inib @rd,@rs,ra", 0,
"---V--", 21, 16, "0011 1010 ssN0 0000 0000 aaaa ddN0 0000", "inibr @rd,@rs,ra", 0,
"CZSVDH", 13, 16, "0111 1011 0000 0000", "iret", 0,
"------", 10, 16, "0001 1110 ddN0 cccc", "jp cc,@rd", 0,
"------", 7, 16, "0101 1110 0000 cccc address_dst", "jp cc,address_dst", 0,
@ -248,7 +248,7 @@ struct op opt[] =
"------", 7, 8, "0000 1100 ddN0 0101 imm8 imm8", "ldb @rd,imm8", 0,
"------", 8, 8, "0010 1110 ddN0 ssss", "ldb @rd,rbs", 0,
"------", 15, 8, "0100 1100 ddN0 0101 address_dst imm8 imm8", "ldb address_dst(rd),imm8", 0,
"------", 12, 8, "0100 1110 ddN0 ssN0 address_dst", "ldb address_dst(rd),rbs", 0,
"------", 12, 8, "0110 1110 ddN0 ssss address_dst", "ldb address_dst(rd),rbs", 0,
"------", 14, 8, "0100 1100 0000 0101 address_dst imm8 imm8", "ldb address_dst,imm8", 0,
"------", 11, 8, "0110 1110 0000 ssss address_dst", "ldb address_dst,rbs", 0,
"------", 14, 8, "0011 0010 ddN0 ssss imm16", "ldb rd(imm16),rbs", 0,
@ -285,7 +285,7 @@ struct op opt[] =
"------", 5, 16, "1011 1101 dddd imm4", "ldk rd,imm4", 0,
"------", 11, 16, "0001 1100 ddN0 1001 0000 ssss 0000 nminus1", "ldm @rd,rs,n", 0,
"------", 15, 16, "0101 1100 ddN0 1001 0000 ssN0 0000 nminus1 address_dst", "ldm address_dst(rd),rs,n", 0,
"------", 15, 16, "0101 1100 ddN0 1001 0000 ssss 0000 nminus1 address_dst", "ldm address_dst(rd),rs,n", 0,
"------", 14, 16, "0101 1100 0000 1001 0000 ssss 0000 nminus1 address_dst", "ldm address_dst,rs,n", 0,
"------", 11, 16, "0001 1100 ssN0 0001 0000 dddd 0000 nminus1", "ldm rd,@rs,n", 0,
"------", 15, 16, "0101 1100 ssN0 0001 0000 dddd 0000 nminus1 address_src", "ldm rd,address_src(rs),n", 0,
@ -345,9 +345,10 @@ struct op opt[] =
"---V--", 0, 8, "0011 1110 ddN0 ssss", "outb @rd,rbs", 0,
"---V--", 0, 8, "0011 1010 ssss 0110 imm16", "outb imm16,rbs", 0,
"---V--", 0, 16, "0011 1011 ssN0 1010 0000 aaaa ddN0 1000", "outd @rd,@rs,ra", 0,
"---V--", 0, 8, "0011 1010 ssN0 1010 0000 aaaa ddN0 1000", "outdb @rd,@rs,rba", 0,
"---V--", 0, 8, "0011 1100 ssN0 0010 0000 aaaa ddN0 1000", "outib @rd,@rs,ra", 0,
"---V--", 0, 16, "0011 1100 ssN0 0010 0000 aaaa ddN0 0000", "outibr @rd,@rs,ra", 0,
"---V--", 0, 16, "0011 1010 ssN0 1010 0000 aaaa ddN0 1000", "outdb @rd,@rs,rba", 0,
"---V--", 0, 16, "0011 1011 ssN0 0010 0000 aaaa ddN0 1000", "outi @rd,@rs,ra", 0,
"---V--", 0, 16, "0011 1010 ssN0 0010 0000 aaaa ddN0 1000", "outib @rd,@rs,ra", 0,
"---V--", 0, 16, "0011 1010 ssN0 0010 0000 aaaa ddN0 0000", "outibr @rd,@rs,ra", 0,
"------", 12, 16, "0001 0111 ssN0 ddN0", "pop @rd,@rs", 0,
"------", 16, 16, "0101 0111 ssN0 ddN0 address_dst", "pop address_dst(rd),@rs", 0,
@ -382,7 +383,7 @@ struct op opt[] =
"------", 4, 8, "1010 0010 dddd imm4", "resb rbd,imm4", 0,
"------", 10, 8, "0010 0010 0000 ssss 0000 dddd 0000 0000", "resb rbd,rs", 0,
"CZSV--", 7, 16, "1000 1101 imm4 0011", "resflg imm4", 0,
"CZSV--", 7, 16, "1000 1101 flags 0011", "resflg flags", 0,
"------", 10, 16, "1001 1110 0000 cccc", "ret cc", 0,
"CZSV--", 6, 16, "1011 0011 dddd 00I0", "rl rd,imm1or2", 0,
@ -422,14 +423,14 @@ struct op opt[] =
"------", 4, 8, "1010 0100 dddd imm4", "setb rbd,imm4", 0,
"------", 10, 8, "0010 0100 0000 ssss 0000 dddd 0000 0000", "setb rbd,rs", 0,
"CZSV--", 7, 16, "1000 1101 imm4 0001", "setflg imm4", 0,
"CZSV--", 7, 16, "1000 1101 flags 0001", "setflg flags", 0,
"------", 0, 8, "0011 1100 dddd 0101 imm16", "sinb rbd,imm16", 0,
"------", 0, 8, "0011 1101 dddd 0101 imm16", "sinb rd,imm16", 0,
"------", 0, 8, "0011 1010 dddd 0101 imm16", "sinb rbd,imm16", 0,
"------", 0, 8, "0011 1011 dddd 0101 imm16", "sin rd,imm16", 0,
"------", 0, 16, "0011 1011 ssN0 1000 0001 aaaa ddN0 1000", "sind @rd,@rs,ra", 0,
"------", 0, 8, "0011 1010 ssN0 1000 0001 aaaa ddN0 1000", "sindb @rd,@rs,rba", 0,
"------", 0, 8, "0011 1100 ssN0 0001 0000 aaaa ddN0 1000", "sinib @rd,@rs,ra", 0,
"------", 0, 16, "0011 1100 ssN0 0001 0000 aaaa ddN0 0000", "sinibr @rd,@rs,ra", 0,
"------", 0, 8, "0011 1010 ssN0 0001 0000 aaaa ddN0 1000", "sinib @rd,@rs,ra", 0,
"------", 0, 16, "0011 1010 ssN0 0001 0000 aaaa ddN0 0000", "sinibr @rd,@rs,ra", 0,
"CZSV--", 13, 16, "1011 0011 dddd 1001 0000 0000 imm8", "sla rd,imm8", 0,
"CZSV--", 13, 8, "1011 0010 dddd 1001 0000 0000 imm8", "slab rbd,imm8", 0,
@ -443,21 +444,21 @@ struct op opt[] =
"------", 0, 8, "0011 1010 ssss 0111 imm16", "soutb imm16,rbs", 0,
"------", 0, 16, "0011 1011 ssN0 1011 0000 aaaa ddN0 1000", "soutd @rd,@rs,ra", 0,
"------", 0, 8, "0011 1010 ssN0 1011 0000 aaaa ddN0 1000", "soutdb @rd,@rs,rba", 0,
"------", 0, 8, "0011 1100 ssN0 0011 0000 aaaa ddN0 1000", "soutib @rd,@rs,ra", 0,
"------", 0, 16, "0011 1100 ssN0 0011 0000 aaaa ddN0 0000", "soutibr @rd,@rs,ra", 0,
"------", 0, 8, "0011 1010 ssN0 0011 0000 aaaa ddN0 1000", "soutib @rd,@rs,ra", 0,
"------", 0, 16, "0011 1010 ssN0 0011 0000 aaaa ddN0 0000", "soutibr @rd,@rs,ra", 0,
"CZSV--", 13, 16, "1011 0011 dddd 1001 1111 1111 nim8", "sra rd,imm8", 0,
"CZSV--", 13, 8, "1011 0010 dddd 1001 1111 1111 nim8", "srab rbd,imm8", 0,
"CZSV--", 13, 8, "1011 0010 dddd 1001 0000 0000 nim8", "srab rbd,imm8", 0,
"CZSV--", 13, 32, "1011 0011 dddd 1101 1111 1111 nim8", "sral rrd,imm8", 0,
"CZSV--", 13, 16, "1011 0011 dddd 0001 1111 1111 nim8", "srl rd,imm8", 0,
"CZSV--", 13, 8, "1011 0010 dddd 0001 1111 1111 nim8", "srlb rbd,imm8", 0,
"CZSV--", 13, 8, "1011 0010 dddd 0001 0000 0000 nim8", "srlb rbd,imm8", 0,
"CZSV--", 13, 32, "1011 0011 dddd 0101 1111 1111 nim8", "srll rrd,imm8", 0,
"CZSV--", 7, 16, "0000 0011 ssN0 dddd", "sub rd,@rs", 0,
"CZSV--", 9, 16, "0100 0011 0000 dddd address_src", "sub rd,address_src", 0,
"CZSV--", 10, 16, "0100 0011 ssN0 dddd address_src", "sub rd,address_src(rs)", 0,
"CZSV--", 7, 16, "0000 0010 0000 dddd imm16", "sub rd,imm16", 0,
"CZSV--", 7, 16, "0000 0011 0000 dddd imm16", "sub rd,imm16", 0,
"CZSV--", 4, 16, "1000 0011 ssss dddd", "sub rd,rs", 0,
"CZSVDH", 7, 8, "0000 0010 ssN0 dddd", "subb rbd,@rs", 0,
@ -494,8 +495,9 @@ struct op opt[] =
"-ZSV--", 25, 8, "1011 1000 ddN0 1100 0000 aaaa ssN0 0000", "trdrb @rd,@rs,rba", 0,
"-ZSV--", 25, 8, "1011 1000 ddN0 0000 0000 rrrr ssN0 0000", "trib @rd,@rs,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 ddN0 0100 0000 rrrr ssN0 0000", "trirb @rd,@rs,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 1010 0000 rrrr bbN0 0000", "trtdb @ra,@rb,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 1110 0000 rrrr bbN0 1110", "trtdrb @ra,@rb,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 0010 0000 rrrr bbN0 0000", "trtib @ra,@rb,rr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 0010 0000 rrrr bbN0 0000", "trtib @ra,@rb,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 0110 0000 rrrr bbN0 1110", "trtirb @ra,@rb,rbr", 0,
"-ZSV--", 25, 8, "1011 1000 aaN0 1010 0000 rrrr bbN0 0000", "trtrb @ra,@rb,rbr", 0,
@ -520,6 +522,10 @@ struct op opt[] =
"-ZSP--", 10, 8, "0100 1000 ssN0 dddd address_src", "xorb rbd,address_src(rs)", 0,
"-ZSP--", 7, 8, "0000 1000 0000 dddd imm8 imm8", "xorb rbd,imm8", 0,
"-ZSP--", 4, 8, "1000 1000 ssss dddd", "xorb rbd,rbs", 0,
"------", 7, 32, "1000 1100 dddd 0001", "ldctlb rbd,ctrl", 0,
"CZSVDH", 7, 32, "1000 1100 ssss 1001", "ldctlb ctrl,rbs", 0,
"*", 4, 8, "1000 1000 ssss dddd", "xorb rbd,rbs", 0,
"*", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
@ -1203,6 +1209,10 @@ gas ()
printf ("#define OPC_rsvd9f 172\n");
printf ("#define OPC_rsvdb9 172\n");
printf ("#define OPC_rsvdbf 172\n");
printf ("#define OPC_outi 173\n");
printf ("#define OPC_ldctlb 174\n");
printf ("#define OPC_sin 175\n");
printf ("#define OPC_trtdb 176\n");
#if 0
for (i = 0; toks[i].token; i++)
printf ("#define %s\t0x%x\n", toks[i].token, i * 16);