# Generate the main loop of the simulator.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2022 Free Software Foundation, Inc.
# Contributed by Cygnus Support.
#
# This file is part of the GNU simulators.
#
# Specify the suffix to append to output files.
#
+# -shell <shell>
+#
+# Specify the shell to use to execute <input-file>
+#
# Only one of -scache/-pbb may be selected.
# -simple is the default.
#
cpu="unknown"
infile=""
prefix="unknown"
+outprefix=""
outsuffix=""
while test $# -gt 0
-scache) scache=yes ;;
-pbb) pbb=yes ;;
-no-parallel) ;;
+ -outfile-prefix) shift ; outprefix=$1 ;;
-outfile-suffix) shift ; outsuffix=$1 ;;
-parallel-read) parallel=read ;;
-parallel-write) parallel=write ;;
-switch) shift ; switch=$1 ;;
-cpu) shift ; cpu=$1 ;;
-infile) shift ; infile=$1 ;;
+ -shell) shift ; SHELL=$1 ;;
*) echo "unknown option: $1" >&2 ; exit 1 ;;
esac
shift
##########################################################################
-rm -f eng${outsuffix}.hin
-exec 1>eng${outsuffix}.hin
+rm -f ${outprefix}eng${outsuffix}.hin
+exec 1>${outprefix}eng${outsuffix}.hin
echo "/* engine configuration for ${cpu} */"
echo ""
##########################################################################
-rm -f tmp-mloop-$$.cin mloop${outsuffix}.cin
-exec 1>tmp-mloop-$$.cin
+rm -f ${outprefix}tmp-mloop-$$.cin ${outprefix}mloop${outsuffix}.cin
+exec 1>${outprefix}tmp-mloop-$$.cin
# We use @cpu@ instead of ${cpu} because we still need to run sed to handle
# transformation of @cpu@ for mainloop.in, so there's no need to use ${cpu}
cat << EOF
/* This file is generated by the genmloop script. DO NOT EDIT! */
+/* This must come before any other includes. */
+#include "defs.h"
+
/* Enable switch() support in cgen headers. */
#define SEM_IN_SWITCH
#define WANT_CPU @cpu@
#define WANT_CPU_@CPU@
-#include "sim-main.h"
+#include "ansidecl.h"
#include "bfd.h"
+
+#include "sim-main.h"
#include "cgen-mem.h"
#include "cgen-ops.h"
#include "sim-assert.h"
This is as opposed to x-after which is only emitted at the end of a group
of parallel insns. */
-static INLINE void
+ATTRIBUTE_UNUSED static INLINE void
@prefix@_emit_before (SIM_CPU *current_cpu, SCACHE *sc, PCADDR pc, int first_p)
{
ARGBUF *abuf = &sc[0].argbuf;
x-after is emitted after a serial insn or at the end of a group of
parallel insns. */
-static INLINE void
+ATTRIBUTE_UNUSED static INLINE void
@prefix@_emit_after (SIM_CPU *current_cpu, SCACHE *sc, PCADDR pc)
{
ARGBUF *abuf = &sc[0].argbuf;
}
}
- TRACE_INSN_FINI (current_cpu, cur_abuf, 0 /*last_p*/);
+ CGEN_TRACE_INSN_FINI (current_cpu, cur_abuf, 0 /*last_p*/);
}
/* FIXME: Later make cover macros: PROFILE_INSN_{INIT,FINI}. */
&& ARGBUF_PROFILE_P (cur_abuf))
@prefix@_model_insn_before (current_cpu, first_p);
- TRACE_INSN_INIT (current_cpu, cur_abuf, first_p);
- TRACE_INSN (current_cpu, cur_idesc->idata, cur_abuf, pc);
+ CGEN_TRACE_INSN_INIT (current_cpu, cur_abuf, first_p);
+ CGEN_TRACE_INSN (current_cpu, cur_idesc->idata, cur_abuf, pc);
}
/* x-after handler.
cycles = (*prev_idesc->timing->model_fn) (current_cpu, prev_sem_arg);
@prefix@_model_insn_after (current_cpu, 1 /*last_p*/, cycles);
}
- TRACE_INSN_FINI (current_cpu, prev_abuf, 1 /*last_p*/);
+ CGEN_TRACE_INSN_FINI (current_cpu, prev_abuf, 1 /*last_p*/);
}
#define FAST_P 0
# Expand @..@ macros appearing in tmp-mloop-{pid}.cin.
sed \
-e "s/@cpu@/$cpu/g" -e "s/@CPU@/$CPU/g" \
- -e "s/@prefix@/$prefix/g" -e "s/@PREFIX@/$PREFIX/g" < tmp-mloop-$$.cin > mloop${outsuffix}.cin
+ -e "s/@prefix@/$prefix/g" -e "s/@PREFIX@/$PREFIX/g" \
+ < ${outprefix}tmp-mloop-$$.cin > ${outprefix}mloop${outsuffix}.cin
rc=$?
-rm -f tmp-mloop-$$.cin
+rm -f ${outprefix}tmp-mloop-$$.cin
exit $rc