* Makefile.in: Delete all stuff moved to ../common/Make-common.in.

(SIM_OBJS,SIM_EXTRA_CFLAGS,SIM_EXTRA_CLEAN): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	Call AC_CHECK_HEADERS(unistd.h).
	* configure: Regenerated.
	* config.in: New file.
	* interp.c: #include "callback.h".
	* simops.c: #include "config.h".  #include <unistd.h> if present.
This commit is contained in:
David Edelsohn 1996-11-20 09:27:24 +00:00
parent db7d7ff8dd
commit cee402dd99
3 changed files with 62 additions and 81 deletions

View File

@ -1,3 +1,37 @@
Wed Nov 20 01:23:03 1996 Doug Evans <dje@canuck.cygnus.com>
* Makefile.in: Delete all stuff moved to ../common/Make-common.in.
(SIM_OBJS,SIM_EXTRA_CFLAGS,SIM_EXTRA_CLEAN): Define.
* configure.in: Simplify using macros in ../common/aclocal.m4.
Call AC_CHECK_HEADERS(unistd.h).
* configure: Regenerated.
* config.in: New file.
* interp.c: #include "callback.h".
* simops.c: #include "config.h". #include <unistd.h> if present.
Fri Nov 8 16:19:55 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* d10v-sim.h (simops): Add flag is_long.
(State): Add pc_changed. Instructions which update the PC should
use the JMP macro which sets this.
(JMP): New macro. Sets the PC and the pc_changed flag.
* gencode.c (write_opcodes): Add is_long field.
* interp.c (lookup_hash): If we blindly apply a short opcode's mask
to a long opcode we could get a false match. Check the opcode size.
(hash): Add a size field to the hash table.
(sim_open): Initialize size field in hash table.
(sim_resume): Change to logic for setting the PC. Used to increment the
PC if it had not been changed. This didn't allow single-instruction loops.
Now checks the flag State.pc_changed. Also now stops when ^C is received.
(dmem_addr): Fix translation of data segments to unified memory.
(sim_ctrl_c): New function. When ^C is received, set stop_simulator flag.
* simops.c: Changed all branch and jump instructions to use new JMP macro.
(OP_20000000): Corrected trace information to show this is a ldi.l, not
a ldi.s instruction.
Thu Oct 31 19:13:55 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* interp.c (sim_fetch_register, sim_store_register): Fix bug where

View File

@ -2,74 +2,8 @@ dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.5)dnl
AC_INIT(Makefile.in)
AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
AC_CANONICAL_SYSTEM
AC_ARG_PROGRAM
AC_PROG_CC
AC_PROG_INSTALL
AC_C_BIGENDIAN
SIM_AC_COMMON
# Put a plausible default for CC_FOR_BUILD in Makefile.
AC_C_CROSS
if test "x$cross_compiling" = "xno"; then
CC_FOR_BUILD='$(CC)'
else
CC_FOR_BUILD=gcc
fi
AC_CHECK_HEADERS(unistd.h)
. ${srcdir}/../../bfd/configure.host
AC_ARG_ENABLE(sim-cflags,
[ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
[case "${enableval}" in
yes) sim_cflags="-O2";;
trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
no) sim_cflags="";;
*) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
echo "Setting sim cflags = $sim_cflags" 6>&1
fi],[sim_cflags=""])dnl
AC_ARG_ENABLE(sim-debug,
[ --enable-sim-debug=opts Enable debugging flags],
[case "${enableval}" in
yes) sim_debug="-DDEBUG=7";;
no) sim_debug="-DDEBUG=0";;
*) sim_debug="-DDEBUG='(${enableval})'";;
esac
if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
echo "Setting sim debug = $sim_debug" 6>&1
fi],[sim_cflags=""])dnl
AC_ARG_ENABLE(sim-bswap,
[ --enable-sim-bswap Use the BSWAP instruction on Intel 486s and Pentiums.],
[case "${enableval}" in
yes) sim_bswap="-DUSE_BSWAP";;
no) sim_bswap="";;
*) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
esac
if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
echo "Setting bswap flags = $sim_bswap" 6>&1
fi],[sim_bswap=""])dnl
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CFLAGS)
AC_SUBST(HDEFINES)
AR=${AR-ar}
AC_SUBST(AR)
AC_PROG_RANLIB
AC_SUBST(sim_cflags)
AC_SUBST(sim_debug)
AC_SUBST(sim_bswap)
# Put a plausible default for CC_FOR_BUILD in Makefile.
AC_C_CROSS
if test "x$cross_compiling" = "xno"; then
CC_FOR_BUILD='$(CC)'
else
CC_FOR_BUILD=gcc
fi
AC_SUBST(CC_FOR_BUILD)
AC_OUTPUT(Makefile)
SIM_AC_OUTPUT

View File

@ -1,5 +1,6 @@
#include <signal.h>
#include "sysdep.h"
#include "callback.h"
#include "remote-sim.h"
#include "d10v_sim.h"
@ -60,6 +61,7 @@ struct hash_entry
struct hash_entry *next;
long opcode;
long mask;
int size;
struct simops *ops;
};
@ -88,7 +90,7 @@ lookup_hash (ins, size)
else
h = &hash_table[(ins & 0x7E00) >> 9];
while ((ins & h->mask) != h->opcode)
while ((ins & h->mask) != h->opcode || h->size != size)
{
if (h->next == NULL)
{
@ -493,6 +495,7 @@ sim_open (args)
h->ops = s;
h->mask = s->mask;
h->opcode = s->opcode;
h->size = s->is_long;
}
}
}
@ -546,14 +549,14 @@ dmem_addr( addr )
/* unified memory */
/* this is ugly because we allocate unified memory in 128K segments and */
/* dmap addresses 16k segments */
seg = (DMAP & 0x3ff) >> 2;
seg = (DMAP & 0x3ff) >> 3;
if (State.umem[seg] == NULL)
{
(*d10v_callback->printf_filtered) (d10v_callback, "ERROR: unified memory region %d unmapped, pc = 0x%lx\n",
seg, (long)decode_pc ());
exit(1);
}
return State.umem[seg] + (DMAP & 3) * 0x4000;
return State.umem[seg] + (DMAP & 7) * 0x4000;
}
return State.dmem + addr;
@ -586,20 +589,32 @@ pc_addr()
}
static int stop_simulator;
static void
sim_ctrl_c()
{
stop_simulator = 1;
}
/* Run (or resume) the program. */
void
sim_resume (step, siggnal)
int step, siggnal;
{
void (*prev) ();
uint32 inst;
reg_t oldpc = 0;
/* (*d10v_callback->printf_filtered) (d10v_callback, "sim_resume (%d,%d) PC=0x%x\n",step,siggnal,PC); */
State.exception = 0;
prev = signal(SIGINT, sim_ctrl_c);
stop_simulator = step;
do
{
inst = get_longword( pc_addr() );
oldpc = PC;
State.pc_changed = 0;
ins_type_counters[ (int)INS_CYCLES ]++;
switch (inst & 0xC0000000)
{
@ -628,16 +643,15 @@ sim_resume (step, siggnal)
else
PC = RPT_S;
}
/* FIXME */
if (PC == oldpc)
else if (!State.pc_changed)
PC++;
}
while ( !State.exception && !step);
while ( !State.exception && !stop_simulator);
if (step && !State.exception)
State.exception = SIGTRAP;
signal(SIGINT, prev);
}
int
@ -790,7 +804,6 @@ void
sim_set_callbacks(p)
host_callback *p;
{
/* printf ("sim_set_callbacks\n"); */
d10v_callback = p;
}