* Makefile.am: Bfin support.
* Makefile.in: Regenerated. * aclocal.m4: Regenerated. * configure: Regenerated. * configure.in: Bfin support. * configure.tgt: Bfin support. * config/bfin-aux.h: New file. * config/bfin-defs.h: New file. * config/bfin-lex.l: New file. * config/bfin-parse.y: New file. * config/tc-bfin.c: New file. * config/tc-bfin.h: New file. * doc/Makefile.am: Recognize c-bfin.texi. * doc/Makefile.in: Regenerated. * doc/all.texi: Bfin support. * doc/as.texinfo: Likewise. * doc/c-bfin.texi: Document bfin-specific syntax and directives.
This commit is contained in:
parent
bfe2612a14
commit
07c1b327c7
@ -1,3 +1,24 @@
|
||||
2005-09-30 Catherine Moore <clm@cm00re.com>
|
||||
|
||||
* Makefile.am: Bfin support.
|
||||
* Makefile.in: Regenerated.
|
||||
* aclocal.m4: Regenerated.
|
||||
* configure: Regenerated.
|
||||
* configure.in: Bfin support.
|
||||
* configure.tgt: Bfin support.
|
||||
* config/bfin-aux.h: New file.
|
||||
* config/bfin-defs.h: New file.
|
||||
* config/bfin-lex.l: New file.
|
||||
* config/bfin-parse.y: New file.
|
||||
* config/tc-bfin.c: New file.
|
||||
* config/tc-bfin.h: New file.
|
||||
* doc/Makefile.am: Recognize c-bfin.texi.
|
||||
* doc/Makefile.in: Regenerated.
|
||||
* doc/all.texi: Bfin support.
|
||||
* doc/as.texinfo: Likewise.
|
||||
* doc/c-bfin.texi: Document bfin-specific syntax and
|
||||
directives.
|
||||
|
||||
2005-09-30 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* config/tc-arm.c (opcode_tag): Add OT_cinfix3_legacy.
|
||||
|
@ -45,6 +45,7 @@ CPU_TYPES = \
|
||||
arc \
|
||||
arm \
|
||||
avr \
|
||||
bfin \
|
||||
cris \
|
||||
crx \
|
||||
d10v \
|
||||
@ -227,6 +228,7 @@ TARGET_CPU_CFILES = \
|
||||
config/tc-arc.c \
|
||||
config/tc-arm.c \
|
||||
config/tc-avr.c \
|
||||
config/tc-bfin.c \
|
||||
config/tc-cris.c \
|
||||
config/tc-crx.c \
|
||||
config/tc-d10v.c \
|
||||
@ -275,6 +277,7 @@ TARGET_CPU_HFILES = \
|
||||
config/tc-arc.h \
|
||||
config/tc-arm.h \
|
||||
config/tc-avr.h \
|
||||
config/tc-bfin.h \
|
||||
config/tc-cris.h \
|
||||
config/tc-crx.h \
|
||||
config/tc-d10v.h \
|
||||
@ -437,7 +440,9 @@ noinst_PROGRAMS = as-new
|
||||
noinst_SCRIPTS = $(GDBINIT)
|
||||
EXTRA_SCRIPTS = .gdbinit
|
||||
|
||||
EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c
|
||||
EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c \
|
||||
bfin-parse.c bfin-lex.l bfin-defs.h
|
||||
|
||||
diststuff: $(EXTRA_DIST) info
|
||||
all: info
|
||||
|
||||
@ -567,7 +572,7 @@ xtensa-relax.o: $(srcdir)/config/xtensa-relax.c
|
||||
|
||||
# The m68k operand parser.
|
||||
|
||||
EXTRA_as_new_SOURCES = config/m68k-parse.y
|
||||
EXTRA_as_new_SOURCES = config/m68k-parse.y config/bfin-parse.y
|
||||
|
||||
# If m68k-parse.y is in a different directory, then ylwrap will use an
|
||||
# absolute path when it invokes yacc, which will cause yacc to put the
|
||||
@ -600,6 +605,18 @@ m68k-parse.o: m68k-parse.c $(srcdir)/config/m68k-parse.h
|
||||
m68k-parse.h: ; @true
|
||||
$(srcdir)/config/m68k-parse.h: ; @true
|
||||
|
||||
bfin-parse.c bfin-parse.tab.h: $(srcdir)/config/bfin-parse.y
|
||||
$(SHELL) $(YLWRAP) $(srcdir)/config/bfin-parse.y y.tab.c bfin-parse.c y.tab.h bfin-parse.tab.h -- $(YACCCOMPILE) -d ;
|
||||
bfin-parse.o: bfin-parse.c bfin-parse.tab.h $(srcdir)/config/bfin-defs.h
|
||||
|
||||
bfin-defs.h: ; @true
|
||||
$(srcdir)/config/bfin-defs.h: ; @true
|
||||
|
||||
bfin-lex.c: $(srcdir)/config/bfin-lex.l
|
||||
$(SHELL) $(YLWRAP) "$(LEX)" <$(srcdir)/config/bfin-lex.l lex.yy.c bfin-lex.c
|
||||
bfin-lex.o: bfin-lex.c bfin-parse.tab.h $(srcdir)/config/bfin-defs.h
|
||||
$(COMPILE) -c $< $(NO_WERROR)
|
||||
|
||||
# The instruction table specification lexical analyzer and parser.
|
||||
|
||||
itbl-lex.c: $(srcdir)/itbl-lex.l
|
||||
@ -989,6 +1006,11 @@ DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
$(INCDIR)/opcode/avr.h
|
||||
DEPTC_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
$(INCDIR)/opcode/bfin.h $(srcdir)/config/bfin-defs.h
|
||||
DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
@ -1525,6 +1547,11 @@ DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
|
||||
DEPOBJ_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
|
||||
DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
|
||||
@ -1968,6 +1995,9 @@ DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \
|
||||
DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h
|
||||
DEP_bfin_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h
|
||||
DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
|
||||
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
||||
DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.9.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
@ -42,14 +42,16 @@ host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
noinst_PROGRAMS = as-new$(EXEEXT)
|
||||
EXTRA_PROGRAMS = itbl-test$(EXEEXT)
|
||||
DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub NEWS \
|
||||
README ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub \
|
||||
INSTALL NEWS README AUTHORS ChangeLog THANKS \
|
||||
$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/configure $(am__configure_deps) \
|
||||
$(srcdir)/config.in $(srcdir)/../mkinstalldirs \
|
||||
$(srcdir)/gdbinit.in $(srcdir)/gdbinit.in \
|
||||
$(top_srcdir)/po/Make-in m68k-parse.c itbl-parse.c itbl-lex.c \
|
||||
$(srcdir)/../ylwrap $(srcdir)/../ltmain.sh \
|
||||
$(srcdir)/../config.guess $(srcdir)/../config.sub
|
||||
$(top_srcdir)/po/Make-in m68k-parse.c bfin-parse.c \
|
||||
itbl-parse.c itbl-lex.c $(srcdir)/../ylwrap \
|
||||
$(srcdir)/../ltmain.sh $(srcdir)/../config.guess \
|
||||
$(srcdir)/../config.sub
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
@ -274,6 +276,7 @@ CPU_TYPES = \
|
||||
arc \
|
||||
arm \
|
||||
avr \
|
||||
bfin \
|
||||
cris \
|
||||
crx \
|
||||
d10v \
|
||||
@ -454,6 +457,7 @@ TARGET_CPU_CFILES = \
|
||||
config/tc-arc.c \
|
||||
config/tc-arm.c \
|
||||
config/tc-avr.c \
|
||||
config/tc-bfin.c \
|
||||
config/tc-cris.c \
|
||||
config/tc-crx.c \
|
||||
config/tc-d10v.c \
|
||||
@ -502,6 +506,7 @@ TARGET_CPU_HFILES = \
|
||||
config/tc-arc.h \
|
||||
config/tc-arm.h \
|
||||
config/tc-avr.h \
|
||||
config/tc-bfin.h \
|
||||
config/tc-cris.h \
|
||||
config/tc-crx.h \
|
||||
config/tc-d10v.h \
|
||||
@ -656,7 +661,9 @@ POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \
|
||||
|
||||
noinst_SCRIPTS = $(GDBINIT)
|
||||
EXTRA_SCRIPTS = .gdbinit
|
||||
EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c
|
||||
EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c \
|
||||
bfin-parse.c bfin-lex.l bfin-defs.h
|
||||
|
||||
DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h
|
||||
|
||||
# Now figure out from those variables how to compile and link.
|
||||
@ -698,7 +705,7 @@ RUNTEST = runtest
|
||||
RUNTESTFLAGS =
|
||||
|
||||
# The m68k operand parser.
|
||||
EXTRA_as_new_SOURCES = config/m68k-parse.y
|
||||
EXTRA_as_new_SOURCES = config/m68k-parse.y config/bfin-parse.y
|
||||
itbl_test_SOURCES = itbl-parse.y itbl-lex.l
|
||||
itbl_test_LDADD = itbl-tops.o itbl-test.o $(GASLIBS) @LEXLIB@
|
||||
|
||||
@ -786,6 +793,12 @@ DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
$(INCDIR)/opcode/avr.h
|
||||
|
||||
DEPTC_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
$(INCDIR)/opcode/bfin.h $(srcdir)/config/bfin-defs.h
|
||||
|
||||
DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
@ -1426,6 +1439,12 @@ DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
|
||||
|
||||
DEPOBJ_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
|
||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
|
||||
|
||||
DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
|
||||
@ -1972,6 +1991,10 @@ DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h
|
||||
|
||||
DEP_bfin_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h
|
||||
|
||||
DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
|
||||
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
||||
|
||||
@ -2438,6 +2461,9 @@ distclean-compile:
|
||||
.y.c:
|
||||
$(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
|
||||
|
||||
bfin-parse.c: config/bfin-parse.y
|
||||
$(SHELL) $(YLWRAP) `test -f 'config/bfin-parse.y' || echo '$(srcdir)/'`config/bfin-parse.y y.tab.c bfin-parse.c y.tab.h bfin-parse.h y.output bfin-parse.output -- $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
@ -2455,13 +2481,7 @@ uninstall-info-am:
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
@ -2473,7 +2493,7 @@ $(RECURSIVE_TARGETS):
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
@ -2481,13 +2501,7 @@ $(RECURSIVE_TARGETS):
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
@ -2508,7 +2522,7 @@ maintainer-clean-recursive:
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
@ -2637,6 +2651,7 @@ distclean-generic:
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-rm -f bfin-parse.c
|
||||
-rm -f itbl-lex.c
|
||||
-rm -f itbl-parse.c
|
||||
-rm -f m68k-parse.c
|
||||
@ -2713,6 +2728,7 @@ uninstall-info: uninstall-info-recursive
|
||||
po/POTFILES.in: @MAINT@ Makefile
|
||||
for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
|
||||
&& mv tmp $(srcdir)/po/POTFILES.in
|
||||
|
||||
diststuff: $(EXTRA_DIST) info
|
||||
all: info
|
||||
|
||||
@ -2827,6 +2843,18 @@ m68k-parse.o: m68k-parse.c $(srcdir)/config/m68k-parse.h
|
||||
m68k-parse.h: ; @true
|
||||
$(srcdir)/config/m68k-parse.h: ; @true
|
||||
|
||||
bfin-parse.c bfin-parse.tab.h: $(srcdir)/config/bfin-parse.y
|
||||
$(SHELL) $(YLWRAP) $(srcdir)/config/bfin-parse.y y.tab.c bfin-parse.c y.tab.h bfin-parse.tab.h -- $(YACCCOMPILE) -d ;
|
||||
bfin-parse.o: bfin-parse.c bfin-parse.tab.h $(srcdir)/config/bfin-defs.h
|
||||
|
||||
bfin-defs.h: ; @true
|
||||
$(srcdir)/config/bfin-defs.h: ; @true
|
||||
|
||||
bfin-lex.c: $(srcdir)/config/bfin-lex.l
|
||||
$(SHELL) $(YLWRAP) "$(LEX)" <$(srcdir)/config/bfin-lex.l lex.yy.c bfin-lex.c
|
||||
bfin-lex.o: bfin-lex.c bfin-parse.tab.h $(srcdir)/config/bfin-defs.h
|
||||
$(COMPILE) -c $< $(NO_WERROR)
|
||||
|
||||
# The instruction table specification lexical analyzer and parser.
|
||||
|
||||
itbl-lex.c: $(srcdir)/itbl-lex.l
|
||||
|
463
gas/aclocal.m4
vendored
463
gas/aclocal.m4
vendored
@ -1,4 +1,4 @@
|
||||
# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005 Free Software Foundation, Inc.
|
||||
@ -11,11 +11,23 @@
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# -*- Autoconf -*-
|
||||
# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
# Generated from amversion.in; do not edit by hand.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
@ -28,15 +40,26 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.9.5])])
|
||||
[AM_AUTOMAKE_VERSION([1.9.2])])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
# AM_AUX_DIR_EXPAND
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
@ -83,16 +106,26 @@ AC_PREREQ([2.50])dnl
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
# serial 7
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 6
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
@ -116,15 +149,26 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# serial 7 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
@ -133,6 +177,7 @@ fi])])
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
@ -272,16 +317,27 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
#serial 3
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
#serial 2
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
@ -340,32 +396,55 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
|
||||
|
||||
# serial 8
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 7
|
||||
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 12
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# 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.
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 11
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
@ -466,27 +545,51 @@ for _am_header in $config_headers :; do
|
||||
done
|
||||
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
|
||||
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# -*- Autoconf -*-
|
||||
# Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
|
||||
# serial 2
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 1
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
@ -501,14 +604,26 @@ fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_PROG_LEX
|
||||
# -----------
|
||||
@ -522,17 +637,28 @@ if test "$LEX" = :; then
|
||||
LEX=${am_missing_run}flex
|
||||
fi])
|
||||
|
||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||
# Add --enable-maintainer-mode option to configure.
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 3
|
||||
|
||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
@ -551,15 +677,26 @@ AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
|
||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# serial 3
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 2
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
@ -603,16 +740,27 @@ AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
# -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
@ -638,16 +786,27 @@ else
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
|
||||
#
|
||||
|
||||
# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
|
||||
# created by `make install' are always world readable, even if the
|
||||
# installer happens to have an overly restrictive umask (e.g. 077).
|
||||
@ -701,15 +860,26 @@ else
|
||||
fi
|
||||
AC_SUBST([mkdir_p])])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# serial 3
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
@ -734,16 +904,28 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
# serial 4
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
@ -786,14 +968,25 @@ Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
|
||||
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
@ -816,13 +1009,25 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 1
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
|
151
gas/config/bfin-aux.h
Executable file
151
gas/config/bfin-aux.h
Executable file
@ -0,0 +1,151 @@
|
||||
/* bfin-aux.h ADI Blackfin Header file for gas
|
||||
Copyright 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
#include "bfin-defs.h"
|
||||
|
||||
#define REG_T Register *
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
|
||||
int h01, int h11, int h00, int h10,
|
||||
int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
|
||||
int h01, int h11, int h00, int h10,
|
||||
int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
|
||||
REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
|
||||
int sop, int hls);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
|
||||
int sop, int hls);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
|
||||
int reloc);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
|
||||
Expr_Node *offset);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_compi2opd (REG_T dst, int src, int op);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_compi2opp (REG_T dst, int src, int op);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dagmodik (REG_T i, int op);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_logi2op (int dst, int src, int opc);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ccmv (REG_T src, REG_T dst, int t);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cc2stat (int cbit, int op, int d);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_regmv (REG_T src, REG_T dst);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cc2dreg (int op, REG_T reg);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_brcc (int t, int b, Expr_Node *offset);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_ujump (Expr_Node *offset);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_cactrl (REG_T reg, int a, int op);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_progctrl (int prgfunc, int poprnd);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
|
||||
Expr_Node *eoffset, REG_T reg);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_pushpopreg (REG_T reg, int w);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_calla (Expr_Node *addr, int s);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_linkage (int r, int framesize);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_pseudodbg (int fn, int reg, int grp);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
|
||||
|
||||
bfd_boolean
|
||||
bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
|
||||
|
||||
INSTR_T
|
||||
bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
|
383
gas/config/bfin-defs.h
Normal file
383
gas/config/bfin-defs.h
Normal file
@ -0,0 +1,383 @@
|
||||
/* bfin-defs.h ADI Blackfin gas header file
|
||||
Copyright 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
#ifndef BFIN_PARSE_H
|
||||
#define BFIN_PARSE_H
|
||||
|
||||
#include <bfd.h>
|
||||
#include "as.h"
|
||||
|
||||
#define PCREL 1
|
||||
#define CODE_FRAG_SIZE 4096 /* 1 page. */
|
||||
|
||||
|
||||
/* Definition for all status bits. */
|
||||
typedef enum
|
||||
{
|
||||
c_0,
|
||||
c_1,
|
||||
c_4,
|
||||
c_2,
|
||||
c_uimm2,
|
||||
c_uimm3,
|
||||
c_imm3,
|
||||
c_pcrel4,
|
||||
c_imm4,
|
||||
c_uimm4s4,
|
||||
c_uimm4,
|
||||
c_uimm4s2,
|
||||
c_negimm5s4,
|
||||
c_imm5,
|
||||
c_uimm5,
|
||||
c_imm6,
|
||||
c_imm7,
|
||||
c_imm8,
|
||||
c_uimm8,
|
||||
c_pcrel8,
|
||||
c_uimm8s4,
|
||||
c_pcrel8s4,
|
||||
c_lppcrel10,
|
||||
c_pcrel10,
|
||||
c_pcrel12,
|
||||
c_imm16s4,
|
||||
c_luimm16,
|
||||
c_imm16,
|
||||
c_huimm16,
|
||||
c_rimm16,
|
||||
c_imm16s2,
|
||||
c_uimm16s4,
|
||||
c_uimm16,
|
||||
c_pcrel24
|
||||
} const_forms_t;
|
||||
|
||||
|
||||
/* High-Nibble: group code, low nibble: register code. */
|
||||
|
||||
|
||||
#define T_REG_R 0x00
|
||||
#define T_REG_P 0x10
|
||||
#define T_REG_I 0x20
|
||||
#define T_REG_B 0x30
|
||||
#define T_REG_L 0x34
|
||||
#define T_REG_M 0x24
|
||||
#define T_REG_A 0x40
|
||||
|
||||
/* All registers above this value don't
|
||||
belong to a usuable register group. */
|
||||
#define T_NOGROUP 0xa0
|
||||
|
||||
/* Flags. */
|
||||
#define F_REG_ALL 0x1000
|
||||
#define F_REG_HIGH 0x2000 /* Half register: high half. */
|
||||
|
||||
enum machine_registers
|
||||
{
|
||||
REG_R0 = T_REG_R, REG_R1, REG_R2, REG_R3, REG_R4, REG_R5, REG_R6, REG_R7,
|
||||
REG_P0 = T_REG_P, REG_P1, REG_P2, REG_P3, REG_P4, REG_P5, REG_SP, REG_FP,
|
||||
REG_I0 = T_REG_I, REG_I1, REG_I2, REG_I3,
|
||||
REG_M0 = T_REG_M, REG_M1, REG_M2, REG_M3,
|
||||
REG_B0 = T_REG_B, REG_B1, REG_B2, REG_B3,
|
||||
REG_L0 = T_REG_L, REG_L1, REG_L2, REG_L3,
|
||||
REG_A0x = T_REG_A, REG_A0w, REG_A1x, REG_A1w,
|
||||
REG_ASTAT = 0x46,
|
||||
REG_RETS = 0x47,
|
||||
REG_LC0 = 0x60, REG_LT0, REG_LB0, REG_LC1, REG_LT1, REG_LB1,
|
||||
REG_CYCLES, REG_CYCLES2,
|
||||
REG_USP = 0x70, REG_SEQSTAT, REG_SYSCFG,
|
||||
REG_RETI, REG_RETX, REG_RETN, REG_RETE, REG_EMUDAT,
|
||||
|
||||
/* These don't have groups. */
|
||||
REG_sftreset = T_NOGROUP, REG_omode, REG_excause, REG_emucause,
|
||||
REG_idle_req, REG_hwerrcause,
|
||||
REG_A0 = 0xc0, REG_A1, REG_CC,
|
||||
/* Pseudo registers, used only for distinction from symbols. */
|
||||
REG_RL0, REG_RL1, REG_RL2, REG_RL3,
|
||||
REG_RL4, REG_RL5, REG_RL6, REG_RL7,
|
||||
REG_RH0, REG_RH1, REG_RH2, REG_RH3,
|
||||
REG_RH4, REG_RH5, REG_RH6, REG_RH7,
|
||||
REG_LASTREG
|
||||
};
|
||||
|
||||
/* Status register flags. */
|
||||
|
||||
enum statusflags
|
||||
{
|
||||
S_AZ = 0,
|
||||
S_AN,
|
||||
S_AQ = 6,
|
||||
S_AC0 = 12,
|
||||
S_AC1,
|
||||
S_AV0 = 16,
|
||||
S_AV0S,
|
||||
S_AV1,
|
||||
S_AV1S,
|
||||
S_V = 24,
|
||||
S_VS = 25
|
||||
};
|
||||
|
||||
|
||||
enum reg_class
|
||||
{
|
||||
rc_dregs_lo,
|
||||
rc_dregs_hi,
|
||||
rc_dregs,
|
||||
rc_dregs_pair,
|
||||
rc_pregs,
|
||||
rc_spfp,
|
||||
rc_dregs_hilo,
|
||||
rc_accum_ext,
|
||||
rc_accum_word,
|
||||
rc_accum,
|
||||
rc_iregs,
|
||||
rc_mregs,
|
||||
rc_bregs,
|
||||
rc_lregs,
|
||||
rc_dpregs,
|
||||
rc_gregs,
|
||||
rc_regs,
|
||||
rc_statbits,
|
||||
rc_ignore_bits,
|
||||
rc_ccstat,
|
||||
rc_counters,
|
||||
rc_dregs2_sysregs1,
|
||||
rc_open,
|
||||
rc_sysregs2,
|
||||
rc_sysregs3,
|
||||
rc_allregs,
|
||||
LIM_REG_CLASSES
|
||||
};
|
||||
|
||||
/* mmod field. */
|
||||
#define M_S2RND 1
|
||||
#define M_T 2
|
||||
#define M_W32 3
|
||||
#define M_FU 4
|
||||
#define M_TFU 6
|
||||
#define M_IS 8
|
||||
#define M_ISS2 9
|
||||
#define M_IH 11
|
||||
#define M_IU 12
|
||||
|
||||
/* Register type checking macros. */
|
||||
|
||||
#define CODE_MASK 0x07
|
||||
#define CLASS_MASK 0xf0
|
||||
|
||||
#define REG_SAME(a, b) ((a).regno == (b).regno)
|
||||
#define REG_EQUAL(a, b) (((a).regno & CODE_MASK) == ((b).regno & CODE_MASK))
|
||||
#define REG_CLASS(a) ((a.regno) & 0xf0)
|
||||
#define IS_A1(a) ((a).regno == REG_A1)
|
||||
#define IS_H(a) ((a).regno & F_REG_HIGH ? 1: 0)
|
||||
#define IS_EVEN(r) (r.regno % 2 == 0)
|
||||
#define IS_HCOMPL(a, b) (REG_EQUAL(a, b) && \
|
||||
((a).regno & F_REG_HIGH) != ((b).regno & F_REG_HIGH))
|
||||
|
||||
/* register type checking. */
|
||||
#define _TYPECHECK(r, x) (((r).regno & CLASS_MASK) == T_REG_##x)
|
||||
|
||||
#define IS_DREG(r) _TYPECHECK(r, R)
|
||||
#define IS_DREG_H(r) (_TYPECHECK(r, R) && IS_H(r))
|
||||
#define IS_DREG_L(r) (_TYPECHECK(r, R) && !IS_H(r))
|
||||
#define IS_PREG(r) _TYPECHECK(r, P)
|
||||
#define IS_IREG(r) (((r).regno & 0xf4) == T_REG_I)
|
||||
#define IS_MREG(r) (((r).regno & 0xf4) == T_REG_M)
|
||||
#define IS_CREG(r) ((r).regno == REG_LC0 || (r).regno == REG_LC1)
|
||||
#define IS_ALLREG(r) ((r).regno < T_NOGROUP)
|
||||
|
||||
/* Expression value macros. */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ones_compl,
|
||||
twos_compl,
|
||||
mult,
|
||||
divide,
|
||||
mod,
|
||||
add,
|
||||
sub,
|
||||
lsh,
|
||||
rsh,
|
||||
logand,
|
||||
logior,
|
||||
logxor
|
||||
} expr_opcodes_t;
|
||||
|
||||
struct expressionS;
|
||||
|
||||
#define SYMBOL_T symbolS*
|
||||
|
||||
struct expression_cell
|
||||
{
|
||||
int value;
|
||||
SYMBOL_T symbol;
|
||||
};
|
||||
|
||||
/* User Type Definitions. */
|
||||
struct bfin_insn
|
||||
{
|
||||
unsigned long value;
|
||||
struct bfin_insn *next;
|
||||
struct expression_cell *exp;
|
||||
int pcrel;
|
||||
int reloc;
|
||||
};
|
||||
|
||||
#define INSTR_T struct bfin_insn*
|
||||
#define EXPR_T struct expression_cell*
|
||||
|
||||
typedef struct expr_node_struct Expr_Node;
|
||||
|
||||
extern INSTR_T gencode (unsigned long x);
|
||||
extern INSTR_T conscode (INSTR_T head, INSTR_T tail);
|
||||
extern INSTR_T conctcode (INSTR_T head, INSTR_T tail);
|
||||
extern INSTR_T note_reloc
|
||||
(INSTR_T code, Expr_Node *, int reloc,int pcrel);
|
||||
extern INSTR_T note_reloc1
|
||||
(INSTR_T code, const char * sym, int reloc, int pcrel);
|
||||
extern INSTR_T note_reloc2
|
||||
(INSTR_T code, const char *symbol, int reloc, int value, int pcrel);
|
||||
|
||||
/* Types of expressions. */
|
||||
typedef enum
|
||||
{
|
||||
Expr_Node_Binop, /* Binary operator. */
|
||||
Expr_Node_Unop, /* Unary operator. */
|
||||
Expr_Node_Reloc, /* Symbol to be relocated. */
|
||||
Expr_Node_Constant /* Constant. */
|
||||
} Expr_Node_Type;
|
||||
|
||||
/* Types of operators. */
|
||||
typedef enum
|
||||
{
|
||||
Expr_Op_Type_Add,
|
||||
Expr_Op_Type_Sub,
|
||||
Expr_Op_Type_Mult,
|
||||
Expr_Op_Type_Div,
|
||||
Expr_Op_Type_Mod,
|
||||
Expr_Op_Type_Lshift,
|
||||
Expr_Op_Type_Rshift,
|
||||
Expr_Op_Type_BAND, /* Bitwise AND. */
|
||||
Expr_Op_Type_BOR, /* Bitwise OR. */
|
||||
Expr_Op_Type_BXOR, /* Bitwise exclusive OR. */
|
||||
Expr_Op_Type_LAND, /* Logical AND. */
|
||||
Expr_Op_Type_LOR, /* Logical OR. */
|
||||
Expr_Op_Type_NEG,
|
||||
Expr_Op_Type_COMP /* Complement. */
|
||||
} Expr_Op_Type;
|
||||
|
||||
/* The value that can be stored ... depends on type. */
|
||||
typedef union
|
||||
{
|
||||
const char *s_value; /* if relocation symbol, the text. */
|
||||
int i_value; /* if constant, the value. */
|
||||
Expr_Op_Type op_value; /* if operator, the value. */
|
||||
} Expr_Node_Value;
|
||||
|
||||
/* The expression node. */
|
||||
struct expr_node_struct
|
||||
{
|
||||
Expr_Node_Type type;
|
||||
Expr_Node_Value value;
|
||||
Expr_Node *Left_Child;
|
||||
Expr_Node *Right_Child;
|
||||
};
|
||||
|
||||
|
||||
/* Operations on the expression node. */
|
||||
Expr_Node *Expr_Node_Create (Expr_Node_Type type,
|
||||
Expr_Node_Value value,
|
||||
Expr_Node *Left_Child,
|
||||
Expr_Node *Right_Child);
|
||||
|
||||
/* Generate the reloc structure as a series of instructions. */
|
||||
INSTR_T Expr_Node_Gen_Reloc (Expr_Node *head, int parent_reloc);
|
||||
|
||||
#define MKREF(x) mkexpr (0,x)
|
||||
#define ALLOCATE(x) malloc (x)
|
||||
|
||||
#define NULL_CODE ((INSTR_T) 0)
|
||||
|
||||
#ifndef EXPR_VALUE
|
||||
#define EXPR_VALUE(x) (((x)->type == Expr_Node_Constant) ? ((x)->value.i_value) : 0)
|
||||
#endif
|
||||
#ifndef EXPR_SYMBOL
|
||||
#define EXPR_SYMBOL(x) ((x)->symbol)
|
||||
#endif
|
||||
|
||||
|
||||
typedef long reg_t;
|
||||
|
||||
|
||||
typedef struct _register
|
||||
{
|
||||
reg_t regno; /* Register ID as defined in machine_registers. */
|
||||
int flags;
|
||||
} Register;
|
||||
|
||||
|
||||
typedef struct _macfunc
|
||||
{
|
||||
char n;
|
||||
char op;
|
||||
char w;
|
||||
char P;
|
||||
Register dst;
|
||||
Register s0;
|
||||
Register s1;
|
||||
} Macfunc;
|
||||
|
||||
typedef struct _opt_mode
|
||||
{
|
||||
int MM;
|
||||
int mod;
|
||||
} Opt_mode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SEMANTIC_ERROR,
|
||||
NO_INSN_GENERATED,
|
||||
INSN_GENERATED
|
||||
} parse_state;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int debug_codeselection;
|
||||
|
||||
void error (char *format, ...);
|
||||
void warn (char *format, ...);
|
||||
int semantic_error (char *syntax);
|
||||
void semantic_error_2 (char *syntax);
|
||||
|
||||
EXPR_T mkexpr (int, SYMBOL_T);
|
||||
|
||||
extern void bfin_equals (Expr_Node *sym);
|
||||
/* Defined in bfin-lex.l. */
|
||||
void set_start_state (void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BFIN_PARSE_H */
|
||||
|
554
gas/config/bfin-lex.l
Normal file
554
gas/config/bfin-lex.l
Normal file
@ -0,0 +1,554 @@
|
||||
/* bfin-lex.l ADI Blackfin lexer
|
||||
Copyright 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
%{
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "bfin-defs.h"
|
||||
#include "bfin-parse.tab.h"
|
||||
#include "as.h"
|
||||
|
||||
static long parse_int (char **end);
|
||||
static int parse_halfreg (Register *r, int cl, char *hr);
|
||||
static int parse_reg (Register *r, int type, char *rt);
|
||||
int yylex (void);
|
||||
|
||||
#define _REG yylval.reg
|
||||
|
||||
|
||||
%}
|
||||
|
||||
/* Define Start States ... Actually we will use exclusion.
|
||||
If no start state is specified it should match any state
|
||||
and <INITIAL> would match some keyword rules only with
|
||||
initial. */
|
||||
%s KEYWORD
|
||||
|
||||
%%
|
||||
[sS][fF][tT][rR][eE][sS][eE][tT] _REG.regno = REG_sftreset; return REG;
|
||||
[oO][mM][oO][dD][eE] _REG.regno = REG_omode; return REG;
|
||||
[iI][dD][lL][eE]_[rR][eE][qQ] _REG.regno = REG_idle_req; return REG;
|
||||
[hH][wW][eE][rR][rR][cC][aA][uU][sS][eE] _REG.regno = REG_hwerrcause; return REG;
|
||||
[eE][xX][cC][aA][uU][sS][eE] _REG.regno = REG_excause; return REG;
|
||||
[eE][mM][uU][cC][aA][uU][sS][eE] _REG.regno = REG_emucause; return REG;
|
||||
[zZ] return Z;
|
||||
[xX] return X;
|
||||
[wW]32 yylval.value = M_W32; return MMOD;
|
||||
[wW] return W;
|
||||
[vV][iI][tT]_[mM][aA][xX] return VIT_MAX;
|
||||
[vV] return V; /* Special: V is a statflag and a modifier. */
|
||||
[uU][sS][pP] _REG.regno = REG_USP; return REG;
|
||||
[tT][lL] return TL;
|
||||
[tT][hH] return TH;
|
||||
[tT][fF][uU] yylval.value = M_TFU; return MMOD;
|
||||
[tT][eE][sS][tT][sS][eE][tT] return TESTSET;
|
||||
[tT] yylval.value = M_T; return MMOD;
|
||||
[sS] return S;
|
||||
[sS][yY][sS][cC][fF][gG] _REG.regno = REG_SYSCFG; return REG;
|
||||
[sS][tT][iI] return STI;
|
||||
[sS][sS][yY][nN][cC] return SSYNC;
|
||||
[sS][pP]"."[lL] _REG.regno = REG_SP; return HALF_REG;
|
||||
[sS][pP]"."[hH] _REG.regno = REG_SP | F_REG_HIGH; return HALF_REG;
|
||||
[sS][pP] _REG.regno = REG_SP; return REG;
|
||||
[sS][iI][gG][nN][bB][iI][tT][sS] return SIGNBITS;
|
||||
[sS][iI][gG][nN] return SIGN;
|
||||
[sS][eE][qQ][sS][tT][aA][tT] _REG.regno = REG_SEQSTAT; return REG;
|
||||
[sS][eE][aA][rR][cC][hH] return SEARCH;
|
||||
[sS][hH][iI][fF][tT] return SHIFT;
|
||||
[sS][cC][oO] return SCO;
|
||||
|
||||
[sS][aA][aA] return SAA;
|
||||
[sS]2[rR][nN][dD] yylval.value = M_S2RND; return MMOD;
|
||||
[rR][tT][xX] return RTX;
|
||||
[rR][tT][sS] return RTS;
|
||||
[rR][tT][nN] return RTN;
|
||||
[rR][tT][iI] return RTI;
|
||||
[rR][tT][eE] return RTE;
|
||||
[rR][oO][tT] return ROT;
|
||||
[rR][nN][dD]20 return RND20;
|
||||
[rR][nN][dD]12 return RND12;
|
||||
[rR][nN][dD][lL] return RNDL;
|
||||
[rR][nN][dD][hH] return RNDH;
|
||||
[rR][nN][dD] return RND;
|
||||
|
||||
[rR][0-7]"."[lLhHbB] return parse_halfreg(&yylval.reg, T_REG_R, yytext);
|
||||
|
||||
[rR][eE][tT][sS] _REG.regno = REG_RETS; return REG;
|
||||
[rR][eE][tT][iI] _REG.regno = REG_RETI; return REG;
|
||||
[rR][eE][tT][xX] _REG.regno = REG_RETX; return REG;
|
||||
[rR][eE][tT][nN] _REG.regno = REG_RETN; return REG;
|
||||
[rR][eE][tT][eE] _REG.regno = REG_RETE; return REG;
|
||||
[eE][mM][uU][dD][aA][tT] _REG.regno = REG_EMUDAT; return REG;
|
||||
[rR][aA][iI][sS][eE] return RAISE;
|
||||
|
||||
[rR][0-7] return parse_reg (&yylval.reg, T_REG_R, yytext);
|
||||
|
||||
[rR] return R;
|
||||
[pP][rR][nN][tT] return PRNT;
|
||||
[pP][cC] return PC;
|
||||
[pP][aA][cC][kK] return PACK;
|
||||
|
||||
[pP][0-5]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_P, yytext);
|
||||
[pP][0-5] return parse_reg (&yylval.reg, T_REG_P, yytext);
|
||||
|
||||
[oO][uU][tT][cC] return OUTC;
|
||||
[oO][nN][eE][sS] return ONES;
|
||||
|
||||
[nN][oO][tT] return NOT;
|
||||
[nN][oO][pP] return NOP;
|
||||
[mM][nN][oO][pP] return MNOP;
|
||||
[nN][sS] return NS;
|
||||
|
||||
|
||||
[mM][iI][nN] return MIN;
|
||||
[mM][aA][xX] return MAX;
|
||||
|
||||
[mM][0-3]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_M, yytext);
|
||||
[mM][0-3] return parse_reg (&yylval.reg, T_REG_M, yytext);
|
||||
|
||||
[mM] return M;
|
||||
[lL][tT] return LT;
|
||||
[lL][sS][hH][iI][fF][tT] return LSHIFT;
|
||||
[lL][sS][eE][tT][uU][pP] return LSETUP;
|
||||
[lL][oO][oO][pP] return LOOP;
|
||||
[lL][oO][oO][pP]_[bB][eE][gG][iI][nN] return LOOP_BEGIN;
|
||||
[lL][oO][oO][pP]_[eE][nN][dD] return LOOP_END;
|
||||
|
||||
[lL][eE] return LE;
|
||||
[lL][cC]0 _REG.regno = REG_LC0; return REG;
|
||||
[lL][tT]0 _REG.regno = REG_LT0; return REG;
|
||||
[lL][bB]0 _REG.regno = REG_LB0; return REG;
|
||||
[lL][cC]1 _REG.regno = REG_LC1; return REG;
|
||||
[lL][tT]1 _REG.regno = REG_LT1; return REG;
|
||||
[lL][bB]1 _REG.regno = REG_LB1; return REG;
|
||||
|
||||
[lL][0-3]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_L, yytext);
|
||||
[lL][0-3] return parse_reg (&yylval.reg, T_REG_L, yytext);
|
||||
[lL][oO] return LO;
|
||||
[jJ][uU][mM][pP]"."[sS] { BEGIN 0; return JUMP_DOT_S;}
|
||||
[jJ][uU][mM][pP]"."[lL] { BEGIN 0; return JUMP_DOT_L;}
|
||||
[jJ][uU][mM][pP] { BEGIN 0; return JUMP;}
|
||||
[jJ][uU][mM][pP]"."[xX] { BEGIN 0; return JUMP_DOT_L; }
|
||||
[iI][uU] yylval.value = M_IU; return MMOD;
|
||||
[iI][sS][sS]2 yylval.value = M_ISS2; return MMOD;
|
||||
[iI][sS] yylval.value = M_IS; return MMOD;
|
||||
[iI][hH] yylval.value = M_IH; return MMOD;
|
||||
[iI][fF] return IF;
|
||||
[iI][0-3]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_I, yytext);
|
||||
[iI][0-3] return parse_reg (&yylval.reg, T_REG_I, yytext);
|
||||
[hH][lL][tT] return HLT;
|
||||
[hH][iI] return HI;
|
||||
[gG][tT] return GT;
|
||||
[gG][eE] return GE;
|
||||
[fF][uU] yylval.value = M_FU; return MMOD;
|
||||
[fF][pP] _REG.regno = REG_FP; return REG;
|
||||
[fF][pP]"."[lL] _REG.regno = REG_FP; return HALF_REG;
|
||||
[fF][pP]"."[hH] _REG.regno = REG_FP | F_REG_HIGH; return HALF_REG;
|
||||
|
||||
[eE][xX][tT][rR][aA][cC][tT] return EXTRACT;
|
||||
[eE][xX][pP][aA][dD][jJ] return EXPADJ;
|
||||
[eE][xX][cC][pP][tT] return EXCPT;
|
||||
[eE][mM][uU][eE][xX][cC][pP][tT] return EMUEXCPT;
|
||||
[dD][iI][vV][sS] return DIVS;
|
||||
[dD][iI][vV][qQ] return DIVQ;
|
||||
[dD][iI][sS][aA][lL][gG][nN][eE][xX][cC][pP][tT] return DISALGNEXCPT;
|
||||
[dD][eE][pP][oO][sS][iI][tT] return DEPOSIT;
|
||||
[dD][bB][gG][hH][aA][lL][tT] return DBGHALT;
|
||||
[dD][bB][gG][cC][mM][pP][lL][xX] return DBGCMPLX;
|
||||
[dD][bB][gG][aA][lL] return DBGAL;
|
||||
[dD][bB][gG][aA][hH] return DBGAH;
|
||||
[dD][bB][gG][aA] return DBGA;
|
||||
[dD][bB][gG] return DBG;
|
||||
[cC][yY][cC][lL][eE][sS]2 { _REG.regno = REG_CYCLES2; return REG; }
|
||||
[cC][yY][cC][lL][eE][sS] { _REG.regno = REG_CYCLES; return REG; }
|
||||
[cC][sS][yY][nN][cC] return CSYNC;
|
||||
[cC][oO] return CO;
|
||||
[cC][lL][iI] return CLI;
|
||||
|
||||
[cC][cC] _REG.regno = REG_CC; return CCREG;
|
||||
[cC][aA][lL][lL]"."[xX] { BEGIN 0; return CALL;}
|
||||
[cC][aA][lL][lL] { BEGIN 0; return CALL;}
|
||||
[bB][yY][tT][eE][uU][nN][pP][aA][cC][kK] return BYTEUNPACK;
|
||||
[bB][yY][tT][eE][pP][aA][cC][kK] return BYTEPACK;
|
||||
[bB][yY][tT][eE][oO][pP]16[mM] return BYTEOP16M;
|
||||
[bB][yY][tT][eE][oO][pP]16[pP] return BYTEOP16P;
|
||||
[bB][yY][tT][eE][oO][pP]3[pP] return BYTEOP3P;
|
||||
[bB][yY][tT][eE][oO][pP]2[mM] return BYTEOP2M;
|
||||
[bB][yY][tT][eE][oO][pP]2[pP] return BYTEOP2P;
|
||||
[bB][yY][tT][eE][oO][pP]1[pP] return BYTEOP1P;
|
||||
[bB][yY] return BY;
|
||||
[bB][xX][oO][rR][sS][hH][iI][fF][tT] return BXORSHIFT;
|
||||
[bB][xX][oO][rR] return BXOR;
|
||||
|
||||
[bB][rR][eE][vV] return BREV;
|
||||
[bB][pP] return BP;
|
||||
[bB][iI][tT][tT][sS][tT] return BITTST;
|
||||
[bB][iI][tT][tT][gG][lL] return BITTGL;
|
||||
[bB][iI][tT][sS][eE][tT] return BITSET;
|
||||
[bB][iI][tT][mM][uU][xX] return BITMUX;
|
||||
[bB][iI][tT][cC][lL][rR] return BITCLR;
|
||||
[bB][0-3]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_B, yytext);
|
||||
[bB][0-3] return parse_reg (&yylval.reg, T_REG_B, yytext);
|
||||
[bB] return B;
|
||||
[aA][zZ] _REG.regno = S_AZ; return STATUS_REG;
|
||||
[aA][nN] _REG.regno = S_AN; return STATUS_REG;
|
||||
[aA][qQ] _REG.regno = S_AQ; return STATUS_REG;
|
||||
[aA][cC]0 _REG.regno = S_AC0; return STATUS_REG;
|
||||
[aA][cC]1 _REG.regno = S_AC1; return STATUS_REG;
|
||||
[aA][vV]0 _REG.regno = S_AV0; return STATUS_REG;
|
||||
[aA][vV]0[sS] _REG.regno = S_AV0S; return STATUS_REG;
|
||||
[aA][vV]1 _REG.regno = S_AV1; return STATUS_REG;
|
||||
[aA][vV]1[sS] _REG.regno = S_AV1S; return STATUS_REG;
|
||||
[vV] _REG.regno = S_V; return STATUS_REG;
|
||||
[vV][sS] _REG.regno = S_VS; return STATUS_REG;
|
||||
|
||||
|
||||
[aA][sS][tT][aA][tT] _REG.regno = REG_ASTAT; return REG;
|
||||
[aA][sS][hH][iI][fF][tT] return ASHIFT;
|
||||
[aA][sS][lL] return ASL;
|
||||
[aA][sS][rR] return ASR;
|
||||
[aA][lL][iI][gG][nN]8 return ALIGN8;
|
||||
[aA][lL][iI][gG][nN]16 return ALIGN16;
|
||||
[aA][lL][iI][gG][nN]24 return ALIGN24;
|
||||
[aA]1"."[lL] return A_ONE_DOT_L;
|
||||
[aA]0"."[lL] return A_ZERO_DOT_L;
|
||||
[aA]1"."[hH] return A_ONE_DOT_H;
|
||||
[aA]0"."[hH] return A_ZERO_DOT_H;
|
||||
[aA][bB][sS] return ABS;
|
||||
abort return ABORT;
|
||||
[aA]1"."[xX] _REG.regno = REG_A1x; return REG;
|
||||
[aA]1"."[wW] _REG.regno = REG_A1w; return REG;
|
||||
[aA]1 _REG.regno = REG_A1; return REG_A_DOUBLE_ONE;
|
||||
[aA]0"."[xX] _REG.regno = REG_A0x; return REG;
|
||||
[aA]0"."[wW] _REG.regno = REG_A0w; return REG;
|
||||
[aA]0 _REG.regno = REG_A0; return REG_A_DOUBLE_ZERO;
|
||||
[Gg][Oo][Tt] return GOT;
|
||||
[Pp][Ll][Tt][Pp][Cc] return PLTPC;
|
||||
|
||||
|
||||
"~" return TILDA;
|
||||
"|=" return _BAR_ASSIGN;
|
||||
"|" return BAR;
|
||||
"^=" return _CARET_ASSIGN;
|
||||
"^" return CARET;
|
||||
"]" return RBRACK;
|
||||
"[" return LBRACK;
|
||||
">>>=" return _GREATER_GREATER_GREATER_THAN_ASSIGN;
|
||||
">>=" return _GREATER_GREATER_ASSIGN;
|
||||
">>>" return _GREATER_GREATER_GREATER;
|
||||
">>" return GREATER_GREATER;
|
||||
"==" return _ASSIGN_ASSIGN;
|
||||
"=" return ASSIGN;
|
||||
"<=" return _LESS_THAN_ASSIGN;
|
||||
"<<=" return _LESS_LESS_ASSIGN;
|
||||
"<<" return LESS_LESS;
|
||||
"<" return LESS_THAN;
|
||||
"(" return LPAREN;
|
||||
")" return RPAREN;
|
||||
":" return COLON;
|
||||
"/" return SLASH;
|
||||
"-=" return _MINUS_ASSIGN;
|
||||
"+|+" return _PLUS_BAR_PLUS;
|
||||
"-|+" return _MINUS_BAR_PLUS;
|
||||
"+|-" return _PLUS_BAR_MINUS;
|
||||
"-|-" return _MINUS_BAR_MINUS;
|
||||
"--" return _MINUS_MINUS;
|
||||
"-" return MINUS;
|
||||
"," return COMMA;
|
||||
"+=" return _PLUS_ASSIGN;
|
||||
"++" return _PLUS_PLUS;
|
||||
"+" return PLUS;
|
||||
"*=" return _STAR_ASSIGN;
|
||||
"*" return STAR;
|
||||
"&=" return _AMPERSAND_ASSIGN;
|
||||
"&" return AMPERSAND;
|
||||
"%" return PERCENT;
|
||||
"!" return BANG;
|
||||
";" return SEMICOLON;
|
||||
"=!" return _ASSIGN_BANG;
|
||||
"||" return DOUBLE_BAR;
|
||||
"@" return AT;
|
||||
<KEYWORD>[pP][rR][eE][fF][eE][tT][cC][hH] return PREFETCH;
|
||||
<KEYWORD>[uU][nN][lL][iI][nN][kK] return UNLINK;
|
||||
<KEYWORD>[lL][iI][nN][kK] return LINK;
|
||||
<KEYWORD>[iI][dD][lL][eE] return IDLE;
|
||||
<KEYWORD>[iI][fF][lL][uU][sS][hH] return IFLUSH;
|
||||
<KEYWORD>[fF][lL][uU][sS][hH][iI][nN][vV] return FLUSHINV;
|
||||
<KEYWORD>[fF][lL][uU][sS][hH] return FLUSH;
|
||||
([0-9]+)|(0[xX][0-9a-fA-F]+)|([bhfodBHOFD]#[0-9a-fA-F]+)|(0.[0-9]+) {
|
||||
yylval.value = parse_int (&yytext);
|
||||
return NUMBER;
|
||||
}
|
||||
[A-Za-z_$.][A-Za-z0-9_$.]* {
|
||||
yylval.symbol = symbol_find_or_make (yytext);
|
||||
symbol_mark_used (yylval.symbol);
|
||||
return SYMBOL;
|
||||
}
|
||||
[0-9][bfBF] {
|
||||
char *name;
|
||||
char *ref = strdup (yytext);
|
||||
if (ref[1] == 'b' || ref[1] == 'B')
|
||||
{
|
||||
name = fb_label_name ((int) (ref[0] - '0'), 0);
|
||||
yylval.symbol = symbol_find (name);
|
||||
|
||||
if ((yylval.symbol != NULL)
|
||||
&& (S_IS_DEFINED (yylval.symbol)))
|
||||
return SYMBOL;
|
||||
as_bad ("backward reference to unknown label %d:",
|
||||
(int) (ref[0] - '0'));
|
||||
}
|
||||
else if (ref[1] == 'f' || ref[1] == 'F')
|
||||
{
|
||||
/* Forward reference. Expect symbol to be undefined or
|
||||
unknown. undefined: seen it before. unknown: never seen
|
||||
it before.
|
||||
|
||||
Construct a local label name, then an undefined symbol.
|
||||
Just return it as never seen before. */
|
||||
|
||||
name = fb_label_name ((int) (ref[0] - '0'), 1);
|
||||
yylval.symbol = symbol_find_or_make (name);
|
||||
/* We have no need to check symbol properties. */
|
||||
return SYMBOL;
|
||||
}
|
||||
}
|
||||
[ \t\n] ;
|
||||
"/*".*"*/" ;
|
||||
. return yytext[0];
|
||||
%%
|
||||
static long parse_int (char **end)
|
||||
{
|
||||
char fmt = '\0';
|
||||
int not_done = 1;
|
||||
int shiftvalue = 0;
|
||||
char * char_bag;
|
||||
long value = 0;
|
||||
char c;
|
||||
char *arg = *end;
|
||||
|
||||
while (*arg && *arg == ' ')
|
||||
arg++;
|
||||
|
||||
switch (*arg)
|
||||
{
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
fmt = 'd';
|
||||
break;
|
||||
|
||||
case '0': /* Accept different formated integers hex octal and binary. */
|
||||
{
|
||||
c = *++arg;
|
||||
arg++;
|
||||
if (c == 'x' || c == 'X') /* Hex input. */
|
||||
fmt = 'h';
|
||||
else if (c == 'b' || c == 'B')
|
||||
fmt = 'b';
|
||||
else if (c == '.')
|
||||
fmt = 'f';
|
||||
else
|
||||
{ /* Octal. */
|
||||
arg--;
|
||||
fmt = 'o';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'd':
|
||||
case 'D':
|
||||
case 'h':
|
||||
case 'H':
|
||||
case 'o':
|
||||
case 'O':
|
||||
case 'b':
|
||||
case 'B':
|
||||
case 'f':
|
||||
case 'F':
|
||||
{
|
||||
fmt = *arg++;
|
||||
if (*arg == '#')
|
||||
arg++;
|
||||
}
|
||||
}
|
||||
|
||||
switch (fmt)
|
||||
{
|
||||
case 'h':
|
||||
case 'H':
|
||||
shiftvalue = 4;
|
||||
char_bag = "0123456789ABCDEFabcdef";
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
case 'O':
|
||||
shiftvalue = 3;
|
||||
char_bag = "01234567";
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
case 'B':
|
||||
shiftvalue = 1;
|
||||
char_bag = "01";
|
||||
break;
|
||||
|
||||
/* The assembler allows for fractional constants to be created
|
||||
by either the 0.xxxx or the f#xxxx format
|
||||
|
||||
i.e. 0.5 would result in 0x4000
|
||||
|
||||
note .5 would result in the identifier .5.
|
||||
|
||||
The assembler converts to fractional format 1.15 by the simple rule:
|
||||
|
||||
value = (short) (finput * (1 << 15)). */
|
||||
|
||||
case 'f':
|
||||
case 'F':
|
||||
{
|
||||
float fval = 0.0;
|
||||
float pos = 10.0;
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
c = *arg++;
|
||||
|
||||
if (c >= '0' && c <= '9')
|
||||
{
|
||||
float digit = (c - '0') / pos;
|
||||
fval = fval + digit;
|
||||
pos = pos * 10.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*--arg = c;
|
||||
value = (short) (fval * (1 << 15));
|
||||
break;
|
||||
}
|
||||
}
|
||||
*end = arg+1;
|
||||
return value;
|
||||
}
|
||||
|
||||
case 'd':
|
||||
case 'D':
|
||||
default:
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
c = *arg++;
|
||||
if (c >= '0' && c <= '9')
|
||||
value = (value * 10) + (c - '0');
|
||||
else
|
||||
{
|
||||
/* Constants that are suffixed with k|K are multiplied by 1024
|
||||
This suffix is only allowed on decimal constants. */
|
||||
if (c == 'k' || c == 'K')
|
||||
value *= 1024;
|
||||
else
|
||||
*--arg = c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
*end = arg+1;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
while (not_done)
|
||||
{
|
||||
char c;
|
||||
c = *arg++;
|
||||
if (c == 0 || !index (char_bag, c))
|
||||
{
|
||||
not_done = 0;
|
||||
*--arg = c;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c >= 'a' && c <= 'z')
|
||||
c = c - ('a' - '9') + 1;
|
||||
else if (c >= 'A' && c <= 'Z')
|
||||
c = c - ('A' - '9') + 1;
|
||||
|
||||
c -= '0';
|
||||
value = (value << shiftvalue) + c;
|
||||
}
|
||||
}
|
||||
*end = arg+1;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
static int parse_reg (Register *r, int cl, char *rt)
|
||||
{
|
||||
r->regno = cl | (rt[1] - '0');
|
||||
return REG;
|
||||
}
|
||||
|
||||
static int parse_halfreg (Register *r, int cl, char *rt)
|
||||
{
|
||||
r->regno = cl | (rt[1] - '0');
|
||||
|
||||
switch (rt[3])
|
||||
{
|
||||
case 'b':
|
||||
case 'B':
|
||||
return BYTE_DREG;
|
||||
|
||||
case 'l':
|
||||
case 'L':
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
case 'H':
|
||||
r->regno |= F_REG_HIGH;
|
||||
break;
|
||||
}
|
||||
|
||||
return HALF_REG;
|
||||
}
|
||||
|
||||
/* Our start state is KEYWORD as we have
|
||||
command keywords such as PREFETCH. */
|
||||
|
||||
void
|
||||
set_start_state (void)
|
||||
{
|
||||
BEGIN KEYWORD;
|
||||
}
|
||||
|
||||
|
||||
#ifndef yywrap
|
||||
int
|
||||
yywrap ()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
4360
gas/config/bfin-parse.y
Normal file
4360
gas/config/bfin-parse.y
Normal file
File diff suppressed because it is too large
Load Diff
1951
gas/config/tc-bfin.c
Normal file
1951
gas/config/tc-bfin.c
Normal file
File diff suppressed because it is too large
Load Diff
75
gas/config/tc-bfin.h
Normal file
75
gas/config/tc-bfin.h
Normal file
@ -0,0 +1,75 @@
|
||||
/* tc-bfin.h - header file for tc-bfin.c
|
||||
Copyright 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
#define TC_BFIN 1
|
||||
#define TC_ADI_BFIN 1
|
||||
|
||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||
|
||||
#define TARGET_ARCH bfd_arch_bfin
|
||||
|
||||
/*
|
||||
* Define the target format macro here. The value for this should be
|
||||
* "elf32-bfin", not "elf32-little-bfin". Since the BFD source file
|
||||
* elf32-bfin.c defines TARGET_LITTLE_NAME to be "elf32-little-bfin",
|
||||
* we must use this value, until this is corrected and BFD is rebuilt. */
|
||||
#ifdef OBJ_ELF
|
||||
#define TARGET_FORMAT "elf32-bfin"
|
||||
#endif
|
||||
|
||||
#define LISTING_HEADER "BFIN GAS "
|
||||
|
||||
#define WORKING_DOT_WORD
|
||||
|
||||
extern void bfin_start_line_hook PARAMS ((void));
|
||||
extern bfd_boolean bfin_start_label PARAMS ((char *));
|
||||
|
||||
#define md_start_line_hook() bfin_start_line_hook()
|
||||
#define md_number_to_chars number_to_chars_littleendian
|
||||
#define md_convert_frag(b,s,f) as_fatal ("bfin convert_frag\n");
|
||||
|
||||
/* Allow for [, ], etc. */
|
||||
#define LEX_BR 6
|
||||
|
||||
#define TC_EOL_IN_INSN(PTR) (bfin_eol_in_insn(PTR) ? 1 : 0)
|
||||
extern bfd_boolean bfin_eol_in_insn PARAMS ((char *));
|
||||
|
||||
/* The instruction is permitted to contain an = character. */
|
||||
#define TC_EQUAL_IN_INSN(C, NAME) (bfin_name_is_register (NAME) ? 1 : 0)
|
||||
extern bfd_boolean bfin_name_is_register PARAMS ((char *));
|
||||
#define NOP_OPCODE 0x0000
|
||||
|
||||
#define LOCAL_LABELS_FB 1
|
||||
|
||||
#define DOUBLESLASH_LINE_COMMENTS
|
||||
|
||||
#define TC_START_LABEL(ch ,ptr) (ch == ':' && bfin_start_label (ptr))
|
||||
#define tc_fix_adjustable(FIX) bfin_fix_adjustable (FIX)
|
||||
extern bfd_boolean bfin_fix_adjustable PARAMS ((struct fix *));
|
||||
|
||||
#define TC_FORCE_RELOCATION(FIX) bfin_force_relocation (FIX)
|
||||
extern int bfin_force_relocation PARAMS ((struct fix *));
|
||||
|
||||
/* Call md_pcrel_from_section(), not md_pcrel_from(). */
|
||||
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
|
||||
extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
||||
|
||||
/* end of tc-bfin.h */
|
13
gas/configure
vendored
13
gas/configure
vendored
@ -4641,6 +4641,19 @@ _ACEOF
|
||||
|
||||
# Any other special object files needed ?
|
||||
case ${cpu_type} in
|
||||
|
||||
bfin)
|
||||
echo ${extra_objects} | grep -s "bfin-parse.o"
|
||||
if test $? -ne 0 ; then
|
||||
extra_objects="$extra_objects bfin-parse.o"
|
||||
fi
|
||||
|
||||
echo ${extra_objects} | grep -s "bfin-lex.o"
|
||||
if test $? -ne 0 ; then
|
||||
extra_objects="$extra_objects bfin-lex.o"
|
||||
fi
|
||||
;;
|
||||
|
||||
fr30 | ip2k | iq2000 | m32r | openrisc)
|
||||
using_cgen=yes
|
||||
;;
|
||||
|
@ -274,6 +274,19 @@ changequote([,])dnl
|
||||
|
||||
# Any other special object files needed ?
|
||||
case ${cpu_type} in
|
||||
|
||||
bfin)
|
||||
echo ${extra_objects} | grep -s "bfin-parse.o"
|
||||
if test $? -ne 0 ; then
|
||||
extra_objects="$extra_objects bfin-parse.o"
|
||||
fi
|
||||
|
||||
echo ${extra_objects} | grep -s "bfin-lex.o"
|
||||
if test $? -ne 0 ; then
|
||||
extra_objects="$extra_objects bfin-lex.o"
|
||||
fi
|
||||
;;
|
||||
|
||||
fr30 | ip2k | iq2000 | m32r | openrisc)
|
||||
using_cgen=yes
|
||||
;;
|
||||
|
@ -33,6 +33,7 @@ case ${cpu} in
|
||||
am33_2.0) cpu_type=mn10300 endian=little ;;
|
||||
arm*be|arm*b) cpu_type=arm endian=big ;;
|
||||
arm*) cpu_type=arm endian=little ;;
|
||||
bfin*) cpu_type=bfin endian=little ;;
|
||||
c4x*) cpu_type=tic4x ;;
|
||||
crisv32) cpu_type=cris arch=crisv32 ;;
|
||||
crx*) cpu_type=crx endian=little ;;
|
||||
@ -117,7 +118,9 @@ case ${generic_target} in
|
||||
arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
|
||||
arm-*-riscix*) fmt=aout em=riscix ;;
|
||||
|
||||
avr-*-*) fmt=elf ;;
|
||||
avr-*-*) fmt=elf bfd_gas=yes ;;
|
||||
bfin-*-*) fmt=elf bfd_gas=yes ;;
|
||||
bfin-*elf) fmt=elf ;;
|
||||
|
||||
cris-*-linux-* | crisv32-*-linux-*)
|
||||
fmt=multi em=linux ;;
|
||||
|
@ -27,6 +27,7 @@ CPU_DOCS = \
|
||||
c-alpha.texi \
|
||||
c-arc.texi \
|
||||
c-arm.texi \
|
||||
c-bfin.texi \
|
||||
c-d10v.texi \
|
||||
c-cris.texi \
|
||||
c-h8300.texi \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.9.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
@ -218,6 +218,7 @@ CPU_DOCS = \
|
||||
c-alpha.texi \
|
||||
c-arc.texi \
|
||||
c-arm.texi \
|
||||
c-bfin.texi \
|
||||
c-d10v.texi \
|
||||
c-cris.texi \
|
||||
c-h8300.texi \
|
||||
@ -346,7 +347,7 @@ as.html: as.texinfo
|
||||
$(DVIPS) -o $@ $<
|
||||
|
||||
uninstall-info-am:
|
||||
@$(PRE_UNINSTALL)
|
||||
$(PRE_UNINSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
@ -362,7 +363,7 @@ uninstall-info-am:
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
(if cd "$(DESTDIR)$(infodir)"; then \
|
||||
echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
|
||||
echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
|
||||
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
@ -29,6 +29,7 @@
|
||||
@set ALPHA
|
||||
@set ARC
|
||||
@set ARM
|
||||
@set BFIN
|
||||
@set CRIS
|
||||
@set D10V
|
||||
@set D30V
|
||||
|
@ -6083,6 +6083,9 @@ subject, see the hardware manufacturer's manual.
|
||||
@ifset ARM
|
||||
* ARM-Dependent:: ARM Dependent Features
|
||||
@end ifset
|
||||
@ifset BFIN
|
||||
* BFIN-Dependent:: BFIN Dependent Features
|
||||
@end ifset
|
||||
@ifset CRIS
|
||||
* CRIS-Dependent:: CRIS Dependent Features
|
||||
@end ifset
|
||||
@ -6193,6 +6196,10 @@ subject, see the hardware manufacturer's manual.
|
||||
@include c-arm.texi
|
||||
@end ifset
|
||||
|
||||
@ifset BFIN
|
||||
@include c-bfin.texi
|
||||
@end ifset
|
||||
|
||||
@ifset CRIS
|
||||
@include c-cris.texi
|
||||
@end ifset
|
||||
|
187
gas/doc/c-bfin.texi
Normal file
187
gas/doc/c-bfin.texi
Normal file
@ -0,0 +1,187 @@
|
||||
@c Copyright 2005
|
||||
@c Free Software Foundation, Inc.
|
||||
@c This is part of the GAS manual.
|
||||
@c For copying conditions, see the file as.texinfo.
|
||||
@ifset GENERIC
|
||||
@page
|
||||
@node BFIN-Dependent
|
||||
@chapter Blackfin Dependent Features
|
||||
@end ifset
|
||||
@ifclear GENERIC
|
||||
@node Machine Dependencies
|
||||
@chapter Blackfin Dependent Features
|
||||
@end ifclear
|
||||
|
||||
@cindex Blackfin support
|
||||
@menu
|
||||
* BFIN Syntax:: BFIN Syntax
|
||||
* BFIN Directives:: BFIN Directives
|
||||
@end menu
|
||||
|
||||
@node BFIN Syntax
|
||||
@section Syntax
|
||||
@cindex BFIN syntax
|
||||
@cindex syntax, BFIN
|
||||
|
||||
@table @code
|
||||
@item Special Characters
|
||||
Assembler input is free format and may appear anywhere on the line.
|
||||
One instruction may extend across multiple lines or more than one
|
||||
instruction may appear on the same line. White space (space, tab,
|
||||
comments or newline) may appear anywhere between tokens. A token must
|
||||
not have embedded spaces. Tokens include numbers, register names,
|
||||
keywords, user identifiers, and also some multicharacter special
|
||||
symbols like "+=", "/*" or "||".
|
||||
|
||||
@item Instruction Delimiting
|
||||
A semicolon must terminate every instruction. Sometimes a complete
|
||||
instruction will consist of more than one operation. There are two
|
||||
cases where this occurs. The first is when two general operations
|
||||
are combined. Normally a comma separates the different parts, as in
|
||||
|
||||
@smallexample
|
||||
a0= r3.h * r2.l, a1 = r3.l * r2.h ;
|
||||
@end smallexample
|
||||
|
||||
The second case occurs when a general instruction is combined with one
|
||||
or two memory references for joint issue. The latter portions are
|
||||
set off by a "||" token.
|
||||
|
||||
@smallexample
|
||||
a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
|
||||
@end smallexample
|
||||
|
||||
@item Register Names
|
||||
|
||||
The assembler treats register names and instruction keywords in a case
|
||||
insensitive manner. User identifiers are case sensitive. Thus, R3.l,
|
||||
R3.L, r3.l and r3.L are all equivalent input to the assembler.
|
||||
|
||||
Register names are reserved and may not be used as program identifiers.
|
||||
|
||||
Some operations (such as "Move Register") require a register pair.
|
||||
Register pairs are always data registers and are denoted using a colon,
|
||||
eg., R3:2. The larger number must be written firsts. Note that the
|
||||
hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0.
|
||||
|
||||
Some instructions (such as --SP (Push Multiple)) require a group of
|
||||
adjacent registers. Adjacent registers are denoted in the syntax by
|
||||
the range enclosed in parentheses and separated by a colon, eg., (R7:3).
|
||||
Again, the larger number appears first.
|
||||
|
||||
Portions of a particular register may be individually specified. This
|
||||
is written with a dot (".") following the register name and then a
|
||||
letter denoting the desired portion. For 32-bit registers, ".H"
|
||||
denotes the most significant ("High") portion. ".L" denotes the
|
||||
least-significant portion. The subdivisions of the 40-bit registers
|
||||
are described later.
|
||||
|
||||
@item Accumulators
|
||||
The set of 40-bit registers A1 and A0 that normally contain data that
|
||||
is being manipulated. Each accumulator can be accessed in four ways.
|
||||
|
||||
@table @code
|
||||
@item one 40-bit register
|
||||
The register will be referred to as A1 or A0.
|
||||
@item one 32-bit register
|
||||
The registers are designated as A1.W or A0.W.
|
||||
@item two 16-bit registers
|
||||
The registers are designated as A1.H, A1.L, A0.H or A0.L.
|
||||
@item one 8-bit register
|
||||
The registers are designated as A1.X or A0.X for the bits that
|
||||
extend beyond bit 31.
|
||||
@end table
|
||||
|
||||
@item Data Registers
|
||||
The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7) that
|
||||
normally contain data for manipulation. These are abbreviated as
|
||||
D-register or Dreg. Data registers can be accessed as 32-bit registers
|
||||
or as two independent 16-bit registers. The least significant 16 bits
|
||||
of each register is called the "low" half and is desginated with ".L"
|
||||
following the register name. The most significant 16 bits are called
|
||||
the "high" half and is designated with ".H". following the name.
|
||||
|
||||
@smallexample
|
||||
R7.L, r2.h, r4.L, R0.H
|
||||
@end smallexample
|
||||
|
||||
@item Pointer Registers
|
||||
The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP) that
|
||||
normally contain byte addresses of data structures. These are
|
||||
abbreviated as P-register or Preg.
|
||||
|
||||
@smallexample
|
||||
p2, p5, fp, sp
|
||||
@end smallexample
|
||||
|
||||
@item Stack Pointer SP
|
||||
The stack pointer contains the 32-bit address of the last occupied
|
||||
byte location in the stack. The stack grows by decrementing the
|
||||
stack pointer.
|
||||
|
||||
@item Frame Pointer FP
|
||||
The frame pointer contains the 32-bit address of the previous frame
|
||||
pointer in the stack. It is located at the top of a frame.
|
||||
|
||||
@item Loop Top
|
||||
LT0 and LT1. These registers contain the 32-bit address of the top of
|
||||
a zero overhead loop.
|
||||
|
||||
@item Loop Count
|
||||
LC0 and LC1. These registers contain the 32-bit counter of the zero
|
||||
overhead loop executions.
|
||||
|
||||
@item Loop Bottom
|
||||
LB0 and LB1. These registers contain the 32-bit address of the bottom
|
||||
of a zero overhead loop.
|
||||
|
||||
@item Index Registers
|
||||
The set of 32-bit registers (I0, I1, I2, I3) that normally contain byte
|
||||
addresses of data structures. Abbreviated I-register or Ireg.
|
||||
|
||||
@item Modify Registers
|
||||
The set of 32-bit registers (M0, M1, M2, M3) that normally contain
|
||||
offset values that are added and subracted to one of the index
|
||||
registers. Abbreviated as Mreg.
|
||||
|
||||
@item Length Registers
|
||||
The set of 32-bit registers (L0, L1, L2, L3) that normally contain the
|
||||
length in bytes of the circular buffer. Abbreviated as Lreg. Clear
|
||||
the Lreg to disable circular addressing for the corresponding Ireg.
|
||||
|
||||
@item Base Registers
|
||||
The set of 32-bit registers (B0, B1, B2, B3) that normally contain the
|
||||
base address in bytes of the circular buffer. Abbreviated as Breg.
|
||||
|
||||
@item Floating Point
|
||||
The Blackfin family has no hardware floating point but the .float
|
||||
directive generates ieee floating point numbers for use with software
|
||||
floating point libraries.
|
||||
|
||||
@item Blackfin Opcodes
|
||||
For detailed information on the Blackfin machine instruction set, see
|
||||
the Blackfin(r) Processor Instruction Set Reference.
|
||||
|
||||
@end table
|
||||
|
||||
@node BFIN Directives
|
||||
@section Directives
|
||||
@cindex BFIN directives
|
||||
@cindex directives, BFIN
|
||||
|
||||
The following directives are provided for compatibility with the VDSP assembler.
|
||||
|
||||
@table @code
|
||||
@item .byte2
|
||||
Initializes a four byte data object.
|
||||
@item .byte4
|
||||
Initializes a two byte data object.
|
||||
@item .db
|
||||
TBD
|
||||
@item .dd
|
||||
TBD
|
||||
@item .dw
|
||||
TBD
|
||||
@item .var
|
||||
Define and initialize a 32 bit data object.
|
||||
@end table
|
Loading…
x
Reference in New Issue
Block a user