Compare commits

...

5 Commits

Author SHA1 Message Date
Mike Frysinger
60fffa9d7f sim: ppc: always compile in the sysv sem & shm device files
Move the stub logic to the device files themselves.  This makes the
configure & build logic more static which will make it easier to move
to the top-level build, and matches what we did with the common/ hw
tree already.

This also decouples the logic from the two -- in the past, you needed
both sem & shm in order to enable the device models, but now each one
is tied to its own independent knob.  Practically speaking, this will
probably not make a difference, but it simplifies the build a bit.
2024-01-01 20:24:00 -05:00
Mike Frysinger
8a24c85853 sim: ppc: change SysV sem & shm tests to compile-time
Instead of executing code to see if SysV semaphores & shared memory
are available, switch to just a compile-time test.  The system used
to compile might not match the system used to run the code wrt the
current kernel & OS settings, but the library APIs should.  So move
the failures from compile-time to runtime so the program is more
portable, and works correctly even when cross-compiling.
2024-01-01 20:16:21 -05:00
Mike Frysinger
eebc029bad sim: ppc: merge System V semaphores checks
Compile tests can use earlier defines, so hoist the HAVE_UNION_SEMUN
define to before the semaphore check, and use it in the test so that
we can merge the 2 versions into one.

This also defines HAVE_UNION_SEMUN even when ac_cv_sysv_sem is not
set, but that's OK as this define is only about a type existing, not
about whether the overall code is usable.
2024-01-01 20:04:37 -05:00
Mike Frysinger
eb0b6910b9 sim: ppc: fix bad AC_CACHE_CHECK call with semun
The first arg is the cache var name, and this one was typoed relative
to what the call actually set.  We also don't need the manual call to
AC_MSG_RESULT as the AC_CACHE_CHECK takes care of it for us.
2024-01-01 19:54:42 -05:00
Mike Frysinger
4b79f86b7f sim: start a manual [PR sim/7582]
There's a lot of content in here, but there's also a decent amount of
skeleton for filling out more.  The arch chapters need a bit of work.
But should be good enough for release now.

Bug: https://sourceware.org/PR7582
2024-01-01 18:23:27 -05:00
60 changed files with 6435 additions and 748 deletions

View File

@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AUTOMAKE_OPTIONS = dejagnu foreign no-dist subdir-objects
AUTOMAKE_OPTIONS = dejagnu foreign info-in-builddir no-dist subdir-objects
ACLOCAL_AMFLAGS = -Im4 -I.. -I../config
GNULIB_PARENT_DIR = ..
@@ -40,6 +40,7 @@ BUILT_SOURCES =
CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
MOSTLYCLEANFILES = core
## We build some objects ourselves directly that Automake doesn't track, so
## make sure all objects in subdirs get cleaned up.
@@ -104,6 +105,7 @@ SIM_COMPILE = \
$(am__mv) $(SIM_DEPBASE).Tpo $(SIM_DEPBASE).Po
include common/local.mk
include doc/local.mk
include igen/local.mk
include testsuite/local.mk

View File

@@ -1289,6 +1289,45 @@ SOURCES = $(aarch64_libsim_a_SOURCES) \
testsuite/common/bits32m0.c testsuite/common/bits32m31.c \
testsuite/common/bits64m0.c testsuite/common/bits64m63.c \
testsuite/common/fpu-tst.c $(v850_run_SOURCES)
AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
am__v_DVIPS_0 = @echo " DVIPS " $@;
am__v_DVIPS_1 =
AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
am__v_MAKEINFO_0 = @echo " MAKEINFO" $@;
am__v_MAKEINFO_1 =
AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
am__v_INFOHTML_0 = @echo " INFOHTML" $@;
am__v_INFOHTML_1 =
AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@;
am__v_TEXI2DVI_1 =
AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@;
am__v_TEXI2PDF_1 =
AM_V_texinfo = $(am__v_texinfo_@AM_V@)
am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
am__v_texinfo_0 = -q
am__v_texinfo_1 =
AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
am__v_texidevnull_0 = > /dev/null
am__v_texidevnull_1 =
INFO_DEPS = doc/sim.info
am__TEXINFO_TEX_DIR = $(srcdir)/doc
DVIS = doc/sim.dvi
PDFS = doc/sim.pdf
PSS = doc/sim.ps
HTMLS = doc/sim.html
TEXINFOS = $(TEXINFO_TEX)
TEXI2PDF = $(TEXI2DVI) --pdf --batch
MAKEINFOHTML = $(MAKEINFO) --html
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
DVIPS = dvips
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@@ -1302,6 +1341,10 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(dtbdir)" \
"$(DESTDIR)$(erc32docdir)" "$(DESTDIR)$(or1kdocdir)" \
"$(DESTDIR)$(ppcdocdir)" "$(DESTDIR)$(rxdocdir)" \
"$(DESTDIR)$(pkgincludedir)"
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -1329,12 +1372,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(armdocdir)" "$(DESTDIR)$(dtbdir)" \
"$(DESTDIR)$(erc32docdir)" "$(DESTDIR)$(frvdocdir)" \
"$(DESTDIR)$(or1kdocdir)" "$(DESTDIR)$(ppcdocdir)" \
"$(DESTDIR)$(rxdocdir)" "$(DESTDIR)$(pkgincludedir)"
DATA = $(armdoc_DATA) $(dtb_DATA) $(erc32doc_DATA) $(frvdoc_DATA) \
$(or1kdoc_DATA) $(ppcdoc_DATA) $(rxdoc_DATA)
DATA = $(dtb_DATA) $(erc32doc_DATA) $(or1kdoc_DATA) $(ppcdoc_DATA) \
$(rxdoc_DATA)
am__pkginclude_HEADERS_DIST = $(srcroot)/include/sim/callback.h \
$(srcroot)/include/sim/sim.h
HEADERS = $(pkginclude_HEADERS)
@@ -1810,7 +1849,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = dejagnu foreign no-dist subdir-objects
AUTOMAKE_OPTIONS = dejagnu foreign info-in-builddir no-dist subdir-objects
ACLOCAL_AMFLAGS = -Im4 -I.. -I../config
GNULIB_PARENT_DIR = ..
srccom = $(srcdir)/common
@@ -1838,6 +1877,7 @@ CLEANFILES = common/version.c common/version.c-stamp \
testsuite/common/bits32m31.c testsuite/common/bits64m0.c \
testsuite/common/bits64m63.c
DISTCLEANFILES = $(am__append_76)
MAINTAINERCLEANFILES = doc/sim.info
MOSTLYCLEANFILES = core $(SIM_ENABLED_ARCHES:%=%/*.o) \
$(SIM_ENABLED_ARCHES:%=%/hw-config.h) \
$(SIM_ENABLED_ARCHES:%=%/stamp-hw) \
@@ -1983,6 +2023,49 @@ CGEN_GEN_MLOOP = \
-shell $(SHELL) -awk $(AWK) -lineno $(srccom)/lineno.sh \
-infile $< -outfile-prefix $(@D)/
TEXINFO_TEX = doc/sim.texi
info_TEXINFOS = $(TEXINFO_TEX)
doc_sim_TEXINFOS = \
doc/abi-newlib-errno.texi \
doc/abi-newlib-open.texi \
doc/abi-newlib-signal.texi \
doc/abi-newlib-sys.texi \
doc/arch-aarch64.texi \
doc/arch-arm.texi \
doc/arch-avr.texi \
doc/arch-bfin.texi \
doc/arch-bpf.texi \
doc/arch-cr16.texi \
doc/arch-cris.texi \
doc/arch-d10v.texi \
doc/arch-erc32.texi \
doc/arch-frv.texi \
doc/arch-ft32.texi \
doc/arch-h8300.texi \
doc/arch-iq2000.texi \
doc/arch-lm32.texi \
doc/arch-m32c.texi \
doc/arch-m32r.texi \
doc/arch-m68hc11.texi \
doc/arch-mcore.texi \
doc/arch-microblaze.texi \
doc/arch-mips.texi \
doc/arch-mn10300.texi \
doc/arch-moxie.texi \
doc/arch-msp430.texi \
doc/arch-or1k.texi \
doc/arch-ppc.texi \
doc/arch-pru.texi \
doc/arch-riscv.texi \
doc/arch-rl78.texi \
doc/arch-rx.texi \
doc/arch-sh.texi \
doc/arch-v850.texi \
doc/fdl.texi \
doc/simver.texi
AM_MAKEINFOFLAGS = -I doc --no-split --css-include=sim.css
TEXI2DVI = texi2dvi -I doc
# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
# leak detection while running it.
@@ -2090,8 +2173,6 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_arm_TRUE@ arm/libsim.a \
@SIM_ENABLE_ARCH_arm_TRUE@ $(SIM_COMMON_LIBS)
@SIM_ENABLE_ARCH_arm_TRUE@armdocdir = $(docdir)/arm
@SIM_ENABLE_ARCH_arm_TRUE@armdoc_DATA = arm/README
@SIM_ENABLE_ARCH_avr_TRUE@nodist_avr_libsim_a_SOURCES = \
@SIM_ENABLE_ARCH_avr_TRUE@ avr/modules.c
@@ -2380,8 +2461,6 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_frv_TRUE@ frv/libsim.a \
@SIM_ENABLE_ARCH_frv_TRUE@ $(SIM_COMMON_LIBS)
@SIM_ENABLE_ARCH_frv_TRUE@frvdocdir = $(docdir)/frv
@SIM_ENABLE_ARCH_frv_TRUE@frvdoc_DATA = frv/README
@SIM_ENABLE_ARCH_frv_TRUE@frv_BUILD_OUTPUTS = \
@SIM_ENABLE_ARCH_frv_TRUE@ frv/mloop.c \
@SIM_ENABLE_ARCH_frv_TRUE@ frv/stamp-mloop
@@ -3108,10 +3187,10 @@ all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
.SUFFIXES: .c .dvi .lo .log .o .obj .ps .test .test$(EXEEXT) .trs
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/common/local.mk $(srcdir)/igen/local.mk $(srcdir)/testsuite/local.mk $(srcdir)/testsuite/common/local.mk $(srcdir)/aarch64/local.mk $(srcdir)/arm/local.mk $(srcdir)/avr/local.mk $(srcdir)/bfin/local.mk $(srcdir)/bpf/local.mk $(srcdir)/cr16/local.mk $(srcdir)/cris/local.mk $(srcdir)/d10v/local.mk $(srcdir)/erc32/local.mk $(srcdir)/example-synacor/local.mk $(srcdir)/frv/local.mk $(srcdir)/ft32/local.mk $(srcdir)/h8300/local.mk $(srcdir)/iq2000/local.mk $(srcdir)/lm32/local.mk $(srcdir)/m32c/local.mk $(srcdir)/m32r/local.mk $(srcdir)/m68hc11/local.mk $(srcdir)/mcore/local.mk $(srcdir)/microblaze/local.mk $(srcdir)/mips/local.mk $(srcdir)/mn10300/local.mk $(srcdir)/moxie/local.mk $(srcdir)/msp430/local.mk $(srcdir)/or1k/local.mk $(srcdir)/ppc/local.mk $(srcdir)/pru/local.mk $(srcdir)/riscv/local.mk $(srcdir)/rl78/local.mk $(srcdir)/rx/local.mk $(srcdir)/sh/local.mk $(srcdir)/v850/local.mk $(am__configure_deps)
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/common/local.mk $(srcdir)/doc/local.mk $(srcdir)/igen/local.mk $(srcdir)/testsuite/local.mk $(srcdir)/testsuite/common/local.mk $(srcdir)/aarch64/local.mk $(srcdir)/arm/local.mk $(srcdir)/avr/local.mk $(srcdir)/bfin/local.mk $(srcdir)/bpf/local.mk $(srcdir)/cr16/local.mk $(srcdir)/cris/local.mk $(srcdir)/d10v/local.mk $(srcdir)/erc32/local.mk $(srcdir)/example-synacor/local.mk $(srcdir)/frv/local.mk $(srcdir)/ft32/local.mk $(srcdir)/h8300/local.mk $(srcdir)/iq2000/local.mk $(srcdir)/lm32/local.mk $(srcdir)/m32c/local.mk $(srcdir)/m32r/local.mk $(srcdir)/m68hc11/local.mk $(srcdir)/mcore/local.mk $(srcdir)/microblaze/local.mk $(srcdir)/mips/local.mk $(srcdir)/mn10300/local.mk $(srcdir)/moxie/local.mk $(srcdir)/msp430/local.mk $(srcdir)/or1k/local.mk $(srcdir)/ppc/local.mk $(srcdir)/pru/local.mk $(srcdir)/riscv/local.mk $(srcdir)/rl78/local.mk $(srcdir)/rx/local.mk $(srcdir)/sh/local.mk $(srcdir)/v850/local.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -3133,7 +3212,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(srcdir)/common/local.mk $(srcdir)/igen/local.mk $(srcdir)/testsuite/local.mk $(srcdir)/testsuite/common/local.mk $(srcdir)/aarch64/local.mk $(srcdir)/arm/local.mk $(srcdir)/avr/local.mk $(srcdir)/bfin/local.mk $(srcdir)/bpf/local.mk $(srcdir)/cr16/local.mk $(srcdir)/cris/local.mk $(srcdir)/d10v/local.mk $(srcdir)/erc32/local.mk $(srcdir)/example-synacor/local.mk $(srcdir)/frv/local.mk $(srcdir)/ft32/local.mk $(srcdir)/h8300/local.mk $(srcdir)/iq2000/local.mk $(srcdir)/lm32/local.mk $(srcdir)/m32c/local.mk $(srcdir)/m32r/local.mk $(srcdir)/m68hc11/local.mk $(srcdir)/mcore/local.mk $(srcdir)/microblaze/local.mk $(srcdir)/mips/local.mk $(srcdir)/mn10300/local.mk $(srcdir)/moxie/local.mk $(srcdir)/msp430/local.mk $(srcdir)/or1k/local.mk $(srcdir)/ppc/local.mk $(srcdir)/pru/local.mk $(srcdir)/riscv/local.mk $(srcdir)/rl78/local.mk $(srcdir)/rx/local.mk $(srcdir)/sh/local.mk $(srcdir)/v850/local.mk $(am__empty):
$(srcdir)/common/local.mk $(srcdir)/doc/local.mk $(srcdir)/igen/local.mk $(srcdir)/testsuite/local.mk $(srcdir)/testsuite/common/local.mk $(srcdir)/aarch64/local.mk $(srcdir)/arm/local.mk $(srcdir)/avr/local.mk $(srcdir)/bfin/local.mk $(srcdir)/bpf/local.mk $(srcdir)/cr16/local.mk $(srcdir)/cris/local.mk $(srcdir)/d10v/local.mk $(srcdir)/erc32/local.mk $(srcdir)/example-synacor/local.mk $(srcdir)/frv/local.mk $(srcdir)/ft32/local.mk $(srcdir)/h8300/local.mk $(srcdir)/iq2000/local.mk $(srcdir)/lm32/local.mk $(srcdir)/m32c/local.mk $(srcdir)/m32r/local.mk $(srcdir)/m68hc11/local.mk $(srcdir)/mcore/local.mk $(srcdir)/microblaze/local.mk $(srcdir)/mips/local.mk $(srcdir)/mn10300/local.mk $(srcdir)/moxie/local.mk $(srcdir)/msp430/local.mk $(srcdir)/or1k/local.mk $(srcdir)/ppc/local.mk $(srcdir)/pru/local.mk $(srcdir)/riscv/local.mk $(srcdir)/rl78/local.mk $(srcdir)/rx/local.mk $(srcdir)/sh/local.mk $(srcdir)/v850/local.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -4183,27 +4262,143 @@ clean-libtool:
distclean-libtool:
-rm -f libtool config.lt
install-armdocDATA: $(armdoc_DATA)
@$(NORMAL_INSTALL)
@list='$(armdoc_DATA)'; test -n "$(armdocdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(armdocdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(armdocdir)" || exit 1; \
doc/$(am__dirstamp):
@$(MKDIR_P) doc
@: > doc/$(am__dirstamp)
doc/sim.info: doc/sim.texi $(doc_sim_TEXINFOS)
@test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
done; \
else :; fi && \
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
-o $@ `test -f 'doc/sim.texi' || echo '$(srcdir)/'`doc/sim.texi; \
then \
rc=0; \
else \
rc=$$?; \
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
fi; \
rm -rf $$backupdir; exit $$rc
doc/sim.dvi: doc/sim.texi $(doc_sim_TEXINFOS) doc/$(am__dirstamp)
$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
`test -f 'doc/sim.texi' || echo '$(srcdir)/'`doc/sim.texi
doc/sim.pdf: doc/sim.texi $(doc_sim_TEXINFOS) doc/$(am__dirstamp)
$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
`test -f 'doc/sim.texi' || echo '$(srcdir)/'`doc/sim.texi
doc/sim.html: doc/sim.texi $(doc_sim_TEXINFOS) doc/$(am__dirstamp)
$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
-o $(@:.html=.htp) `test -f 'doc/sim.texi' || echo '$(srcdir)/'`doc/sim.texi; \
then \
rm -rf $@ && mv $(@:.html=.htp) $@; \
else \
rm -rf $(@:.html=.htp); exit 1; \
fi
.dvi.ps:
$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
$(DVIPS) $(AM_V_texinfo) -o $@ $<
uninstall-dvi-am:
@$(NORMAL_UNINSTALL)
@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(armdocdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(armdocdir)" || exit $$?; \
$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
rm -f "$(DESTDIR)$(dvidir)/$$f"; \
done
uninstall-armdocDATA:
uninstall-html-am:
@$(NORMAL_UNINSTALL)
@list='$(armdoc_DATA)'; test -n "$(armdocdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(armdocdir)'; $(am__uninstall_files_from_dir)
@list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
done
uninstall-info-am:
@$(PRE_UNINSTALL)
@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
done; \
else :; fi
@$(NORMAL_UNINSTALL)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
(if test -d "$(DESTDIR)$(infodir)" && 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]"; \
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
else :; fi); \
done
uninstall-pdf-am:
@$(NORMAL_UNINSTALL)
@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
done
uninstall-ps-am:
@$(NORMAL_UNINSTALL)
@list='$(PSS)'; test -n "$(psdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
rm -f "$(DESTDIR)$(psdir)/$$f"; \
done
dist-info: $(INFO_DEPS)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
list='$(INFO_DEPS)'; \
for base in $$list; do \
case $$base in \
$(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
esac; \
if test -f $$base; then d=.; else d=$(srcdir); fi; \
base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
if test -f $$file; then \
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
test -f "$(distdir)/$$relfile" || \
cp -p $$file "$(distdir)/$$relfile"; \
else :; fi; \
done; \
done
mostlyclean-aminfo:
-rm -rf doc/sim.t2d doc/sim.t2p
clean-aminfo:
-test -z "doc/sim.dvi doc/sim.pdf doc/sim.ps doc/sim.html" \
|| rm -rf doc/sim.dvi doc/sim.pdf doc/sim.ps doc/sim.html
maintainer-clean-aminfo:
@list='$(INFO_DEPS)'; for i in $$list; do \
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
done
install-dtbDATA: $(dtb_DATA)
@$(NORMAL_INSTALL)
@list='$(dtb_DATA)'; test -n "$(dtbdir)" || list=; \
@@ -4246,27 +4441,6 @@ uninstall-erc32docDATA:
@list='$(erc32doc_DATA)'; test -n "$(erc32docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(erc32docdir)'; $(am__uninstall_files_from_dir)
install-frvdocDATA: $(frvdoc_DATA)
@$(NORMAL_INSTALL)
@list='$(frvdoc_DATA)'; test -n "$(frvdocdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(frvdocdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(frvdocdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(frvdocdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(frvdocdir)" || exit $$?; \
done
uninstall-frvdocDATA:
@$(NORMAL_UNINSTALL)
@list='$(frvdoc_DATA)'; test -n "$(frvdocdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(frvdocdir)'; $(am__uninstall_files_from_dir)
install-or1kdocDATA: $(or1kdoc_DATA)
@$(NORMAL_INSTALL)
@list='$(or1kdoc_DATA)'; test -n "$(or1kdocdir)" || list=; \
@@ -4685,10 +4859,11 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU check-TESTS
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-recursive
all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) config.h
all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \
$(HEADERS) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(armdocdir)" "$(DESTDIR)$(dtbdir)" "$(DESTDIR)$(erc32docdir)" "$(DESTDIR)$(frvdocdir)" "$(DESTDIR)$(or1kdocdir)" "$(DESTDIR)$(ppcdocdir)" "$(DESTDIR)$(rxdocdir)" "$(DESTDIR)$(pkgincludedir)"; do \
for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(dtbdir)" "$(DESTDIR)$(erc32docdir)" "$(DESTDIR)$(or1kdocdir)" "$(DESTDIR)$(ppcdocdir)" "$(DESTDIR)$(rxdocdir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: $(BUILT_SOURCES)
@@ -4741,6 +4916,7 @@ distclean-generic:
-rm -f cris/$(am__dirstamp)
-rm -f d10v/$(DEPDIR)/$(am__dirstamp)
-rm -f d10v/$(am__dirstamp)
-rm -f doc/$(am__dirstamp)
-rm -f erc32/$(DEPDIR)/$(am__dirstamp)
-rm -f erc32/$(am__dirstamp)
-rm -f example-synacor/$(DEPDIR)/$(am__dirstamp)
@@ -4799,9 +4975,10 @@ maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLIBRARIES clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-recursive
@@ -4814,44 +4991,135 @@ distclean-am: clean-am distclean-DEJAGNU distclean-compile \
dvi: dvi-recursive
dvi-am:
dvi-am: $(DVIS)
html: html-recursive
html-am:
html-am: $(HTMLS) html-local
info: info-recursive
info-am:
info-am: $(INFO_DEPS)
install-data-am: install-armdocDATA install-data-local install-dtbDATA \
install-erc32docDATA install-frvdocDATA install-or1kdocDATA \
install-data-am: install-data-local install-dtbDATA \
install-erc32docDATA install-info-am install-or1kdocDATA \
install-pkgincludeHEADERS install-ppcdocDATA install-rxdocDATA
install-dvi: install-dvi-recursive
install-dvi-am:
install-dvi-am: $(DVIS)
@$(NORMAL_INSTALL)
@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
$(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
done
install-exec-am: install-exec-local
install-html: install-html-recursive
install-html-am:
install-html-am: $(HTMLS)
@$(NORMAL_INSTALL)
@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
$(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
$(am__strip_dir) \
d2=$$d$$p; \
if test -d "$$d2"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
$(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
$(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
else \
list2="$$list2 $$d2"; \
fi; \
done; \
test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
done; }
install-info: install-info-recursive
install-info-am:
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
$(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
fi; \
for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
esac; \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
if test -f $$ifile; then \
echo "$$ifile"; \
else : ; fi; \
done; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
@$(POST_INSTALL)
@if $(am__can_run_installinfo); then \
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
done; \
else : ; fi
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-pdf-am: $(PDFS)
@$(NORMAL_INSTALL)
@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
install-ps: install-ps-recursive
install-ps-am:
install-ps-am: $(PSS)
@$(NORMAL_INSTALL)
@list='$(PSS)'; test -n "$(psdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
installcheck-am:
maintainer-clean: maintainer-clean-recursive
@@ -4859,52 +5127,56 @@ maintainer-clean: maintainer-clean-recursive
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf aarch64/$(DEPDIR) arm/$(DEPDIR) avr/$(DEPDIR) bfin/$(DEPDIR) bpf/$(DEPDIR) common/$(DEPDIR) cr16/$(DEPDIR) cris/$(DEPDIR) d10v/$(DEPDIR) erc32/$(DEPDIR) example-synacor/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) h8300/$(DEPDIR) igen/$(DEPDIR) iq2000/$(DEPDIR) lm32/$(DEPDIR) m32c/$(DEPDIR) m32r/$(DEPDIR) m68hc11/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mips/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) or1k/$(DEPDIR) ppc/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sh/$(DEPDIR) testsuite/common/$(DEPDIR) v850/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
pdf-am: $(PDFS)
ps: ps-recursive
ps-am:
ps-am: $(PSS)
uninstall-am: uninstall-armdocDATA uninstall-dtbDATA \
uninstall-erc32docDATA uninstall-frvdocDATA uninstall-local \
uninstall-or1kdocDATA uninstall-pkgincludeHEADERS \
uninstall-ppcdocDATA uninstall-rxdocDATA
uninstall-am: uninstall-dtbDATA uninstall-dvi-am \
uninstall-erc32docDATA uninstall-html-am uninstall-info-am \
uninstall-local uninstall-or1kdocDATA uninstall-pdf-am \
uninstall-pkgincludeHEADERS uninstall-ppcdocDATA \
uninstall-ps-am uninstall-rxdocDATA
.MAKE: $(am__recursive_targets) all check check-am install install-am \
install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-DEJAGNU check-TESTS check-am clean \
clean-checkPROGRAMS clean-cscope clean-generic clean-libtool \
clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
cscopelist-am ctags ctags-am distclean distclean-DEJAGNU \
distclean-compile distclean-generic distclean-hdr \
distclean-libtool distclean-tags dvi dvi-am html html-am info \
info-am install install-am install-armdocDATA install-data \
install-data-am install-data-local install-dtbDATA install-dvi \
install-dvi-am install-erc32docDATA install-exec \
install-exec-am install-exec-local install-frvdocDATA \
install-html install-html-am install-info install-info-am \
install-man install-or1kdocDATA install-pdf install-pdf-am \
install-pkgincludeHEADERS install-ppcdocDATA install-ps \
install-ps-am install-rxdocDATA install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
recheck tags tags-am uninstall uninstall-am \
uninstall-armdocDATA uninstall-dtbDATA uninstall-erc32docDATA \
uninstall-frvdocDATA uninstall-local uninstall-or1kdocDATA \
clean-aminfo clean-checkPROGRAMS clean-cscope clean-generic \
clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS \
cscope cscopelist-am ctags ctags-am dist-info distclean \
distclean-DEJAGNU distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \
html-am html-local info info-am install install-am \
install-data install-data-am install-data-local \
install-dtbDATA install-dvi install-dvi-am \
install-erc32docDATA install-exec install-exec-am \
install-exec-local install-html install-html-am install-info \
install-info-am install-man install-or1kdocDATA install-pdf \
install-pdf-am install-pkgincludeHEADERS install-ppcdocDATA \
install-ps install-ps-am install-rxdocDATA install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-aminfo \
maintainer-clean-generic mostlyclean mostlyclean-aminfo \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am recheck tags tags-am uninstall \
uninstall-am uninstall-dtbDATA uninstall-dvi-am \
uninstall-erc32docDATA uninstall-html-am uninstall-info-am \
uninstall-local uninstall-or1kdocDATA uninstall-pdf-am \
uninstall-pkgincludeHEADERS uninstall-ppcdocDATA \
uninstall-rxdocDATA
uninstall-ps-am uninstall-rxdocDATA
.PRECIOUS: Makefile
@@ -4967,6 +5239,21 @@ common/version.c-stamp: $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h $(src
touch $@
.PRECIOUS: %/stamp-modules
doc/simver.texi: doc/simver.texi-stamp ; @true
doc/simver.texi-stamp: $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h doc/create-version.sh
$(AM_V_at)$(MKDIR_P) doc
$(AM_V_GEN)$(SHELL) $(srcdir)/doc/create-version.sh $(srcroot)/gdb $@.tmp \
"$(PACKAGE_URL)" "$(REPORT_BUGS_TEXI)"
$(AM_V_at)$(SHELL) $(srcroot)/move-if-change $@.tmp $(@:-stamp=)
$(AM_V_at)touch $@
$(HTMLS): doc/sim.css
html-local: doc/sim/index.html
doc/sim/index.html: $(TEXINFO_TEX) $(doc_sim_TEXINFOS) doc/sim.css
$(AM_V_MAKEINFO)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \
--output=doc/sim --split=node -I$(srcdir) $<
# Alias for developers.
igen: $(IGEN)

View File

@@ -1,27 +0,0 @@
This directory contains the standard release of the ARMulator from
Advanced RISC Machines, and was ftp'd from.
ftp.cl.cam.ac.uk:/arm/gnu
It likes to use TCP/IP between the simulator and the host, which is
nice, but is a pain to use under anything non-unix.
I've added created a new Makefile.in (the original in Makefile.orig)
to build a version of the simulator without the TCP/IP stuff, and a
wrapper.c to link directly into gdb and the run command.
It should be possible (barring major changes in the layout of
the armulator) to upgrade the simulator by copying all the files
out of a release into this directory and renaming the Makefile.
(Except that I changed armos.c to work more simply with our
simulator rigs)
Steve
sac@cygnus.com
Mon May 15 12:03:28 PDT 1995

View File

@@ -47,6 +47,3 @@ noinst_LIBRARIES += %D%/libsim.a
$(SIM_COMMON_LIBS)
noinst_PROGRAMS += %D%/run
%C%docdir = $(docdir)/%C%
%C%doc_DATA = %D%/README

View File

@@ -550,30 +550,7 @@ cfi_add_erase_region (struct hw *me, struct cfi *cfi,
cfi->query.num_erase_regions = num_regions + 1;
}
/* Device tree options:
Required:
.../reg <addr> <len>
.../cmdset <primary; integer> [alt; integer]
Optional:
.../size <device size (must be pow of 2)>
.../width <8|16|32>
.../write_size <integer (must be pow of 2)>
.../erase_regions <number blocks> <block size> \
[<number blocks> <block size> ...]
.../voltage <vcc min> <vcc max> <vpp min> <vpp max>
.../timeouts <typ unit write> <typ buf write> \
<typ block erase> <typ chip erase> \
<max unit write> <max buf write> \
<max block erase> <max chip erase>
.../file <file> [ro|rw]
Defaults:
size: <len> from "reg"
width: 8
write_size: 0 (not supported)
erase_region: 1 (can only erase whole chip)
voltage: 0.0V (for all)
timeouts: typ: 1µs, not supported, 1ms, not supported
max: 1µs, 1ms, 1ms, not supported
/* Process the device tree options.
TODO: Verify user args are valid (e.g. voltage is 8 bits). */
static void

View File

@@ -25,28 +25,6 @@
#include "sim-main.h"
#include "hw-main.h"
/* DEVICE
core - root of the device tree
DESCRIPTION
The core device, positioned at the root of the device tree appears
to its child devices as a normal device just like every other
device in the tree.
Internally it is implemented using a core object. Requests to
attach (or detach) address spaces are passed to that core object.
Requests to transfer (DMA) data are reflected back down the device
tree using the core_map data transfer methods.
PROPERTIES
None.
*/
static void
dv_core_attach_address_callback (struct hw *me,
int level,

View File

@@ -26,129 +26,6 @@
#include "hw-main.h"
/* DEVICE
glue - glue to interconnect and test hardware ports
DESCRIPTION
The glue device provides two functions. Firstly, it provides a
mechanism for inspecting and driving the port network. Secondly,
it provides a set of boolean primitives that can be used to apply
combinatorial operations to the port network.
Glue devices have a variable number of big endian <<output>>
registers. Each register is target-word sized. The registers can
be read and written.
Writing to an output register results in an event being driven
(level determined by the value written) on the devices
corresponding output port.
Reading an <<output>> register returns either the last value
written or the most recently computed value (for that register) as
a result of an event ariving on that port (which ever was computed
last).
At present the following sub device types are available:
<<glue>>: In addition to driving its output interrupt port with any
value written to an interrupt input port is stored in the
corresponding <<output>> register. Such input interrupts, however,
are not propogated to an output interrupt port.
<<glue-and>>: The bit-wise AND of the interrupt inputs is computed
and then both stored in <<output>> register zero and propogated to
output interrupt output port zero.
PROPERTIES
reg = <address> <size> (required)
Specify the address (within the parent bus) that this device is to
live. The address must be 2048 * sizeof (word) (8k in a 32bit
simulation) aligned.
interrupt-ranges = <int-number> <range> (optional)
If present, this specifies the number of valid interrupt inputs (up
to the maximum of 2048). By default, <<int-number>> is zero and
range is determined by the <<reg>> size.
PORTS
int[0..] (input, output)
Both an input and an output port.
EXAMPLES
Enable tracing of the device:
| -t glue-device \
Create source, bitwize-and, and sink glue devices. Since the
device at address <<0x10000>> is of size <<8>> it will have two
output interrupt ports.
| -o '/iobus@0xf0000000/glue@0x10000/reg 0x10000 8' \
| -o '/iobus@0xf0000000/glue-and@0x20000/reg 0x20000 4' \
| -o '/iobus@0xf0000000/glue-and/interrupt-ranges 0 2' \
| -o '/iobus@0xf0000000/glue@0x30000/reg 0x30000 4' \
Wire the two source interrupts to the AND device:
| -o '/iobus@0xf0000000/glue@0x10000 > 0 0 /iobus/glue-and' \
| -o '/iobus@0xf0000000/glue@0x10000 > 1 1 /iobus/glue-and' \
Wire the AND device up to the sink so that the and's output is not
left open.
| -o '/iobus@0xf0000000/glue-and > 0 0 /iobus/glue@0x30000' \
With the above configuration. The client program is able to
compute a two bit AND. For instance the <<C>> stub below prints 1
AND 0.
| unsigned *input = (void*)0xf0010000;
| unsigned *output = (void*)0xf0030000;
| unsigned ans;
| input[0] = htonl(1);
| input[1] = htonl(0);
| ans = ntohl(*output);
| write_string("AND is ");
| write_int(ans);
| write_line();
BUGS
A future implementation of this device may support multiple
interrupt ranges.
Some of the devices listed may not yet be fully implemented.
Additional devices such as a D flip-flop (DFF), an inverter (INV)
or a latch (LAT) may prove useful.
*/
enum
{
max_nr_ports = 2048,

View File

@@ -34,127 +34,6 @@
its immediate domain */
#include "hw-tree.h"
/* DEVICE
pal - glue logic device containing assorted junk
DESCRIPTION
Typical hardware dependant hack. This device allows the firmware
to gain access to all the things the firmware needs (but the OS
doesn't).
The pal contains the following registers:
|0 reset register (write, 8bit)
|4 processor id register (read, 8bit)
|8 interrupt register (8 - port, 9 - level) (write, 16bit)
|12 processor count register (read, 8bit)
|16 tty input fifo register (read, 8bit)
|20 tty input status register (read, 8bit)
|24 tty output fifo register (write, 8bit)
|28 tty output status register (read, 8bit)
|32 countdown register (read/write, 32bit, big-endian)
|36 countdown value register (read, 32bit, big-endian)
|40 timer register (read/write, 32bit, big-endian)
|44 timer value register (read, 32bit, big-endian)
RESET (write): halts the simulator. The value written to the
register is used as an exit status.
PROCESSOR ID (read): returns the processor identifier (0 .. N-1) of
the processor performing the read.
INTERRUPT (write): This register must be written using a two byte
store. The low byte specifies a port and the upper byte specifies
the a level. LEVEL is driven on the specified port. By
convention, the pal's interrupt ports (int0, int1, ...) are wired
up to the corresponding processor's level sensative external
interrupt pin. Eg: A two byte write to address 8 of 0x0102
(big-endian) will result in processor 2's external interrupt pin
being asserted.
PROCESSOR COUNT (read): returns the total number of processors
active in the current simulation.
TTY INPUT FIFO (read): if the TTY input status register indicates a
character is available by being nonzero, returns the next available
character from the pal's tty input port.
TTY OUTPUT FIFO (write): if the TTY output status register
indicates the output fifo is not full by being nonzero, outputs the
character written to the tty's output port.
COUNDOWN (read/write): The countdown registers provide a
non-repeating timed interrupt source. Writing a 32 bit big-endian
zero value to this register clears the countdown timer. Writing a
non-zero 32 bit big-endian value to this register sets the
countdown timer to expire in VALUE ticks (ticks is target
dependant). Reading the countdown register returns the last value
writen.
COUNTDOWN VALUE (read): Reading this 32 bit big-endian register
returns the number of ticks remaining until the countdown timer
expires.
TIMER (read/write): The timer registers provide a periodic timed
interrupt source. Writing a 32 bit big-endian zero value to this
register clears the periodic timer. Writing a 32 bit non-zero
value to this register sets the periodic timer to triger every
VALUE ticks (ticks is target dependant). Reading the timer
register returns the last value written.
TIMER VALUE (read): Reading this 32 bit big-endian register returns
the number of ticks until the next periodic interrupt.
PROPERTIES
reg = <address> <size> (required)
Specify the address (within the parent bus) that this device is to
be located.
poll? = <boolean>
If present and true, indicates that the device should poll its
input.
PORTS
int[0..NR_PROCESSORS] (output)
Driven as a result of a write to the interrupt-port /
interrupt-level register pair.
countdown
Driven whenever the countdown counter reaches zero.
timer
Driven whenever the timer counter reaches zero.
BUGS
At present the common simulator framework does not support input
polling.
*/
enum {
hw_pal_reset_register = 0x0,
hw_pal_cpu_nr_register = 0x4,

View File

@@ -118,6 +118,27 @@ def gentvals(output_dir: Path,
syms = extract_syms(cpp, srcdir, headers, pattern, filter)
# Update the manual.
sortable = srctype not in {'open'}
manual = output_dir.parent / 'doc' / f'abi-newlib-{srctype}.texi'
with manual.open('w') as fp:
fp.write(f'@c This file is machine generated by {PROG}.\n\n')
if sortable:
fp.write('@subsection Sorted by name\n')
fp.write('@multitable @columnfractions .2 .2\n')
for sym, val in sorted(syms.items()):
fp.write(f'@item @code{{{sym}}}\n@tab @code{{{val}}}\n')
fp.write('@end multitable\n')
if sortable:
fp.write('\n')
fp.write('@subsection Sorted by value\n')
fp.write('@multitable @columnfractions .2 .2\n')
for sym, val in sorted(syms.items(), key=lambda x: (int(x[1], base=0), x[0])):
fp.write(f'@item @code{{{sym}}}\n@tab @code{{{val}}}\n')
fp.write('@end multitable\n')
target_map = output_dir / f'target-newlib-{srctype}.c'
assert target_map.exists(), f'{target_map}: Missing skeleton'
old_lines = target_map.read_text().splitlines()

View File

@@ -134,7 +134,7 @@ get_path (host_callback *cb, CB_SYSCALL *sc, TADDR addr, char **bufp)
CB_RC
cb_syscall (host_callback *cb, CB_SYSCALL *sc)
{
TWORD result = 0, errcode = 0;
TWORD result = 0, result2 = 0, errcode = 0;
if (sc->magic != CB_SYSCALL_MAGIC)
abort ();
@@ -266,7 +266,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
goto einval;
result = argc;
sc->result2 = envc;
result2 = envc;
break;
efault:
@@ -654,6 +654,8 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
here down. */
time_t t = (*cb->time) (cb);
result = t;
if (cb->target_sizeof_int == 32)
result2 = (uint64_t)t >> 32;
/* It is up to target code to process the argument to time(). */
}
break;
@@ -671,6 +673,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
FinishSyscall:
sc->result = result;
sc->result2 = result2;
if (errcode == 0)
sc->errcode = 0;
else
@@ -679,6 +682,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
ErrorFinish:
sc->result = result;
sc->result2 = result2;
sc->errcode = (*cb->get_errno) (cb);
return CB_RC_OK;
}

View File

@@ -0,0 +1,505 @@
@c This file is machine generated by gennltvals.py.
@subsection Sorted by name
@multitable @columnfractions .2 .2
@item @code{E2BIG}
@tab @code{7}
@item @code{EACCES}
@tab @code{13}
@item @code{EADDRINUSE}
@tab @code{112}
@item @code{EADDRNOTAVAIL}
@tab @code{125}
@item @code{EADV}
@tab @code{68}
@item @code{EAFNOSUPPORT}
@tab @code{106}
@item @code{EAGAIN}
@tab @code{11}
@item @code{EALREADY}
@tab @code{120}
@item @code{EBADE}
@tab @code{50}
@item @code{EBADF}
@tab @code{9}
@item @code{EBADFD}
@tab @code{81}
@item @code{EBADMSG}
@tab @code{77}
@item @code{EBADR}
@tab @code{51}
@item @code{EBADRQC}
@tab @code{54}
@item @code{EBADSLT}
@tab @code{55}
@item @code{EBFONT}
@tab @code{57}
@item @code{EBUSY}
@tab @code{16}
@item @code{ECANCELED}
@tab @code{140}
@item @code{ECHILD}
@tab @code{10}
@item @code{ECHRNG}
@tab @code{37}
@item @code{ECOMM}
@tab @code{70}
@item @code{ECONNABORTED}
@tab @code{113}
@item @code{ECONNREFUSED}
@tab @code{111}
@item @code{ECONNRESET}
@tab @code{104}
@item @code{EDEADLK}
@tab @code{45}
@item @code{EDEADLOCK}
@tab @code{56}
@item @code{EDESTADDRREQ}
@tab @code{121}
@item @code{EDOM}
@tab @code{33}
@item @code{EDOTDOT}
@tab @code{76}
@item @code{EDQUOT}
@tab @code{132}
@item @code{EEXIST}
@tab @code{17}
@item @code{EFAULT}
@tab @code{14}
@item @code{EFBIG}
@tab @code{27}
@item @code{EFTYPE}
@tab @code{79}
@item @code{EHOSTDOWN}
@tab @code{117}
@item @code{EHOSTUNREACH}
@tab @code{118}
@item @code{EIDRM}
@tab @code{36}
@item @code{EILSEQ}
@tab @code{138}
@item @code{EINPROGRESS}
@tab @code{119}
@item @code{EINTR}
@tab @code{4}
@item @code{EINVAL}
@tab @code{22}
@item @code{EIO}
@tab @code{5}
@item @code{EISCONN}
@tab @code{127}
@item @code{EISDIR}
@tab @code{21}
@item @code{EL2HLT}
@tab @code{44}
@item @code{EL2NSYNC}
@tab @code{38}
@item @code{EL3HLT}
@tab @code{39}
@item @code{EL3RST}
@tab @code{40}
@item @code{ELBIN}
@tab @code{75}
@item @code{ELIBACC}
@tab @code{83}
@item @code{ELIBBAD}
@tab @code{84}
@item @code{ELIBEXEC}
@tab @code{87}
@item @code{ELIBMAX}
@tab @code{86}
@item @code{ELIBSCN}
@tab @code{85}
@item @code{ELNRNG}
@tab @code{41}
@item @code{ELOOP}
@tab @code{92}
@item @code{EMFILE}
@tab @code{24}
@item @code{EMLINK}
@tab @code{31}
@item @code{EMSGSIZE}
@tab @code{122}
@item @code{EMULTIHOP}
@tab @code{74}
@item @code{ENAMETOOLONG}
@tab @code{91}
@item @code{ENETDOWN}
@tab @code{115}
@item @code{ENETRESET}
@tab @code{126}
@item @code{ENETUNREACH}
@tab @code{114}
@item @code{ENFILE}
@tab @code{23}
@item @code{ENOANO}
@tab @code{53}
@item @code{ENOBUFS}
@tab @code{105}
@item @code{ENOCSI}
@tab @code{43}
@item @code{ENODATA}
@tab @code{61}
@item @code{ENODEV}
@tab @code{19}
@item @code{ENOENT}
@tab @code{2}
@item @code{ENOEXEC}
@tab @code{8}
@item @code{ENOLCK}
@tab @code{46}
@item @code{ENOLINK}
@tab @code{67}
@item @code{ENOMEDIUM}
@tab @code{135}
@item @code{ENOMEM}
@tab @code{12}
@item @code{ENOMSG}
@tab @code{35}
@item @code{ENONET}
@tab @code{64}
@item @code{ENOPKG}
@tab @code{65}
@item @code{ENOPROTOOPT}
@tab @code{109}
@item @code{ENOSPC}
@tab @code{28}
@item @code{ENOSR}
@tab @code{63}
@item @code{ENOSTR}
@tab @code{60}
@item @code{ENOSYS}
@tab @code{88}
@item @code{ENOTBLK}
@tab @code{15}
@item @code{ENOTCONN}
@tab @code{128}
@item @code{ENOTDIR}
@tab @code{20}
@item @code{ENOTEMPTY}
@tab @code{90}
@item @code{ENOTRECOVERABLE}
@tab @code{141}
@item @code{ENOTSOCK}
@tab @code{108}
@item @code{ENOTSUP}
@tab @code{134}
@item @code{ENOTTY}
@tab @code{25}
@item @code{ENOTUNIQ}
@tab @code{80}
@item @code{ENXIO}
@tab @code{6}
@item @code{EOPNOTSUPP}
@tab @code{95}
@item @code{EOVERFLOW}
@tab @code{139}
@item @code{EOWNERDEAD}
@tab @code{142}
@item @code{EPERM}
@tab @code{1}
@item @code{EPFNOSUPPORT}
@tab @code{96}
@item @code{EPIPE}
@tab @code{32}
@item @code{EPROCLIM}
@tab @code{130}
@item @code{EPROTO}
@tab @code{71}
@item @code{EPROTONOSUPPORT}
@tab @code{123}
@item @code{EPROTOTYPE}
@tab @code{107}
@item @code{ERANGE}
@tab @code{34}
@item @code{EREMCHG}
@tab @code{82}
@item @code{EREMOTE}
@tab @code{66}
@item @code{EROFS}
@tab @code{30}
@item @code{ESHUTDOWN}
@tab @code{110}
@item @code{ESOCKTNOSUPPORT}
@tab @code{124}
@item @code{ESPIPE}
@tab @code{29}
@item @code{ESRCH}
@tab @code{3}
@item @code{ESRMNT}
@tab @code{69}
@item @code{ESTALE}
@tab @code{133}
@item @code{ESTRPIPE}
@tab @code{143}
@item @code{ETIME}
@tab @code{62}
@item @code{ETIMEDOUT}
@tab @code{116}
@item @code{ETOOMANYREFS}
@tab @code{129}
@item @code{ETXTBSY}
@tab @code{26}
@item @code{EUNATCH}
@tab @code{42}
@item @code{EUSERS}
@tab @code{131}
@item @code{EWOULDBLOCK}
@tab @code{11}
@item @code{EXDEV}
@tab @code{18}
@item @code{EXFULL}
@tab @code{52}
@end multitable
@subsection Sorted by value
@multitable @columnfractions .2 .2
@item @code{EPERM}
@tab @code{1}
@item @code{ENOENT}
@tab @code{2}
@item @code{ESRCH}
@tab @code{3}
@item @code{EINTR}
@tab @code{4}
@item @code{EIO}
@tab @code{5}
@item @code{ENXIO}
@tab @code{6}
@item @code{E2BIG}
@tab @code{7}
@item @code{ENOEXEC}
@tab @code{8}
@item @code{EBADF}
@tab @code{9}
@item @code{ECHILD}
@tab @code{10}
@item @code{EAGAIN}
@tab @code{11}
@item @code{EWOULDBLOCK}
@tab @code{11}
@item @code{ENOMEM}
@tab @code{12}
@item @code{EACCES}
@tab @code{13}
@item @code{EFAULT}
@tab @code{14}
@item @code{ENOTBLK}
@tab @code{15}
@item @code{EBUSY}
@tab @code{16}
@item @code{EEXIST}
@tab @code{17}
@item @code{EXDEV}
@tab @code{18}
@item @code{ENODEV}
@tab @code{19}
@item @code{ENOTDIR}
@tab @code{20}
@item @code{EISDIR}
@tab @code{21}
@item @code{EINVAL}
@tab @code{22}
@item @code{ENFILE}
@tab @code{23}
@item @code{EMFILE}
@tab @code{24}
@item @code{ENOTTY}
@tab @code{25}
@item @code{ETXTBSY}
@tab @code{26}
@item @code{EFBIG}
@tab @code{27}
@item @code{ENOSPC}
@tab @code{28}
@item @code{ESPIPE}
@tab @code{29}
@item @code{EROFS}
@tab @code{30}
@item @code{EMLINK}
@tab @code{31}
@item @code{EPIPE}
@tab @code{32}
@item @code{EDOM}
@tab @code{33}
@item @code{ERANGE}
@tab @code{34}
@item @code{ENOMSG}
@tab @code{35}
@item @code{EIDRM}
@tab @code{36}
@item @code{ECHRNG}
@tab @code{37}
@item @code{EL2NSYNC}
@tab @code{38}
@item @code{EL3HLT}
@tab @code{39}
@item @code{EL3RST}
@tab @code{40}
@item @code{ELNRNG}
@tab @code{41}
@item @code{EUNATCH}
@tab @code{42}
@item @code{ENOCSI}
@tab @code{43}
@item @code{EL2HLT}
@tab @code{44}
@item @code{EDEADLK}
@tab @code{45}
@item @code{ENOLCK}
@tab @code{46}
@item @code{EBADE}
@tab @code{50}
@item @code{EBADR}
@tab @code{51}
@item @code{EXFULL}
@tab @code{52}
@item @code{ENOANO}
@tab @code{53}
@item @code{EBADRQC}
@tab @code{54}
@item @code{EBADSLT}
@tab @code{55}
@item @code{EDEADLOCK}
@tab @code{56}
@item @code{EBFONT}
@tab @code{57}
@item @code{ENOSTR}
@tab @code{60}
@item @code{ENODATA}
@tab @code{61}
@item @code{ETIME}
@tab @code{62}
@item @code{ENOSR}
@tab @code{63}
@item @code{ENONET}
@tab @code{64}
@item @code{ENOPKG}
@tab @code{65}
@item @code{EREMOTE}
@tab @code{66}
@item @code{ENOLINK}
@tab @code{67}
@item @code{EADV}
@tab @code{68}
@item @code{ESRMNT}
@tab @code{69}
@item @code{ECOMM}
@tab @code{70}
@item @code{EPROTO}
@tab @code{71}
@item @code{EMULTIHOP}
@tab @code{74}
@item @code{ELBIN}
@tab @code{75}
@item @code{EDOTDOT}
@tab @code{76}
@item @code{EBADMSG}
@tab @code{77}
@item @code{EFTYPE}
@tab @code{79}
@item @code{ENOTUNIQ}
@tab @code{80}
@item @code{EBADFD}
@tab @code{81}
@item @code{EREMCHG}
@tab @code{82}
@item @code{ELIBACC}
@tab @code{83}
@item @code{ELIBBAD}
@tab @code{84}
@item @code{ELIBSCN}
@tab @code{85}
@item @code{ELIBMAX}
@tab @code{86}
@item @code{ELIBEXEC}
@tab @code{87}
@item @code{ENOSYS}
@tab @code{88}
@item @code{ENOTEMPTY}
@tab @code{90}
@item @code{ENAMETOOLONG}
@tab @code{91}
@item @code{ELOOP}
@tab @code{92}
@item @code{EOPNOTSUPP}
@tab @code{95}
@item @code{EPFNOSUPPORT}
@tab @code{96}
@item @code{ECONNRESET}
@tab @code{104}
@item @code{ENOBUFS}
@tab @code{105}
@item @code{EAFNOSUPPORT}
@tab @code{106}
@item @code{EPROTOTYPE}
@tab @code{107}
@item @code{ENOTSOCK}
@tab @code{108}
@item @code{ENOPROTOOPT}
@tab @code{109}
@item @code{ESHUTDOWN}
@tab @code{110}
@item @code{ECONNREFUSED}
@tab @code{111}
@item @code{EADDRINUSE}
@tab @code{112}
@item @code{ECONNABORTED}
@tab @code{113}
@item @code{ENETUNREACH}
@tab @code{114}
@item @code{ENETDOWN}
@tab @code{115}
@item @code{ETIMEDOUT}
@tab @code{116}
@item @code{EHOSTDOWN}
@tab @code{117}
@item @code{EHOSTUNREACH}
@tab @code{118}
@item @code{EINPROGRESS}
@tab @code{119}
@item @code{EALREADY}
@tab @code{120}
@item @code{EDESTADDRREQ}
@tab @code{121}
@item @code{EMSGSIZE}
@tab @code{122}
@item @code{EPROTONOSUPPORT}
@tab @code{123}
@item @code{ESOCKTNOSUPPORT}
@tab @code{124}
@item @code{EADDRNOTAVAIL}
@tab @code{125}
@item @code{ENETRESET}
@tab @code{126}
@item @code{EISCONN}
@tab @code{127}
@item @code{ENOTCONN}
@tab @code{128}
@item @code{ETOOMANYREFS}
@tab @code{129}
@item @code{EPROCLIM}
@tab @code{130}
@item @code{EUSERS}
@tab @code{131}
@item @code{EDQUOT}
@tab @code{132}
@item @code{ESTALE}
@tab @code{133}
@item @code{ENOTSUP}
@tab @code{134}
@item @code{ENOMEDIUM}
@tab @code{135}
@item @code{EILSEQ}
@tab @code{138}
@item @code{EOVERFLOW}
@tab @code{139}
@item @code{ECANCELED}
@tab @code{140}
@item @code{ENOTRECOVERABLE}
@tab @code{141}
@item @code{EOWNERDEAD}
@tab @code{142}
@item @code{ESTRPIPE}
@tab @code{143}
@end multitable

View File

@@ -0,0 +1,38 @@
@c This file is machine generated by gennltvals.py.
@multitable @columnfractions .2 .2
@item @code{O_ACCMODE}
@tab @code{(0|1|2)}
@item @code{O_APPEND}
@tab @code{0x0008}
@item @code{O_CLOEXEC}
@tab @code{0x40000}
@item @code{O_CREAT}
@tab @code{0x0200}
@item @code{O_DIRECT}
@tab @code{0x80000}
@item @code{O_DIRECTORY}
@tab @code{0x200000}
@item @code{O_EXCL}
@tab @code{0x0800}
@item @code{O_EXEC}
@tab @code{0x400000}
@item @code{O_NOCTTY}
@tab @code{0x8000}
@item @code{O_NOFOLLOW}
@tab @code{0x100000}
@item @code{O_NONBLOCK}
@tab @code{0x4000}
@item @code{O_RDONLY}
@tab @code{0}
@item @code{O_RDWR}
@tab @code{2}
@item @code{O_SEARCH}
@tab @code{0x400000}
@item @code{O_SYNC}
@tab @code{0x2000}
@item @code{O_TRUNC}
@tab @code{0x0400}
@item @code{O_WRONLY}
@tab @code{1}
@end multitable

View File

@@ -0,0 +1,145 @@
@c This file is machine generated by gennltvals.py.
@subsection Sorted by name
@multitable @columnfractions .2 .2
@item @code{SIGABRT}
@tab @code{6}
@item @code{SIGALRM}
@tab @code{14}
@item @code{SIGBUS}
@tab @code{10}
@item @code{SIGCHLD}
@tab @code{20}
@item @code{SIGCLD}
@tab @code{20}
@item @code{SIGCONT}
@tab @code{19}
@item @code{SIGEMT}
@tab @code{7}
@item @code{SIGFPE}
@tab @code{8}
@item @code{SIGHUP}
@tab @code{1}
@item @code{SIGILL}
@tab @code{4}
@item @code{SIGINT}
@tab @code{2}
@item @code{SIGIO}
@tab @code{23}
@item @code{SIGIOT}
@tab @code{6}
@item @code{SIGKILL}
@tab @code{9}
@item @code{SIGLOST}
@tab @code{29}
@item @code{SIGPIPE}
@tab @code{13}
@item @code{SIGPOLL}
@tab @code{23}
@item @code{SIGPROF}
@tab @code{27}
@item @code{SIGQUIT}
@tab @code{3}
@item @code{SIGSEGV}
@tab @code{11}
@item @code{SIGSTOP}
@tab @code{17}
@item @code{SIGSYS}
@tab @code{12}
@item @code{SIGTERM}
@tab @code{15}
@item @code{SIGTRAP}
@tab @code{5}
@item @code{SIGTSTP}
@tab @code{18}
@item @code{SIGTTIN}
@tab @code{21}
@item @code{SIGTTOU}
@tab @code{22}
@item @code{SIGURG}
@tab @code{16}
@item @code{SIGUSR1}
@tab @code{30}
@item @code{SIGUSR2}
@tab @code{31}
@item @code{SIGVTALRM}
@tab @code{26}
@item @code{SIGWINCH}
@tab @code{28}
@item @code{SIGXCPU}
@tab @code{24}
@item @code{SIGXFSZ}
@tab @code{25}
@end multitable
@subsection Sorted by value
@multitable @columnfractions .2 .2
@item @code{SIGHUP}
@tab @code{1}
@item @code{SIGINT}
@tab @code{2}
@item @code{SIGQUIT}
@tab @code{3}
@item @code{SIGILL}
@tab @code{4}
@item @code{SIGTRAP}
@tab @code{5}
@item @code{SIGABRT}
@tab @code{6}
@item @code{SIGIOT}
@tab @code{6}
@item @code{SIGEMT}
@tab @code{7}
@item @code{SIGFPE}
@tab @code{8}
@item @code{SIGKILL}
@tab @code{9}
@item @code{SIGBUS}
@tab @code{10}
@item @code{SIGSEGV}
@tab @code{11}
@item @code{SIGSYS}
@tab @code{12}
@item @code{SIGPIPE}
@tab @code{13}
@item @code{SIGALRM}
@tab @code{14}
@item @code{SIGTERM}
@tab @code{15}
@item @code{SIGURG}
@tab @code{16}
@item @code{SIGSTOP}
@tab @code{17}
@item @code{SIGTSTP}
@tab @code{18}
@item @code{SIGCONT}
@tab @code{19}
@item @code{SIGCHLD}
@tab @code{20}
@item @code{SIGCLD}
@tab @code{20}
@item @code{SIGTTIN}
@tab @code{21}
@item @code{SIGTTOU}
@tab @code{22}
@item @code{SIGIO}
@tab @code{23}
@item @code{SIGPOLL}
@tab @code{23}
@item @code{SIGXCPU}
@tab @code{24}
@item @code{SIGXFSZ}
@tab @code{25}
@item @code{SIGVTALRM}
@tab @code{26}
@item @code{SIGPROF}
@tab @code{27}
@item @code{SIGWINCH}
@tab @code{28}
@item @code{SIGLOST}
@tab @code{29}
@item @code{SIGUSR1}
@tab @code{30}
@item @code{SIGUSR2}
@tab @code{31}
@end multitable

105
sim/doc/abi-newlib-sys.texi Normal file
View File

@@ -0,0 +1,105 @@
@c This file is machine generated by gennltvals.py.
@subsection Sorted by name
@multitable @columnfractions .2 .2
@item @code{SYS_argc}
@tab @code{22}
@item @code{SYS_argn}
@tab @code{24}
@item @code{SYS_argnlen}
@tab @code{23}
@item @code{SYS_argv}
@tab @code{13}
@item @code{SYS_argvlen}
@tab @code{12}
@item @code{SYS_chdir}
@tab @code{14}
@item @code{SYS_chmod}
@tab @code{16}
@item @code{SYS_close}
@tab @code{3}
@item @code{SYS_exit}
@tab @code{1}
@item @code{SYS_fstat}
@tab @code{10}
@item @code{SYS_getpid}
@tab @code{8}
@item @code{SYS_gettimeofday}
@tab @code{19}
@item @code{SYS_kill}
@tab @code{9}
@item @code{SYS_link}
@tab @code{21}
@item @code{SYS_lseek}
@tab @code{6}
@item @code{SYS_open}
@tab @code{2}
@item @code{SYS_read}
@tab @code{4}
@item @code{SYS_reconfig}
@tab @code{25}
@item @code{SYS_stat}
@tab @code{15}
@item @code{SYS_time}
@tab @code{18}
@item @code{SYS_times}
@tab @code{20}
@item @code{SYS_unlink}
@tab @code{7}
@item @code{SYS_utime}
@tab @code{17}
@item @code{SYS_write}
@tab @code{5}
@end multitable
@subsection Sorted by value
@multitable @columnfractions .2 .2
@item @code{SYS_exit}
@tab @code{1}
@item @code{SYS_open}
@tab @code{2}
@item @code{SYS_close}
@tab @code{3}
@item @code{SYS_read}
@tab @code{4}
@item @code{SYS_write}
@tab @code{5}
@item @code{SYS_lseek}
@tab @code{6}
@item @code{SYS_unlink}
@tab @code{7}
@item @code{SYS_getpid}
@tab @code{8}
@item @code{SYS_kill}
@tab @code{9}
@item @code{SYS_fstat}
@tab @code{10}
@item @code{SYS_argvlen}
@tab @code{12}
@item @code{SYS_argv}
@tab @code{13}
@item @code{SYS_chdir}
@tab @code{14}
@item @code{SYS_stat}
@tab @code{15}
@item @code{SYS_chmod}
@tab @code{16}
@item @code{SYS_utime}
@tab @code{17}
@item @code{SYS_time}
@tab @code{18}
@item @code{SYS_gettimeofday}
@tab @code{19}
@item @code{SYS_times}
@tab @code{20}
@item @code{SYS_link}
@tab @code{21}
@item @code{SYS_argc}
@tab @code{22}
@item @code{SYS_argnlen}
@tab @code{23}
@item @code{SYS_argn}
@tab @code{24}
@item @code{SYS_reconfig}
@tab @code{25}
@end multitable

28
sim/doc/arch-aarch64.texi Normal file
View File

@@ -0,0 +1,28 @@
@node AArch64
@chapter AArch64
Arm Ltd's 64-bit ARM64 RISC architecture.
@node AArch64 Environment Support
@section Environment Support
Only the virtual environment is supported.
@node AArch64 Virtual Environment Syscall ABI
@subsection Virtual Environment Syscall ABI
The syscall ABI, as used by the RDI (Angel) monitor and @value{libgloss} in the
virtual environment, uses the interface defined in the following table.
@multitable @columnfractions .2 .3 .5
@headitem Field @tab Assembly/Register @tab Description
@item instruction
@tab @center @code{hlt #0xf000;}
@tab The assembly instruction to invoke the syscall handler.
@item (in) syscall NR
@tab @center @code{w0}
@tab The system call number to select which function to run.
@item (in) parameters
@tab @center @code{x1}
@tab Pointer to the syscall argument array (64-bit elements).
@item (out) return & error
@tab @center @code{x0}
@tab The return value (most commonly used).
@end multitable

53
sim/doc/arch-arm.texi Normal file
View File

@@ -0,0 +1,53 @@
@node ARM
@chapter ARM
Arm Ltd's 32-bit ARM RISC architecture.
Forked from the venerable ARMulator project.
@node ARM ISA Support
@section ISA Support
ARM6, ARM7, ARM32, and Thumb are supported.
@node ARM Environment Support
@section Environment Support
Only the virtual environment is supported.
@node ARM Virtual Environment Syscall ABI
@subsection Virtual Environment Syscall ABI
The syscall ABI, as used by @url{https://sourceware.org/redboot/,RedBoot} and
@value{libgloss} in the virtual environment, uses the interface defined in the
following table.
@c There is also support for syscall NR in the SWI number instead of R0, but
@c documenting just this one interface seems easiest.
@c The thumb "swi 0x18" does not appear to be implemented currently.
@multitable @columnfractions .2 .3 .5
@headitem Field @tab Assembly/Register @tab Description
@item instruction
@tab @center @code{swi 0x180001;}
@tab The assembly instruction to invoke the syscall handler.
@item (in) syscall NR
@tab @center @code{R0}
@tab The system call number to select which function to run.
@item (in) arg 1
@tab @center @code{R1}
@tab The first syscall argument.
@item (in) arg 2
@tab @center @code{R2}
@tab The second syscall argument.
@item (in) arg 3
@tab @center @code{R3}
@tab The third syscall argument.
@item (in) arg 4
@tab @center @code{R4}
@tab The fourth syscall argument.
@item (in) arg 5
@tab @center @code{R5}
@tab The fifth syscall argument.
@item (in) arg 6
@tab @center @code{R6}
@tab The sixth syscall argument.
@item (out) return & error
@tab @center @code{R0}
@tab The return value (most commonly used).
@end multitable

7
sim/doc/arch-avr.texi Normal file
View File

@@ -0,0 +1,7 @@
@node AVR
@chapter AVR
Atmel's AVR 8-bit processors.
@node AVR Environment Support
@section Environment Support
Only the virtual environment is supported.

1166
sim/doc/arch-bfin.texi Normal file

File diff suppressed because it is too large Load Diff

7
sim/doc/arch-bpf.texi Normal file
View File

@@ -0,0 +1,7 @@
@node BPF
@chapter BPF
The @abbr{eBPF,extended Berkeley Packet Filter} virtual machine.
@node BPF Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-cr16.texi Normal file
View File

@@ -0,0 +1,7 @@
@node CR16
@chapter CR16
National Semiconductor's CompactRISC processor.
@node CR16 Environment Support
@section Environment Support
Only the virtual environment is supported.

25
sim/doc/arch-cris.texi Normal file
View File

@@ -0,0 +1,25 @@
@node CRIS
@chapter CRIS
Axis Communications' CRIS (Code Reduced Instruction Set) processors.
@node CRIS ISA Support
@section ISA Support
Currently ETRAX 100 LX (v10) and ETRAX FS (v32) are supported.
@node CRIS Environment Support
@section Environment Support
Only the virtual environment is supported.
@c TODO what about linux?
@node CRIS Device Models
@section Device Models
@node dv-cris_900000xx
@subsection cris_900000xx
@node dv-cris
@subsection cris
@node dv-rv
@subsection rv

7
sim/doc/arch-d10v.texi Normal file
View File

@@ -0,0 +1,7 @@
@node D10V
@chapter D10V
Mitsubishi Electric's dual RISC processor.
@node D10V Environment Support
@section Environment Support
Only the virtual environment is supported.

13
sim/doc/arch-erc32.texi Normal file
View File

@@ -0,0 +1,13 @@
@node SPARC
@chapter SPARC
Sun Microsystems' Scalable Processor Architecture (SPARC) architectures.
@node SPARC ISA Support
@section ISA Support
Currently only the ERC32 (SPARC V7) is supported.
@node SPARC Environment Support
@section Environment Support
Only the virtual environment is supported.
@c TODO is this true ?

7
sim/doc/arch-frv.texi Normal file
View File

@@ -0,0 +1,7 @@
@node FRV
@chapter FRV
Fujitsu's FR-V VLIW processor.
@node FRV Environment Support
@section Environment Support
The virtual & operating environments are supported.

7
sim/doc/arch-ft32.texi Normal file
View File

@@ -0,0 +1,7 @@
@node FT32
@chapter FT32
Future Technology Devices International (FTDI) Limited's FT32 processor.
@node FT32 Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-h8300.texi Normal file
View File

@@ -0,0 +1,7 @@
@node H8/300
@chapter H8/300
Renesas's (Hitachi's) H8 processors.
@node H8/300 Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-iq2000.texi Normal file
View File

@@ -0,0 +1,7 @@
@node IQ2000
@chapter IQ2000
Vitesse's IQ2000 @abbr{NPU,Network Processor Unit}.
@node IQ2000 Environment Support
@section Environment Support
Only the virtual environment is supported.

19
sim/doc/arch-lm32.texi Normal file
View File

@@ -0,0 +1,19 @@
@node LM32
@chapter LM32
Lattice Semiconductor's LatticeMico32 soft core for FPGAs.
@node LM32 Environment Support
@section Environment Support
The virtual & operating environments are supported.
@node LM32 Device Models
@section Device Models
@node lm32cpu
@subsection lm32cpu
@node lm32timer
@subsection lm32timer
@node lm32uart
@subsection lm32uart

7
sim/doc/arch-m32c.texi Normal file
View File

@@ -0,0 +1,7 @@
@node M32C
@chapter M32C
Renesas's M16C & M32C proessors.
@node M32C Environment Support
@section Environment Support
Only the virtual environment is supported.

16
sim/doc/arch-m32r.texi Normal file
View File

@@ -0,0 +1,16 @@
@node M32R
@chapter M32R
Mitsubishi Electric's M32R RISC architecture.
@node M32R Environment Support
@section Environment Support
All environments are supported: virtual, user, operating.
@node M32R Device Models
@section Device Models
@node m32r_cache
@subsection m32r_cache
@node m32r_uart
@subsection m32r_uart

43
sim/doc/arch-m68hc11.texi Normal file
View File

@@ -0,0 +1,43 @@
@node M68HC11
@chapter M68HC11
Motorola's 68HC11 8-bit microcontroller.
@node M68HC11 Environment Support
@section Environment Support
Only the virtual environment is supported.
@node M68HC11 Device Models
@section Device Models
@node dv-m68hc11
@subsection m68hc11
@node dv-m68hc12
@subsection m68hc12
@node dv-m68hc11eepr
@subsection m68hc11eepr
@node dv-m68hc12eepr
@subsection m68hc12eepr
@node dv-m68hc11sio
@subsection m68hc11sio
@node dv-m68hc12sio
@subsection m68hc12sio
@node dv-m68hc11spi
@subsection m68hc11spi
@node dv-m68hc12spi
@subsection m68hc12spi
@node dv-m68hc11tim
@subsection m68hc11tim
@node dv-m68hc12tim
@subsection m68hc12tim
@node dv-nvram
@subsection nvram

7
sim/doc/arch-mcore.texi Normal file
View File

@@ -0,0 +1,7 @@
@node MCORE
@chapter MCORE
Motorola's microRISC M·CORE architecture.
@node MCORE Environment Support
@section Environment Support
Only the virtual environment is supported.

View File

@@ -0,0 +1,7 @@
@node MicroBlaze
@chapter MicroBlaze
Xilinx's MicroBlaze soft core for FPGAs.
@node MicroBlaze Environment Support
@section Environment Support
Only the virtual environment is supported.

22
sim/doc/arch-mips.texi Normal file
View File

@@ -0,0 +1,22 @@
@node MIPS
@chapter MIPS
MIPS Technologies's MIPS architecture.
@node MIPS Environment Support
@section Environment Support
The virtual & operating environments are supported.
@node MIPS Device Models
@section Device Models
@node dv-tx3904cpu
@subsection tx3904cpu
@node dv-tx3904irc
@subsection tx3904irc
@node dv-tx3904sio
@subsection tx3904sio
@node dv-tx3904tmr
@subsection tx3904tmr

25
sim/doc/arch-mn10300.texi Normal file
View File

@@ -0,0 +1,25 @@
@node MN10300
@chapter MN10300
Matsushita Electric's MN103 32-bit microprocessors.
@node MN10300 Environment Support
@section Environment Support
The virtual & operating environments are supported.
@node MN10300 Device Models
@section Device Models
@node mn103cpu
@subsection mn103cpu
@node mn103int
@subsection mn103int
@node mn103iop
@subsection mn103iop
@node mn103ser
@subsection mn103ser
@node mn103tim
@subsection mn103tim

7
sim/doc/arch-moxie.texi Normal file
View File

@@ -0,0 +1,7 @@
@node Moxie
@chapter Moxie
Anthony Green's open source embedded soft-core processor.
@node Moxie Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-msp430.texi Normal file
View File

@@ -0,0 +1,7 @@
@node MSP30
@chapter MSP30
Texas Instruments' 16-bit mixed-signal microcontrollers.
@node MSP30 Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-or1k.texi Normal file
View File

@@ -0,0 +1,7 @@
@node OpenRISC
@chapter OpenRISC
OpenCores' OpenRISC architecture.
@node OpenRISC Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-ppc.texi Normal file
View File

@@ -0,0 +1,7 @@
@node PowerPC
@chapter PowerPC
IBM's PowerPC architecture.
@node PowerPC Environment Support
@section Environment Support
All environments are fully supported: virtual, user, operating.

7
sim/doc/arch-pru.texi Normal file
View File

@@ -0,0 +1,7 @@
@node PRU
@chapter PRU
Texas Instruments' Programmable Real-time Unit processor.
@node PRU Environment Support
@section Environment Support
Only the virtual environment is supported.

51
sim/doc/arch-riscv.texi Normal file
View File

@@ -0,0 +1,51 @@
@node RISC-V
@chapter RISC-V
RISC-V Foundation's RISC-V architecture.
@node RISC-V ISA Support
@section ISA Support
The RV32I, RV32E, RV64I, and RV64E bases are supported.
The A, M, Zicsr, and Zifencei extensions are supported.
The F and D extensions are planned but not yet supported.
@node RISC-V Environment Support
@section Environment Support
Only the virtual environment is supported.
@node RISC-V Virtual Environment Syscall ABI
@subsection Virtual Environment Syscall ABI
The syscall ABI, as used by @value{libgloss} in the virtual environment, uses
the interface defined in the following table.
@multitable @columnfractions .2 .3 .5
@headitem Field @tab Assembly/Register @tab Description
@item instruction
@tab @center @code{ecall;}
@tab The assembly instruction to invoke the syscall handler.
@item (in) syscall NR
@tab @center @code{a7}
@tab The system call number to select which function to run.
@item (in) arg 1
@tab @center @code{a0}
@tab The first syscall argument.
@item (in) arg 2
@tab @center @code{a1}
@tab The second syscall argument.
@item (in) arg 3
@tab @center @code{a2}
@tab The third syscall argument.
@item (in) arg 4
@tab @center @code{a3}
@tab The fourth syscall argument.
@item (in) arg 5
@tab @center @code{a4}
@tab The fifth syscall argument.
@item (in) arg 6
@tab @center @code{a5}
@tab The sixth syscall argument.
@item (out) return & error
@tab @center @code{a0}
@tab The return value.
@end multitable

7
sim/doc/arch-rl78.texi Normal file
View File

@@ -0,0 +1,7 @@
@node RL78
@chapter RL78
Renesas' 16-bit RL78 MCUs.
@node RL78 Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-rx.texi Normal file
View File

@@ -0,0 +1,7 @@
@node RX
@chapter RX
Renesas' 32-bit microcontrollers.
@node RX Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-sh.texi Normal file
View File

@@ -0,0 +1,7 @@
@node SuperH
@chapter SuperH
Hitachi's SuperH architecture.
@node SuperH Environment Support
@section Environment Support
Only the virtual environment is supported.

7
sim/doc/arch-v850.texi Normal file
View File

@@ -0,0 +1,7 @@
@node V850
@chapter V850
Renesas' 32-bit RISC architecture.
@node V850 Environment Support
@section Environment Support
Only the virtual environment is supported.

37
sim/doc/create-version.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/bin/sh
# Copyright (C) 1989-2023 Free Software Foundation, Inc.
# This file is part of GDB.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Create version.c from version.in.
# Usage:
# create-version.sh PATH-TO-GDB-SRCDIR HOST_ALIAS \
# TARGET_ALIAS OUTPUT-FILE-NAME
srcdir="$1"
output="$2"
homepage="$3"
bugsto="$4"
date=`sed -n -e 's/^.* BFD_VERSION_DATE \(.*\)$/\1/p' $srcdir/../bfd/version.h`
ver=`sed -e "s/DATE/$date/;q" $srcdir/version.in`
cat <<EOF >"${output}"
@set VERSION ${ver}
@set VERSION_PACKAGE (SIM)
@set HOMEPAGE ${homepage}
@set BUGURL ${bugsto}
EOF

505
sim/doc/fdl.texi Normal file
View File

@@ -0,0 +1,505 @@
@c The GNU Free Documentation License.
@center Version 1.3, 3 November 2008
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@enumerate 0
@item
PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document @dfn{free} in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
@item
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The ``Document'', below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as ``you''. You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A ``Secondary Section'' is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not ``Transparent'' is called ``Opaque''.
Examples of suitable formats for Transparent copies include plain
@sc{ascii} without markup, Texinfo input format, La@TeX{} input
format, @acronym{SGML} or @acronym{XML} using a publicly available
@acronym{DTD}, and standard-conforming simple @acronym{HTML},
PostScript or @acronym{PDF} designed for human modification. Examples
of transparent image formats include @acronym{PNG}, @acronym{XCF} and
@acronym{JPG}. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, @acronym{SGML} or
@acronym{XML} for which the @acronym{DTD} and/or processing tools are
not generally available, and the machine-generated @acronym{HTML},
PostScript or @acronym{PDF} produced by some word processors for
output purposes only.
The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The ``publisher'' means any person or entity that distributes copies
of the Document to the public.
A section ``Entitled XYZ'' means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as ``Acknowledgements'',
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
of such a section when you modify the Document means that it remains a
section ``Entitled XYZ'' according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
@item
VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
@item
COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
@item
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
@enumerate A
@item
Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
@item
List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
@item
State on the Title page the name of the publisher of the
Modified Version, as the publisher.
@item
Preserve all the copyright notices of the Document.
@item
Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
@item
Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
@item
Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
@item
Include an unaltered copy of this License.
@item
Preserve the section Entitled ``History'', Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
@item
Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
@item
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
the Title of the section, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.
@item
Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
@item
Delete any section Entitled ``Endorsements''. Such a section
may not be included in the Modified Version.
@item
Do not retitle any existing section to be Entitled ``Endorsements'' or
to conflict in title with any Invariant Section.
@item
Preserve any Warranty Disclaimers.
@end enumerate
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties---for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
@item
COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled ``History''
in the various original documents, forming one section Entitled
``History''; likewise combine any sections Entitled ``Acknowledgements'',
and any sections Entitled ``Dedications''. You must delete all
sections Entitled ``Endorsements.''
@item
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
@item
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an ``aggregate'' if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
@item
TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled ``Acknowledgements'',
``Dedications'', or ``History'', the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
@item
TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
@item
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{http://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
@item
RELICENSING
``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
site means any set of copyrightable works thus published on the MMC
site.
``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
``Incorporate'' means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is ``eligible for relicensing'' if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
@end enumerate
@page
@heading ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
@smallexample
@group
Copyright (C) @var{year} @var{your name}.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
@end group
@end smallexample
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the ``with@dots{}Texts.'' line with this:
@smallexample
@group
with the Invariant Sections being @var{list their titles}, with
the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
being @var{list}.
@end group
@end smallexample
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:

77
sim/doc/local.mk Normal file
View File

@@ -0,0 +1,77 @@
## See sim/Makefile.am.
##
## Copyright (C) 1997-2023 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 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
TEXINFO_TEX = %D%/sim.texi
info_TEXINFOS = $(TEXINFO_TEX)
%C%_sim_TEXINFOS = \
%D%/abi-newlib-errno.texi \
%D%/abi-newlib-open.texi \
%D%/abi-newlib-signal.texi \
%D%/abi-newlib-sys.texi \
%D%/arch-aarch64.texi \
%D%/arch-arm.texi \
%D%/arch-avr.texi \
%D%/arch-bfin.texi \
%D%/arch-bpf.texi \
%D%/arch-cr16.texi \
%D%/arch-cris.texi \
%D%/arch-d10v.texi \
%D%/arch-erc32.texi \
%D%/arch-frv.texi \
%D%/arch-ft32.texi \
%D%/arch-h8300.texi \
%D%/arch-iq2000.texi \
%D%/arch-lm32.texi \
%D%/arch-m32c.texi \
%D%/arch-m32r.texi \
%D%/arch-m68hc11.texi \
%D%/arch-mcore.texi \
%D%/arch-microblaze.texi \
%D%/arch-mips.texi \
%D%/arch-mn10300.texi \
%D%/arch-moxie.texi \
%D%/arch-msp430.texi \
%D%/arch-or1k.texi \
%D%/arch-ppc.texi \
%D%/arch-pru.texi \
%D%/arch-riscv.texi \
%D%/arch-rl78.texi \
%D%/arch-rx.texi \
%D%/arch-sh.texi \
%D%/arch-v850.texi \
%D%/fdl.texi \
%D%/simver.texi
AM_MAKEINFOFLAGS = -I %D% --no-split --css-include=sim.css
TEXI2DVI = texi2dvi -I %D%
%D%/simver.texi: %D%/simver.texi-stamp ; @true
%D%/simver.texi-stamp: $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h %D%/create-version.sh
$(AM_V_at)$(MKDIR_P) %D%
$(AM_V_GEN)$(SHELL) $(srcdir)/%D%/create-version.sh $(srcroot)/gdb $@.tmp \
"$(PACKAGE_URL)" "$(REPORT_BUGS_TEXI)"
$(AM_V_at)$(SHELL) $(srcroot)/move-if-change $@.tmp $(@:-stamp=)
$(AM_V_at)touch $@
$(HTMLS): %D%/sim.css
html-local: %D%/sim/index.html
%D%/sim/index.html: $(TEXINFO_TEX) $(%C%_sim_TEXINFOS) %D%/sim.css
$(AM_V_MAKEINFO)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \
--output=%D%/sim --split=node -I$(srcdir) $<
MAINTAINERCLEANFILES += %D%/sim.info

23
sim/doc/sim.css Normal file
View File

@@ -0,0 +1,23 @@
@charset "utf-8";
@media (prefers-color-scheme: dark) {
body {
background-color: #333;
color: #FFF;
}
a:link {
color: #8CB4FF;
}
a:visited {
color: #8CB400;
}
}
/* This is ~480px with 16pt font. */
@media only screen and (max-width: 30em) {
blockquote, dd, div.display, div.example, ul {
margin-left: 1em;
}
}

2837
sim/doc/sim.texi Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +0,0 @@
= OVERVIEW =
The Synacor Challenge is a fun programming exercise with a number of puzzles
built into it. You can find more details about it here:
https://challenge.synacor.com/
The first puzzle is writing an interpreter for their custom ISA. This is a
simulator for that custom CPU. The CPU is quite basic: it's 16-bit with only
8 registers and a limited set of instructions. This means the port will never
grow new features. See README.arch-spec for more details.
Implementing it here ends up being quite useful: it acts as a simple constrained
"real world" example for people who want to implement a new simulator for their
own architecture. We demonstrate all the basic fundamentals (registers, memory,
branches, and tracing) that all ports should have.

View File

@@ -1,73 +0,0 @@
== architecture ==
- three storage regions
- memory with 15-bit address space storing 16-bit values
- eight registers
- an unbounded stack which holds individual 16-bit values
- all numbers are unsigned integers 0..32767 (15-bit)
- all math is modulo 32768; 32758 + 15 => 5
== binary format ==
- each number is stored as a 16-bit little-endian pair (low byte, high byte)
- numbers 0..32767 mean a literal value
- numbers 32768..32775 instead mean registers 0..7
- numbers 32776..65535 are invalid
- programs are loaded into memory starting at address 0
- address 0 is the first 16-bit value, address 1 is the second 16-bit value, etc
== execution ==
- After an operation is executed, the next instruction to read is immediately after the last argument of the current operation.
If a jump was performed, the next operation is instead the exact destination of the jump.
- Encountering a register as an operation argument should be taken as reading from the register or setting into the register as appropriate.
== hints ==
- Start with operations 0, 19, and 21.
- Here's a code for the challenge website: jTTockJlJiOC
- The program "9,32768,32769,4,19,32768" occupies six memory addresses and should:
- Store into register 0 the sum of 4 and the value contained in register 1.
- Output to the terminal the character with the ascii code contained in register 0.
== opcode listing ==
halt: 0
stop execution and terminate the program
set: 1 a b
set register <a> to the value of <b>
push: 2 a
push <a> onto the stack
pop: 3 a
remove the top element from the stack and write it into <a>; empty stack = error
eq: 4 a b c
set <a> to 1 if <b> is equal to <c>; set it to 0 otherwise
gt: 5 a b c
set <a> to 1 if <b> is greater than <c>; set it to 0 otherwise
jmp: 6 a
jump to <a>
jt: 7 a b
if <a> is nonzero, jump to <b>
jf: 8 a b
if <a> is zero, jump to <b>
add: 9 a b c
assign into <a> the sum of <b> and <c> (modulo 32768)
mult: 10 a b c
store into <a> the product of <b> and <c> (modulo 32768)
mod: 11 a b c
store into <a> the remainder of <b> divided by <c>
and: 12 a b c
stores into <a> the bitwise and of <b> and <c>
or: 13 a b c
stores into <a> the bitwise or of <b> and <c>
not: 14 a b
stores 15-bit bitwise inverse of <b> in <a>
rmem: 15 a b
read memory at address <b> and write it to <a>
wmem: 16 a b
write the value from <b> into memory at address <a>
call: 17 a
write the address of the next instruction to the stack and jump to <a>
ret: 18
remove the top element from the stack and jump to it; empty stack = halt
out: 19 a
write the character represented by ascii code <a> to the terminal
in: 20 a
read a character from the terminal and write its ascii code to <a>; it can be assumed that once input starts, it will continue until a newline is encountered; this means that you can safely read whole lines from the keyboard and trust that they will be fully read
noop: 21
no operation

View File

@@ -1,10 +0,0 @@
This is the frv simulator directory.
It is still work-in-progress. The current sources are
well tested and lots of features are in.
There are lots of machine generated files in the source directory!
They are only generated if you configure with --enable-cgen-maint,
similar in behaviour to Makefile.in, configure under automake/autoconf.
For details on the generator, see ../../cgen.

View File

@@ -77,9 +77,6 @@ noinst_LIBRARIES += %D%/libsim.a
noinst_PROGRAMS += %D%/run
%C%docdir = $(docdir)/%C%
%C%doc_DATA = %D%/README
## List all generated headers to help Automake dependency tracking.
BUILT_SOURCES += %D%/eng.h
%C%_BUILD_OUTPUTS = \

View File

@@ -1,14 +0,0 @@
This is the m32r simulator directory.
It is still work-in-progress. The current sources are reasonably
well tested and lots of features are in. However, there's lots
more yet to come.
There are lots of machine generated files in the source directory!
They are only generated if you configure with --enable-cgen-maint,
similar in behaviour to Makefile.in, configure under automake/autoconf.
For details on the generator, see ../../cgen.
devo/cgen isn't part of the comp-tools module yet.
You'll need to check it out manually (also akin to automake/autoconf).

View File

@@ -24,6 +24,12 @@
/* Define if struct statfs is defined in <sys/mount.h> */
#undef HAVE_STRUCT_STATFS
/* Define if System V semaphores are supported */
#undef HAVE_SYSV_SEM
/* Define if System V shared memory is supported */
#undef HAVE_SYSV_SHM
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

228
sim/ppc/configure vendored
View File

@@ -1495,48 +1495,6 @@ fi
} # ac_fn_c_try_compile
# ac_fn_c_try_run LINENO
# ----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
# that executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then :
ac_retval=0
else
$as_echo "$as_me: program exited with status $ac_status" >&5
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -1628,6 +1586,48 @@ fi
} # ac_fn_c_try_cpp
# ac_fn_c_try_run LINENO
# ----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
# that executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then :
ac_retval=0
else
$as_echo "$as_me: program exited with status $ac_status" >&5
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
@@ -3144,7 +3144,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if union semun defined" >&5
$as_echo_n "checking if union semun defined... " >&6; }
if ${ac_cv_HAS_UNION_SEMUN+:} false; then :
if ${ac_cv_has_union_semun+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3167,103 +3167,64 @@ else
ac_cv_has_union_semun="no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_has_union_semun" >&5
$as_echo "$ac_cv_has_union_semun" >&6; }
if test x"$ac_cv_has_union_semun" = x"yes"; then :
$as_echo "#define HAVE_UNION_SEMUN 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_HAS_UNION_SEMUN" >&5
$as_echo "$ac_cv_HAS_UNION_SEMUN" >&6; }
if test "$ac_cv_has_union_semun" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether System V semaphores are supported" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether System V semaphores are supported" >&5
$as_echo_n "checking whether System V semaphores are supported... " >&6; }
if ${ac_cv_sysv_sem+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
:
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int main () {
union semun arg ;
int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
if (id == -1)
exit(1);
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
exit(1);
exit(0);
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
ac_cv_sysv_sem="yes"
else
ac_cv_sysv_sem="no"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sysv_sem" >&5
$as_echo "$ac_cv_sysv_sem" >&6; }
else # semun is not defined
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether System V semaphores are supported" >&5
$as_echo_n "checking whether System V semaphores are supported... " >&6; }
if ${ac_cv_sysv_sem+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
:
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#ifndef HAVE_UNION_SEMUN
union semun {
int val;
struct semid_ds *buf;
ushort *array;
};
int main () {
union semun arg ;
#endif
int
main ()
{
int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
if (id == -1)
exit(1);
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
exit(1);
exit(0);
}
union semun arg;
int id = semget(IPC_PRIVATE, 1, IPC_CREAT|0400);
if (id == -1)
return 1;
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
return 1;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_sysv_sem="yes"
else
ac_cv_sysv_sem="no"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sysv_sem" >&5
$as_echo "$ac_cv_sysv_sem" >&6; }
if test x"$ac_cv_sysv_sem" = x"yes"; then :
$as_echo "#define HAVE_SYSV_SEM 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether System V shared memory is supported" >&5
@@ -3271,56 +3232,45 @@ $as_echo_n "checking whether System V shared memory is supported... " >&6; }
if ${ac_cv_sysv_shm+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
:
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main () {
int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
if (id == -1)
exit(1);
if (shmctl(id, IPC_RMID, 0) == -1)
exit(1);
exit(0);
}
int
main ()
{
int id = shmget(IPC_PRIVATE, 1, IPC_CREAT|0400);
if (id == -1)
return 1;
if (shmctl(id, IPC_RMID, 0) == -1)
return 1;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_sysv_shm="yes"
else
ac_cv_sysv_shm="no"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sysv_shm" >&5
$as_echo "$ac_cv_sysv_shm" >&6; }
if test x"$ac_cv_sysv_shm" = x"yes"; then :
if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
sim_sysv_ipc_hw=",sem,shm";
else
sim_sysv_ipc_hw="";
fi
$as_echo "#define HAVE_SYSV_SHM 1" >>confdefs.h
if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
$as_echo "#define HAVE_UNION_SEMUN 1" >>confdefs.h
fi
# Check whether --enable-sim-hardware was given.
if test "${enable_sim_hardware+set}" = set; then :
enableval=$enable_sim_hardware; hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
enableval=$enable_sim_hardware; hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide,sem,shm"
case "${enableval}" in
yes) ;;
no) as_fn_error $? "\"List of hardware must be specified for --enable-sim-hardware\"" "$LINENO" 5; hardware="";;
@@ -3334,7 +3284,7 @@ if test x"$silent" != x"yes" && test x"$hardware" != x""; then
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
fi
else
hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide,sem,shm"
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
if test x"$silent" != x"yes"; then

View File

@@ -97,105 +97,63 @@ esac
])dnl
AC_CACHE_CHECK([if union semun defined],
ac_cv_HAS_UNION_SEMUN,
[ac_cv_has_union_semun],
[AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>],
[union semun arg ;],
[ac_cv_has_union_semun="yes"],
[ac_cv_has_union_semun="no"])
AC_MSG_RESULT($ac_cv_has_union_semun)
[ac_cv_has_union_semun="no"])])
AS_IF([test x"$ac_cv_has_union_semun" = x"yes"], [dnl
AC_DEFINE(HAVE_UNION_SEMUN, 1,
[Define if union semun is defined in <sys/sem.h>])
])
if test "$ac_cv_has_union_semun" = "yes"; then
AC_CACHE_CHECK(whether System V semaphores are supported,
ac_cv_sysv_sem,
[
AC_TRY_RUN(
[
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int main () {
union semun arg ;
int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
if (id == -1)
exit(1);
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
exit(1);
exit(0);
}
],
ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
])
else # semun is not defined
AC_CACHE_CHECK(whether System V semaphores are supported,
ac_cv_sysv_sem,
[
AC_TRY_RUN(
[
AC_CACHE_CHECK([whether System V semaphores are supported],
[ac_cv_sysv_sem],
[AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#ifndef HAVE_UNION_SEMUN
union semun {
int val;
struct semid_ds *buf;
ushort *array;
};
int main () {
union semun arg ;
int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
if (id == -1)
exit(1);
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
exit(1);
exit(0);
}
],
ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
])
fi
#endif], [
union semun arg;
int id = semget(IPC_PRIVATE, 1, IPC_CREAT|0400);
if (id == -1)
return 1;
arg.val = 0; /* avoid implicit type cast to union */
if (semctl(id, 0, IPC_RMID, arg) == -1)
return 1;
], [ac_cv_sysv_sem="yes"], [ac_cv_sysv_sem="no"])])
AS_IF([test x"$ac_cv_sysv_sem" = x"yes"], [dnl
AC_DEFINE(HAVE_SYSV_SEM, 1, [Define if System V semaphores are supported])
])
AC_CACHE_CHECK(whether System V shared memory is supported,
ac_cv_sysv_shm,
[
AC_TRY_RUN([
[AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main () {
int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
#include <sys/shm.h>], [
int id = shmget(IPC_PRIVATE, 1, IPC_CREAT|0400);
if (id == -1)
exit(1);
return 1;
if (shmctl(id, IPC_RMID, 0) == -1)
exit(1);
exit(0);
}
],
ac_cv_sysv_shm="yes", ac_cv_sysv_shm="no", :)
return 1;
], [ac_cv_sysv_shm="yes"], [ac_cv_sysv_shm="no"])])
AS_IF([test x"$ac_cv_sysv_shm" = x"yes"], [dnl
AC_DEFINE(HAVE_SYSV_SHM, 1, [Define if System V shared memory is supported])
])
if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
sim_sysv_ipc_hw=",sem,shm";
else
sim_sysv_ipc_hw="";
fi
if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
AC_DEFINE(HAVE_UNION_SEMUN, 1,
[Define if union semun is defined in <sys/sem.h>])
fi
AC_ARG_ENABLE(sim-hardware,
[ --enable-sim-hardware=list Specify the hardware to be included in the build.],
[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide,sem,shm"
case "${enableval}" in
yes) ;;
no) AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
@@ -207,7 +165,7 @@ sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
if test x"$silent" != x"yes" && test x"$hardware" != x""; then
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide,sem,shm"
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
if test x"$silent" != x"yes"; then

View File

@@ -84,6 +84,8 @@
*/
#ifdef HAVE_SYSV_SEM
typedef struct _hw_sem_device {
unsigned_word physical_address;
key_t key;
@@ -278,4 +280,12 @@ const device_descriptor hw_sem_device_descriptor[] = {
{ NULL },
};
#else
const device_descriptor hw_sem_device_descriptor[] = {
{ NULL },
};
#endif /* HAVE_SYSV_SEM */
#endif /* _HW_SEM_C_ */

View File

@@ -77,6 +77,8 @@
*/
#ifdef HAVE_SYSV_SHM
typedef struct _hw_shm_device {
unsigned_word physical_address;
char *shm_address;
@@ -222,4 +224,12 @@ const device_descriptor hw_shm_device_descriptor[] = {
{ NULL },
};
#else
const device_descriptor hw_shm_device_descriptor[] = {
{ NULL },
};
#endif /* HAVE_SYSV_SHM */
#endif /* _HW_SHM_C_ */