2021-01-08  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2021-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2020-07-29  Simon Marchi  <simon.marchi@efficios.com>

	* configure: Re-generate.

2018-10-30  Joel Sherrill <joel@rtems.org>

	* configure.ac: Remove the Cygwin-specific libtermcap.a hack
	and use the standard logic to determine which library to use.
	* configure: Regenerate.

2017-09-06  John Baldwin  <jhb@FreeBSD.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-09  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2016-01-06  Mike Frysinger  <vapier@gentoo.org>

	* interf.c (sim_open): Mark argv const.
	(sim_create_inferior): Mark argv and env const.

2016-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-03  Mike Frysinger  <vapier@gentoo.org>

	* interf.c (sim_open): Replace while loop with a call to countargv.

2016-01-03  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (SIM_AC_OPTION_HOSTENDIAN): Delete.
	* configure: Regenerate.
	* exec.c (fpexec): Rename CURRENT_HOST_BYTE_ORDER to
	HOST_BYTE_ORDER.
	* sis.h (WITH_HOST_BYTE_ORDER): Rename to ...
	(HOST_BYTE_ORDER): ... this.

2016-01-02  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-12-26  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2015-06-23  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-05-17  Mike Frysinger  <vapier@gentoo.org>

	* erc32.c: Re-add file overview & author info.
	* exec.c, float.c, func.c, help.c, interf.c, sis.c: Likewise.

2015-05-08  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Add copyright header.
	* erc32.c: Change copyright holder to FSF.  Reformat.
	* exec.c, float.c, func.c, interf.c, sis.c, sis.h: Likewise.
	* help.c, startsim: Add copyright header.

2015-04-29  Nick Clifton  <nickc@redhat.com>

	PR 18273
	* sis.c (main): Remove unreachable code.

2015-04-24  David Binderman  <dcb314@hotmail.com>
	    Nick Clifton  <nickc@redhat.com>

	PR 18273
	* exec.c (add32): Fix typo in check for overflow.

2015-04-19  Jiri Gaisler  <jiri@gaisler.se>

	* erc32.c (current_target_byte_order): Delete.
	(fetch_bytes): Remove.
	(store_bytes): Remove byte twisting.
	(memory_read, memory_write): Access memory directly.
	(extract_short, extract_short_signed, extract_byte,
	extract_byte_signed): New function for for sub-word LD instructions.
	* exec.c (extract_short, extract_short_signed, extract_byte,
	extract_byte_signed): New functions.
	(dispatch_instruction): Update memory reads.
	* func.c (current_target_byte_order): Delete.
	(get_regi): Delete little endian handling.
	(disp_ctrl, dis_mem): Adjust print-out to new data endian.
	(bfd_load): Delete little endian handling.
	* interf.c (current_target_byte_order): Delete.
	(sim_open): Set dinfo to host endian to get correct disassembly.
	(sim_write, sim_read): Convert endian when gdb reads or writes
	memory.
	* sis.c (main): Set endian.
	* sis.h (EBT): Define.

2015-04-13  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-03-31  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2015-03-28  Jiri Gaisler  <jiri@gaisler.se>

	* func.c (exec_cmd): Fix old style prototype.  Mark cmd const.  Save
	the command in a new cmdsave2 to avoid modifying.
	(bfd_load): Fix old style prototype.  Mark fname const.
	* sis.h (exec_cmd): Mark cmd const.
	(bfd_load): Mark fname const.

2015-03-28  Jiri Gaisler  <jiri@gaisler.se>

	* erc32.c (memory_iread): New function to fetch instructions.
	(memory_read): Print message in verbose mode.
	* interf.c (run_sim): Use memory_iread.
	* sis.c (run_sim): As above.
	* sis.h (memory_iread): New prototype.
	(sregs): Declare.

2015-03-28  Mike Frysinger  <vapier@gentoo.org>

	* erc32.c (mec_read): Delete parenthesis around return statement.
	(mec_write, read_uart, rtc_counter_read, gpt_counter_read, memory_read,
	memory_write, get_mem_ptr, sis_memory_write, sis_memory_read): Likewise.
	* exec.c (sub_cc, add_cc, add32, dispatch_instruction, fpexec, chk_asi,
	execute_trap, check_interrupts): Likewise.
	* float.c (get_accex): Likewise.
	* func.c (batch, limcalc, exec_cmd, disp_fpu, now, wait_for_irq,
	check_bpt, bfd_load, get_time): Likewise.
	* interf.c (run_sim, sim_write, sim_read): Likewise.
	* sis.c (run_sim): Likewise.

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

	* interf.c (sim_set_callbacks, sim_size, sim_trace): Delete.

2015-03-17  Jiri Gaisler  <jiri@gaisler.se>

	* func.c (exec_cmd): Silence compiler warnings when calling system().
	(batch): Replace fgets() with getline().

2015-03-17  Jiri Gaisler  <jiri@gaisler.se>

	* func.c (show_stat): Print simulation time in portable long long
	format.
	* help.c (usage): Update usage help print-out.
	* sis.c (run_sim): Increase debug level with -v. Also print
	simulation time in portable long long format.
	* sis.h: Use stdint.h for portable 32- and 64-bit ints.

2015-03-16  Mike Frysinger  <vapier@gentoo.org>

	* config.in, configure: Regenerate.

2015-03-16  Jiri Gaisler  <jiri@gaisler.se>

	* Makefile.in (end, end.h): Remove target rules.
	(clean): Remove end and end.h.
	(erc32.o, exec.o, float.o, func.o, help.o, interf.o, sis.o): Delete
	rules.
	* configure, config.in: Regenerate.
	* configure.ac: Use SIM_AC_OPTION_HOSTENDIAN
	* end.c: Delete.
	* erc32.c: Remove end.h include.
	* exec.c: Remove end.h include. Use HOST_LITTLE_ENDIAN.
	* func.c, sis.c: Likewise.

2015-03-14  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (SIM_RUN_OBJS): Set to sis.o.

2015-03-14  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (AC_CHECK_HEADERS): Delete.
	* aclocal.m4, configure: Regenerate.

2015-02-22  Jiri Gaisler  <jiri@gaisler.se>

	* Makefile.in: Add include path to readline.h.
	sis.c: Remove locally define readline types.

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* func.c (reset_stat, show_stat): Switch to double in time keeping.
	(get_time): New function to get system time.
	* interf.c (run_sim): Use get_time() for system time.
	* sis.c (run_sim): Likewise.
	* sis.h: Likewise.

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* Makefile.in: Remove unused defines

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* float.c (get_accex, clear_accex, set_fsr): Use functions from fenv.h
	instead of custom assembly.

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* erc32.c (mec_read): Allow simulator memory size to be read
	by application.
	(boot_init): initialize memory and timers if start address is
	not 0.
	* func.c (exe_cmd): Call boot_init if start address not 0.
	* interf.c (run_sim): Likewise.

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* exec.c (init_regs): erc32 has vendor ID 1 and version ID 1 in %psr.

2015-02-21  Jiri Gaisler  <jiri@gaisler.se>

	* func.c (print_insn_sparc_sis): Add helper function for disassembly.
	(disp_ctrl): Use helper function.

2014-08-19  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2014-08-15  Roland McGrath  <mcgrathr@google.com>

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

2014-03-10  Mike Frysinger  <vapier@gentoo.org>

	* interf.c (sim_do_command): Add const to cmd.

2014-03-05  Mike Frysinger  <vapier@gentoo.org>

	* interf.c (sim_load): Add const to prog.

2013-10-09  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR sim/16018:
	* float.c (set_fsr): Add missing "break" statements.  Reindent
	code.

2013-09-23  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2013-06-03  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4, configure: Regenerate.

2013-03-14  Joel Sherrill <joel.sherrill@oarcorp.com>

	* Makefile.in: Include build directory in search path to find
	config.h

2012-08-16  Nick Clifton  <nickc@redhat.com>

	* end.c: Include config.h before system header files.
	* erc32.c: Likewise.
	* exec.c: Likewise.
	* float.c: Likewise.
	* func.c: Likewise.
	* help.c: Likewise.
	* interf.c: Likewise.

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

	* sys.h: Include "config.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-31  Mike Frysinger  <vapier@gentoo.org>

	PR sim/9971:
	* configure.ac: Change AC_CHECK_LIB to AC_SEARCH_LIBS to match
	the code in gdb's configure.ac with $TERMCAP.
	* configure: Regenerated.

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.

2011-06-09  Mike Frysinger  <vapier@gentoo.org>

	* interf.c (sim_open): Accept and ignore `--sysroot=...'.

2011-06-01  Joel Brobecker  <brobecker@adacore.com>

	* interf.c (sim_complete_command): New stub function.

2011-01-11  Andrew Burgess  <aburgess@broadcom.com>

	* interf.c (sim_store_register): Update return value to
	match new API.

2010-05-20  Joel Brobecker  <brobecker@adacore.com>

	* sis.h: Remove #include <stdint.h>.
	(uint64, int64): Redefine without using stdint.h.
	(UINT64_MAX): Define.

2010-04-20  Tiemen Schut    <T.Schut@sron.nl>

	* erc32.c (sis_memory_write): Change prototype to const unsigned char *.
	* func.c (exec_cmd, event, advance_time, wait_for_irq): Use uint64
	for counts.
	* interf.c (run_sim): Change icount to uint64_t. Use strtol directly.
	(sim_resume): Specify maximum run time as uint64.
	* sis.c (run_sim): Change icount to uint64_t.
	* sis.h: Define uint64 as uint64_t. Change various fields and
	prototypes to uint64 to support longer simulations.

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

	* interp.c (sim_write): Add const to buf 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-11-10  Joel Sherrill <joel.sherrill@oarcorp.com>

	* erc32.c, exec.c: Fix warnings.

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

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

2008-06-09  Joel Sherrill <joel.sherrill@oarcorp.com>

	* sis.c: Correct spelling error.

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-12-20  Hans-Peter Nilsson  <hp@axis.com>

	* configure.ac: Add test for readline, substitute READLINE.
	* Makefile.in (READLINE_LIB): New substituted-contents variable.
	(SIM_EXTRA_LIBDEPS): Don't set.
	(SIM_EXTRA_LIBS): Use $(READLINE_LIB) instead of
	../../readline/libreadline.a.
	* configure: Regenerate.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (func.o, help.o): Correct dependencies.

2006-08-08  Joel Sherrill <joel.sherrill@oarcorp.com>

	* Makefile.in (install-sis): Honor DESTDIR.

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.

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

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

2005-07-08  Ben Elliston  <bje@au.ibm.com>

	* func.c: Remove ANSI_PROTOTYPES conditional code.

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

	* configure: Regenerate.

2005-03-07  Jerome Guitton  <guitton@gnat.com>

	* sim/erc32/float.c (set_fsr): Do not use deprecated multi-line
	strings.
	(clear_accex): Ditto.
	* sim/erc32/interf.c: Remove the redeclaration of fprintf.
	* sim/erc32/sis.c: Ditto.
	* sim/erc32/exec.c: Add missing semicolon.
	* sim/erc32/func.c: Remove definitions of generic_print_address,
	generic_symbol_at_address, buffer_read_memory and perror_memory, as
	they are already defined in opcodes/dis-buf.c.

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-11-11  Andreas Schwab  <schwab@suse.de>

	* interf.c: Include "libiberty.h" instead of declaring buildargv
	ourselves.

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

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

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

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

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

	* sis.h: Include "gdb/remote-sim.h" and "gdb/callback.h".
	* interf.c: Include "gdb/remote-sim.h".

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

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

2000-03-07  Frank Ch. Eigler  <fche@redhat.com>

	From John Dallaway  <jld@redhat.co.uk>:
	* Makefile.in (install-sis): Add $(EXEEXT) for Windows host.

2000-03-03  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* func.c (buffer_read_memory): Change type of size to unsigned to
	match prototype

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-03-03  DJ Delorie  <dj@cygnus.com>

	* configure.in: add termcap and -luser32 for host=cygwin
	* configure: regenerate

1999-02-11  Hugo Tyson  <hmt@cygnus.co.uk>

	* exec.c (dispatch_instruction):
	Correct the sense of the
	          if (!sparclite) {
		     sregs->trap = TRAP_UNIMP;
	             break;
		  }
	clause that has been pasted around: it's correct in the SCAN and
	DIVScc (divide step) cases (where it was probably originally
	written?), but reversed in the SDIV, SDIVcc, UDIV, UDIVcc cases
	ie. instructions only in the SPARC V8 or SPARClite 86x
	architectures.  It was also present when not required for SMUL,
	SMULcc, UMUL, UMULcc instructions that are present in all
	architectures.

1999-01-25  Hugo Tyson  <hmt@cygnus.co.uk>

	* interf.c (run_sim): Fix a bug in the main loop's handling of
	annulled delay slot instructions.  There is precedent for this
	change; the _other_ main loop in sis.c gets it right according to
	my reading of the code.

	The bug is: if an interrupt happens when the next instruction
	(at sregs->pc) is annulled, the trap is taken (by execute_trap())
	with the current values of PC and NPC, so when the trap returns,
	the annulled instruction is indeed executed.  Another giveaway is
	that the annul flag is cleared in execute_trap(): the information
	is demonstrably discarded.

	The solution is: perform annulling before looking for traps, in
	fact it's neater to do annulling, see if there's an interrupt and
	if not, do the instruction, then handle traps be they generated by
	interrupts pending or by the instruction we might just have done.
	That's what the sis.c one does.

1999-01-20  Hugo Tyson  <hmt@cygnus.co.uk>

	* sis.h: Add asr17 register for support of SparcLITE (at least the
	Hitachi ones I find before me)

	* exec.c (dispatch_instruction): Case WRY: Allow write of asr17 if
	sparclite.  Other ASR numbers than 17 or 0 (Y) trap out.
	Case RDY: Allow read of asr17 if sparclite.  Other ASRs ditto.
	(execute_trap): Do single-vector-trapping if asr17 bit 0 is set.
	(init_regs): Initialize y and asr17.
	NB: In instruction-set space, the Y register is asr0; the
	instructions have different names for human reasons only.

	* sis.c:
	* interf.c: Set boolean mode variable dumbio if invoked with
	argument "-dumbio" and mention it of verbose.
	* erc32.c: if "dumbio" is set, do not assume that there is a
	terminal type device attached to stdin/stdout.  Do not set
	buffering or mess with tcsetattr or do any read operations in
	order to make UART interrupts; not input data is supported.
	This is necessary to allow the sim to be used within the eCos
	testing infrastructure where stdin/stdout are pipes to a TCL
	program; the sim hangs otherwise.

Thu Jul 23 07:17:03 1998  Mark Alexander  <marka@cygnus.com>

	* exec.c (dispatch_instruction): Add SPARClite 'scan' instruction.

Tue Jul  7 21:12:41 1998  Mark Alexander  <marka@cygnus.com>

	* func.c (bfd_load): Add special handling of a.out executables.

Sat Jun 13 08:33:25 1998  Mark Alexander  <marka@cygnus.com>

	* func.c (bfd_load): Print correct endianness.
	* interf.c (run_sim): Print debugging information if verbosity level
	is greater than 2.
	(sim_open): Repeated -v options now increment verbosity level.
	(sim_store_register): Handle little-endian case.
	(flush_window): Print debugging information if verbosity level
	is greater then 2.

Tue Jun  2 15:20:35 1998  Mark Alexander  <marka@cygnus.com>

	* interf.c (sim_open): Use revamped memory_read, which makes
	byte-swapping unnecessary.  Add -sparclite-board option for
	emulating RAM found on typical SPARClite boards.  Print
	error message for unrecognized option.
	* erc32.c: Change RAM address and size from constants to variables,
	to allow emulation of SPARClite board RAM.
	(fetch_bytes, store_bytes): New helper functions for revamped
	mememory_read and memory_write.
	(memory_read, memory_write): Rewrite to store bytes in target
	byte order instead of storing words in host byte order; this
	greatly simplifies support of little-endian programs.
	(get_mem_ptr): Remove unnecessary byte parameter.
	(sis_memory_write, sis_memory_read): Store words in target
	byte order instead of host byte order.
	(byte_swap_words): Remove, no longer needed.
	* sis.h ((byte_swap_words): Remove declaration, no longer needed.
	(memory_read): Add new sz parameter.
	* sis.c (run_sim): Use revamped memory_read, which makes
	byte-swapping unnecessary.
	* exec.c (dispatch_instruction): Use revamped memory_read, which
	makes byte-swapping and double-word fetching unnecessary.
	* func.c (sparclite_board): Declare new variable.
	(get_regi): Handle little-endian data.
	(bfd_load): Recognize little-endian SPARClite as having
	little-endian data.

Fri May 22 14:23:16 1998  Mark Alexander  <marka@cygnus.com>

	* erc32.c (port_init): Print messages only if sis_verbose is true.
	* func.c (bfd_load): Ditto.
	* interf.c (sim_open): Ditto.

Thu May 14 23:10:48 1998  Mark Alexander  <marka@cygnus.com>

	* sis.h (uint64, int64): Define.
	* exec.c (SDIV, SDIVCC, UDIV, UDIVCC): Define new opcodes.
	* (mul64): Simplify calculation of negative result.
	* (div64): New helper function for 64-bit division.
	* (dispatch_instruction): Add emulation of SDIV, SDIVCC, UDIV,
	and UDIVCC.

Wed May 13 14:59:54 1998  Mark Alexander  <marka@cygnus.com>

	* erc32.c (close_port): Don't close stdin; it kills GDB.
	(byte_swap_words): New function.
	* sis.h: (byte_swap_words): Declare.
	* interf.c (run_sim): Always fetch instructions as big-endian.
	* sis.c (run_sim): Ditto.

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:17 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:19:52 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

Sat Apr 18 12:00:16 1998  Mark Alexander  <marka@cygnus.com>

	* func.c (disp_fpu): Fix build problem on big-endian hosts.

Wed Apr  8 19:33:34 1998  Mark Alexander  <marka@cygnus.com>

	* erc32.c (sim_stop): Handle SIGINT gracefully.
	* interf.c (sim_open): Don't catch SIGINT; GDB will do that for us.

Wed Apr  8 18:29:40 1998  Mark Alexander  <marka@cygnus.com>

	* exec.c (dispatch_instruction): Change how carry out is calculated
	in DIVSCC.  Add emulation of SMULCC, UMUL, and UMULCC.

Sat Apr  4 20:36:25 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

Wed Apr  1 21:19:18 1998  Mark Alexander  <marka@cygnus.com>

	* end.c: Update to version 2.7.5, fix compiler warnings and bugs.
	* erc32.c: Ditto.
	* exec.c: Ditto.
	* float.c: Ditto.
	* func.c: Ditto.
	* help.c: Ditto.
	* interf.c: Ditto.
	* sis.c: Ditto.
	* sis.h: Ditto.

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:41:11 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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.

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.

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

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

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

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

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 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:38:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* float.c (__setfpucw): Compile on any i386 target.  Not just NT.

	* interf.c (sim_kill): Delete.
	(sim_create_inferior): Add ABFD argument.  Initialize PC from ABFD
 	argument.
	(sim_load): Don't save start address.
	(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 16:19:49 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interf.c (sim_open): Add ABFD argument. Change ARGV to PARGV.

Mon Jun 30 11:45:25 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (install-sis): Change $(srcdir)/sis to sis.

Wed May 28 09:46:13 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* interf.c (sim_set_callbacks): Drop SD argument - not applicable.
	(sim_open): Add callback arg, save it.

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

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

Tue Apr 22 11:05:01 1997  Doug Evans  <dje@canuck.cygnus.com>

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

Thu Apr 17 03:03:56 1997  Doug Evans  <dje@canuck.cygnus.com>

	* interf.c (sim_open): Ignore -E arg.
	(start_address): New static local.
	(sim_load): Return SIM_RC.  New arg abfd.  Set start_address from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.

Tue Apr 15 15:16:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (install-sis): Depend upon installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM).

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>

	* interf.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.

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

	* interf.c (sim_open): New SIM_DESC result.  Argument is now in
	argv form.
	(other sim_*): New SIM_DESC argument.

Tue Feb  4 13:35:20 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.

Wed Dec  4 18:25:04 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* interf.c (run_sim): Stop the simulator and reset the stdio after
	breakpoints.

Tue Dec  3 11:54:37 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* configure.in: Look for libtermcap.a.
	* Makefile.in: Only link in -ltermcap if it exists.
	* erc32.c: Update to version 2.6a. Fix uart handling.
	* exec.c: Update to version 2.6a. Add sparclite support.
	* float.c: Update to version 2.6a. Convert comments to
	preprocessor warnings. Add __setfpucw() for i385 hosts so floating
	point exceptions work on win32.
	* func.c: Update to version 2.6a. Fix uart handling, add support
	for user error traps.
	* help.c: Update to version 2.6a. Add help note on user error
	traps.
	* interf.c: Update to version 2.6a. Fix uart handling, and add
	sparclite support.
	* examples/gccx: Use sparclite cross compiler, not native gcc.
	* examples/srt0.S: Use "mov" rather than "wr" for manipulating
	the psr register.

Mon Nov 25 08:28:10 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (run.o): Remove this rule, it hides the one in
	../common/Make-common.in that correctly references the source
	in the sibling ../common directory.

Wed Nov 20 01:30:12 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in: Delete stuff moved to ../common/Make-common.in.
	(SIM_{OBJS,EXTRA_LIBS,EXTRA_LIBDEPS,EXTRA_ALL,EXTRA_INSTALL}): Define.
	(SIM_{EXTRA_CLEAN,EXTRA_CFLAGS}): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	Call AC_CHECK_HEADERS(stdlib.h).
	* configure: Regenerated.
	* config.in: New file.
	* func.c (sim_set_callbacks): Delete, moved to
	* interf.c (sim_set_callbacks): here.
	(sim_callback): New global.
	Rewrite all calls to printf_filtered to go through callback.
	(sim_size,sim_trace): New functions.
	(sim_{insert,remove}_breakpoint): #if 0 out.
	* sis.c: #include "config.h".  #include <stdlib.h> if present.
	(main): Coerce fprintf arg to INIT_DISASSEMBLE_INFO to fprintf_ftype.
	* sis.h: #include "callback.h".
	* run.c: Deleted, using one in ../common now.

Thu Oct  3 16:12:03 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (clean): Move config.log to distclean.

Wed Oct  2 16:57:57 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (clean): Also remove config.log.

Sat Sep 14 00:00:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (CC_FOR_BUILD): New variable.
	(AR, AR_FLAGS, BISON, MAKEINFO): Remove duplicate variables.
	(RANLIB, CC): Likewise.
	(end): Use $(CC_FOR_BUILD), not $(CC).
	* configure.in: Set CC_FOR_BUILD.
	* configure: Rebuild.

Sun Sep  8 14:04:37 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* erc32.c (port_init):  Disable this for __GO32__ (got no pty's
	there either...).

Mon Aug 12 17:04:58 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* erc32.c:  Don't include sys/ioctl.h or sys/file.h.  They aren't
	necessary.
	* (port_init):  Don't even *try* to open pty's under _WIN32.
	* Use SIM_ADDR, not caddr_t for declaring vars that hold addresses.
	* float.c:  Get rid of #warning.  Makes Microsoft C barf.
	* interf.c (sim_open):  Cast fprintf to (fprintf_ftype) to fix
	compiler warning.
	* (sim_load sim_create_inferior sim_read):  Use prototypes only in
	decls, not defs.
	* Get rid of enum sim_stop.  It's defined in remote-sim.h.
	* (sim_stop_reason):  Define SIGTRAP if _WIN32.
	* sis.h:  Include ansidecl.h and remote-sim.h.

Wed Jul  3 16:05:23 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* erc32.c (mec_reset mec_read mec_write memory_read memory_write),
	sis.h:  Get rid of all uses of long long's.
	* (close_port read_uart write_uart uarta_tx):  Don't seg fault
	when can't open pty's.
	* exec.c:  Add two new instructions: smul, and divscc.
	* interf.c (flush_windows):  New routine to flush the register
	windows out to the stack just before returning to GDB.  Makes
	backtraces work much better.

Wed Jun 26 12:19:11 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	(docdir, oldincludedir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	(AC_PROG_INSTALL): Added.
	* configure: Rebuilt.

Mon Jun 24 14:19:07 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Call AC_PROG_CC before running configure.host.
	* configure: Rebuild with autoconf 2.10.

Tue Jun  4 10:37:12 1996  Tom Tromey  <tromey@csk3.cygnus.com>

	* Makefile.in (install): Don't check to see if tooldir exists.
	Make $(tooldir) and $(tooldir)/bin.

Mon Jun  3 12:33:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (end.h): Use explicit ./ when running end.

Sun May 19 21:05:31 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* func.c(bfd_load): Don't try to print the filename if the pfbd is
	NULL.
	* interf.c(sim_load): Pass the whole string, not just the first
	byte.

Version 2.1 26-02-96
--------------------

* Fixed bug in "go" command.

version 2.0 05-02-96
--------------------

* Fixed bug in interrupt force register (erc32.c).

* Change file load function to use bfd_openr.

* SIS should now be endian independent.

version 1.8 24-11-95
--------------------

* Fixed FPU timing - some sequences of FPU instructions did not calculate
  the resource dependencies right.

* Corrected STDFQ when qne = 0 (again!). The ftt is set to sequence_error
  but no FPU trap is generated.

version 1.7.1 31-10-95
--------------------

* Corrected STDFQ when qne = 0. Now, a trap is immidiately generated but
  the FPU stays in execute mode.

* Corrected JMPL and RETT timing (these instructions takes two cycles).


version 1.7 25-10-95
--------------------

* Interrupt during annuled instruction corrupted return address - fixed.


version 1.6.2 25-10-95
--------------------

* Added -DFAST_UART to Makefile


version 1.6.1 24-10-95
--------------------

* Fixed bug in STDFQ which caused bus error


version 1.6 02-10-95
--------------------

* Modified srt0.s to include code that initiates registers in IU and FPU
  and initializes the data segment. The simulator 'load' command does not
  longer initialize the data segment!

* Corrected MEC timer operation; scalers now divide the frequency by
  (scaler_value + 1).

* MEC breakpoints are not checked during store operation


version 1.5 14-09-95
--------------------

* Fixed some bugs in the cycle counting for IU & FPU instructions.

* Fixed bug that allowed an annuled instruction to cause memory exception.

* The *ws parameter in mem.c should now contain the number of waitstates
  required by the memory access (was total number of cycles).

* The supplied srt0.s now clears the BSS (thanks Joel).

version 1.4 22-08-95
--------------------

* Added a '-g' switch to enable/disable the GNU readline(), which cause
some problems on solaris 2.x machines.

* Enabled MEC watchpoint and breakpoint function to mem.c. Performance
may suffer a bit ...

NOTE: The UARTs are now connected to /dev/ttypc and /dev/ttypd.

version 1.3 26-07-95
--------------------

* Fixed bug in mulscc instruction (how could that ever have worked?)

* Fixed bug in UART B (flushed characters on UART A), thanks Paul.

version 1.2 13-07-95
--------------------

* Fixed bug in interrupt handling (wrong interrupt selected when more that
one interrupt pending)

* Fixed updating of condition codes during logical instructions (carry and
overflow were not reset)

* Fixed bug in WRTBR (tt field was wrongly over-written)

version 1.1 07-07-95
--------------------

* Fixed several bugs in the interrupt handler and callback routines.
(reported by Paul Warren, Alsys)
