2012-06-19  Joel Brobecker  <brobecker@adacore.com>

	* interp.c: #include "config.h" instead of "sysdep.h".
	Add conditional include of string.h or strings.h, as well as
	conditional include of stdlib.h.

2012-06-15  Joel Brobecker  <brobecker@adacore.com>

	* config.in, configure: Regenerate.

2012-05-24  Pedro Alves  <palves@redhat.com>

	PR gdb/7205

        Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.

2012-03-24  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4, config.in, configure: Regenerate.

2011-12-03  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4: New file.
	* configure: Regenerate.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change include to common/acinclude.m4.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change AC_PREREQ to 2.64.  Delete AC_CONFIG_HEADER
	call.  Replace common.m4 include with SIM_AC_COMMON.
	* configure: Regenerate.

2010-04-14  Mike Frysinger  <vapier@gentoo.org>

	* interp.c (sim_write): Add const to buffer arg.

2010-01-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Likewise.

	* configure: Regenerate.

2008-07-11  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate to track ../common/common.m4 changes.
	* config.in: Ditto.

2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

2006-12-21  Hans-Peter Nilsson  <hp@axis.com>

	* acconfig.h: Remove.
	* config.in: Regenerate.

2006-06-13  Richard Earnshaw  <rearnsha@arm.com>

	* configure: Regenerated.

2006-06-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

2006-04-18  Nick Clifton  <nickc@redhat.com>

	* interp.c (sim_stop_reason): Fix typo.

2005-11-28  Mark Mitchell  <mark@codesourcery.com>

	* interp.c (gdb/signals.h): Include it.
	(sim_stop_reason): Use TARGET_SIGNAL_*.

2005-03-23  Mark Kettenis  <kettenis@gnu.org>

	* configure: Regenerate.

2005-01-14  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Sinclude aclocal.m4 before common.m4.  Add
	explicit call to AC_CONFIG_HEADER.
	* configure: Regenerate.

2005-01-12  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Update to use ../common/common.m4.
	* configure: Re-generate.

2005-01-11  Andrew Cagney  <cagney@localhost.localdomain>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

2004-12-08  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for ../common/aclocal.m4 update.

2004-06-28  Andrew Cagney  <cagney@gnu.org>

	* interp.c (sim_resume): Rename ui_loop_hook to
	deprecated_ui_loop_hook.

2003-10-30  Andrew Cagney  <cagney@redhat.com>

	* simops.c: Replace "struct symbol_cache_entry" with "struct
	bfd_symbol".

2003-06-22  Andrew Cagney  <cagney@redhat.com>

	* interp.c (xfer_mem): Simplify.  Only do a single partial
	transfer.  Problem reported by Tom Rix.

2003-05-07  Andrew Cagney  <cagney@redhat.com>

	* interp.c (sim_d10v_translate_addr): Add "regcache" parameter.
	(sim_d10v_translate_imap_addr): Ditto.
	(sim_d10v_translate_dmap_addr): Ditto.
	(xfer_mem): Pass NULL regcache to sim_d10v_translate_addr.
	(dmem_addr): Pass NULL regcache to sim_d10v_translate_dmap_addr.
	(dmap_register, imap_register): Add "regcache" parameter.
	(imem_addr): Pass NULL regcache to sim_d10v_translate_imap_addr.
	(sim_fetch_register): Pass NULL regcache to imap_register and
	dmap_register.

2003-02-27  Andrew Cagney  <cagney@redhat.com>

	* interp.c (sim_open, sim_create_inferior): Rename _bfd to bfd.

2002-11-13  Andrew Cagney  <cagney@redhat.com>

	* simops.c: Include <string.h>.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* d10v_sim.h (SET_PSW_BIT): Add cast to avoid inverting an enum.

2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2002-06-13  Tom Rix  <trix@redhat.com>

	* interp.c (xfer_mem): Fix transfers across multiple segments.
 
2002-06-09  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (INCLUDE): Update path to callback.h.
	* gencode.c: Do not include "callback.h".
	* d10v_sim.h: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* interp.c: Ditto.

2002-06-08  Andrew Cagney  <cagney@redhat.com>

	* interp.c (sim_fetch_register): Fix name of enum used in cast.
	(sim_store_register): Ditto.

2002-06-02  Elena Zannoni  <ezannoni@redhat.com>

        From Jason Eckhardt <jle@redhat.com>
        * d10v_sim.h (INC_ADDR): Correctly handle the case where MOD_E is
        less than MOD_S (post-decrement).

2002-06-01  Andrew Cagney  <ac131313@redhat.com>

	* interp.c (sim_fetch_register, sim_store_register): Use a switch
	statement and enums from "sim-d10v.h".

2002-05-28  Elena Zannoni  <ezannoni@redhat.com>

	* interp.c (sim_create_inferior): Add comment.

	From Alan Matsuoka <alanm@redhat.com>:
	From 2001-04-27 Jason Eckhardt <jle@cygnus.com>:
	* simops.c (OP_4400): Output "mvf0f" instead of "mf0f".
	(OP_4401): Output "mvf0t" instead of "mf0t".
	(OP_460B): Do not output a flag register.
	(OP_4609): Do not output a flag register.

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (INCLUDE): Add "gdb/sim-d10v.h".
	* interp.c: Include "gdb/sim-d10v.h" instead of "sim-d10v.h".

2001-08-01  John R. Moore  <jmoore@redhat.com>

	* interp.c (sim_create_inferior): Removed a hack that stated
	it was setting r0/r1 with argc/argv.

2001-04-15  J.T. Conklin  <jtc@redback.com>

	* Makefile.in (simops.o): Add simops.h to dependency list.

Tue May 23 21:39:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Apr 18 16:26:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_resume): Deliver SIGILL.
	(lookup_hash): Do not print SIGILL message.

Tue Feb 22 18:24:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_EXTRA_CFLAGS): Define SIM_HAVE_ENVIRONMENT.
	* interp.c (sim_set_trace): Replace sim_trace.  Enable tracing.

Tue Feb  8 17:41:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (SIG_D10V_BUS): Define.

	* simops.c (address_exception): Delete function.
	(OP_30000000, OP_6401, OP_6001, OP_6000, OP_32010000, OP_31000000,
 	OP_6601, OP_6201, OP_6200, OP_33010000, OP_34000000, OP_6800,
 	OP_6C1F, OP_6801, OP_6C01, OP_36010000, OP_35000000, OP_6A00,
 	OP_6E1F, OP_6A01, OP_6E01, OP_37010000): Replace call to
 	address_exception with code that sets SIG_D10V_BUS.

	* interp.c (sim_resume): When SIGBUS or SIGSEGV, deliver a bus
 	error to the simulator before resuming execution.
	(sim_trace): Check stop reason and use that to determine sim_trace
 	return value.
	(sim_stop_reason): For SIG_D10V_BUS return a SIGBUS / SIGSEGV
 	sigrc.

Tue Jan 18 16:07:42 MST 2000	Diego Novillo <dnovillo@cygnus.com>

	* interp.c (sim_create_inferior): Change internal initial value for
	DMAP2 to 0x2000.

Mon Jan  3 02:06:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (lookup_hash): Stop the update of the PC when there was
 	an illegal instruction exception.

Mon Jan  3 00:14:33 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (address_exception): New function.
	(OP_30000000, OP_6401, OP_6001, OP_6000, OP_32010000, OP_31000000,
 	OP_6601, OP_6201, OP_6200, OP_33010000, OP_34000000, OP_6800,
 	OP_6C1F, OP_6801, OP_6C01, OP_36010000, OP_35000000, OP_6A00,
 	OP_6E1F, OP_6A01, OP_6E01, OP_37010000): For "ld", "ld2w", "st"
 	and "st2w" check that the address is aligned.

1999-12-30  Chandra Chavva   <cchavva@cygnus.com>
	
	* d10v_sim.h (INC_ADDR): Added code to assign
	proper address for loads with predec operations.

1999-11-25  Nick Clifton  <nickc@cygnus.com>

	* simops.c (OP_4E0F): New function: Simulate new bit pattern for
	cpfg instruction.

Fri Oct 29 18:34:28 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (move_to_cr): Don't allow user to set PSW.DM in either
 	DPSW and BPSW.

Thu Oct 28 01:26:18 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5F20): Use SET_HW_PSW when updating PSW.
	(PSW_HW_MASK): Declare.

	* d10v_sim.h (move_to_cr): Add ``psw_hw_p'' parameter.
	(SET_CREG, SET_PSW_BIT): Update.
	(SET_HW_CREG, SET_HW_PSW): Define.

Sun Oct 24 21:38:04 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_d10v_translate_dmap_addr): Fix extraction of IOSP
 	for DMAP3.

Sun Oct 24 16:04:16 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_d10v_translate_addr): New function.
	(xfer_mem): Rewrite.  Use sim_d10v_translate_addr.
	(map_memory): Make INLINE.

Sun Oct 24 13:45:19 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_d10v_translate_dmap_addr): New function.
	(dmem_addr): Rewrite. Use sim_d10v_translate_dmap_addr.  Change
 	offset parameter to type uint16.
	* d10v_sim.h (dmem_addr): Update declaration.

Sun Oct 24 13:07:31 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (imap_register, set_imap_register, dmap_register,
 	set_imap_register): Use map_memory.
	(DMAP): Update.
	(sim_create_inferior): Initialize all DMAP registers.  NOTE that
 	DMAP2, in internal memory mode, is set to 0x0000 and NOT
 	0x2000. This is consistent with the older d10v boards.

Sun Oct 24 11:22:12 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_d10v_translate_imap_addr): New function.
	(imem_addr): Rewrite.  Use sim_d10v_translate_imap_addr.
	(last_from, last_to): Declare.

Sun Oct 24 01:21:56 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (struct d10v_memory): Define.  Support very long
 	memories.
	(struct _state): Replace imem, dmem and umem by mem.
	(IMAP_BLOCK_SIZE, DMAP_BLOCK_SIZE, SEGMENT_SIZE, IMEM_SEGMENTS,
 	DMEM_SEGMENTS, UMEM_SEGMENTS): Define.

	* interp.c (map_memory): New function.
	(sim_size, xfer_memory, imem_addr, dmem_addr): Update.
	(UMEM_SEGMENTS): Moveed to "d10v_sim.h".
	(IMEM_SIZEDMEM_SIZE): Delete.

Sat Oct 23 20:06:58 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c: Include "sim-d10v.h".
 	(imap_register, set_imap_register, dmap_register,
 	set_dmap_register, spi_register, spu_register, set_spi_register,
 	set_spu_register): New functions.
	(sim_create_inferior): Update.
	(sim_fetch_register, sim_store_register): Rewrite.  Use enums
 	defined in sim-d10v.h.

	* d10v_sim.h (DEBUG_MEMORY): Define.
	(IMAP0, IMAP1, DMAP, SET_IMAP0, SET_IMAP1, SET_DMAP): Delete.
	
Sat Oct 23 18:41:18 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Allow a debug value to be passed to the -t
 	option.
	(lookup_hash): Don't exit on an illegal instruction.
	(do_long, do_2_short, do_parallel): Check for failed instruction
 	lookup.

Mon Oct 18 18:03:24 MDT 1999	Diego Novillo <dnovillo@cygnus.com>

	* simops.c (OP_3220): Fix trace output for illegal accumulator
 	message.

1999-09-14  Nick Clifton  <nickc@cygnus.com>

	* simops.c: Disable setting of DM bit in PSW.

Wed Sep  8 19:34:55 MDT 1999	Diego Novillo <dnovillo@cygnus.com>

	* simops.c (op_types): Added new memory indirect type OP_MEMREF3.
	(trace_input_func): Added support for OP_MEMREF3.
	(OP_32010000): New instruction ld.
	(OP_33010000): New instruction ld2w.
	(OP_5209): New instruction sac.
	(OP_4209): New instruction sachi.
	(OP_3220): New instruction slae.
	(OP_36010000): New instruction st.
	(OP_37010000): New instruction st2w.

1999-09-09  Stan Shebs  <shebs@andros.cygnus.com>

	* interp.c (old_segment_mapping): New global.
	(xfer_mem): Change the default segment mapping to be the way
	that Mitsubishi prefers, but use the previous mapping if
	old_segment_mapping is true.
	(sim_open): Add an option -oldseg to get the old mapping.
	(sim_create_inferior): Init mapping registers based on the
	value of old_segment_mapping.

1999-09-07  Nick Clifton  <nickc@cygnus.com>

	* simops.c (OP_6601): Do not write back decremented address if
	either of the destination registers was the same as the address
	register. 
	(OP_6201): Do not write back incremented address if either of the
	destination registers was the same as the address register. 

Thu Sep  2 18:15:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

1999-05-08  Felix Lee  <flee@cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	
1999-04-02  Keith Seitz  <keiths@cygnus.com>

	* interp.c (ui_loop_hook_counter): New global (when NEED_UI_LOOP_HOOK
	defined).
	(sim_resume): If the counter has expired, call the ui_loop_hook,
	if defined.
	(UI_LOOP_POLL_INTERVAL): Define. Used to tweak the frequency of
	ui_loop_hook calls.
	* Makefile.in (SIM_EXTRA_CFLAGS): Include NEED_UI_LOOP_HOOK.

Wed Mar 10 19:32:13 1999  Nick Clifton  <nickc@cygnus.com>

	* simops.c: If load instruction with auto increment/decrement
	addressing is used when the destination register is the same as
	the address register, then ignore the auto increment/decrement.

Wed Mar 10 19:32:13 1999  Martin M. Hunt  <hunt@cygnus.com>

	* simops.c (OP_5F00): Ifdef SYS_stat case because
	not all systems have it defined.

1999-01-26  Jason Molenda  (jsm@bugshack.cygnus.com)

	* simops.c (OP_5607): Correct saturation comparison/assignment.
	(OP_1201, OP_1203, OP_17001200, OP_17001202, 
         OP_2A00, OP_2800, OP_2C00, OP_3200, OP_3201, 
         OP_1001, OP_1003, OP_17001000, OP_17001002): Ditto.

1999-01-26  Jason Molenda  (jsm@bugshack.cygnus.com)

	* simops.c (OP_5605): Sign extend MIN32 and MAX32 before saturation
        comparison.
	(OP_5607): Ditto.
	(OP_2A00): Ditto.
	(OP_2800): Ditto.

1999-01-13  Jason Molenda  (jsm@bugshack.cygnus.com)

	* simops.c (OP_1223): Sign extend MIN32 and MAX32 before saturation
	comparison.

Tue Nov 24 17:04:43 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (sys/syscall.h): Include targ-vals.h instead.
	(SYS_*): Replace with TARGET_SYS_*.

	* Makefile.in: Add dependency on targ-vals.h.
	(NL_TARGET): Define as NL_TARGET_d10v.

Wed Sep 30 00:06:32 1998  Andrew Cagney  <cagney@amy.cygnus.com>

	* interp.c (xfer_mem): Missing break, instruction memory case
 	flowed into unified memory case.

Wed Sep 30 10:14:18 1998  Nick Clifton  <nickc@cygnus.com>

	* simops.c: If load instruction with auto increment/decrement
	addressing is used when the destination register is the same as
	the address register, then ignore the auto increment/decrement.

Tue Apr 28 18:33:31 1998  Geoffrey Noer  <noer@cygnus.com>

        * configure: Regenerated to track ../common/aclocal.m4 changes.

Sun Apr 26 15:31:55 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Sun Apr 26 15:20:23 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.

Fri Apr 24 14:16:40 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Fri Apr 24 11:20:06 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

Fri Apr 24 11:04:46 1998  Andrew Cagney  <cagney@chook.cygnus.com>

	* interp.c (struct hash_entry): OPCODE and MASK are unsigned.

	* d10v_sim.h (remote-sim.h, sim-config.h): Include.
	
Sat Apr  4 20:36:25 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr  1 12:59:17 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (trace_input_func): Use move_from_cr / CREGS to obtain
 	up-to-date CR value.
	(OP_OP_1000000, add3): Trace inputs before performing add.
	(OP_5F00, <*>): Trace input registers before making system call.
	(OP_5F00, <kill>): Trace R0, R1 not REGn.
	(OP_5F00, <getpid>): Always return 47.
	
	* d10v_sim.h (SLOT, SLOT_NR, SLOT_PEND_MASK, SLOT_PEND,
 	SLOT_DISCARD, SLOT_FLUSH): Define.  An implementation of write
 	back slots.
	(struct _state): Add struct slot slot to global state variable.
	(struct _state): Delete fields SM, EA, DB, DM, IE, RP, MD, FX, ST,
 	F0, F1, C from global State variable.
	(struct _state): Add struct trace to global State variable.
	(GPR, SET_GPR): Define.  SET_GPR uses SLOT_PEND.
	(PSW*, SET_PSW*): Define. SET_PSW* uses SET_CREG.
	(CREG, SET_CREG, SET_*): Define. SET_CREG uses func move_to_cr.
	(INC_ADDR): Re-implement.  Use SET_GPR to update registers.
	(JMP): Re-implement. Use SET_* to update registers.

	* interp.c: Use new SET_* et.al. macros to fetch / store
 	registers.
	(get_operands): Squirrel away trace values at start of each
 	operand decode.
	(do_2_short): Flush pending writes before issuing second
 	instruction.
	(sim_resume): Flush pending writes at end of instruction cycle.
	(sim_fetch_register, sim_store_register, sim_create_inferior):
 	After scheduling updates to registers using SET_*, flush updates.
	(sim_resume): Re-order handling of RPT/repeat and IBA/hbreak so
 	that each sets pc using SET_* and last SET_* eventually winds out.
	
	* simops.c: Use new SET_* et.al. macros to fetch / store
 	registers.
	(move_to_cr): Add MASK argument for selective update of CREG bits.
  	Re-implement using new SET_* macros.
	(trace_output_func, trace_output): Delete. Replace with.
	(do_trace_output_flush, trace_output_finish, trace_output_40,
 	trace_output_32, trace_output_16, trace_output_void,
 	trace_output_flag): New functions.  Handle specific trace cases.
	(OP_*): Re-write tracing to use new trace_output_* functions.
	(OP_*): Re-write to use new SET_* et.al. macros.
	(FUNC, PARM[1-4], RETVAL, RETVAL32): Redo definition.
	(RETVAL_HIGH, RETVAL_LOW): Delete, use RETVAL32.
	
Wed Apr  1 12:55:18 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (SIM_AC_OPTION_WARNINGS): Add.
	configure: Re-generate.

Fri Mar 27 16:15:52 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Mar 25 12:35:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Mar 18 12:38:12 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Feb 17 12:38:42 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_store_register, sim_fetch_register): Pass in
 	length parameter.  Return -1.

Mon Oct 27 14:43:33 1997  Fred Fish  <fnf@cygnus.com>

	* (dmem_addr): If address is illegal or in I/O space, signal a bus
 	error.  Allocate unified memory on demand.  Fix DMEM address
 	calculations.
	
Mon Feb 16 10:27:53 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5F20): Implement "dbt".
	(OP_5F60): Implement "rtd".

	* d10v_sim.h (DPC_CR): Define enum.
	(DBT_VECTOR_START): Define
	(DPSW, DPC): Define.

Fri Feb 13 15:15:58 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (move_to_cr): Sync regs[SP_IDX] with State.sp according
 	to PSW:SM.

	* d10v_sim.h (struct _state): Add sp, as holding area for SPI/SPU.
	(SP_IDX): Define.

Wed Feb 11 16:53:49 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5F00): Call error instead of abort for unknown
 	syscalls.

	* d10v_sim.h (enum): Define DPSW_CR.

	* simops.c (move_to_cr): Mask out hardwired zero bits in DPSW.

Tue Feb 10 18:28:38 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_write_phys): Delete.
	(sim_load): Call sim_load_file with sim_write and LMA.

Mon Feb  9 12:05:01 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c: Rewrite xfer_mem so that it translates addresses as -
 	0x00... - DMAP translated memory, 0x01... IMAP translated memory,
 	0x10... - on-chip data, 0x11... - on-chip insn, 0x12... - unified
 	memory.
	(pc_addr): Delete.
	(imem_addr): New function - translate IMEM address.
	(sim_resume): Use imem_addr to translate insn address, abort if
 	translation failed.
	(sim_create_inferior): Write ARGV to memory using sim_write.  Pass
 	argc/argv using r0/r1 not r2/r3.
	(sim_size): Do not initialize IMAP/DMAP here.
	(sim_open): Call sim_create_inferior and sim_size to initialize
 	the system.
	(sim_create_inferior): Initialize IMAP/DMAP to hardware reset
 	defaults.
	(init_system): Delete.
	(xfer_mem, sim_fetch_register, sim_store_register): Do not call
 	init_system.
	(decode_pc): Check prog_bfd is defined before looking up .text
 	section.

Sun Feb  1 16:47:51 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sat Jan 31 18:15:41 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sun Jan 25 22:23:01 1998  Michael Meissner  <meissner@cygnus.com>

	* interp.c (sim_stop_reason): Exit status is now in r0, not r2.

Sat Jan 24 19:00:30 1998  Michael Meissner  <meissner@cygnus.com>

	* d10v_sim.h (DEBUG_TRAP): New debug flag.

	* simops.c (OP_5F00): If DEBUG_TRAP is on, turn traps 0-14 into
	printing the registers.

Thu Jan 22 17:54:01 1998  Michael Meissner  <meissner@cygnus.com>

	* simops.c (op_types): New ABI, args are r0..r3, system call # is
	in r4.
	(trace_{in,out}put_func): Ditto.
	(OP_4900): Ditto.
	(OP_24800000): Ditto.
	(OP_4D00): Ditto.
	(OP_5F00): Ditto.

Thu Jan 22 14:30:36 1998  Fred Fish  <fnf@cygnus.com>

	* interp.c (UMEM_SEGMENTS): New define, set to 128.
	(sim_size): Use UMEM_SEGMENTS rather than hardwired constant.
	(sim_close): Reset prog_bfd to NULL after closing it.  Also
	reset prog_bfd_was_opened_p after closing prog_bfd.
	(sim_load): Reset prog_bfd_was_opened_p after closing prog_bfd.
	(sim_create_inferior): Get start address from abfd not prog_bfd.
	(xfer_mem): Do bounds checking on addresses and return zero length
	read/write on bad addresses, rather than aborting.  Prepare to
	be able to handle xfers that cross segment boundaries, but not
	yet implemented.  Only emit debug message when d10v_debug is
	set as well as DEBUG being defined.

Mon Jan 19 22:26:29 1998  Doug Evans  <devans@seba>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Dec 15 23:17:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Tue Dec  9 10:28:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (RPT_S): Index cregs with RPT_S_CR not RPT_E_CR.
	(BPSW): Ditto for BPSW_CR and not PSW_CR.

	* simops.c (OP_5F40): JMP to BPC instead of assigning PC directly.
	
Mon Dec  8 12:58:33 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5F00): From Martin Hunt <hunt@cygnus.com>. Change
 	reserved trap from 0 to 15. Add trap emulation code for 0-14.

	* interp.c (sim_resume): From Martin Hunt <hunt@cygnus.com>. Check
 	IBA for SDBT.

	* d10v_sim.h (AE_VECTOR_START, RIE_VECTOR_START,
 	SDBT_VECTOR_START, TRAP_VECTOR_START): Define.
	
	* simops.c (OP_5F00): For "trap", mask out all but SM bit in PSW,
 	use move_to_cr.
	(OP_5F00): For "trap", update BPSW with move_to_cr.

Fri Dec  5 15:31:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (enum): Enumerate CR register names.
	(enum): Enumerate PSW bit values.
	(PSW): Obtain value uing move_from_cr.
	(MOD_S, MOD_E, BPSW): Make r-values.
	(move_from_cr, move_to_cr): Declare functions.
	
	* interp.c (sim_fetch_register, sim_store_register): Use
 	move_from_cr and move_to_cr for CR register transfers.

	* simops.c (move_from_cr, move_to_cr): New functions.
	(OP_5F40): Move BPSW to PSW using move_to_cr and move_from_cr.
	(OP_5600): For "mvtc", use function move_to_cr.
	(OP_5200): For "mvfc", use function move_from_cr.

Fri Dec  5 13:33:14 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5600): For "mvtc" MOD_E and MOD_S, ensure that the
 	LSbit is zero.

Thu Dec  4 09:21:05 1997  Doug Evans  <devans@canuck.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Thu Dec  4 16:51:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (struct _state): Add DM - PSW debug mask.

	* simops.c (OP_5600): For "mvtc", save PSW.DM.
	(OP_5200): Ditto for "mvfc".

Wed Dec  3 17:27:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h (SEXT56): Define.

	* simops.c (OP_4201): For "rac", sign extend 56 bit value before
 	it is shifted.

	* d10v_sim.h (MAX32, MIN32, MASK32, MASK40): Re-define using
 	SIGNED64 macro.

Tue Dec  2 15:38:34 1997  Fred Fish  <fnf@cygnus.com>

	* interp.c (sim_resume): Call do_2_short with LEFT_FIRST or
	RIGHT_FIRST, as appropriate, instead of hardcoded ints that
	don't match enum values.

Tue Dec  2 15:01:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_3A00): For "macu", perform multiply stage using 32
 	bit rather than 16 bit precision.
	(OP_3C00): For "mulxu", store unsigned product in ACC.
	(OP_3800): For "msbu", subtract unsigned product from ACC,
	(OP_0): For "sub", compute carry by comparing inputs.

Tue Dec  2 11:04:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_1000): For "sub2w", compute carry by comparing
 	inputs.

Mon Nov 17 20:57:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_1): Use 32 bit unsigned arithmetic for subtract,
 	carry indicated by value > 0xffff.

Fri Nov 14 12:51:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_resume): Don't set up SIGINT handler using signal,
 	handled by client.
	(sim_resume): Fix race condition of a direct assignment to
 	stop_simulator, conditionally call sim_stop.
	(sim_stop_reason): Check stop_simulator returning SIGINT.  Clear
 	stop_simulator ready for next sim_resume call.
	(sim_ctrl_c): Delete function.

Thu Nov 13 19:29:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_resume): For "REP", only check/update the PC when
 	a branch instruction has not been executed.

Mon Nov 10 17:50:18 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_4201): "rachi". Sign extend bit 40 of ACC.  Sign
 	extend bit 44 all constants.
	(OP_4201): Replace GCC specific 0x..LL with SIGNED64 macro.
	
Fri Oct 24 10:26:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v_sim.h: Include sim-types.h.
	(uint8, in816, uiny16, int32, uint32, int64, uint64): Typedef
 	using unsigned8 et.al. from sim-types.h.
	(SEXT32, SEXT40, SEXT44, SEXT60): Replace GCC specific 0x..LL with
 	SIGNED64 macro.

Wed Oct 22 14:43:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_write_phys): New function, write to physical
 	instead of virtual memory.
	
	* interp.c (sim_load): Pass lma_p and sim_write_phys to
 	sim_load_file.

Mon Oct 13 10:55:07 1997  Fred Fish  <cygnus.com>

	* simops.c (OP_6A01): Change OP_POSTDEC to OP_POSTINC and move
	exception generation code to OP_6E01.
	(OP_6E01): Change OP_POSTINC to OP_POSTDEC and insert exception
	generation code.

Sat Oct 11 09:02:08 1997  Fred Fish  <fnf@cygnus.com>

	* simops.c (OP_6401): postdecrement on r15 is OK, remove exception.
	(OP_6601): Ditto.

Fri Oct  3 09:28:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sat Sep 27 12:51:34 1997  Fred Fish  <fnf@cygnus.com>

	* interp.c (pc_addr): Discard upper bit(s) of PC in case
	IMAP1 selects unified memory.
	* d10v_sim.h (INC_ADDR): Align MOD_E to increment before testing
	for end condition.

Wed Sep 24 17:38:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Sep 23 11:04:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Sep 19 17:45:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Sep 15 17:36:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Sep 10 22:30:24 1997  Martin M. Hunt  <hunt@cygnus.com>

	* interp.c (sim_resume): Increment PC at end of rep
	loop.

	* simops.c (OP_4201): Fix rachi instruction.

Thu Sep  4 17:21:23 1997  Doug Evans  <dje@seba>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Aug 27 18:13:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Tue Aug 26 10:37:49 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_kill): Delete.
	(sim_create_inferior): Add ABFD argument.
	(sim_load): Move setting of PC from here.
	(sim_create_inferior): To here.
	(start_address): Delete variable.

Mon Aug 25 17:50:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Mon Aug 25 15:39:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Add ABFD argument.

Tue May 20 10:14:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_open): Add callback argument.
	(sim_set_callbacks): Remove SIM_DESC argument.

Thu Apr 24 00:39:51 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Apr 22 10:29:23 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c (sim_open): Undo patch to add -E support.

Fri Apr 18 13:39:01 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interp.c (sim_stop): New function.

Thu Apr 17 02:42:00 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (SIM_OBJS): Add sim-load.o.
	* d10v_sim.h (exec_bfd): Rename to prog_bfd.
	* interp.c: #include bfd.h.
	(myname, sim_kind, start_address): New static locals.
	(prog_bfd_was_opened_p, prog_bfd): New static locals.
	(decode_pc): Update to use prog_bfd.
	(sim_open): Set sim_kind, myname.  Ignore -E arg.
	(sim_close): Close prog_bfd if simulator opened it.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.
	(sim_load): Return SIM_RC.  New arg abfd.  Set start address from bfd.
	Call sim_load_file to load file into simulator.
	* simops.c (trace_input_func): exec_bfd renamed to prog_bfd.

Wed Apr 16 16:12:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* simops.c (OP_5F00): Only provide system calls SYS_execv,
 	SYS_wait, SYS_wait, SYS_utime, SYS_time if defined by the host.
	
Mon Apr  7 15:45:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Wed Apr  2 15:06:28 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c (sim_open): New arg `kind'.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr  2 14:34:19 1997 Andrew Cagney <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Mar 17 15:10:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Re-generate.

Fri Mar 14 10:34:11 1997  Michael Meissner  <meissner@cygnus.com>

	* configure: Regenerate to track ../common/aclocal.m4 changes.

	* simops.c (OP_5F00): Remove old traps 1-3.  Make trap 15 the same
	as trap 0, which will be deprecated.  Only set errno, if an error
	in fact was returned.

Thu Mar 13 12:41:20 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interp.c: Delete redundant prototypes of sim_foo fns.
	(sim_open): New SIM_DESC result.  Argument is now in argv form.
	(other sim_*): New SIM_DESC argument.

Thu Mar 13 10:29:04 1997  Michael Meissner  <meissner@cygnus.com>

	* simops.c (trace_{input,output}_func): Call flush_stdout from the
	callback functions.
	(OP_5F00): Ditto.
	(OP_6{4,6,C,A}01): Test for post decrement on the stack pointer.
	(OP_{1200,1000000,201,5FE0,1003,17001002}): Fix problems in
	setting the carry bit after an add or a subtract.

Wed Feb 12 16:04:15 1997  Michael Meissner  <meissner@cygnus.com>

	* simops.c (OP_{1403,15002A02,3{0,4}0{0,1}}): Only use the bottom
	40 bits of accumulators.  Sign/zero extend as appropriate.

Tue Feb  4 13:33:30 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (@COMMON_MAKEFILE_FRAG): Use
	COMMON_{PRE,POST}_CONFIG_FRAG instead.
	* configure.in: sinclude ../common/aclocal.m4.
	* configure: Regenerated.

Thu Jan 23 11:46:23 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in Makefile.in:  Update to new configure
	scheme which is more compatible with WinGDB builds.
	* configure.in:  Improve comment on how to run autoconf.
	* configure:  Re-run autoconf to get new ../common/aclocal.m4.
	* Makefile.in:  Use autoconf substitution to install common
	makefile fragment.

Fri Dec 27 22:54:05 1996  Angela Marie Thomas (angela@cygnus.com)

	* gencode.c: patch to not #include "d10v_sim.h" which
	unecessarily includes bfd.h and causes wingdb configure
	to fail.

Mon Dec 16 13:39:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* interp.c (xfer_mem): Change unified memory to 0x0.

Thu Nov 28 20:42:56 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_3E01): Fix tracing information.
	(OP_300{0,1}): Do not propigate sign.

Mon Nov 25 19:47:40 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config.in (WORDS_BIGENDIAN): Add.
	* configure: Regenerated.
	* d10v_sim.h: #include "config.h"

Sat Nov 23 09:34:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* gencode.c (write_opcodes): Eliminate warnings when generated
	table.c is compiled.

Wed Nov 20 19:41:40 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* interp.c (sim_open): Cast result of calloc, and make sure NULL
	was not returned.
	(dmem_addr): If address is illegal or in I/O space, signal a bus
	error.
	(pc_addr): Signal bus error, not illegal instruction for bogus
	pc.

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
	updating the accumulators was overwriting other parts of the global
	State variable.

Wed Oct 30 17:35:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* interp.c (bfd.h) Don't include it here any more.
	(text{,_start,_end}): Move here from simops.c and make extern.
	(decode_pc): New function to return the PC as an address that the
	debugger can use.
	(dmem_addr): Print decoded PC in error message.
	(pc_addr): Ditto.

	* simops.c (bfd.h) Don't include it here any more.
	(text{,_start,_end}): Move to simops.c.
	(trace_input_func): Move decoding of PC, and looking up .text
	start to decode_pc.

	* d10v_sim.h (bfd.h): Include it here.
	(text{,_start,_end}): Add external declarations.
	(exec_bfd): Ditto.
	(decode_pc): Ditto.

Tue Oct 29 12:13:52 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* interp.c (sim_size): Now allocates unified memory for imap segments
	0,1,2, and 127. Initializes imap0 and imap1 to 0x1000.  Initializes dmap to 0.
	(sim_write): Just call xfer_mem().
	(sim_read): Just call xfer_mem().
	(xfer_mem): New function. Does appropriate memory mapping and copies bytes.
	(dmem_addr): New function. Reads dmap register and translates data
 	addresses to local addresses.
	(pc_addr): New function. Reads imap register and computes local address
	corresponding to contents of the PC.
	(sim_resume): Change to use pc_addr().
	(sim_create_inferior): Change reinitialization code. Also reinitializes
	imap[01] and dmap.
	(sim_fetch_register): Add fake registers 32,33,34 for imap0, imap1, and dmap.
	(sim_store_register): Add fake registers 32,33,34 for imap0, imap1, and dmap.

	* simops.c (MEMPTR): Redefine to use dmem_addr().
	(OP_5F00): Replace references to STate.imem with dmem_addr().
	
	* d10v-sim.h (State): Remove mem_min and mem_max. Add umem[128].
	(RB,SW,RW,SLW,RLW): Redefine to use dmem_addr().
	(IMAP0,IMAP1,DMAP,SET_IMAP,SET_IMAP1,SET_DMAP): Define.
	
Tue Oct 22 15:22:33 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* d10v_sim.h (_ins_type): Reorganize, so that we can provide
	better statistics, like not counting NOPS as parallel
	instructions, and printing total cycles.
	(ins_type_counters): Make unsigned long.
	(left_nops,right_nops): Fold into ins_type_counters.

	* simops.c (trace_input_func): Print new instruction types.
	Handle OP_R2R3 as input types.
	(OP_{38000000,7000}): Correctly sign extend bytes.
	(OP_5E00): Don't count NOPs as parallel instructions.
	(OP_460B): Remove unused variable.
	(OP_5F00): Ditto.

	* interp.c (ins_type_counters): Make unsigned long.
	(left_nops,right_nops): Delete.
	(most functions): Add prototypes.
	(INLINE): If GCC and optimize define as __inline__.
	({,lookup_}hash,get_operands): Declare as INLINE.
	(do_parallel): Count conditional operations.
	(add_commas): New function, to add commas every 3 digits.
	(sim_size): Call add_commas to print numbers.
	(sim_{open,resume}): Delete unused variables.
	(sim_info): Provide better statistics.
	(sim_read): Add int return type.

Mon Oct 21 16:16:26 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* interp.c (sim_resume): Change the way single-stepping and exceptions
 	are handled so single-stepping works again.

Thu Oct 17 12:24:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* endian.c: Optimize simulated loads/stores on x86, AIX, and big
	endian hosts.

	* configure.in (--enable-sim-bswap): New switch to enable using
	the BSWAP instruction on x86's.
	* configure: Regenerate.

	* Makefile.in ({SWAP,CONFIG}_CFLAGS): Add --enable-sim-bswap
	support.

Wed Oct 16 13:50:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* endian.c: New file.  Move endian functions here from interp.c.
	Optimize code, and make it work as either inline functions or as a
	separate file.

	* interp.c: Move endian functions from here to endian.c.

	* Makefile.in (INCLUDE): Add endian.c.
	(run,libsim.a): Add dependency on endian.o.
	(endian.o): Add dependency.

	* d10v_sim.h (read/write support): Always go through the machine
	independent endian functions.  If compiling with GCC and
	optimizing, include endian.c so the endian functions are inlined.

	* simops.c (OP_5F00): Correct tracing of accumulators.	

Tue Oct 15 10:57:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_5F00): Add support for getpid, kill system calls.

	* interp.c (do_{2_short,parallel}): If an exception is raised,
	don't execute the second instruction.

Sat Oct 12 22:17:43 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_{31000000,6601,6201,6200}): Store address in a
	temporary in case the register is overriden when loading.
	(OP_6200): Output type is OP_DREG for tracing.

Fri Oct  4 23:46:18 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* d10v_sim.h (struct _state): Add mem_{min,max} fields.

	* interp.c (sim_size): Initialize mem_{min,max} fields.
	(sim_write): Update mem_{min,max} fields.
	(sim_resume): If PC is not in the minimum/maximum memory range,
	abort.
	(sim_create_inferior): Preserve mem_{min,max} fields.

Fri Sep 27 13:11:58 1996  Mark Alexander  <marka@cygnus.com>

	* simops.c (OP_5F00): Add support for time() system call.

Wed Sep 25 16:31:41 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_{6E01,6A01,6E1F,6A00}): Print both words being
	stored if tracing.
	(OP_5F00,trace_{in,out}put_func): Add finer grain tracing for
	system calls.

Mon Sep 23 17:55:30 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (op_types): Add OP_{CONSTANT8,R2,R3}.
	(trace_input_func): Add support for  OP_{CONSTANT8,R2,R3}.
	(OP_{4900,24800000,4800,4A00,4B00,4D00,4C00}): Add OP_R2 and OP_R3
	to call/subroutine returns to trace the first two arguments and
	the return value.  For small jumps, use CONSTANT8, not CONSTANT16.

Fri Sep 20 15:36:45 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* interp.c (sim_create_inferior): Reinitialize State every time 
	sim_create_inferior() is called.

Thu Sep 19 21:38:20 1996  Michael Meissner  <meissner@wogglebug.ziplink.net>

	* simops.c (OP_{401,2000000,601,3000000,23000000}): Get sign right
	on comparisons.
	(OP_401): Fix tracing information.

Thu Sep 19 10:30:22 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (SIZE_{PC,LINE_NUMBER}): New default sizes for output.
	(trace_input_func): Use them.
	(trace_input_func): Make sure there is a trailing space after the
	instruction.
	(OP_6200): Fix tracing info.

	* Makefile.in (run): Add dependencies on libbfd.a and
	libiberity.a.

Wed Sep 18 09:13:25 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* d10v_sim.h (DEBUG_INSTRUCTION): New debug value to include line
	numbers and function names in debug trace.
	(DEBUG): If not defined, set to DEBUG_TRACE, DEBUG_VALUES, and
	DEBUG_LINE_NUMBER. 
	(SIG_D10V_{STOP,EXIT}): Values to represent the stop instruction
	and exit system call trap being executed.

	* interp.c (sim_stop_reason): Set exit code correctly for stop
	instruction and exit system call trap.

	* configure.in (--enable-sim-cflags): Remove trace case.
	(--enable-sim-debug): New switch to set the debug values.
	* configure: Regenerate.

	* simops.c (trace_{input,output}_func): Rename from
	trace_{input,output}.
	(trace_{input,output}): Call trace_{input,output}_func if
	d10v_debug is non-zero.
	(SIZE_INSTRUCTION): Cut down to 8.
	(SIZE_OPERANDS): Cut down to 18.
	(SIZE_LOCATION): New value for size of line number, function name
	field.
	(init_text_p,text{,_start,_end}): New static variables for
	printing line number and function name.
	(exec_bfd): New external that run.c sets.
	(trace_input_func): Print line number and function name if
	available and if desired.
	(OP_4E09): Don't print out DBT message.
	(OP_5FE0): Set exception field to SIG_D10V_STOP.
	(OP_5F00): Set exception field to SIG_D10V_EXIT.	

Sat Sep 14 22:18:43 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* interp.c (do_2_short): If the instruction encodes jump->ins,
	don't do the second instruction if the jump succeeds.

Fri Sep 13 22:35:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_5F00): Use unknown traps to print all GPRs,
	accumulators, PC, and F0/F1/C flags.

Thu Sep 12 12:50:11 1996  Mark Alexander  <marka@cygnus.com>

	* simops.c (OP_5F00): Fix problems with system calls.

Thu Sep 12 12:19:28 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_5F00): Correct tracing information for trap.

Wed Sep 11 18:55:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (CSEARCH): Correctly find opcodes directory.

Mon Sep  9 13:27:26 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (trace_output): Properly align accumulator output.
	(OP_3{0,2,4}00): Properly parenthesize test expression.  Add error
	if shift count is too high.
	(OP_4E{00,02,04,20,22,40,42}): Make tests agree with book.
	(OP_4E09): Make cpfg properly trace the input flags.
	(op_types): Add OP_FLAG_OUTPUT.
	(trace_{input,output}): Support OP_FLAG_OUTPUT.
	(OP_31000000): This ld2w varient is a 16-bit memory reference, not
	an 8-bit memory reference instruction for tracing purposes.
	(OP_201): Addi needs to set the carry.

Fri Sep  6 17:56:17 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* simops.c (OP_2600, OP_2601): Changed min and max comparisons
	to use signed register values.

Wed Sep  4 11:35:17 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* d10v_sim.h (DEBUG_*): Add bit flags for controlling debug
	output.
	(_ins_type): New enumeration to specify which container an
	instruction is in, and whether it is part of a parallel operation.
	(_state): Add ins_type field.
	({,u}int{8,16,32,64}): Use limits.h to size the appropriate types.
	(ins_type_counters): Counters for the various instruction types.
	({left,right}_nops): Counters for the number of nops in each
	container.
	(d10v_debug): New variable to indicate whether debugging is turned
	on.

	* simops.c: (all functions): Change all #ifdef DEBUG code so that
	the input and output values can be traced, along with the
	instruction type.  Make the -t option enable tracing.
	(all functions): Change printf calls to use the printf_filtered
	function in the callback table.

	* interp.c (_leftright): New enumeration to say whether 2 short
	instructions are done left first or right first.
	(do_{long,2_short,parallel}): Indicate in the machine state which
	type of instruction this is.  Count each of the types of
	instructions executed.
	(sim_size): Only print the memory sizes if DEBUG_MEMSIZE debug
	flag is set.
	(sim_resume): Pass left/right indication to do_2_short.
	(all functions): Change printf calls to use the printf_filtered
	function in the callback table.
	(sim_trace): Turn on debug flag if DEBUG was defined, and call
	sim_resume.
	(sim_info): Print out statistics on instructions.
	(sim_{trace,create_inferior}): Eliminate extraneous output unless
	debugging.
	(sim_open): If args == -t and DEBUG was defined, set d10v_debug.
	Only initialize the hash table the first time sim_open is called.

	* Makefile.in: Make objects depend on d10v_sim.h.
	({,SIM_}CFLAGS): Include configure dependent switches.  Setting
	CFLAGS does not override host/target defines or SIM_CFLAGS.
	(CC_FOR_BUILD,gencode): Use CC_FOR_BUILD to compile gencode.
	(run): By default, the math library is not needed to be linked
	in.
	({BFD,LIBIBERTY}_LIB): Define as variables so they can be
	overridden.
	(VPATH): Don't set to anything but @srcdir@ to work with non-GNU
	makes.
	({run,callback}.o): Provide explicit paths to their appropriate
	source directories.
	(gencode{,.o},d10v-opc.o): Split compilation into creating object
	and linking.  Instead of linking in libopcodes.a, just compile
	d10v-opc.o directly to handle canadian cross.
	(CSEARCH): Add opcodes directory.

	* configure.in (--enable-sim-cflags): New switch to allow user to
	set the defaults.
	(CC_FOR_BUILD): Deal with canadian crosses.
	* configure: Regenerate.

Wed Sep 04 04:45:34 1996  Mark Alexander  <marka@cygnus.com>

	* simops.c: Include correct syscall.h for d10v, not host's.
	Fix #ifdef SYS_stat.

Tue Sep  3 14:00:04 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* simops.c (OP_5F00): Wrap all SYS_xxx traps with #ifdef.
	Add trap 2 to be printf and trap 3 to be putchar.

Wed Aug 28 21:42:34 1996  Mark Alexander  <marka@cygnus.com>

	* Makefile.in, d10v_sim.h, interp.c, simops.c: Add support
	for low-level system calls.

Wed Aug 28 17:33:19 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in, d10v_sim.h, interp.c: Fix byte-order problems.

Mon Aug 26 18:30:28 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* d10v_sim.h (SEXT32): Added.
	* interp.c: Commented out printfs.
	* simops.c:  Fixed error in sb and st2w. 

Thu Aug 15 13:30:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in, d10v_sim.h, interp.c, simops.c: Added remaining
	DSP instructions.  Added modulo addressing.

Sun Aug 11 12:57:15 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in, d10v_sim.h, interp.c, simops.c: Snapshot.

Fri Aug  2 17:44:24 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* d10v_sim.h, simops.c: Snapshot.

Thu Aug  1 17:05:24 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* ChangeLog, Makefile.in, configure, configure.in, d10v_sim.h, 
	gencode.c, interp.c, simops.c: Created.

