mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-11 08:25:30 +08:00
* 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:
@ -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>
|
2005-09-30 Paul Brook <paul@codesourcery.com>
|
||||||
|
|
||||||
* config/tc-arm.c (opcode_tag): Add OT_cinfix3_legacy.
|
* config/tc-arm.c (opcode_tag): Add OT_cinfix3_legacy.
|
||||||
|
@ -45,6 +45,7 @@ CPU_TYPES = \
|
|||||||
arc \
|
arc \
|
||||||
arm \
|
arm \
|
||||||
avr \
|
avr \
|
||||||
|
bfin \
|
||||||
cris \
|
cris \
|
||||||
crx \
|
crx \
|
||||||
d10v \
|
d10v \
|
||||||
@ -227,6 +228,7 @@ TARGET_CPU_CFILES = \
|
|||||||
config/tc-arc.c \
|
config/tc-arc.c \
|
||||||
config/tc-arm.c \
|
config/tc-arm.c \
|
||||||
config/tc-avr.c \
|
config/tc-avr.c \
|
||||||
|
config/tc-bfin.c \
|
||||||
config/tc-cris.c \
|
config/tc-cris.c \
|
||||||
config/tc-crx.c \
|
config/tc-crx.c \
|
||||||
config/tc-d10v.c \
|
config/tc-d10v.c \
|
||||||
@ -275,6 +277,7 @@ TARGET_CPU_HFILES = \
|
|||||||
config/tc-arc.h \
|
config/tc-arc.h \
|
||||||
config/tc-arm.h \
|
config/tc-arm.h \
|
||||||
config/tc-avr.h \
|
config/tc-avr.h \
|
||||||
|
config/tc-bfin.h \
|
||||||
config/tc-cris.h \
|
config/tc-cris.h \
|
||||||
config/tc-crx.h \
|
config/tc-crx.h \
|
||||||
config/tc-d10v.h \
|
config/tc-d10v.h \
|
||||||
@ -437,7 +440,9 @@ noinst_PROGRAMS = as-new
|
|||||||
noinst_SCRIPTS = $(GDBINIT)
|
noinst_SCRIPTS = $(GDBINIT)
|
||||||
EXTRA_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
|
diststuff: $(EXTRA_DIST) info
|
||||||
all: info
|
all: info
|
||||||
|
|
||||||
@ -567,7 +572,7 @@ xtensa-relax.o: $(srcdir)/config/xtensa-relax.c
|
|||||||
|
|
||||||
# The m68k operand parser.
|
# 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
|
# 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
|
# 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
|
m68k-parse.h: ; @true
|
||||||
$(srcdir)/config/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.
|
# The instruction table specification lexical analyzer and parser.
|
||||||
|
|
||||||
itbl-lex.c: $(srcdir)/itbl-lex.l
|
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)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \
|
||||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||||
$(INCDIR)/opcode/avr.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 \
|
DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.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)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \
|
||||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.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 \
|
DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.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 \
|
DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
|
||||||
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.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
|
$(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 \
|
DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
|
||||||
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
||||||
DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.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@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
@ -42,14 +42,16 @@ host_triplet = @host@
|
|||||||
target_triplet = @target@
|
target_triplet = @target@
|
||||||
noinst_PROGRAMS = as-new$(EXEEXT)
|
noinst_PROGRAMS = as-new$(EXEEXT)
|
||||||
EXTRA_PROGRAMS = itbl-test$(EXEEXT)
|
EXTRA_PROGRAMS = itbl-test$(EXEEXT)
|
||||||
DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub NEWS \
|
DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub \
|
||||||
README ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
INSTALL NEWS README AUTHORS ChangeLog THANKS \
|
||||||
|
$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
$(top_srcdir)/configure $(am__configure_deps) \
|
$(top_srcdir)/configure $(am__configure_deps) \
|
||||||
$(srcdir)/config.in $(srcdir)/../mkinstalldirs \
|
$(srcdir)/config.in $(srcdir)/../mkinstalldirs \
|
||||||
$(srcdir)/gdbinit.in $(srcdir)/gdbinit.in \
|
$(srcdir)/gdbinit.in $(srcdir)/gdbinit.in \
|
||||||
$(top_srcdir)/po/Make-in m68k-parse.c itbl-parse.c itbl-lex.c \
|
$(top_srcdir)/po/Make-in m68k-parse.c bfin-parse.c \
|
||||||
$(srcdir)/../ylwrap $(srcdir)/../ltmain.sh \
|
itbl-parse.c itbl-lex.c $(srcdir)/../ylwrap \
|
||||||
$(srcdir)/../config.guess $(srcdir)/../config.sub
|
$(srcdir)/../ltmain.sh $(srcdir)/../config.guess \
|
||||||
|
$(srcdir)/../config.sub
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||||
@ -274,6 +276,7 @@ CPU_TYPES = \
|
|||||||
arc \
|
arc \
|
||||||
arm \
|
arm \
|
||||||
avr \
|
avr \
|
||||||
|
bfin \
|
||||||
cris \
|
cris \
|
||||||
crx \
|
crx \
|
||||||
d10v \
|
d10v \
|
||||||
@ -454,6 +457,7 @@ TARGET_CPU_CFILES = \
|
|||||||
config/tc-arc.c \
|
config/tc-arc.c \
|
||||||
config/tc-arm.c \
|
config/tc-arm.c \
|
||||||
config/tc-avr.c \
|
config/tc-avr.c \
|
||||||
|
config/tc-bfin.c \
|
||||||
config/tc-cris.c \
|
config/tc-cris.c \
|
||||||
config/tc-crx.c \
|
config/tc-crx.c \
|
||||||
config/tc-d10v.c \
|
config/tc-d10v.c \
|
||||||
@ -502,6 +506,7 @@ TARGET_CPU_HFILES = \
|
|||||||
config/tc-arc.h \
|
config/tc-arc.h \
|
||||||
config/tc-arm.h \
|
config/tc-arm.h \
|
||||||
config/tc-avr.h \
|
config/tc-avr.h \
|
||||||
|
config/tc-bfin.h \
|
||||||
config/tc-cris.h \
|
config/tc-cris.h \
|
||||||
config/tc-crx.h \
|
config/tc-crx.h \
|
||||||
config/tc-d10v.h \
|
config/tc-d10v.h \
|
||||||
@ -656,7 +661,9 @@ POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \
|
|||||||
|
|
||||||
noinst_SCRIPTS = $(GDBINIT)
|
noinst_SCRIPTS = $(GDBINIT)
|
||||||
EXTRA_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
|
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.
|
# Now figure out from those variables how to compile and link.
|
||||||
@ -698,7 +705,7 @@ RUNTEST = runtest
|
|||||||
RUNTESTFLAGS =
|
RUNTESTFLAGS =
|
||||||
|
|
||||||
# The m68k operand parser.
|
# 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_SOURCES = itbl-parse.y itbl-lex.l
|
||||||
itbl_test_LDADD = itbl-tops.o itbl-test.o $(GASLIBS) @LEXLIB@
|
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)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||||
$(INCDIR)/opcode/avr.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 \
|
DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.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 \
|
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
|
||||||
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.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 \
|
DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
|
||||||
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
$(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.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 \
|
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.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 \
|
DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
|
||||||
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
|
||||||
|
|
||||||
@ -2438,6 +2461,9 @@ distclean-compile:
|
|||||||
.y.c:
|
.y.c:
|
||||||
$(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
|
$(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:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
@ -2455,13 +2481,7 @@ uninstall-info-am:
|
|||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
$(RECURSIVE_TARGETS):
|
$(RECURSIVE_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
|
||||||
case $$f in \
|
|
||||||
*=* | --[!k]*);; \
|
|
||||||
*k*) failcom='fail=yes';; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
@ -2473,7 +2493,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
@ -2481,13 +2501,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
|
|
||||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
maintainer-clean-recursive:
|
maintainer-clean-recursive:
|
||||||
@failcom='exit 1'; \
|
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
|
||||||
case $$f in \
|
|
||||||
*=* | --[!k]*);; \
|
|
||||||
*k*) failcom='fail=yes';; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
@ -2508,7 +2522,7 @@ maintainer-clean-recursive:
|
|||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
done && test -z "$$fail"
|
done && test -z "$$fail"
|
||||||
tags-recursive:
|
tags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
@ -2637,6 +2651,7 @@ distclean-generic:
|
|||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
-rm -f bfin-parse.c
|
||||||
-rm -f itbl-lex.c
|
-rm -f itbl-lex.c
|
||||||
-rm -f itbl-parse.c
|
-rm -f itbl-parse.c
|
||||||
-rm -f m68k-parse.c
|
-rm -f m68k-parse.c
|
||||||
@ -2713,6 +2728,7 @@ uninstall-info: uninstall-info-recursive
|
|||||||
po/POTFILES.in: @MAINT@ Makefile
|
po/POTFILES.in: @MAINT@ Makefile
|
||||||
for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
|
for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
|
||||||
&& mv tmp $(srcdir)/po/POTFILES.in
|
&& mv tmp $(srcdir)/po/POTFILES.in
|
||||||
|
|
||||||
diststuff: $(EXTRA_DIST) info
|
diststuff: $(EXTRA_DIST) info
|
||||||
all: info
|
all: info
|
||||||
|
|
||||||
@ -2827,6 +2843,18 @@ m68k-parse.o: m68k-parse.c $(srcdir)/config/m68k-parse.h
|
|||||||
m68k-parse.h: ; @true
|
m68k-parse.h: ; @true
|
||||||
$(srcdir)/config/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.
|
# The instruction table specification lexical analyzer and parser.
|
||||||
|
|
||||||
itbl-lex.c: $(srcdir)/itbl-lex.l
|
itbl-lex.c: $(srcdir)/itbl-lex.l
|
||||||
|
451
gas/aclocal.m4
vendored
451
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,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
# 2005 Free Software Foundation, Inc.
|
# 2005 Free Software Foundation, Inc.
|
||||||
@ -11,11 +11,23 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
|
# -*- Autoconf -*-
|
||||||
#
|
# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||||
# This file is free software; the Free Software Foundation
|
# Generated from amversion.in; do not edit by hand.
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# 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)
|
# 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.
|
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
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.
|
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# it under the terms of the GNU General Public License as published by
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# 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
|
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||||
@ -85,14 +108,24 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
|
|||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# AM_CONDITIONAL -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
|
# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
|
||||||
# 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 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)
|
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
@ -116,15 +149,26 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
Usually this means the macro was only invoked conditionally.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
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.
|
# 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
|
# 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,
|
# 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...
|
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# _AM_DEPENDENCIES(NAME)
|
# _AM_DEPENDENCIES(NAME)
|
||||||
# ----------------------
|
# ----------------------
|
||||||
# See how the compiler implements dependency checking.
|
# See how the compiler implements dependency checking.
|
||||||
@ -274,14 +319,25 @@ 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
|
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
|
||||||
# Free Software Foundation, Inc.
|
# 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 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
|
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
@ -340,32 +396,55 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
|
||||||
# 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
|
# 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.
|
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||||
AU_DEFUN([AM_CONFIG_HEADER], [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
|
# This macro actually does too much some checks are only needed if
|
||||||
# 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
|
|
||||||
# your package does certain things. But this isn't really a big deal.
|
# 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(PACKAGE, VERSION, [NO-DEFINE])
|
||||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
@ -466,27 +545,51 @@ for _am_header in $config_headers :; do
|
|||||||
done
|
done
|
||||||
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
|
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
|
# AM_PROG_INSTALL_SH
|
||||||
# ------------------
|
# ------------------
|
||||||
# Define $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_DEFUN([AM_PROG_INSTALL_SH],
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||||
AC_SUBST(install_sh)])
|
AC_SUBST(install_sh)])
|
||||||
|
|
||||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
# -*- Autoconf -*-
|
||||||
#
|
# Copyright (C) 2003 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 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
|
# Check whether the underlying file-system supports filenames
|
||||||
# with a leading dot. For instance MS-DOS doesn't.
|
# with a leading dot. For instance MS-DOS doesn't.
|
||||||
@ -501,14 +604,26 @@ fi
|
|||||||
rmdir .tst 2>/dev/null
|
rmdir .tst 2>/dev/null
|
||||||
AC_SUBST([am__leading_dot])])
|
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
|
# AM_PROG_LEX
|
||||||
# -----------
|
# -----------
|
||||||
@ -522,17 +637,28 @@ if test "$LEX" = :; then
|
|||||||
LEX=${am_missing_run}flex
|
LEX=${am_missing_run}flex
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
# Add --enable-maintainer-mode option to configure.
|
||||||
# From Jim Meyering
|
# 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.
|
# 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_DEFUN([AM_MAINTAINER_MODE],
|
||||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||||
@ -553,13 +679,24 @@ 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.
|
# Copyright (C) 2001, 2002, 2003 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 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()
|
# AM_MAKE_INCLUDE()
|
||||||
# -----------------
|
# -----------------
|
||||||
@ -603,16 +740,27 @@ AC_MSG_RESULT([$_am_result])
|
|||||||
rm -f confinc confmf
|
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)
|
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
@ -638,16 +786,27 @@ else
|
|||||||
fi
|
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
|
# AM_PROG_MKDIR_P
|
||||||
# ---------------
|
# ---------------
|
||||||
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
|
# 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
|
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
|
||||||
# created by `make install' are always world readable, even if the
|
# created by `make install' are always world readable, even if the
|
||||||
# installer happens to have an overly restrictive umask (e.g. 077).
|
# installer happens to have an overly restrictive umask (e.g. 077).
|
||||||
@ -703,13 +862,24 @@ 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.
|
# Copyright (C) 2001, 2002, 2003 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 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)
|
# _AM_MANGLE_OPTION(NAME)
|
||||||
# -----------------------
|
# -----------------------
|
||||||
@ -734,16 +904,28 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
|||||||
AC_DEFUN([_AM_IF_OPTION],
|
AC_DEFUN([_AM_IF_OPTION],
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
[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
|
# Check to make sure that the build environment is sane.
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
#
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# 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
|
# AM_SANITY_CHECK
|
||||||
# ---------------
|
# ---------------
|
||||||
@ -786,14 +968,25 @@ Check your system clock])
|
|||||||
fi
|
fi
|
||||||
AC_MSG_RESULT(yes)])
|
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
|
# 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
|
# One issue with vendor `install' (even GNU) is that you can't
|
||||||
# specify the program used to strip binaries. This is especially
|
# specify the program used to strip binaries. This is especially
|
||||||
# annoying in cross-compiling environments, where the build's strip
|
# 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 -*-
|
# Check how to create a tarball. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# it under the terms of the GNU General Public License as published by
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# 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)
|
# _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 ?
|
# Any other special object files needed ?
|
||||||
case ${cpu_type} in
|
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)
|
fr30 | ip2k | iq2000 | m32r | openrisc)
|
||||||
using_cgen=yes
|
using_cgen=yes
|
||||||
;;
|
;;
|
||||||
|
@ -274,6 +274,19 @@ changequote([,])dnl
|
|||||||
|
|
||||||
# Any other special object files needed ?
|
# Any other special object files needed ?
|
||||||
case ${cpu_type} in
|
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)
|
fr30 | ip2k | iq2000 | m32r | openrisc)
|
||||||
using_cgen=yes
|
using_cgen=yes
|
||||||
;;
|
;;
|
||||||
|
@ -33,6 +33,7 @@ case ${cpu} in
|
|||||||
am33_2.0) cpu_type=mn10300 endian=little ;;
|
am33_2.0) cpu_type=mn10300 endian=little ;;
|
||||||
arm*be|arm*b) cpu_type=arm endian=big ;;
|
arm*be|arm*b) cpu_type=arm endian=big ;;
|
||||||
arm*) cpu_type=arm endian=little ;;
|
arm*) cpu_type=arm endian=little ;;
|
||||||
|
bfin*) cpu_type=bfin endian=little ;;
|
||||||
c4x*) cpu_type=tic4x ;;
|
c4x*) cpu_type=tic4x ;;
|
||||||
crisv32) cpu_type=cris arch=crisv32 ;;
|
crisv32) cpu_type=cris arch=crisv32 ;;
|
||||||
crx*) cpu_type=crx endian=little ;;
|
crx*) cpu_type=crx endian=little ;;
|
||||||
@ -117,7 +118,9 @@ case ${generic_target} in
|
|||||||
arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
|
arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
|
||||||
arm-*-riscix*) fmt=aout em=riscix ;;
|
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-*)
|
cris-*-linux-* | crisv32-*-linux-*)
|
||||||
fmt=multi em=linux ;;
|
fmt=multi em=linux ;;
|
||||||
|
@ -27,6 +27,7 @@ CPU_DOCS = \
|
|||||||
c-alpha.texi \
|
c-alpha.texi \
|
||||||
c-arc.texi \
|
c-arc.texi \
|
||||||
c-arm.texi \
|
c-arm.texi \
|
||||||
|
c-bfin.texi \
|
||||||
c-d10v.texi \
|
c-d10v.texi \
|
||||||
c-cris.texi \
|
c-cris.texi \
|
||||||
c-h8300.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@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
@ -218,6 +218,7 @@ CPU_DOCS = \
|
|||||||
c-alpha.texi \
|
c-alpha.texi \
|
||||||
c-arc.texi \
|
c-arc.texi \
|
||||||
c-arm.texi \
|
c-arm.texi \
|
||||||
|
c-bfin.texi \
|
||||||
c-d10v.texi \
|
c-d10v.texi \
|
||||||
c-cris.texi \
|
c-cris.texi \
|
||||||
c-h8300.texi \
|
c-h8300.texi \
|
||||||
@ -346,7 +347,7 @@ as.html: as.texinfo
|
|||||||
$(DVIPS) -o $@ $<
|
$(DVIPS) -o $@ $<
|
||||||
|
|
||||||
uninstall-info-am:
|
uninstall-info-am:
|
||||||
@$(PRE_UNINSTALL)
|
$(PRE_UNINSTALL)
|
||||||
@if (install-info --version && \
|
@if (install-info --version && \
|
||||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||||
list='$(INFO_DEPS)'; \
|
list='$(INFO_DEPS)'; \
|
||||||
@ -362,7 +363,7 @@ uninstall-info-am:
|
|||||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||||
(if cd "$(DESTDIR)$(infodir)"; then \
|
(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]; \
|
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||||
else :; fi); \
|
else :; fi); \
|
||||||
done
|
done
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
@set ALPHA
|
@set ALPHA
|
||||||
@set ARC
|
@set ARC
|
||||||
@set ARM
|
@set ARM
|
||||||
|
@set BFIN
|
||||||
@set CRIS
|
@set CRIS
|
||||||
@set D10V
|
@set D10V
|
||||||
@set D30V
|
@set D30V
|
||||||
|
@ -6083,6 +6083,9 @@ subject, see the hardware manufacturer's manual.
|
|||||||
@ifset ARM
|
@ifset ARM
|
||||||
* ARM-Dependent:: ARM Dependent Features
|
* ARM-Dependent:: ARM Dependent Features
|
||||||
@end ifset
|
@end ifset
|
||||||
|
@ifset BFIN
|
||||||
|
* BFIN-Dependent:: BFIN Dependent Features
|
||||||
|
@end ifset
|
||||||
@ifset CRIS
|
@ifset CRIS
|
||||||
* CRIS-Dependent:: CRIS Dependent Features
|
* CRIS-Dependent:: CRIS Dependent Features
|
||||||
@end ifset
|
@end ifset
|
||||||
@ -6193,6 +6196,10 @@ subject, see the hardware manufacturer's manual.
|
|||||||
@include c-arm.texi
|
@include c-arm.texi
|
||||||
@end ifset
|
@end ifset
|
||||||
|
|
||||||
|
@ifset BFIN
|
||||||
|
@include c-bfin.texi
|
||||||
|
@end ifset
|
||||||
|
|
||||||
@ifset CRIS
|
@ifset CRIS
|
||||||
@include c-cris.texi
|
@include c-cris.texi
|
||||||
@end ifset
|
@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
|
Reference in New Issue
Block a user