2003-04-13  Michael Snyder  <msnyder@redhat.com>

	* Make-common.in (sim-events.o, sim-config.o): Depend on sim-main.h.

2003-03-01  Andrew Cagney  <cagney@redhat.com>

	* sim-engine.c (sim_engine_halt): If jmpbuf is invalid, abort.
	(sim_engine_vabort): Ditto.

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

	* sim-utils.h (sim_analyze_program, sim_load_file): Rename _bfd to bfd.
	* sim-hload.c (sim_load), sim-base.h (sim_state_base): Ditto.
	* nrun.c (main): Ditto.

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

	* sim-engine.h (sim_engine_abort): Add noreturn attribute.
	(sim_engine_vabort): Ditto.
	(sim_engine_halt, sim_engine_restart): Ditto.

2003-02-20  Andrew Cagney  <ac131313@redhat.com>

	* Make-common.in (SIM_NEW_COMMON_OBJS): Remove sim-break.o
	(sim-break_h): Delete macro.
	(sim-break.o): Delete rule.
	* sim-break.c: Delete file.
	* sim-break.h: Delete file.
	* sim-base.h [SIM_HAVE_BREAKPOINTS]: Don't include "sim-break.h".
	(STATE_BREAKPOINTS): Delete macro.
	(sim_state_base): Delete field breakpoints.
	* sim-module.c (modules) [SIM_HAVE_BREAKPOINTS]: Don't add
	sim_break_install to array.

2003-01-08  Kazu Hirata  <kazu@cs.umass.edu>

	* run.c (usage): Fix typos.

2002-11-27  Richard Sandiford  <rsandifo@redhat.com>

	* sim-fpu.c (sim_fpu_inv): Use sim_fpu_div.

2002-11-22  Andrew Cagney  <ac131313@redhat.com>

	* dv-core.c: Update copyright.  sim/common contributed to the FSF.
	* dv-glue.c, dv-pal.c, hw-base.c, hw-base.h, hw-device.c: Ditto.
	* hw-device.h, hw-handles.c, hw-handles.h: Ditto.
	* hw-instances.c, hw-instances.h, hw-properties.c: Ditto.
	* hw-properties.h, hw-tree.c, hw-tree.h, sim-alu.h: Ditto.
	* sim-basics.h, sim-bits.c, sim-bits.h, sim-config.c: Ditto.
	* sim-config.h, sim-core.c, sim-core.h, sim-endian.c: Ditto.
	* sim-endian.h, sim-events.c, sim-events.h, sim-inline.c: Ditto.
	* sim-inline.h, sim-io.c, sim-io.h, sim-n-bits.h: Ditto.
	* sim-n-core.h, sim-n-endian.h, sim-types.h: Ditto.

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

	* run.c (main): Remove SIM_HAVE_ENVIRONMENT from #endif.

2002-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* Make-common.in (SIM_EXTRA_DISTCLEAN): New macro.
	(distclean): Depend on it.

2002-10-14  Alan Modra  <amodra@bigpond.net.au>

	* cgen-trace.h: Test __BFD_H_SEEN__ rather than BFD_VERSION.

2002-08-29  Dave Brolley  <brolley@redhat.com>

	* Make-common.in (CGEN_READ_SCM): Remove ../../cgen/stamp-cgen.

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

	* run-sim.h: Add #ifdef RUN_SIM_H wrapper.
	(sim_set_callbacks, sim_size, sim_trace)
	(sim_set_trace, sim_set_profile_size, sim_kill): Declare.  Moved
	to here from "gdb/remote-sim.h".

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

	* sim-resume.c (sim_resume): Add local variable sig_to_deliver to
	avoid possible longjmp problems with automatic variable siggnal.

2002-07-14  Andrew Cagney  <ac131313@redhat.com>

	From 2002-07-11 Momchil Velikov <velco@fadata.bg>:
	* Make-common.in (installdirs): Make $(libdir) too, needed when
	installing libsim.a.

2002-07-13  Andrew Cagney  <ac131313@redhat.com>

	* gennltvals.sh (dir): Mark d30v as obsolete.
	* nltvals.def: Remove d30v.

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

	* hw-events.c (hw_event_queue_schedule): Initialize `dummy'.

	* sim-memopt.c: Include <unistd.h>.
	(do_memopt_add): Fix printf format.
	* sim-events.c (sim_events_schedule): Initialize ``dummy''.

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

	* aclocal.m4 (SIM_AC_OPTION_WARNINGS): Update to match GDB's
	--enable-gdb-build-warnings.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

2002-06-09  Aldy Hernandez  <aldyh@redhat.com>

        * sim-fpu.c (unpack_fpu): Initialize exponent for
        sim_fpu_class_zero.
        (i2fpu): Same.
        (sim_fpu_sqrt): Same.

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

	* gentmap.c (gen_targ_map_c): Generate "gdb/callback.h".
	* sim-basics.h: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* run.c: Ditto.
	* sim-load.c: Ditto.
	* callback.c: Ditto.
	* syscall.c: Ditto.
	* Make-common.in (callback_h): Define.
	(remote_sim_h): Define.
	(run.o): Update.
	(callback.o): Update.
	(syscall.o): Update.
	(sim-load.o): 
	(nrun.o): Update.
	(sim-hload.o): Update.
	(sim-io.o): Update.
	(sim-reason.o): Update.
	(sim-reg.o): Update.
	(sim-resume.o): Update.

2002-05-30  Kazu Hirata  <kazu@cs.umass.edu>

	* run.c: Fix formatting.

2002-05-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* run-sim.h: New header.  Provide prototypes for functions used
	between run() and libsim.a which are not used by GDB.
	* run.c: Include run-sim.h.
        (main): If SIM_TARGET_SWITCHES is defined call
        sim_target_parse_command_line.
        (usage): If SIM_TARGET_SWITCHES is defined call
        sim_target_display_usage.

2002-05-17  Andrey Volkov  <avolkov@transas.com>

	* run.c: Made h8300s as new target, not h8300h alias.
	Added new option -S (h8300s target)
	* sim-options.c: Ditto.
	
2002-05-01  Chris Demetriou  <cgd@broadcom.com>

	* callback.c: Use 'deprecated' rather than 'depreciated.'

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	From wiz at danbala:
	* sim-fpu.h: Fix grammar and typos.
	Fix PR gdb/287.

2002-02-10  Chris Demetriou  <cgd@broadcom.com>

	* callback.c: Fix some spelling errors.
	* hw-device.h: Likewise.
	* hw-tree.c: Likewise.
	* sim-abort.c: Likewise.
	* sim-alu.h: Likewise.
	* sim-core.h: Likewise.
	* sim-events.c: Likewise.
	* sim-events.h: Likewise.
	* sim-fpu.h: Likewise.
	* sim-profile.h: Likewise.
	* sim-utils.c: Likewise.

2002-01-31  Hans-Peter Nilsson  <hp@axis.com>

	* cgen-ops.h (ADDCQI, ADDCFQI, ADDOFQI, SUBCQI, SUBCFQI, SUBOFQI):
	New functions.

2002-01-20  Ben Elliston  <bje@redhat.com>

	* sim-fpu.h (SIM_FPU_IS_QNAN): Replace "Quite" with "Quiet" in
	the comment for this enumerator.

2002-01-14  Ben Elliston  <bje@redhat.com>

	* sim-fpu.h: Fix comment about sim_fpu_* constants.

2001-12-20  Kazu Hirata  <kazu@hxi.com>

	* run.c (usage): Fix a typo.

2001-07-05  Ben Elliston  <bje@redhat.com>

	* Make-common.in (srccgen): Remove.
	(CGEN_CPU_DIR): Define.
	(CGEN_READ_SCM): Redefine without $(srccgen).
	(CGEN_ARCH_SCM): Ditto.
	(CGEN_CPU_SCM): Ditto.
	(CGEN_DECODE_SCM): Ditto.
	(CGEN_DESC_SCM): Ditto.

2001-04-25  Frank Ch. Eigler  <fche@redhat.com>

	* sim-load.c (sim_load_file): Put it back: external now.
	* sim-utils.c (sim_analyze_program): Ditto.  Nyuk nyuk nyuk.

2001-04-21  Andrew Cagney  <ac131313@redhat.com>

	* sim-load.c (sim_load_file): Delete call bfd_cache_close.  BFD
	internal interface.
	* sim-utils.c (sim_analyze_program): Ditto.

2001-04-19  Frank Ch. Eigler  <fche@redhat.com>

	* sim-utils.c (sim_analyze_program): Call bfd_cache_close after
	we're finished with its immediate use.
	* sim-load.c (sim_load_file): Ditto.

2001-03-16  Frank Ch. Eigler  <fche@redhat.com>

	Add support for mmap-based memory regions.
	* sim-memopt.c (mmap_next_fd): New global.
	(sim_memory_init): Reinitialize it.
	(OPTION_MEMORY_MAPFILE, memory_option_handler): Support new
	"--memory-mapfile FILE" option.  Check for some errors.
	(do_memopt_add): Conditionally do mmap instead of malloc for
	backing store of simulated memory.  Check for more errors.
	(do_simopt_delete, sim_memory_uninstall): Corresponding cleanup.
	* sim-memopt.h (munmap_length): New member of _sim_memopt.
	* configure.in: Look for mmap/fstat related functions and headers.
	* config.in, configure: Regenerated.

2001-03-15  Frank Ch. Eigler  <fche@redhat.com>

	* sim-core.c (sim_core_map_attach): Correct overlap-related
	error messages.

2001-03-07  Michael Meissner  <meissner@redhat.com>

	* run.c (alloca-conf.h): Delete, no longer provided.

2001-02-22  Ben Elliston  <bje@redhat.com>

	* sim-trace.h (TRACE_VPU_IDX): Add.
	(TRACE_vpu): Define.
	(WITH_TRACE_VPU_P): Likewise.
	(TRACE_VPU_P): Likewise.
	* sim-trace.c (OPTION_TRACE_VPU): Define.
	(trace_options): Add --trace-vpu.
	(trace_option_handler): Handle OPTION_TRACE_VPU.
	(trace_option_handler): Include VPU tracing in --trace-semantics.
	(trace_idx_to_str): Handle TRACE_VPU_IDX.

2001-02-21  Ben Elliston  <bje@redhat.com>

	* sim-trace.h (TRACE_BRANCH_INPUT1): New macro.
	(TRACE_BRANCH_INPUT2): Likewise.

2001-02-09  Ben Elliston  <bje@redhat.com>

	* (profile_print_pc): Write header out in target byte order.

2001-02-09  Ben Elliston  <bje@redhat.com>

	* sim-profile.c (profile_pc_init): Correct bug in loop logic when
	adjusting the pc shift value.

2001-01-12  Chris Demetriou  <cgd@sibyte.com>

	* aclocal.m4 (SIM_AC_OPTION_SCACHE): Properly handle the case
	where a numeric value is supplied.

2001-01-06  Ben Elliston  <bje@redhat.com>

	* cgen.sh: Allow extrafiles to include the semantics files when
	generating an ISA-specific decoder.

2000-12-27  Alexandre Oliva  <aoliva@redhat.com>

	* Make-common.in (sim-io.o): Depend on targ-vals.h.

2000-12-23  Ben Elliston  <bje@redhat.com>

	* cgen-trace.c (trace_result): Handle 'f' type operands; output
	them to the trace stream using sim_fpu_printn_fpu. Include
	"sim-fpu.h".

2000-12-15  Ben Elliston  <bje@redhat.com>

	* sim-fpu.h (sim_fpu_printn_fpu): Declare.
	* sim-fpu.c (print_bits): Add digits parameter. Print only as many
	trailing digits as specified (-1 to print all digits).
	(sim_fpu_print_fpu): New wrapper around sim_fpu_printn_fpu.
	(sim_fpu_printn_fpu): Rename from sim_fpu_print_fpu; update calls
	to print_bits ().

2000-12-13  Ben Elliston  <bje@redhat.com>

	* cgen.sh: Set prefix/PREFIX (append ISA if applicable). Factor
	sed expressions into $sedscript, substituting @prefix@/@PREFIX@.
	(defs): New action.

2000-12-12  Geoffrey Keating  <geoffk@redhat.com>

	* sim-endian.h: Don't have parameters on macro definitions which
	are simply renaming functions, to permit use of XCONCAT2 in both
	the macro name and the arguments in a use of such a definition.

2000-12-11  Ben Elliston  <bje@redhat.com>

	* cgen-ops.h (SUBWORDDFDI): New function.

2000-12-05  Ben Elliston  <bje@redhat.com>

	* Make-common.in (cgen-defs): New target.
	(cgen-decode): Pass $(EXTRAFILES).

	* genmloop.sh: Use @prefix@, not @cpu@ throughout. Add -prefix and
	-outfile-suffix options.

2000-12-04  Ben Elliston  <bje@redhat.com>

	* cgen-ops.h (SUBWORDSIQI): Mask off top bits.
	(SUBWORDSIUQI): Likewise.
	(SUBWORDDIHI): Likewise.
	(SUBWORDDIQI): New function.

	* cgen-trace.c (disassemble_insn): Remove unused declaration.
	* cgen-scache.c (scache_option_handler): Remove unused local var.

2000-12-03  Ben Elliston  <bje@redhat.com>

	* sim-profile.c (profile_option_handler): Remove unused prof_nr.

2000-11-26  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* hw-events.c (delete_hw_event_data): Remove the scheduled events.

2000-11-26  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* dv-core.c (dv_core_attach_address_callback): Don't abort if
	space is not zero.

2000-11-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* hw-base.c (hw_delete): Don't free base_of_hw since it's freed.
	(set_hw_delete): Moved the macro as a function.
	* hw-base.h (set_hw_delete): Declare as external function.
	* hw-alloc.c (delete_hw_alloc_data): Allow to free the memory
	allocated using hw_malloc.
	
2000-11-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* sim-options.c (sim_parse_args): Free the memory used for
	long_options, short_options, handlers, opt_cpu, orig_val.

2000-11-20  Ben Elliston  <bje@redhat.com>

	* cgen-ops.h (SUBBI): New macro.
	(SUBWORDSIQI, SUBWORDSIHI, SUBWORDSIUQI): New functions.
	(SUBWORDDIHI, SUBWORDDIUQI, SUBWORDDIDF): Likewise.

2000-11-16  Ben Elliston  <bje@redhat.com>

	* cgen-types.h (VOID): New type.

2000-11-09  Ben Elliston  <bje@redhat.com>

	* sim-fpu.c (sim_fpu_one): Set exponent to 0.
	(sim_fpu_two): Set exponent to 1.

2000-10-26  Ben Elliston  <bje@redhat.com>

        * cgen.sh: Handle an isa argument between cpu and mach. Default to
        `all'. Pass `-i' options to cgen applications.
        * Make-common.in (cgen-arch, cgen-cpu, cgen-decode, cgen-cpu-decode,
        cgen-desc): Pass $(isa) to cgen.sh.

2000-10-08  Ben Elliston  <bje@redhat.com>

	* cgen-utils.c (cgen_rtx_error): New function.

2000-10-07  Ben Elliston  <bje@redhat.com>

	* cgen-trace.c (sim_cgen_disassemble_insn): Handle failure
	conditions for sim_core_read_buffer().

2000-09-26  Dave Brolley  <brolley@redhat.com>

	* cgen-utils.c (RORQI): New function.
	(ROLQI): New function.
	(RORHI): New function.
	(ROLHI): New function.

2000-08-28  Dave Brolley  <brolley@redhat.com>

	* cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is
	in insn_value if it will fit.

2000-08-21  Frank Ch. Eigler  <fche@redhat.com>

	* Make-common.in, cgen.sh: Contribute CGEN-related build targets/rules.

2000-08-15  Dave Brolley  <brolley@redhat.com>

	* sim-profile.c (profile_print_speed): Print cpu frequency if not zero.

2000-08-15  Dave Brolley  <brolley@redhat.com>

	* sim-profile.h (PROFILE_DATA): Add cpu_freq.
	(PROFILE_CPU_FREQ): New macro.
	* sim-profile.c (OPTION_PROFILE_CPU_FREQUENCY): New enumerator.
	(profile-options): Add profile-cpu-frequency.
	(parse_frequency): New function.
	(profile_option_handler): Handle OPTION_PROFILE_CPU_FREQUENCY.
	(profile_print_speed): Print cpu frequency and simulated execution time.
	Re-indent other items to match.

2000-08-09  Andrew Cagney  <cagney@lulu.cygnus.com>

	* dv-sockser.c (dv_sockser_init): Eliminate MIN macro.

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

	From Maciej W. Rozycki <macro@ds2.pg.gda.pl>
	* Makefile.in (install): Install run.1 man page.

Thu Jul 27 21:56:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-06-23 Doug Evans <dje@casey.transmeta.com>:
	* Makefile.in (headers,nltvals.def): Merge.

Thu Jul 27 20:37:47 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* nrun.c (main): Print the simulator statistics only in
	verbose mode.
	* hw-properties.h (hw_find_integer_array_property): Fix
	prototype (use signed_cell).

	From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* sim-events.c (sim_events_remain_time): New function returning
	the time that remains before the event is raised.
	* hw-events.c (hw_event_remain_time): Likewise.
	* sim-events.h (sim_events_remain_time): Declare.
	* hw-events.h (hw_event_remain_time): Declare.

	From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* sim-hw.c: Use <errno.h> instead of <sys/errno.h>
	(OPTION_HW_LIST): New option --hw-list to list the devices.
	(hw_option_handler): List the device tree with 'sim_hw_print'.

	From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* sim-bits.h (_MSB_16, _LSB_16): Define for 16-bit targets.
	(MASK, LSBIT, MSBIT): Likewise and use _MSB_16 and _LSB_16.
	(EXTENDED): Define for 16-bit word size.
	* sim-bits.c (LSEXTRACTED, MSEXTRACTED, LSINSERTED,
	MSINSERTED, LSSEXT, MSSEXT): Implement for 16-bit word size.
	* sim-types.h: Added support for 16-bit targets.

2000-06-23  Frank Ch. Eigler  <fche@redhat.com>

	* cgen-trace.h (TRACE_USEFUL_MASK): Remove TRACE_EVENTS_IDX.

2000-06-24  Frank Ch. Eigler  <fche@redhat.com>

	From Maciej W. Rozycki <macro@ds2.pg.gda.pl>:
	* Makefile.in (distclean): Clean cconfig.h also.

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

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

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

	* aclocal.m4 (sim-profile): Enable the profiler by default.

Tue May 23 20:30:12 2000  Andrew Cagney  <cagney@amy.cygnus.com>

	* run.c (main): Initialize sigrc.

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

	* sim-events.c (update_time_from_event): Add more detailed event
 	tracing.

2000-03-30  Dave Brolley  <brolley@redhat.com>

	* aclocal.m4 (cgen): Use guile to run cgen.

2000-03-23  Dave Brolley  <brolley@redhat.com>

	* cgen-fpu.h: Rename extsfdf to fextsfdf. Rename truncdfsf to
	ftruncdfsf.
	* cgen-accfp.c (fextsfdf): New function.
	(ftruncdfsf): New function.
	(cgen_init_accurate_fpu): Initialize fextsfdf and ftruncdfsf.

2000-03-13  Jeff Johnston <jjohnstn@cygnus.com>

	* cgen-ops.h: Added TRUNCSISI.

2000-03-08  Dave Brolley  <brolley@redhat.com>

	* cgen-par.h (cgen_write_queue_kind): Add CGEN_FN_SF_WRITE.
	(CGEN_WRITE_QUEUE_ELEMENT): Add fn_sf_write.
	(sim_queue_fn_si_write): Last argument is has type USI.
	(sim_queue_fn_sf_write): New function.
	* cgen-par.c (sim_queue_fn_si_write): Declare 'value' as USI.
	(sim_queue_fn_sf_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_FN_SF_WRITE.

Tue Feb 22 16:45:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main): When SIM_HAVE_ENVIRONMENT enable tracing with
 	sim_set_trace and run simulator using sim_resume.
	(main): Add option ``-o'' - operating environment.  Only continue
 	after a signal when operating environment.
	(main): Always set REASON and SIGRC using sim_stop_reason.
	(sim_trace): Delete extern declaration.

2000-02-08  Nick Clifton  <nickc@cygnus.com>

	* callback.c: Fix compile time warning messages.
	* run.c: Fix compile time warning messages.
     
1999-12-17  Dave Brolley  <brolley@cygnus.com>

	* sim-profile.h: (set_profile_option_mask): Add prototype.
	* sim-profile.c (set_profile_option_mask): No longer static.

Wed Dec  8 21:47:13 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-arange.c: Include <string.h>

1999-12-07  Dave Brolley  <brolley@cygnus.com>

	* sim-options.c (print_help): '=' required before optional argument.
	* cgen-par.h (CGEN_FN_MEM_QI_WRITE): New enumerator.
	(CGEN_FN_MEM_HI_WRITE): New enumerator.
	(CGEN_FN_MEM_SI_WRITE): New enumerator.
	(CGEN_FN_MEM_DI_WRITE): New enumerator.
	(CGEN_FN_MEM_DF_WRITE): New enumerator.
	(CGEN_FN_MEM_XI_WRITE): New enumerator.
	(fn_mem_qi_write): New union members.
	(fn_mem_hi_write): New union members.
	(fn_mem_si_write): New union members.
	(fn_mem_di_write): New union members.
	(fn_mem_df_write): New union members.
	(fn_mem_xi_write): New union members.
	(sim_queue_fn_mem_qi_write): New function.
	(sim_queue_fn_mem_hi_write): New function.
	(sim_queue_fn_mem_si_write): New function.
	(sim_queue_fn_mem_di_write): New function.
	(sim_queue_fn_mem_df_write): New function.
	(sim_queue_fn_mem_xi_write): New function.
	* cgen-par.c (sim_queue_fn_mem_qi_write): New function.
	(sim_queue_fn_mem_hi_write): New function.
	(sim_queue_fn_mem_si_write): New function.
	(sim_queue_fn_mem_di_write): New function.
	(sim_queue_fn_mem_df_write): New function.
	(sim_queue_fn_mem_xi_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_FN_MEM_QI_WRITE,
	CGEN_FN_MEM_HI_WRITE, CGEN_FN_MEM_SI_WRITE, CGEN_FN_MEM_DI_WRITE,
	CGEN_FN_MEM_DF_WRITE, CGEN_FN_MEM_XI_WRITE.

1999-12-01  Dave Brolley  <brolley@cygnus.com>

	* cgen-accfp.c (subsf): Check status code.
	(mulsf): Ditto.
	(negsf): Ditto.
	(abssf): Ditto.
	(sqrtsf): Ditto.
	(invsf): Ditto.
	(minsf): Ditto.
	(maxsf): Ditto.
	(subdf): Ditto.
	(muldf): Ditto.
	(divdf): Ditto.
	(negdf): Ditto.
	(absdf): Ditto.
	(sqrtdf): Ditto.
	(invdf): Ditto.
	(mindf): Ditto.
	(maxdf): Ditto.

1999-11-26  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (fn_df_write): Mode of data is DF.
	(sim_queue_fn_df_write): Mode of data is DF.
	* cgen-par.c (sim_queue_fn_df_write): Mode of data is DF.

1999-11-22  Dave Brolley  <brolley@cygnus.com>

	* cgen-trace.c (SIZE_TRACE_BUF): Inxrease size of trace buffer.
	* cgen-par.h (CGEN_WRITE_QUEUE_SIZE): Increase size of queue.

1999-11-04  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (cgen_write_queue_kind): Add CGEN_FN_XI_WRITE and
	CGEN_MEM_XI_WRITE members.
	(CGEN_WRITE_QUEUE_ELEMENT): Add fn_xi_write and mem_xi_write members.
	(sim_queue_fn_xi_write): New function.
	(sim_queue_mem_xi_write): New function.

	* cgen-par.c (sim_queue_fn_xi_write): New function.
	(sim_queue_mem_xi_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_FN_XI_WRITE and
	CGEN_MEM_XI_WRITE.

1999-10-22  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (insn_address): New field in CGEN_WRITE_QUEUE_ELEMENT.
	(CGEN_WRITE_QUEUE_ELEMENT_IADDR): New macro.
	* cgen-par.c: Set insn_address for each queued write. Get pc from
	cpu when executing queued writes.

1999-10-19  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (sim_queue_fn_pc_write): New function.
	(CGEN_FN_PC_WRITE): New enumerator.
	(fn_pc_write): New union member.
	* cgen-par.c (sim_queue_fn_pc_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_FN_PC_WRITE.

1999-10-18  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (CGEN_MEM_DI_WRITE): New enumerator.
	(CGEN_MEM_DF_WRITE): New enumerator.
	(mem_di_write): New union member.
	(mem_df_write): New union member.
	* cgen-par.c (sim_queue_mem_di_write): New function.
	(sim_queue_mem_df_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_MEM_DI_WRITE and
	CGEN_MEM_DF_WRITE.
	* cgen-accfp.c (divsf): Check for division errors.

1999-10-14  Doug Evans  <devans@casey.cygnus.com>

	* cgen-engine.h (EXTRACT_INT,EXTRACT_UINT): Delete.

1999-10-07  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (CGEN_FN_HI_WRITE): New enumerator. 
	(fn_hi_write): New union member.
	(sim_queue_fn_hi_write): New function.
	* cgen-par.c (sim_queue_fn_hi_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_FN_HI_WRITE.

1999-09-29  Doug Evans  <devans@casey.cygnus.com>

	* cgen-defs.h (sim_engine_invalid_insn): New arg `vpc'.
	Change type of result to SEM_PC.

Wed Sep 29 14:43:57 1999  Dave Brolley  <brolley@cygnus.com>

	* cgen-defs.h (sim_engine_invalid_insn): Now returns PC.

1999-09-25  Doug Evans  <devans@casey.cygnus.com>

	* cgen-ops.h (SUBWORD*): Delete cpu arg.
	(JOIN*): Delete cpu arg.

Tue Sep 21 17:14:16 1999  Dave Brolley  <brolley@cygnus.com>

	* genmloop.sh (@cpu@_scache_lookup): No longer takes last_insn_p
	parameter.
	(SET_LAST_INSN_P): Set last_insn_p flag in the scache element.

Mon Sep 20 21:44:06 1999  Geoffrey Keating  <geoffk@cygnus.com>

        * sim-fpu.c (i2fpu): Keep the guard bits sticky when converting
        large values.

Tue Feb  8 16:33:48 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main): Check the sim_stop_reason and only halt simulation
 	when a valid stop condition is identified.

Wed Sep 15 14:12:37 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-tree.c, hw-properties.c, hw-instances.c: Include "sim-io.h".

Tue Sep 14 14:15:47 1999  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.h (CGEN_BI_WRITE): New enumerator.
	(bi_write): New union element.
	(sim_queue_bi_write): New function.
	* cgen-par.c (sim_queue_bi_write): New function.
	(cgen_write_queue_element_execute): Handle CGEN_BI_WRITE.

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

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

	* aclocal.m4 (WERROR_CFLAGS, WARN_CFLAGS): Merge from
 	../gdb/configure.in.
	* Make-common.in (WERROR_CFLAGS, WARN_CFLAGS): Define.
	(SIM_WERROR_CFLAGS, SIM_WARN_CFLAGS): Define.
	(SIM_WARNINGS): Delete
	(CONFIG_CFLAGS): Update.

Tue Aug 31 16:01:42 1999  Dave Brolley  <brolley@cygnus.com>

	* cgen-par.c: New file.
	* cgen-par.h: New file.
	* cgen-sim.h (cgen-par.h): #include it.
	* cgen-cpu.h (write_queue): New field.
	(CPU_WRITE_QUEUE): New access macro.
	* Make-common.in (CGEN_MAIN_CPU_DEPS): Add cgen-par.h.
	(cgen-par.o): New target.

1999-08-28  Doug Evans  <devans@casey.cygnus.com>

	* cgen-types.h (mode_type,MODE_VOID): Renamed from MODE_VM.
	* cgen-utils.c (mode_names): Update.

1999-08-20  Doug Evans  <devans@casey.cygnus.com>

	* genmloop.sh: New args -parallel-generic-write, -parallel-only.
	* cgen-engine.h (SEMANTIC_FN): Don't use version with PAREXEC
	buffer arg if WITH_PARALLEL_GENWRITE.
	(struct insn_sem): Handle WITH_PARALLEL_GENWRITE.
	(struct idesc): Ditto.

Wed Aug 18 18:17:28 1999  Doug Evans  <devans@canuck.cygnus.com>

	* sim-model.c (model_option_handler): Add \n to error message.

1999-08-08  Doug Evans  <devans@casey.cygnus.com>

	* cgen-engine.h (SEM_FN_NAME,SEMF_FN_NAME): Delete.
	(insn_sem): Rewrite.
	(sem_fn_desc): New struct.
	(idesc): Rewrite.
	* genmloop.sh (scache case,@cpu@_scache_lookup): Profile scache hit,
	misses if ! FAST_P.
	(scache case): Split into non-parallel/parallel versions.
	(@cpu@_engine_run_{full,fast}): Call @cpu@_{sem,semf}_init_idesc_table
	if not use semantic switch version.

1999-08-04  Doug Evans  <devans@casey.cygnus.com>

	* cgen-defs.h (SEM_BRANCH_TYPE): New enum.
	* cgen-engine.h (SEM_BRANCH_UNTAKEN,SEM_BRANCH_UNCACHEABLE): Delete.
	(SEM_BRANCH_INIT_EXTRACT): Delete.
	(SEM_BRANCH_INIT): Replace npc_ptr with br_type.
	(SEM_BRANCH_FINI): Ditto.
	(SEM_BRANCH_VIA_ADDR): Ditto.
	(SEM_BRANCH_VIA_CACHE): Ditto.  Delete cachvarptr arg.
	(SEM_BRANCH_ADDR_CACHE): Delete.
	(SEM_SKIP_COMPILE,SEM_SKIP_INSN): New macros.
	* cgen-scache.h (cpu_scache): Replace member pbb_pr_npc_ptr with
	pbb_br_type.
	* genmloop.sh (eng.hin): Update prototype of ${cpu}_pbb_cti_chain.
	(@cpu@_pbb_begin): Initialize branch_target.
	(@cpu@_pbb_cti_chain): Replace arg new_vpc_ptr with br_type.
	(@cpu@_engine_run_full): Replace local pbb_br_npc_ptr with
	pbb_br_type.
	(@cpu@_engine_run_fast): Ditto.

Fri Jul 16 14:47:53 1999  Dave Brolley  <brolley@cygnus.com>

	* cgen-utils.c (RORSI): New function.
	(ROLSI): New function.

1999-07-14  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.in (TAGS): Tweak TAGS regex.
	* cgen-mem.h (*): Add TAGS markers.

Sun Jul 11 23:47:20 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-resume.c (sim_resume): Ensure that the siggnal [sic] is only
 	passed in when sim_resume is first entered - don't re-pass it
 	after a restart.
	
Sun Jul 11 23:34:44 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (standard_option_handler): Add OPTION_LOAD_VMA and
 	OPTION_LOAD_LMA but only when is defined.
	(standard_options): When SIM_HANDLES_LMA is defined include
 	options --load-lma and --load-vma.
	(standard_install): Initialize STATE_LOAD_AT_LMA_P.

	* sim-base.h (STATE_LOAD_AT_LMA_P): Define.
	(struct sim_state_base): Add load_at_lma_p.
	* sim-hload.c (sim_load): Replace SIM_HANDLES_LMA with
 	STATE_LOAD_AT_LMA_P.

Sun Jul 11 12:03:36 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Re-format loop gnu style.

Wed Jul  7 19:56:03 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* dv-sockser.c (connected_p): Initialize addrlen.

1999-07-06  Dave Brolley  <brolley@cygnus.com>

	* cgen-accfp.c (floatsidf): New function.
	(fixdfsi): New function.

1999-07-06  Doug Evans  <devans@casey.cygnus.com>

	* sim-model.c (sim_model_init): Issue error if machine is unsupported.

1999-07-05  Doug Evans  <devans@casey.cygnus.com>

	* Make-common.in (CGEN_MAIN_CPU_DEPS): Add cgen-fpu.h.
	(cgen-fpu.o,cgen-accfp.o): Add rules for.
	* cgen-fpu.c: New file.
	* cgen-fpu.h: New file.
	* cgen-accfp.c: New file.
	* cgen-cpu.h (CGEN_CPU): New member fpu.
	* cgen-mem.h: Redo fp support.
	* cgen-ops.h: Delete k&r support.  Redo fp support.
	* cgen-sim.h: Include cgen-fpu.h.
	* cgen-types.h (SF,DF,XF,TF): Moved to cgen-fpu.h.

1999-06-23  Doug Evans  <devans@casey.cygnus.com>

	* cgen-engine.h (TARGET_SEM_BRANCH_FINI): Remove cruft at end of
	ifndef.
	* genmloop.sh (@cpu@_scache_lookup): Delete unused local var.
	(@cpu@_pbb_cti_chain): Minor clean up.

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

        * aclocal.m4: Use AC_EXEEXT instead of AM_EXEEXT.  Delete defn of
        AM_CYGWIN32 and AM_EXEEXT.
	* configure: Regenerate.
	
Fri Apr 16 16:43:22 1999  Doug Evans  <devans@charmed.cygnus.com>

	* sim-core.c (device_error,device_io_read_buffer,
	device_io_write_buffer): Delete decls.
	* sim-core.h: Put them here.

	* sim-core.c (sim_core_read_buffer): Pass sd to device_io_read_buffer.
	(sim_core_write_buffer): Pass sd to device_io_write_buffer.
	* sim-n-core.h (sim_core_read_aligned_N): Ditto.
	(sim_core_write_aligned_N): Ditto.

1999-04-14  Stephane Carrez  <stcarrez@worldnet.fr>

	* sim-memopt.c (sim_memory_uninstall): Don't look into
	free()d memory.

1999-04-14  Doug Evans  <devans@casey.cygnus.com>

	* cgen-utils.scm (virtual_insn_entries): Update attribute definition.

1999-04-13  Doug Evans  <devans@casey.cygnus.com>

	* sim-core.c (sim_core_read_buffer): Handle NULL cpu when WITH_DEVICES.
	(sim_core_write_buffer): Ditto.

1999-04-02  Keith Seitz  <keiths@cygnus.com>

	* sim-io.c (sim_io_poll_quit): Only call the poll_quit callback
	after the interval counter has expired.
	(POLL_QUIT_INTERVAL): Define. Used to tweak the frequency of
	poll_quit callbacks. May be overridden by Makefile.
	(poll_quit_counter): New global.
	* sim-events.c: Remove all mentions of ui_loop_hook. The
	host callback "poll_quit" will serve the purpose.
	* run.c: Add definition of ui_loop_hook when NEED_UI_LOOP_HOOK
	is defined.
	* nrun.c: Remove declaration of ui_loop_hook.

Wed Mar 31 18:55:41 1999  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-run.c (sim_resume): Don't tell main loop to run "forever"
	if being used by gdb.

1999-03-22  Doug Evans  <devans@casey.cygnus.com>

	* cgen-types.h (XF,TF): Tweak.
	* cgen-ops.h: Redo inline support.  Delete DI_FN_SUPPORT,
	in cgen-types.h.
	(SUBWORD*,JOIN*): Define.
	* cgen-trace.c (sim_cgen_disassemble_insn): Update, base_insn_bitsize
	moved into cpu descriptor.
	* sim-model.h (MACH): New member `num'.

1999-02-09  Doug Evans  <devans@casey.cygnus.com>

	* cgen-cpu.h (CGEN_DISASSEMBLER): New type.
	(CGEN_CPU): Member opcode renamed to cpu_desc.
	New members get_idata,disassembler.
	* cgen-defs.h (CGEN_INSN_VIRTUAL_P): CGEN_INSN_ATTR renamed to
	CGEN_INSN_ATTR_VALUE.
	(CGEN_STATE): Delete member opcode_table.
	(sim_disassemble_insn): Delete decl.
	* cgen-engine.h (struct insn_sem): Moved to here from <cpu>-decode.c.
	(struct idesc): Moved to here from <cpu>-decode.h.
	* cgen-run.c (prime_cpu): Call prepare_run callback.
	* cgen-trace.h (SFILE): New type.
	(sim_disasm_sprintf): Declare.
	(sim_disasm_read_memory,sim_disasm_perror_memory): Declare.
	(sim_cgen_disassemble_insn): Declare.
	* cgen-trace.c: Include errno.h,dis-asm.h.  Don't include cpu-opc.h.
	(insn_fields): Delete.
	(trace_insn_fini): STATE_OPCODE_TABLE (sd) replaced with
	CPU_CPU_DESC (cpu).
	(trace_insn): Call CPU_DISASSEMBLER hook.
	(sim_disasm_sprintf): New function.
	(sim_disasm_read_memory): New function.
	(sim_disasm_perror_memory): New function.
	(sim_cgen_disassemble_insn): New function.
	* cgen-utils.c: Don't include cpu-opc.h.
	(virtual_insn_entries): New static local.
	(cgen_virtual_insn_table): Renamed from cgen_virtual_opcode_table.
	(cgen_insn_name): Rewrite.
	(disasm_sprintf,sim_disassemble_insn): Moved to cgen-trace.c.
	* cgen.sh (desc): New file generator handler.
	* genmloop.sh: -parallel changed to -parallel-read/-parallel-write.
	Define WITH_PARALLEL_READ/WITH_PARALLEL_WRITE appropriately.
	Don't include cpu-opc.h,cpu-sim.h.
	* sim-model.c (model_set): Delete SIM_DESC arg.
	(sim_model_set): Update.
	* sim-model.h (MACH): New member prepare_run.

1999-01-28  Frank Ch. Eigler  <fche@cygnus.com>

	* sim-memopt.c (memory_option_handler): Avoid memset() calls
	if redundant with allocator functions.

Wed Jan 27 17:19:09 1999  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-engine.h (EXTRACT_LSB0_{INT,UINT}): Fix.

	* sim-profile.h: Make like sim-trace.h.
	(PROFILE_USEFUL_MASK): New macro.
	* sim-profile.c (profile_options): Make like trace_options, allow
	optional on|off arg where applicable.
	(set_profile_option_mask): New function.
	(sim_profile_set_option): New function.
	(profile_option_handler): Simplify.
	Have -p only enable selected things, not everything.
	Add missing break to OPTION_PROFILE_PC_RANGE.
	* cgen-scache.c (scache_options): Allow optional on|off arg to
	--profile-scache.
	(scache_option_handler): Use sim_profile_set_option.

1999-01-26  Frank Ch. Eigler  <fche@cygnus.com>

	* sim-memopt.c (memory_options): Add MEMORY_FILL option.
	(memory_option_handler): Implement MEMORY_FILL option.  Make
 	MEMORY_CLEAR an alias for MEMORY_FILL=0.
	(parse_ulong_value): New function.
	(do_memopt_add): Allocate all buffers.  Optionally fill them.

1999-01-15  Richard Henderson  <rth@cygnus.com>

	* hw-events.c (hw_event_queue_schedule): _vtracef takes a
	va_list, not an integer.
	* sim-events.c (sim_events_schedule): Likewise.

	* sim-types.h (UNSIGNED32, UNSIGNED64): Properly cast to 
	the appropriate type.

1999-01-14  Doug Evans  <devans@casey.cygnus.com>

	* cgen-defs.h (PCADDR,CIA): Define in terms of IADDR.
	(sim_disassemble_insn): Update prototype.
	(sim_engine_invalid_insn): Ditto.
	* cgen-engine.h (SEMANTIC_FN): Add !WITH_SCACHE version.
	(SEM_BRANCH_INIT): PCADDR->IADDR.
	(SEM_NBRANCH_FINI): New macro for !WITH_SCACHE case.
	* cgen-scache.c (scache_lookup,scache_lookup_or_alloc): PCADDR->IADDR.
	* cgen-scache.h (*): Ditto.
	* cgen-trace.c (*): Ditto.
	* cgen-trace.h (*): Ditto.
	* cgen-utils.c (*): Ditto.
	* cgen-types.h (integer modes): Use signedNN/unsignedNN types.
	(insn_t): Delete.
	* genmloop.sh (@cpu@_fill_argbuf): Add !WITH_SCACHE support.
	(simple engine framework): Rewrite.
	* sim-module.c (modules): Install model module sooner (and in
	particular before the profile module).

1999-01-12  Doug Evans  <devans@casey.cygnus.com>

	* sim-model.h (sim_mach_lookup_bfd_name): Add prototype.
	* sim-model.c (sim_mach_lookup_bfd_name): New function.
	(sim_model_init): Call it.

	* cgen-trace.c (trace_insn): Pass pc to trace_prefix for virtual insns.

1999-01-05  Doug Evans  <devans@casey.cygnus.com>

	* Make-common.in (CGEN_INCLUDE_DEPS): Add cgen-defs.h, cgen-engine.h.
	* cgen-engine.h (SEM_BRANCH_FINI): New arg pcvar, all uses updated.
	(SEM_BRANCH_INIT_EXTRACT): New macro.
	(SEM_BRANCH_INIT): Add taken_p.
	(TARGET_SEM_BRANCH_FINI): Provide default definition.
	(SEM_BRANCH_FINI): Use it.
	(SEM_INSN): Update.
	* cgen-run.c (sim_resume): Handle tracing of last insn.
	* cgen-scache.h (WITH_SCACHE): Define as 0 if not defined.
	* cgen-trace.c (current_abuf): New static global.
	(trace_insn_init): Initialize it.
	(trace_insn_fini): Use it.
	(trace_insn): Set it.
	* cgen.sh (arch case): Pass -m ${mach} to cgen.
	* genmloop.sh (@cpu@_emit_before): Only define if WITH_SCACHE_PBB.
	(@cpu@_emit_after): Ditto.
	(simple @cpu@_engine_run_full): New local `pc'.  Initialize semantic
	labels if WITH_SEM_SWITCH_FULL.
	* sim-model.c: Include bfd.h.
	(sim_model_init): New function.
	(sim_model_install): Record init fn.
	* sim-model.h (MACH): New member bfd_name.
	* sim-module.c (modules): Initialize model before scache.

1998-12-24  Frank Ch. Eigler  <fche@cygnus.com>

	* dv-sockser.c (DEFAULT_TIMEOUT): Increase to 1 ms.
	
	* nrun.c (main): Remain in simulation loop for traps and
 	exceptions when in operating environment mode.
	(ui_loop_hook): New stub hook for standalone use.
	* sim-events.c (sim_events_process): Call ui_loop_hook
	periodically on CYGWIN host.

	* sim-reason.c (sim_stop_reason): Return host signal numbers
	to gdb on sim_stopped and sim_signalled cases.
	* sim-engine.c (sim_engine_halt): Call SIM_CPU_EXCEPTION_SUSPEND
 	hook just before longjmp.
	* sim-resume.c (sim_resume): Call SIM_CPU_EXCEPTION_RESUME
 	hook just before sim_engine_run.

	* sim-n-core.h (sim_core_trace_M): Allay const warning.
	* sim-trace.h (trace_generic): Ditto.
	* sim-trace.c (trace_generic): Ditto.
	
1998-12-14  Doug Evans  <devans@casey.cygnus.com>

	* Make-common.in (SIM_MAIN_DEPS): New var.
	(CGEN_MAIN_CPU_DEPS): New var.
	* aclocal.m4: Add --enable-cgen-maint option.
	* cgen-mem.h (GETMEM*): New arg `pc'.  Pass to sim_core routine.
	(SETMEM*): Ditto.
	(GETIMEM*): Pass pc value to sim_core routine.

Fri Dec 11 16:58:36 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-handles.c (hw_handle_add_ihandle, hw_handle_add_phandle):
 	Compare with ZERO not NULL.

Thu Dec 10 14:14:39 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-properties.c, hw-instances.c, hw-tree.c: Include
 	"sim-assert.h".

1998-12-09  Doug Evans  <devans@casey.cygnus.com>

	* sim-arange.c: Include libiberty.h, and stdlib.h if present.
	* sim-trace.c: Include stdlib.h if present.
	* dv-sockser.c: Include unistd.h if present.
	(dv_sockser_init): Add missing arg to call to sim_io_eprintf.
	* cgen-scache.c (scache_flush): Delete unused locals i,sc.

1998-12-08  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* gennltvals.sh: Add i960.
	* nltvals.def: Rebuild.

1998-12-04  Doug Evans  <devans@casey.cygnus.com>

	* cgen-defs.h: New file, old cgen-sim.h.
	* cgen-sim.h: Simple header that includes others.
	* sim-arange.c: New file.
	* sim-arange.h: New file.
	* sim-basics.h: Include it.
	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-arange.o.
	(sim-arange.o): Add rule for.
	* sim-cpu.h (sim_cpu_msg_prefix): Add prototype.
	(sim_io_eprintf_cpu): Add prototype.
	* sim-inline.h (HAVE_INLINE): Define if GNUC.
	(INLINE2): New macro.
	(EXTERN_INLINE): New macro.
	* sim-module.c (sim_post_argv_init): Initialize cpu backlink
	before calling module init fns.
	* sim-profile.c (OPTION_PROFILE_*): Move into enum.
	(profile_init): New function.
	(profile_options): New option --profile-range.
	(profile_option_handler): Handle --profile-range.
	(profile_print_insn): Qualify address range specific section titles.
	(profile_print_addr_ranges): New function.
	(profile_info): Print address ranges if specified.
	(profile_install): Set profile_init init fn.
	* sim-profile.h (PROFILE_DATA): New member `range'.
	* sim-trace.c (trace_init): New function.
	(trace_options): New option --trace-range.
	(trace_option_handler): Handle --trace-range.
	(trace_install): Set trace_init init fn.
	* sim-trace.h (TRACE_DATA): New member `range'.
	* sim-utils.c (sim_cpu_msg_prefix): New function.
	(sim_io_eprintf_cpu): New function.
	* cgen-engine.h (PC_IN_TRACE_RANGE_P): New macro.
	(PC_IN_PROFILE_RANGE_P): New macro.
	* cgen-trace.c (trace_insn_init): Set current_insn to NULL.
	(trace_insn_fini): New arg abuf.  All callers updated.
	Exit early if trace_insn not called.  Check ARGBUF_PROFILE_P before
	printing cycle counts.
	* cgen-trace.h (trace_insn_fini): Update prototype.
	(TRACE_RESULT_P): New macro.
	(TRACE_INSN_INIT,TRACE_INSN_FINI): New arg abuf.  All callers updated.
	(TRACE_INSN): Check ARGBUF_TRACE_P.
	(TRACE_EXTRACT,TRACE_RESULT): New arg abuf.  All callers updated.
	* cgen-types.h (SIM_INLINE): Delete.
	(SIM_HAVE_MODEL,SIM_HAVE_ADDR_RANGE): Define.
	* cgen-utils.c: Don't include cgen-engine.h
	* genmloop.sh (@cpu@_fill_argbuf): New function.
	(@cpu@_fill_argbuf_tp): New function.
	(@cpu@_emit_before,@cpu@_emit_after): New functions.
	(@cpu@_pbb_begin): Prefix cti_sc,insn_count with '_'.
	(SET_CTI_VPC,SET_INSN_COUNT): Update.
	(@cpu@_pbb_before): Check ARGBUF_PROFILE_P before calling
	doing profiling.  Update call to TRACE_INSN_INIT,TRACE_INSN_FINI.
	(@cpu@_pbb_after): Check ARGBUF_PROFILE_P before calling
	doing profiling. Update call to TRACE_INSN_FINI.

	* sim-memopt.c (sim_memory_uninstall): Result type is `void'.

1998-12-03  Frank Ch. Eigler  <fche@cygnus.com>

	* sim-memopt.c (sim_memory_uninstall): Deallocate all memory
 	regions.

1998-12-01  Doug Evans  <devans@casey.cygnus.com>

	* sim-inline.c (SIM_INLINE_P): Fix typo.

1998-11-30  Doug Evans  <devans@casey.cygnus.com>

	* cgen-utils.c (cgen_virtual_opcode_table): Update.

Tue Nov 24 18:40:03 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gennltvals.sh: Add v850 and d10v. Sort alphabetically.
	* nltvals.def: Re-generate.

Mon Nov 23 13:28:38 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (reverse_n, sim_core_uninstall, sim_core_init,
 	sim_core_map_attach, sim_core_map_detach, next_event_queue,
 	new_sim_core_mapping): Only define when EXTERN_SIM_CORE_P, pacify
 	GCC.
	* sim-events.c (sim_events_uninstall, sim_events_suspend,
 	sim_events_resume, sim_events_zalloc, insert_sim_event): Ditto.

1998-11-22  Doug Evans  <devans@tobor.to.cygnus.com>

	* genmloop.sh (${cpu}_pbb_chain): Watch for Ctrl-C's.
	(${cpu}_pbb_cti_chain): Ditto.

1998-11-18  Doug Evans  <devans@casey.cygnus.com>

	* Make-common.in (cgen-utils.o): Depend on cgen-engine.h.
	* cgen-engine.h (EXTRACT_[ML]SB0_{INT,UINT}): New macros.
	(EXTRACT_INT,EXTRACT_UINT): New macros.
	(SEM_SEM_ARG): New macro.
	(SEM_NEXT_VPC): New arg `pc'.
	* cgen-sim.h (EXTRACT_SIGNED,EXTRACT_UNSIGNED): Delete.
	(sim_disassemble_insn): Update prototype.
	* cgen-trace.c (current_insn,insn_fields): New static locals.
	(trace_insn): Set them.
	* cgen-utils.c: #include cgen-engine.h.
	(sim_disassemble_insn): New arg insn_fields.
	Handle variable length insns.
	* genmloop.sh: Only emit pbb decls if -pbb.
	(${cpu}_scache_lookup): New arg `vpc'.
	(scache support): Fetch pc before entering loop.

	* gennltvals.sh: Add fr30 support.
	* nltvals.def: Rebuild.

Wed Nov 18 10:22:22 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h: Re-do type system so that GCC's attribute and mode
 	are used to specify types.  Handle case of ALPHA.

1998-11-13  Frank Ch. Eigler  <fche@elastic.org>
	
	* aclocal.m4: Add tests for dlopen family.
	* config.in: Regenerated.
	
Wed Nov 11 14:02:25 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-hload.c (sim_load): Pass `prog_name' to sim_load_file, not NULL.

Wed Nov  4 23:51:19 1998  Doug Evans  <devans@seba.cygnus.com>

	* genmloop.sh (eng.hin): Rename HAVE_PARALLEL_EXEC to
	HAVE_PARALLEL_INSNS, define as 0 or 1.  Emit decls of fns in mloop.cin.
	* cgen-engine.h: Typedefs of IADDR,CIA,SEM_ARG,SEM_PC moved ...
	* cgen-sim.h: ... to here.

Wed Oct 28 12:00:57 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (enable-build-warnings): Replace
 	enable-sim-warnings. Extend =LIST syntax so that prepend and
 	append of options is possible.  Drop -Werror, add
 	-Wstrict-prototypes for GDB compatibility.
	* Make-common.in (SIM_WARNINGS): Update.

Mon Oct 19 13:56:32 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (CGEN_INCLUDE_DEPS): Define.
	(sim-core.o): Delete duplicate dependence on $(SIM_EXTRA_DEPS).
	(sim-cpu.o,sim-endian.o,sim-hw.o): Ditto.
	(cgen-run.o,cgen-scache.o,cgen-trace.o,cgen-utils.o): Delete
	explicit cgen header dependencies, require SIM_EXTRA_DEPS to include
	CGEN_INCLUDE_DEPS.
	* cgen-cpu.h: New file.
	* cgen-engine.h: New file.
	* cgen-scache.h: New file.
	* cgen-sim.h: Delete portions moved to new files.
	* genmloop.sh: Generate two files eng.hin,mloop.cin explicitly,
	rather than sending result to stdout.

Fri Oct  9 14:20:22 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (sim-reg.o): New rule.
	(cgen-run.o): New rule.
	* cgen-ops.h: Delete many BI macros.  Change all UBI -> BI.
	* cgen-run.c (prime_cpu): New function.
	* cgen-scache.c: Add pseudo-basic-block (pbb) scaching support.
	(scache_option_handler, case OPTION_PROFILE_SCACHE): Handle explicitly
	mentioned cpu.
	(scache_flush_cpu,scache_lookup,scache_lookup_or_alloc): New fns.
	* cgen-sim.h (CGEN_INSN_VIRTUAL_TYPE): New enum.
	(CGEN_INSN_VIRTUAL_P): New macro.
	(SEM_PC): New typedef.
	(SEMANTIC_FN): Change type of result to SEM_PC.
	(SEM_SET_FULL_CODE,SEM_SET_FAST_CODE,SEM_SET_CODE): New macros.
	(IDESC_CTI_P,IDESC_SKIP_P): New macros.
	(SCACHE_MAP): New typedef.
	(CPU_SCACHE): Add pbb support.
	(scace_lookup,scache_lookup_or_alloc,scache_flush_cpu): Declare.
	(SEM_BRANCH_INIT_EXTRACT,SEM_BRANCH_INIT,SEM_BRANCH_FINI): New macros.
	(CGEN_CPU): New members running_p,insn_count,{fast,full}_engine_fn,
	max_slice_insns.
	(INSN_NAME): Delete.
	(cgen_insn_name): Declare.
	(sim_engine_invalid_insn): Renamed from sim_engine_illegal_insn.
	* cgen-trace.c (trace_buf): Shrink from 1024 to 256 bytes.
	(first_insn_p): Make static.
	(trace_insn): Handle virtual insns specially.
	(cgen_trace_printf): Ensure we haven't overflowed the buffer.
	* cgen-types.h (UBI): Delete.
	(MODE_TYPE): New enum.
	(HOSTINT,HOSTUINT,HOSTPTR): Delete.
	* cgen-utils.c (mode_names): Delete UBI.  Add INT,UINT,PTR.
	(cgen_virtual_opcode_table): New global.
	(cgen_insn_name): New function.
	(sim_disassemble_insn): Ignore virtual insns.
	* genmloop.sh: Delete top level loop generation.  Add pbb support.
	* sim-cpu.h (CPU_INSN_NAME_FN): New typedef.
	(sim_cpu_base): New members max_insns,insn_name,model_data.
	(CPU_PC_GET,CPU_PC_SET): New macros.
	(sim_pc_get,sim_pc_set): Declare.
	* sim-model.c (model_set): Call model init fn.
	* sim-model.h (MODEL_FN): New typedef.
	(INSN_TIMING): New member model_fn.
	(MODEL): New members num,init.
	* sim-profile.c (sim_profile_print_bar): Renamed from print_bar.
	All callers updated.
	(profile_insn_init): New fn.
	(profile_print_insn): Update, INSN_NAME -> CPU_INSN_NAME.
	Exit early if insn profiling not supported.
	(profile_print_memory): Update, MAX_MODES -> MODE_TARGET_MAX.
	(profile_install): Record profile_insn_init as init fn.
	(profile_uninstall): Free PROFILE_INSN_COUNT if non-null.
	* sim-profile.h: Update, MAX_MODES -> MODE_TARGET_MAX.
	(PROFILE_DATA): Delete member exec_time.
	Change insn_count to pointer to array, rather than the array.
	(sim_profile_print_bar): Declare.

Wed Oct  7 16:56:42 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-run.c: New file.
	* sim-reg.c: New file.

Mon Sep 14 10:58:19 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* aclocal.m4: Add checks for -lsocket and -lnsl.

	* dv-sockser.c (dv_sockser_init): Use SO_REUSEADDR to
	allow local port reuse on listening socket.

Tue Sep  1 15:36:52 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* sim-config.h: Remove reference to linux kernel header.

Tue Aug 25 12:45:27 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* dv-sockser.c (sockser_addr): Make variable non-static.

Mon Aug 24 11:47:37 1998  Joyce Janczyn  <janczyn@cygnus.com>

	* sim-hw.{c,h} (sim_hw_parse): Return struct hw pointer.

Tue Aug 11 18:12:19 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-events.c (sim_events_elapsed_time): Fix calculation.

Tue Aug  4 20:36:46 1998  Jeff Holcomb  <jeffh@cygnus.com>

	* Make-common.in (install-common): Add $(EXEEXT) when installing
	run.

Mon Aug  3 11:46:01 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (cgen_state): New member opcode_table.
	* cgen-utils.c (sim_disassemble_insn): Use it.

Fri Jul 24 10:14:18 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-mem.h (DECLARE_SETT): Fix return type.
	* cgen-sim.h (sim_engine_illegal_insn): Declare.
	* cgen-scache.c: Include stdlib.h.
	* cgen-trace.c (trace_extract): Use %lx for PCADDR.
	* sim-model.c (model_option_handler): Remove unused variable `n'.

Tue Jul 21 16:27:43 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-utils.c: Include bfd.h.
	(sim_disassemble_insn): Update call to CGEN_EXTRACT_FN.

Wed Jul  8 18:24:10 1998  Jeffrey A Law  (law@cygnus.com)

	* sim-bits.h (EXTEND24): Fix typo.

Wed Jul  8 17:41:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (ETRACE_P): New macro.
	(struct _sim_event): Add member trace.
	(sim_events_free): Reclaim trace message.

	* sim-events.c, sim-events.h (sim_events_schedule_vtracef,
 	sim_events_schedule_tracef): New functions, include printf trace
 	information in argument list.  If tracing, store asprintf'd trace
 	message in sim_event.

	* hw-events.c, hw-events.h (hw_event_queue_schedule_tracef,
 	hw_event_queue_schedule_vtracef): New functions, mimic
 	sim_event_tracef.

Mon Jul  6 15:51:14 1998  Jeffrey A Law  (law@cygnus.com)

	* sim-bits.h (EXTEND24): Define.

Thu Jul  2 17:13:25 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (CPU_SCACHE): Make size unsigned.
	(CPU_SCACHE_HASH_MASK): New macro.
	(SCACHE_HASH_PC): Rewrite.
	* genmloop.sh (engine_resume_{full,fast}): Move some of hash
	computation out of main loop.

Wed Jul  1 16:44:12 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (RECORD_IADDR): Delete.
	* cgen-types.h (HOSTINT,HOSTUINT,HOSTPTR): New types.
	* genmloop.sh (engine_resume_{full,fast}): Delete icount.

Wed Jun 17 12:25:08 1998  Mark Alexander  <marka@cygnus.com>

	* gennltvals.def (mn10200): Add entry.
	* nltvals.def: Regenerate with MN10200 additions.

Wed Jun 17 13:18:28 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-inline.h (EXTERN_*): Replace with EXTERN_*_P. Correct
 	documentation on how it works.

	* sim-core.h, sim-core.c (sim_core_install, sim_core_attach,
 	sim_core_detach, sim_core_read_buffer, sim_core_write_buffer,
 	sim_core_set_xor, sim_core_xor_read_buffer,
 	sim_core_xor_write_buffer): Update.

	* sim-events.h, sim-events.c (sim_events_install,
 	sim_events_watch_clock, sim_events_schedule_after_signal,
 	sim_events_schedule, sim_events_watch_sim, sim_events_watch_core,
 	sim_events_deschedule): Update.

	* sim-fpu.h, sim-fpu.c (sim_fpu_zero, sim_fpu_one, sim_fpu_two,
 	sim_fpu_max32, sim_fpu_max64): Update.

Sat Jun 13 07:45:38 1998  Doug Evans  <devans@fallis.cygnus.com>

	* cgen-trace.c (trace_insn_fini): Redo cycle handling.
	* sim-profile.h (PROFILE_DATA): Rename cycle handling members.
	* sim-profile.c (profile_print_model): Update.

Fri Jun 12 18:35:07 1998  Doug Evans  <devans@seba.cygnus.com>

	* gennltvals.def (m32r): Use common syscall.h now.
	(mn10300): Add entry.
	* nltvals.def: Regenerate.

	* sim-engine.c (sim_engine_get_run_state): New function.
	* sim-engine.h (sim_engine_get_run_state): Declare it.

Thu Jun 11 00:50:03 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-core.h (SIM_CORE_SIGNAL_FN): New typedef.
	* sim-core.c (sim_core_signal): Make extern, always define.

Wed Jun 10 16:02:29 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (CGEN_FLAGS_TO_PASS): New variable.
	* cgen-ops.h (ANDIF): New macro.
	(ANDIF[BQHSD]I): Delete.

Thu Jun  4 13:53:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-events.c (create_hw_event, delete_hw_event): Delete.
	(hw_event_queue_schedule, hw_event_queue_deschedule,
 	bounce_hw_event): Fix hw-event memory corruptions found by Joyce
 	Janczyn.

	* hw-alloc.h (HW_NZALLOC): Define.

	* Make-common.in (test-hw-events): Add target for testing the
 	hw-event code.

Mon May 25 21:11:26 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Make-common.in (SIM_COMMON_HW_OBJS): Add hw-handles.o and
 	hw-instances.o.
	hw-handles.c, hw-instances.c, hw-handles.h, hw-instances.h: New
 	files.
	* hw-main.h: Include hw-handles.h, hw-instances.h.
	* hw-base.h ({create,delete}_hw_{handles,instances}_data): Declare
	* hw-base.c (hw_create, hw_delete): Call same.
	
Mon May 25 18:55:35 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* dv-core.c: Include hw-main.h and sim-main.h.
	* dv-pal.c: Include hw-main.h and sim-io.h.
	* dv-glue.c: Include hw-main.h.

	* hw-main.h: New file.  Move list of includes to here.
	* hw-base.h: From here.
	* Make-common.in (hw_base_headers): Rename to hw_main_headers.
	(hw-*.o, dv-*.o): Update.
	* hw-tree.c, hw-base.c, hw-properties.c, hw-ports.c, hw-device.c,
 	hw-events.c, hw-alloc.c, sim-hw.c: Include hw-main.h instead of
 	sim-main.h.

	* hw-base.h (do_hw_attach_regs, do_hw_poll_read_method,
 	do_hw_poll_read): Move declarations from here.
	* hw-main.h: To here.
	
	* hw-base.h (struct hw_device_descriptor, hw_finish_callback):
 	Move from here.
	* hw-main.h (struct hw_descriptor, hw_finish_method): To here,
 	rename.
	* Make-common.in (hw-config.h): Update
	* hw-base.c, dv-pal.c, dv-glue.c: Update

	* dv-glue.c, hw-device.h, hw-base.h, hw-ports.c: Rename
 	`*_callback' to `*_method.

Mon May 25 18:41:18 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-base.h (set_*): Move set method macros from here.
	* hw-device.h: To here.

Mon May 25 18:21:38 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-base.h (create_hw_property_data, delete_hw_property_data):
 	Declare.

	* hw-base.c (hw_create, hw_delete): Call
	* hw-properties.c (create_hw_property_data,
 	delete_hw_property_data): Define.
	
Mon May 25 17:40:46 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.c, hw-properties.c: Include hw-base.h

	* hw-alloc.h, hw-alloc.c: New files. Move alloc code to here.
	* hw-device.c: From here.
	* hw-base.h: Include "hw-events.h".

	* hw-base.h (create_hw_alloc_data, delete_hw_alloc_data): Declare.
	* hw-base.c (hw_create, hw_delete): Call.
	* hw-alloc.c (create_hw_alloc_data, delete_hw_alloc_data): Define.

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add hw-alloc.o.
	(hw-alloc.o): New target.
	
Mon May 25 17:14:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-events.h, hw-events.c: New files.  Move event code to here.
  	* sim-hw.c: From here.
	* hw-base.h: Include "hw-events.h".
	* Make-common.in (SIM_NEW_COMMON_OBJS): Add hw-events.o.
	(hw-events.o): New target.

	* hw-device.h (struct hw): Add struct hw_event_data events_of_hw.
	* hw-events.h (struct hw_event): Replace typedef hw_event.
	
	* hw-base.h (create_hw_event_data, delete_hw_event_data): Declare.
	* hw-base.c (hw_create, hw_delete): Call.
	* hw-events.c (create_hw_event_data, delete_hw_event_data): Define.

	* dv-pal.c: Update.

Mon May 25 16:55:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-base.c (panic_hw_port_event, empty_hw_ports): Move from here.
  	* hw-ports.c: To here.
	
	* hw-base.h, hw-ports.c (create_hw_port_data,
 	delete_hw_port_data): New functions.
	* hw-base.c (hw_delete, hw_create): Call same.
	
	* hw-base.h (set_hw_ports, set_hw_port_event): Move set functions
 	from here.
  	* hw-ports.h: To here.

Mon May 25 16:42:48 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.c (hw_ioctl), hw-device.h (hw_ioctl_callback): Drop
 	PROCESSOR and CIA arguments.

Fri May 22 12:16:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_HW): Add enable / disable argument.
  	Move common object files from here.
	* Make-common.in (SIM_COMMON_HW_OBJS): To here.
	
Thu May 21 17:57:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-hw.c: Include ctype.h.
	(do_hw_poll_read): Do not assume EAGAIN.

Wed May 20 04:37:57 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-trace.c (first_insn_p): New static local.
	(trace_insn_init): Set it.
	(trace_insn_fini): Use TRACE_PREFIX.
	(trace_insn): Rewrite to use trace_prefix.
	* sim-trace.c (trace_prefix): Don't print filename arg if NULL.
	Adjust width accordingly.

	* sim-profile.h (PROFILE_DATA): New member profile_any_p.
	(PROFILE_ANY_P,PROFILE_INSN_P,PROFILE_MEMORY): New macros.
	(PROFILE_SCACHE_P,PROFILE_PC_P,PROFILE_CORE_P): New macros.
	(PROFILE_COUNT_INSN,PROFILE_COUNT_READ,PROFILE_COUNT_WRITE): Simplify.
	(PROFILE_COUNT_CORE): Simplify.
	* sim-profile.c (profile_option_handler): Compute profile_any_p.

Tue May 19 23:55:30 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-ops.h (ADDCFSI): Fix typo.

Sat May 16 12:44:52 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (CGEN_CPU): New members idesc_{read,sem}_init_p.
	* genmloop.sh: Use them rather than static locals.

	* sim-engine.c (sim_engine_set_run_state): New function.
	* sim-engine.h (sim_engine_set_run_state): Declare.
	* genmloop.sh (pending_reason,pending_sigrc): New static locals.
	(@cpu@_engine_stop): New args reason,sigrc.  All callers updated.
	(engine_resume): Reorganize.  Allow synchronous exit from main loop.

Fri May 15 16:06:05 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-trace.c (trace_insn_init): New arg first_p. 
	All callers updated.
	(trace_insn_fini): New arg last_p.  All callers updated.
	* cgen-trace.h (trace_insn_init,trace_insn_fini): Update.
	(TRACE_INSN_INIT,TRACE_INSN_FINI): Update.
	* genmloop.sh (engine_resume): Update.

Fri May 15 15:59:00 1998  Joyce Janczyn  <janczyn@cygnus.com>

	* Make-common.in (install-common): Run ranlib on installed copy of
	libsim.a.

Fri May 15 15:03:00 1998  Joyce Janczyn  <janczyn@cygnus.com>

	* Make-common.in (install-common): Rename and install libsim.a.

Tue May 12 15:23:57 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-io.c (unistd.h): Include.

Wed May  6 16:04:18 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common (sim_main_headers): Sort.
	(cgen-*.o): Add cgen-sim.h dependency.

	* cgen-scache.c (scache_init): Only allocate space if scache element
	size is non-zero.
	(scache_flush,scache_print_profile): Check if scache in use first.

	* cgen-sim.h (IDESC): Provide forward declaration.
	(DECODE): Delete.
	(CGEN_CPU): Always define scache member.  New members idesc,opcode.
	(cgen_cpu_max_extra_bytes): Declare.
	* cgen-utils.c (cgen_cpu_max_extra_bytes): New function.

	* sim-cpu.h: New file.  sim_cpu_base moved here.
	Move sim_cpu_lookup decl here.
	* sim-base.h: #include "sim-cpu.h".
	* sim-cpu.c: New file.
	* Make-common (sim_main_headers): Add sim-cpu.h.
	(sim-cpu.o): Add rule for.

	* sim-model.c (set_model): Delete.
	(sim_model_set,model_set): New functions.
	(sim_model_install): Renamed from model_install.
	Don't set default model here.
	(model_option_handler): Rewrite --model processing.
	(sim_model_lookup,sim_mach_lookup): New functions.
	* sim-model.h (MAX_MODELS,MAX_INSNS): Delete.
	(insn_timing): Delete.
	(INSN_TIMING): New member `num'.
	(IMP_PROPERTIES): Always define scache_elm_size member.
	(MACH): New member init_cpu.
	(sim_machs): Renamed from machs.
	(sim_model_install): Renamed from model_install.
	(sim_model_set,sim_model_lookup,sim_mach_lookup): Declare.
	* sim-module.c (modules): Update.

	* sim-profile.c (profile_print_insn): Add cpu arg to INSN_NAME macro.

	* sim-io.c: #include <errno.h>.

Wed May  6 12:39:15 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* dv-pal.c (struct hw_pal_device): Add reader.
 	(hw_pal_finish): Initialize reader.
	(scan_hw_pal): Use reader.

	* hw-base.h, sim-hw.c (do_hw_poll_read): New function.
	(HW_IO_EOF, HW_IO_NOT_READY): Define.
	* dv-pal.c: Use.

	* sim-io.h, sim-io.c (sim_io_poll_read): New function.  Copy from
 	../ppc/main.c sim_io_read_stdin.

Fri May  1 12:11:02 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-tree.h (hw_tree_print): Paramaterize with print and file
 	arguments.
	* hw-tree.c: Update.
	
	* hw-base.h (hw_port_event_callback): Delete CPU/CIA args.
	* hw-device.h (hw_io_read_buffer, hw_io_write_buffer): Delete
 	CPU/CIA args.
	* hw-ports.h (hw_port_event): Ditto.
	* hw-ports.c (hw_port_event): Update.
	* hw-base.c (panic_hw_io_read_buffer, panic_hw_io_write_buffer):
 	Update.
	* dv-pal.c (hw_pal_io_read_buffer, hw_pal_io_write_buffer):
 	Update.
	(hw_pal_io_write_buffer): Call hw_halt not sim_engine_halt.
	(do_counter_event): Update.
	* dv-glue.c (hw_glue_io_read_buffer): Update.
	(hw_glue_port_event): Update.

	* hw-device.h (SIM_DESC): Replace with struct sim_state.
	* hw-base.h (hw_create): Ditto.
	* hw-base.c (hw_create): Ditto.
	
	* hw-device.c (hw_abort, hw_trace, hw_hw_event_queue_schedule,
 	hw_event_queue_deschedule, hw_event_queue_time): Delete, moved
 	from here to.
	* sim-hw.c: Here.
	* hw-device.h (hw_system_cpu): Declare.
	* sim-hw.c (hw_system_cpu): New function.

	* sim-core.c (sim_core_map_attach, sim_core_attach): Call
 	sim_hw_abort not hw_abort.
	(sim-hw.h): Include.
	(sim_core_read_buffer, sim_core_write_buffer): Call
 	sim_hw_io_read_buffer and sim_hw_io_write_buffer. Do not pass CPU
 	argument.
	(sim_core_set_xor): Do not pass CPU when aborting.

	* sim-n-core.h (sim_core_read_aligned_N,
 	sim_core_write_aligned_N): Call sim_hw_abort not hw_abort.
	(sim_core_read_aligned_N, sim_core_write_aligned_N): Call
 	sim_cpu_hw_io_read_buffer and sim_cpu_hw_io_write_buffer. Does not
 	return length.

	* sim-hw.h: Declare sim_hw_io_{read,write}_buffer. Declare
 	sim_hw_print.
	* sim-hw.c (sim_hw_io_read_buffer, sim_hw_io_write_buffer,
 	sim_cpu_hw_io_read_buffer, sim_cpu_hw_io_write_buffer): New
 	functions.
	(sim_hw_print): New function.

	* sim-engine.h (sim_engine_vabort): Declare.
	* sim-engine.c (sim_engine_vabort): New function.

Wed Apr 29 23:58:52 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (print_data): For floating-point numbers trace raw
 	hex value.
	(trace_result_fp2): New function.
	* sim-trace.h (trace_result_fp2): New declaration.
	(TRACE_FP_RESULT2): New macro.

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

        * common/aclocal.m4: call AM_EXEEXT in SIM_AC_COMMON, define
        AM_CYGWIN32 and AM_EXEEXT.
        * common/Make-common.in: set EXEEXT, add missing EXEEXTs
        to run and install-common rules.
        * common/configure: regenerate

Sat Apr 25 17:45:01 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (cell_word): New type.
	(natural_cell): Delete type.

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:25:07 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h (NEED_DECLARATION_PRINTF): Removed.

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:38:08 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* Make-common.in (top_builddir): New macro.
	(INTL_LIB): Removed.
	(INTLLIBS): New macro.
	(INTLDEPS): Likewise.
	(LIBDEPS): Use INTLDEPS.
	(EXTRA_LIBS): Use INTLLIBS.
	* aclocal.m4 (SIM_AC_COMMON): Call CY_GNU_GETTEXT.
	(CY_WITH_NLS, CY_GNU_GETTEXT, AM_PATH_PROG_WITH_TEST,
	AM_LC_MESSAGES): New macros from GNU gettext.

Fri Apr 24 19:57:59 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h: Discard leading _ from macros.
	* sim-types.h: Ditto.

Wed Apr 22 14:14:19 1998  Michael Meissner  <meissner@cygnus.com>

	* Make-common.in (CSEARCH): Add -I to intl directories.
	(INTL_LIB): Point to libintl.a.
	(LIBDEPS): Add $(INTL_LIB).
	(EXTRA_LIBS): Ditto.

Tue Apr 21 12:44:27 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-types.h (GETHIDI,MAKEDI): Tweak.

	* cgen-ops.h (ADDCFSI): Fix.
	(SUBCFSI): Tweak.

Tue Apr 21 13:18:41 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (signed_address, unsigned_address): Define.

Mon Apr 20 21:47:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (sim_fpu_2d): Don't return an SNaN, convert it into a
 	QNaN.

Thu Apr 16 10:30:14 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c, sim-fpu.h (sim_fpu_fractionto, sim_fpu_tofraction):
 	New functions, pack / unpack sim_fpu struct using raw values.
	(sim_fpu_is): Differentiate between negative and positive
 	infinity.

Tue Apr 14 18:49:31 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.h (EXTEND4): Define.
	(EXTEND4, EXTEND15, EXTEND11): Ditto.
	
Tue Apr 14 16:31:35 1998  John Metzler  <jmetzler@cygnus.com>

	* sim-memopt.c (parse_addr): Sunos 4.5 does not have strtol
 	declared so we need this cast to prevent long long addresses
	from being misconfigures. Results in access to unmapped memory.

Tue Apr 14 13:19:14 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (RUNTESTFLAGS): Define.
	(check): Pass RUNTESTFLAGS to recursive make.

Tue Apr 14 15:09:19 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-info.c (sim_info): Be verbose when either VERBOSE or
 	STATE_VERBOSE_P.

Sat Apr  4 23:24:17 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-inline): By default, disable sim-inline when
 	cross compiling.

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

	* aclocal.m4 (sim-cflags): Add -fomit-frame-pointer to defaults.
	(sim-inline): Update to match sim-inline.[hc]
	* configure: Regenerated to track ../common/aclocal.m4 changes.

	* Make-common.in (sim_main_headers): Add sim-inline.h

	* sim-bits.h (sim-bits.c): Include when H_REVEALS_MODULE_P.
 	selected.
	* sim-endian.h (sim-endian.c): Ditto.
	
	* sim-events.h (_SIM_EVENTS_H_): Replace with SIM_EVENTS_H.
	(sim_events_set_trace): Delete unused prototype.
	
	* sim-core.h (_SIM_CORE_H_): Replace with SIM_CORE_H.
	* sim-core.c (_SIM_CORE_C_): Ditto for SIM_CORE_C.

	* sim-fpu.h (sim-fpu.c): Include when H_REVEALS_MODULE_P.
	(sim_fpu_to232i, sim_fpu_to232u, sim_fpu_i232to, sim_fpu_u232to):
 	Comment out, not yet implemented in sim-fpu.c.
	(sim_fpu_zero, sim_fpu_one, sim_fpu_two, sim_fpu_qnan,
 	sim_fpu_max32, sim_fpu_max64): Mark as EXTERN_SIM_FPU.
	
	* sim-inline.h: Rewrite description.
	(H_REVEALS_MODULE_P, C_REVEALS_MODULE_P): Define.
	(SIM_MAIN_INLINE): Add inline option.
	
	* sim-inline.c (semantics.c, idecode.c, engine.c, ...): Do not
 	include generated files. Handled by generator directly.
	
Sat Apr  4 01:07:06 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (set_trace_option_mask): Keep TRACE_ANY_P
	up-to-date.

	* sim-trace.h (TRACE_ANY_P): Define.
	(struct _trace_data): Add trace_any_p.

Mon Mar 30 17:11:55 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main): Handle all alternatives of enum sim_stop.
	(main): Delete unused `asection *s'.

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

	* hw-tree.h, hw-tree.c (hw_tree_vparse): New function

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

	* sim-hw.c: New file.
	* sim-hw.h (sim_hw_parse): Declare function.
	(hw-tree.h): Do not include.
	
	* sim-base.h (STATE_HW): Define.
	(struct sim_state_base): Add member struct *hw.

	* sim-module.c (sim-hw.h): Include.
	(modules): Add sim_hw_install.
	
	* aclocal.m4 (sim_hw_obj): Add sim-hw.o

Fri Mar 27 14:55:06 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-base.h (CPU_INDEX): Define.

	* sim-utils.c (sim_state_alloc): Initialize.
	* sim-module.c (sim_post_argv_init): Ditto.

Thu Mar 26 10:07:57 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* aclocal.m4 (sim_hw_obj):  Fix sed expression to generate
	properly formatted lists.

Thu Mar 26 10:37:22 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* dv-pal.c (enum hw_pal_address_mask): From Stu Grossman, was
 	0x2f needs to be 0x3f.

Thu Mar 26 09:10:56 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-tree.c (hw_tree_find_property): Return NULL when device is
 	not found.
	(hw_tree_find_*_property): Clean up error message when property is
 	not found.

	* dv-pal.c (hw_pal_io_read_buffer): Check the smp property is
 	present before looking for it.

Wed Mar 25 16:17:38 1998  Ian Carmichael  <iancarm@cygnus.com>

	* aclocal.m4 (AC_CHECK_HEADERS): Add check for fpu_control.h.  
	(AC_CHECK_FUNCS): Add check for __setfpucw.
	* configure: Regenerated.

Wed Mar 25 09:18:34 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* dv-pal.c (hw_pal_countdown, hw_pal_countdown_value,
 	hw_pal_timer, hw_pal_timer_value): Define.
	(hw_pal_io_read_buffer, hw_pal_io_write_buffer): Add timer support
	(do_counter_event, do_counter_read, do_counter_value,
 	do_counter_write): new functions.

Tue Mar 24 12:24:24 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-tree.c (hw_printf): Send tree dump to stderr, same as other
 	trace output.

	* hw-base.c (hw_create): Stop searching for a device when one is
 	found.

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

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

Mon Mar 23 10:25:08 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Add second argument,
 	appends extra devices.
	(SIM_AC_OPTION_HARDWARE): Substute sim_hw, a non-duplicate list of
 	the device names.
	
	* Make-common.in (hw-config.h): New target, create hw-config.h
 	file.
	(SIM_HW): Definition from @sim_hw@.
	(hw-base.o): Depend on hw-config.h

Tue Mar 24 17:41:35 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Make-common.in:  Get SHELL from configure.
	* (stamp-tvals sim-inline.c):  Use $(SHELL) when invoking
	move-if-change.  Fixes NT native build problem.
	* Makefile.in (nltvals.def):   Use $(SHELL) when invoking
	move-if-change.  Fixes NT native build problem.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.
	
Sun Mar 22 16:54:40 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.h, hw-device.c (hw_strdup): New function.

	* hw-base.c (hw_create): Use hw_strdup when saving a copy of the
 	strings name, family and args.
	(full_name_of_hw): Use hw_strdup when returning the full path.

	* hw-properties.c: Clean up property not found / wrong type error
 	messages.
	
	* hw-tree.c (hw_tree_parse): Finish a devices initialization
 	before attaching any ports.

	* hw-base.c (hw-config.): Include.  Replace hardwired table.

	* dv-glue.c: Copy over ../ppc/hw_glue.c.  Update to new framework.

	* Make-common.in: Add rule for dv-glue.o.

Sun Mar 22 16:45:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-base.c (hw_finish): Move setting of trace level to here.
	(hw_create): From here.

	* hw-base.h, hw-base.c (do_hw_attach_regs): Copy function from
 	../ppc/device_table.c.

	* dv-pal.c (hw_pal_finish): Attach PAL device to parent bus.

	* hw-tree.c (print_properties): Supress path when printing
 	properties of root node.

Sun Mar 22 16:21:15 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.h (HW_TRACE): Define.
	(hw_trace): Declare.
	* hw-device.c (hw_trace): Implement function.

	* hw-base.c (hw_create): Set hw trace level from "trace?"
 	property.

	* dv-core.c (dv_core_attach_address_callback): Add trace.

	* dv-pal.c: Replace DTRACE with HW_TRACE.

Sun Mar 22 15:23:35 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.h (HW_ZALLOC, HW_MALLOC): New macros.
	(hw_alloc_data): Delcare.
	(struct hw): Add member alloc_of_hw.
	
	* hw-device.c (hw_zalloc, hw_malloc, hw_free, hw_free_all): New
 	functions. Assocate memory with a device.
	(stdlib.h): Include.
	
	* hw-base.h (set_hw_delete): Define.
	(hw_delete_callback): Declare.
	(hw_delete): Declare.

	* hw-base.c (hw_delete): Implement function.
	(struct hw_base_data): Add member to_delete.
	(ignore_hw_delete): New function, does nothing.
	(hw_create): Set the hw_delete method.
	(hw_create): Allocate the base type using HW_ZALLOC before setting
 	any methods.

	* hw-tree.h, hw-tree.c (hw_tree_delete): New function.
	
	* hw-properties.c: Replace zalloc/zfree with hw_zalloc/hw_free.
	
	* hw-ports.c: Replace zalloc/zfree with hw_zalloc/hw_free.
	(attach_hw_port_edge): Add struct hw argument

	* dv-pal.c (hw_pal_finish): Replace zalloc/zfree with
 	hw_zalloc/hw_free.

Sun Mar 22 15:09:52 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* hw-device.h (hw_attach_address_callback,
 	hw_detach_address_callback): Attach to a single space not a space
 	mask. Clarify interpretation of SPACE:ADDR parameters.

	* hw-base.c (passthrough_hw_attach_address,
 	passthrough_hw_detach_address): Update.
	* dv-core.c (dv_core_attach_address_callback): Ditto.
	* dv-pal.c (hw_pal_attach_address): Ditto.

Thu Mar 19 00:41:00 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.h: Document additional CPU arg to OPTION_HANDLER.

Wed Mar 18 14:13:02 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Make-common.in (SIM_HW_OBJS, SIM_HW_SRC, SIM_DV_OBJS): Define.
	(hw-base_h, hw-device_h, hw-handles_h, hw-instances_h, hw_ports_h,
 	hw-properties_h, hw-tree_h): Define, point at corresponding
 	header.
	(hw_base_headers): Define list of headers included by hw-base.h
	(hw-base.o, hw-device.o, hw-instances.o, hw-handles.o, hw-ports.o,
 	hw-properties.o, hw-tree.o): Specify dependencies.
	(dv-core.o, dv-pal.o): Ditto.

	* sim-hw.h: New file.

	* hw-device.h, hw-device.c, hw-properties.h, hw-properties.c,
 	hw-ports.h, hw-ports.c: New files. Copied from ../ppc/device.[ch].
	
	* hw-tree.h, hw-tree.c: New files. Copied from ../ppc/tree.[hc].

	* hw-base.h, hw-base.c: new files.  Copied from
 	../ppc/device_table.[hc].

	* dv-core.c, dv-pal.c: New files. Copied from
 	../ppc/hw_{core,pal}.c
	
	* sim-basics.h (struct hw): Declare.
	(enum port_direction, enum object_disposition): Declare.

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

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Set sim_hw_obj, sim_dv_obj,
 	sim_dv_src in Makefile. Take list of devices as parameter to m4
 	macro..

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

Mon Mar 16 12:37:33 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h, sim-trace.c (trace_prefix): Pass in sim_cia so that
 	trace_prefix can abort cleanly.

Sat Mar 14 18:36:12 1998  Doug Evans  <devans@seba.cygnus.com>

	* dv-sockser.c, dv-sockser.h: New files.
	* Make-common.in (dv-sockser.o): Add rule for.
	* aclocal.m4: Check for fcntl.h.
	* config.h: Add HAVE_FCNTL_H.

	* sim-break.c (remove_breakpoint): Fix thinko.

	* sim-hload.c (sim_load): Provide default value of SIM_HANDLES_LMA.
	Use SIM_HANDLES_LMA for lma_p arg to sim_load_file.

1998-03-13  Fred Fish  <fnf@cygnus.com>

	* sim-base.h (struct sim_state_base): Add prog_syms and
	define macro STATE_PROG_SYMS.
	* sim-trace.c (trace_prefix): Add variables abfd, symsize,
	symbol_count, and asymbols.  Call bfd_get_symtab_upper_bound
	and bfd_canonicalize_symtab, to get symbol table on first use
	and preserve it via STATE_PROG_SYMS for future calls to
	bfd_find_nearest_line.

Wed Mar 11 14:02:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.h, sim-core.c (sim_core_map_to_str): Delete.

	* sim-core.c (sim_core_attach): Handle a generic number of maps -
 	up to nr_maps, not just access_* maps.

	* sim-profile.h (struct PROFILE_DATA): Track nr_maps different
 	maps.

	* sim-profile.c (profile_print_core): Make map unsigned.  Iterate
 	over nr_maps not sim_core_nr_maps.

	* sim-events.h, sim-events.c (sim_events_watch_core): Change
 	core_map argument to unsigned.
	(struct _sim_core): Ditto for struct member core_map.

	* sim-core.h (nr_sim_core_maps, sim_core_*_map): Delete

	* sim-basics.h (access_io, access_*_io): Define.
	(map_read, map_write, map_exec, map_io): Define.

	* sim-core.c, sim-core.h (sim_core_attach): Replace argument
 	attach with more generic mapmask.
	(sim_core_{read,write}_*): Change map argument to unsigned.
	
	* sim-core.c (sim_core_uninstall, sim_core_attach,
 	sim_core_detach): Iterate over nr_maps instead of
 	sim_core_nr_maps.

	* sim-break.c (insert_breakpoint): Write breakpoints to exec_map
 	instead of the write_map.
	(remove_breakpoint): Ditto.

	* genmloop.sh (engine_resume_full): Replace sim_core_*_map
 	with read_map, write_map, exec_map resp.

	* cgen-mem.h (DECLARE_GETMEM, DECLARE_SETMEM, DECLARE_GETIMEM):
 	Ditto.

	* cgen-utils.c (sim_disassemble_insn): Ditto.

	* sim-hrw.c (sim_write, sim_write): Ditto.

	* sim-utils.h, sim-utils.c (access_to_str, map_to_str,
 	transfer_to_str): New functions.

Mon Mar  9 12:50:59 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-base.h (sim_state_base): New member environment.
	(STATE_ENVIRONMENT): New macro.
	* sim-config.c (current_environment): Delete.
	(sim_config_default): New function.
	(sim_config): Set STATE_ENVIRONMENT, not current_environment.
	* sim-config.h (current_environment,CURRENT_ENVIRONMENT): Delete.
	(sim_config_default): Add prototype.
	* sim-module.c (sim_pre_argv_init): Call sim_config_default.
	* sim-options.c (standard_option_handler, case OPTION_ENVIRONMENT):
	Set STATE_ENVIRONMENT, not current_environment.

Mon Mar  9 11:59:03 1998  Jim Wilson  <wilson@cygnus.com>

	* sim-fpu.c (NR_GUARDS64): Change NR_PAD32 to NR_PAD64.

Tue Mar  3 10:53:05 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (SIGNED32, SIGNED64): Pacify GCC.

	* sim-alu.h (ALU64_BEGIN): Make alu64_r unsigned.

Mon Mar  2 10:20:06 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (TAGS): Make smarter.
	* Makefile.in (TAGS): Ditto.

Fri Feb 27 19:09:57 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-module.c (*): Fix typos in assertion tests.

Sat Feb 28 13:54:10 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-module.c (sim_pre_argv_init): String passed to asprintf
 	can't be constant.
  	
	* sim-options.c (sim_parse_args): Ditto.
	(sim_args_command): Return OK, instead of nothing, for an empty
 	command.

Fri Feb 27 13:29:13 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_info): Rename from profile_print. Drop
 	misc and misc_cpu callback arguments.  Use
 	PROFILE_INFO_CPU_CALLBACK and STATE_PROFILE_INFO_CALLBACK instead.
	(profile_install): Install profile_info function.

	* sim-profile.h (PROFILE_INFO_CPU_CALLBACK,
 	STATE_PROFILE_INFO_CALLBACK): Define.
	(struct PROFILE_DATA): Add field info_cpu_callback.
	(profile_print): Delete function.

	* sim-base.h (STATE_MODULES): Define.  Replace individual
 	STATE_*_LIST with single struct module_list.

	* sim-module.h (MODULE_INFO_FN, MODULE_INFO_LIST): Declare.
	(struct module_list): Declare.
	
	* sim-module.h, sim-module.c (sim_module_add_info_fn,
 	sim_module_info): New functions.
	(sim_module_install): Clean up module data structures.

	* sim-info.c (sim_info): New file. New function. Call
 	sim_module_info.

	* Make-common.in (sim-info.o): Define rule.
	(SIM_NEW_COMMON_OBJS): Add sim-info.o.


Fri Feb 27 18:26:16 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-base.h (sim_cpu_base): New members name, options.
	(sim_cpu_lookup): Add prototype.
	* sim-module.c (sim_pre_argv_init): Provide default names for cpus.
	* sim-options.h (DECLARE_OPTION_HANDLER): New argument `cpu'.
	(sim_add_option_table): Update prototype.
	* sim-options.c (sim_add_option_table): New argument `cpu'.
	(standard_option_handler,standard_install): Update.
	(sim_parse_args): Handle cpu specific options.
	(print_help): New static function.
	(sim_print_help): Call it.  Print cpu specific options.
	(find_match): New static function.
	(sim_args_command): Call it.  Handle cpu specific options.
	* sim-utils.c (sim_cpu_lookup): New function.
	* sim-memopt.c (memory_option_handler): Update.
	(sim_memopt_install): Update.
	* sim-model.c (model_option_handler): Update.
	(model_install): Update.
	* sim-profile.c (profile_option_handler): Update.
	(profile_install): Update.
	* sim-trace.c (trace_option_handler): Update.
	(trace_install): Update.
	* sim-watch.c (watchpoint_option_handler): Update.
	(sim_watchpoint_install): Update.
	* cgen-scache.c (scache_option_handler): Update.
	(scache_install): Update.

Wed Feb 25 11:00:26 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (check): Run `make check' in testsuite dir.

Wed Feb 25 14:40:24 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (trace_result0): New function.

	* sim-trace.h (TRACE_FP_*, TRACE_FPU_*): Rename TRACE_FPU_*
 	macro's to TRACE_FP_*. TRACE_FPU_* should be defined and used when
 	tracing sim_fpu variables.
	(TRACE_ALU_RESULT0): Define.
	(TRACE_FP_RESULT_WORD): Define.
	(TRACE_FP_INPUT_WORD1): Define.

	* sim-fpu.c, sim-fpu.h (sim_fpu_max32, sim_fpu_max64, sim_fpu_one,
 	sim_fpu_two): New constants.
	(sim_fpu_op1, sim_fpu_op2): New types.
	(struct _sim_fpu): Delete member result.  Re-order other members.
	(sim_fpu_sign, sim_fpu_exp): New functions.
	(sim_fpu_max, sim_fpu_min): new functions.
	(EXPMAX32, EXPMAX64, NR_PAD32, NR_PAD64, NR_GUARDS32, NR_GUARDS64,
 	NORMAL_EXPMAX32, NORMAL_EXPMAX64): Define.
	
Tue Feb 24 22:45:39 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-profile.c (profile_print): Delete duplicate test of
	PROFILE_INSN_IDX.
	(profile_print_pc): Exit early if data collection not set up.
	(profile_print_core): Simplify by calling sim_core_map_to_str.
	* sim-core.h (sim_core_map_to_str): Declare.
	* sim-core.c (sim_core_map_to_str): Make non-static.

	* genmloop.sh (engine_resume): Update insn_count before exiting.
	(engine_resume_full): Keep accurate core profile data.

	* cgen-utils.c (sim_disassemble_insn): Don't use
	sim_core_read_aligned_N, it messes up profiling results.

Mon Feb 23 20:45:57 1998  Mark Alexander  <marka@cygnus.com>

	* nltvals.def: Regenerate with MN10300 additions.

Tue Feb 24 13:18:42 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_ALU_RESULT2): Define.
	
	* sim-trace.h, sim-trace.c (trace_result_word2,
 	trace_input_word4, trace_result_word4): New function.

Mon Feb 23 13:08:35 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-sim.h (SEM_NEXT_PC): New arg `len'.

	* sim-xcat.h: Delete.
	* cgen-mem.h: Delete inclusion of sim-xcat.h.
	* cgen-sim.h: Ditto.
	* sim-alu.h: Replace sim-xcat.h with symcat.h.
	* sim-n-bits.h: Ditto.
	* sim-n-core.h: Ditto.
	* sim-n-endian.h: Ditto.

Mon Feb 23 13:19:58 1998  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): Handle short reads, and EOF.

Tue Feb 24 00:29:57 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (print_data): case trace_fmt_fp missing break.  Use
 	sim_fpu to safely print fp_word values.
	(print_data): Add trace_fmt_bool and trace_fmt_addr.
	(trace_result_bool1, trace_result_addr1): New functions.
	(trace_input_bool1, trace_input_addr1): New functions.

	* sim-trace.h (TRACE_FPU_*): Define.

Mon Feb 23 13:24:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.h (enum sim_fpu_class): Add sim_fpu_class_denorm.
	(sim_fpu_fpto, sim_fpu_tofp): Define.

Fri Feb 20 18:08:51 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (sim_fpu_cmp): New function.

Wed Feb 18 16:29:21 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-utils.h (sim_disassemble_insn): Use CGEN_INSN_BITSIZE
	instead of abuf->length.
	* sim-trace.c (trace_options): Have -t only trace a few useful things.
	(set_trace_option_mask): Renamed from set_trace_options.
	(set_trace_option): New function.
	(trace_option_handler): Update calls to set_trace_option{,_mask}.
	* sim-trace.h (TRACE_USEFUL_MASK): New macro.

Wed Feb 18 12:42:15 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-basics.h: Declare struct _sim_fpu.

Tue Feb 17 16:27:46 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_ALU_INPUT*, TRACE_ALU_RESULT): Define.
	(trace_prefix, trace_input*, trace_result*): Declare.
	(trace_one_insn): Change declaration, assume trace_prefix called.
	(trace_generic): Like trace_one_insn.
	(TRACE_ALU_IDX, TRACE_*_IDX): Change #define's to enum.
	(TRACE_alu, TRACE_[a-z]*): Update.
	
	* sim-trace.c (trace_prefix, trace_input*, trace_result*,
 	trace_insn, save_data, trace_idx_to_str, print_data): New
 	functions.
	(trace_one_insn): Rewrite.
	(trace_generic): New function.
	
Tue Feb 17 17:27:30 1998  Doug Evans  <devans@seba.cygnus.com>

	* aclocal.m4 (USE_MAINTAINER_MODE): New variable.

	* cgen-sim.h (SEMANTIC_CACHE_FN): Delete.
	(SEMANTIC_FN): Rewrite declaration.
	(DECODE): Update type of semantic_fast member.
	({EX,SEM}_FN_NAME): Have only one version.
	* sim-base.h (sim_state_base): Delete conditionals surrounding
	member scache_size.

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

	* sim-load.c (sim_load_file): Print LMA/VMA according to value
 	used.

Tue Feb 10 14:56:23 1998  Ian Carmichael  <iancarm@cygnus.com>

	* sim-core.c: Add missing prototypes for WITH_DEVICES.
	Add missing parameters to device_io calls.
	* sim-core.h: Add missing parameters to device_io calls.

Mon Feb  9 14:48:37 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-sim.h (DECODE): Always use switch for `read' for now.
	(PAREXEC): Renamed from PARALLEL_EXEC.  All uses updated.
	(SEMANTIC{,_CACHE}_FN): Fix return type.
	* genmloop.sh (@cpu@_engine_run): Delete `current_state'.
	(engine_resume): Likewise.  Make `engine' volatile.  Save copy
	of cpu pointer in volatile object.  Initialize read switch if
	-parallel.

Thu Feb  5 13:27:04 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (EX_FN_NAME): _exc_ -> _ex_.
	(SEM_INSN): New macro.

Tue Feb  3 16:31:56 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-run.c (sim_engine_run): Assume IMEM is 32 bit.

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

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

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

	* sim-types.h (fp_word): New type, define according to
 	WITH_TARGET_FLOATING_POINT_BITSIZE.

	* aclocal.m4 (default_sim_floating_point_bitsize): Add
 	configuration of size of floating point registers.

Sun Feb  1 14:02:31 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print): Only print CPU <N> if other
 	output is going to appear.

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

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

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

	* sim-types.h (address_word): Typedef according to
 	WITH_TARGET_ADDRESS_BITSIZE.
	(signed_cell, unsigned_cell, natural_cell): Ditto using
 	WITH_TARGET_CELL_BITSIZE.
	
	* sim-config.h (WITH_TARGET_ADDRESS_BITSIZE): Define.
	(WITH_TARGET_CELL_BITSIZE): Define.
	(WITH_HOST_WORD_BITSIZE): Delete.

	* sim-config.c (print_sim_config): Update.

	* aclocal.m4 (SIM_AC_OPTION_BITSIZE): Add support for
 	configuration of address and OpenFirmware cell sizes.

Fri Jan 30 09:36:33 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-engine.h (sim_engine_run): Add argument nr_cpus.
	* sim-run.c (sim_engine_run): Update.
	
	* sim-engine.h (SIM_ENGINE_HALT_HOOK): Use SET_CPU_CIA instead of
 	CPU_CIA.
  	* sim-run.c (sim_engine_run): Ditto.

	* sim-resume.c (sim_resume): Obtain nr_cpus from sim_engine.
	(sim_resume): Pass nr_cpus to sim_engine_run.

	* sim-engine.h (struct _sim_engine): Add member nr_cpus.
	
	* sim-engine.c (sim_engine_init): Hardwire nr_cpus to
 	MAX_NR_PROCESSORS.
	(sim_engine_nr_cpus) sim-engine.c, sim-engine.h: New function
	
Fri Jan 23 14:20:54 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (stamp-tvals): New rule.
	(targ-vals.h,targ-map.c): Depend on it.
	(clean): Remove stamp-tvals.

Tue Jan 20 21:35:13 1998  Michael Meissner  <meissner@cygnus.com>

	* sim-utils.c (sim_state_alloc): #if 0 variable that is only used
	in code also #if 0'ed.

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

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* aclocal.m4: Recognize --enable-maintainer-mode.

Mon Jan 19 12:45:45 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-scache.h: Deleted.
	* Make-common.in (cgen-run.o,cgen-scache.o): Delete cgen-scache.h dep.
	* cgen-scache.c: Only compile contents if WITH_SCACHE.
	(scache_init): Use runtime computed size of SCACHE.
	(scache_flush): Likewise.
	* cgen-mem.h (GETIMEMU[QHSD]I): Declare.
	([GS]ETT{QI,UQI,HI,UHI,SI,USI,DI,UDI}): Declare.
	* cgen-sim.h: Scache support moved here.
	(PC): Redo definition.
	(ARGBUF,SCACHE,PARALLEL_EXEC): Provide forward decls.
	(DECODE): Add parallel execution support.
	Only include semantic label members if using switch.
	(SWITCH,CASE,BREAK,DEFAULT,ENDSWITCH): Portable computed goto support.
	(CGEN_CPU): Delete members exec_state, halt_sigrc, halt_jmp_buf.
	(IADDR,CIA,SEM_ARG,EX_FN_NAME,SEM_FN_NAME,RECORD_IADDR,SEM_ARGBUF,
	SEM_NEXT_PC,SEM_BRANCH_VIA_{CACHE,ADDR},SEM_NEW_PC_ADDR): Moved here
	from cgen-types.h.
	(engine_{stop,run,resume,halt,signal}): Delete decls.
	* cgen-types.h (CGEN_{XCAT3,CAT3}): Delete.
	(argbuf,scache): Delete forward decls.
	(STATE): Delete decl.
	* cgen-utils.c: Don't include decode.h, mem-ops.h, sem-ops.h.
	Include cgen-mem.h, cgen-ops.h.
	(engine_halt,engine_signal): Delete.
	({ex,exc,sem,semc}_illegal): Delete.
	(sim_disassemble_insn): Result of extract fn is in bits.
	* genmloop.sh: Rewrite.

	* cgen-trace.c (trace_insn): Set printed_result_p=0 if not tracing
	line numbers.

	* sim-base.h (sim_state_base): Delete member `model'.
	(sim_cpu_base): Add member `model'.
	* sim-model.h (IMP_PROPERTIES): New type.
	(MACH): New members imp_props, models.
	(models): Delete decl.
	* sim-model.c (set_model): Update.
	* sim-profile.c (profile_print_model): Update.

	* sim-utils.c (sim_state_alloc): Delete setting of cpu backlink here.

Fri Jan 16 12:33:09 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen-trace.c (trace_insn): Call CGEN_INSN_MNEMONIC() rather than
	CGEN_INSN_SYNTAX().

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

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

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

	* aclocal.m4 (AR): Check for sigaction.

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

	* Make-common.in (sim-core.o): Depend on $(sim_main_headers).

	* sim-config.h (WITH_TREE_PROPERTIES): Define as 0.
	* sim-config.c (sim_config): Replace WITH_DEVICES with
	WITH_TREE_PROPERTIES.

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

Wed Dec  3 17:56:02 1997  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (SIM_ENVIRONMENT): New variable.
	(CONFIG_CFLAGS): Add it.
	* aclocal.m4 (SIM_AC_OPTION_ENVIRONMENT): Handle
	--enable-sim-environment option.
	* configure: Regenerated.
	* sim-config.h (environment support): Rewrite.
	* sim-config.c (current_environment): Define as enum, unconditionally.
	(current_alignment): Define unconditionally.
	(config_environment_to_a): Update.
	(config_alignment_to_a): Fix type of argument.  Define unconditionally.
	(sim_config): Handle environment and alignment determination
	unconditionally.  Delete sanity checks of current_environment,
	unnecessary.
	(print_sim_config): Update.
	* sim-options.c (STANDARD_OPTIONS enum): Add OPTION_ENVIRONMENT.
	(standard_options): Add --environment.
	(standard_option_handler): Likewise.

Fri Nov 28 12:21:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h: Add notes on carry vs borrow for subtraction.
	(ALU{,8,16,32,64}ADD): Redefine ADD macro as add overflowing.
	(ALU{,8,16,32,64}ADDC): Define - add carrying.
	(ALU{,8,16,32,64}SUB): Redefine SUB macro as subtract overflowing.
	(ALU{,8,16,32,64}SUBB): Define - subtract borrowing.
	(ALU{,8,16,32,64}SUBC): Define - tract carrying.
	(ALU{,8,16,32,64}ADD_CA, ALU{,8,16,32,64}ADDC_C): Replace single
 	argument ADD_CA macro with two argument ADDC_C - add carrying with
 	carry in.
	(ALU{,8,16,32,64}SUB_CA, ALU{,8,16,32,64}SUBC_X): Replace single
 	argument SUB_CA macro with two argument SUBC_X - subtract
 	carrying, extended.
	(ALU{,8,16,32,64}SUBB_B): Define - subtract borrowing with
 	borrow-in.
	(ALU{,8,16,32,64}NEGC, ALU{,8,16,32,64}NEGB): Define.

Sun Nov 30 17:40:57 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_{syscalls,getstring}): Delete.  No longer used.
	* sim-io.h (sim_io_syscalls): Delete.

Fri Nov 28 20:10:09 1997  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): Add missing else, so write to stdout
	isn't doubled.

	* sim-alu.h (ALU{,8,16,32,64}_SET_CARRY): Provide macros to import
	the carry bit from the CPU's psw.

Fri Nov 28 11:15:05 1997  Doug Evans  <devans@canuck.cygnus.com>

	* gennltvals.sh: Redo syscall support.
	* nltvals.def: Regenerated.

Wed Nov 26 16:49:38 1997  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): If writing to stdout or stderr, flush
	the stream immediately.

Wed Nov 26 12:32:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-io.c (sim_io_getstring): Delete unused len2.
	(sim_io_syscalls): Ditto for sys_errno.

Wed Nov 26 11:18:40 1997  Doug Evans  <devans@canuck.cygnus.com>

	* syscall.c (cb_syscall): Test CB_SYSCALL struct magic number.

	* Make-common.in (run.o): Depend on remote-sim.h.
	(nrun.o,sim-hload.o,sim-hrw.o): Likewise.
	(sim-io.o,sim-reason.o,sim-resume.o): Likewise.

Tue Nov 25 20:12:46 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_syscalls): Disable lseek.

Tue Nov 25 00:12:38 1997  Doug Evans  <devans@seba.cygnus.com>

	* gennltvals.sh: Generate syscall values for d30v.

	* gennltvals.sh: Use libgloss/syscall.h for sparc.
	* nltvals.def: Regenerate.

	* callback.c (os_stat): Make 3rd arg a host struct stat ptr.
	(os_fstat): Likewise.  Validate fd argument.
	(cb_host_to_target_stat): Delete big_p arg.  If HS arg is NULL,
	just compute target stat struct length.
	* syscall.c: #include "libiberty.h", <sys/types.h>, <sys/stat.h>.
	(ENOSYS,ENAMETOOLONG): Provide definitions if missing.
	(get_string): Return host errno values so they can be properly
	translated later.
	(cb_syscall): Likewise.
	(cb_syscall, cases open,unlink): Use get_path instead of get_string.
	(cb_syscall, case read): Use read_stdin for file descriptor 0.
	(cb_syscall, case write): Use write_stderr for file descriptor 2.
	(cb_syscall): Add cases for lseek, unlink, stat, fstat, time.
	(get_path): New function.

Mon Nov 24 18:56:07 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_syscalls): New function to provide system call
	emulation.  Provide exit, open, close, read, write, lseek, and
	unlink.
	(sim_io_getstring): New function to return a string from a
	simulated memory location.

	* sim-io.h (sim_io_syscalls): Add declaration.

Mon Nov 24 12:09:59 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-core.c (sim_core_signal): Fix spelling error in message.

	* sim-hrw.c (sim_read): Use read map, not write map.

	* Make-common.in (all): Add .gdbinit.
	* gdbinit.in: Add dump command.

	* sim-model.c (model_options): Use '\0' for `shortopt'.

	* sim-trace.c (trace_option_handler): Set state trace file
	for --trace-file in addition to cpu's values.
	(trace_vprintf): If cpu == NULL, try state's trace file.
	(trace_options): Reorganize table, reword some descriptions.

Sun Nov 23 10:57:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (sim_fpu_abs, sim_fpu_neg, sim_fpu_inv), sim-fpu.h:
 	New functions.

Sat Nov 22 19:16:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-reason.c (sim_stop_reason): For sim_signalled, return the
 	signal untranslated, document problem with this.

	* nrun.c (main): Check for a prog name of `*step'.  If present,
 	step the simulator instead of allowing it to run free.

	* sim-signal.c (SIGQUIT): Define on _MSC_VER hosts.

	* Make-common.in (sim_main_headers): Add sim-signal.h.

Fri Nov 21 09:32:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-signal.c (sim_signal_to_host): Return 0 for SIM_SIGNONE.

Thu Nov 20 20:35:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-signal.h: Start simulator signals at 64 so that host signal
 	numbers can be detected and reported.

	* sim-signal.h (SIM_SIGFPE), sim-signal.h: Add signal.

Wed Nov 19 12:02:41 1997  Doug Evans  <devans@seba.cygnus.com>

	* callback.c (cb_host_to_target_stat): Fix return values.

	* cgen-sim.h (enum_signal_type): Delete.
	(engine_signal): Update prototype.
	* cgen-utils.c: Don't include <signal.h>.
	(sim_signal_to_host): Delete, lives in sim-signal.c now.
	(engine_signal): Update.

	* sim-utils.c (sim_state_alloc): Call SIM_STATE_ALLOC if defined.
	(sim_state_free): Call SIM_STATE_FREE if defined.

	* sim-module.c (sim_module_install): Don't leave any modules
	installed if one fails to install.

Wed Nov 19 13:25:48 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-options.c: Don't include ../libiberty/alloca-conf.h any
	more, since alloca is not used in this file.

	* sim-alu.h (ALU{32,64}_*): Rewrite 32 and 64 bit ALU support to
	correctly set the carry and overflow bits for those types.
	(ALU{8,16,32,64}_{ADD,SUB}_CA): Take VAL argument to add along
	with carry, so carry is correct after doing both adds.
	(ALU*): Space out '\' to make it easier to read.

Tue Nov 18 15:53:45 1997  Doug Evans  <devans@canuck.cygnus.com>

	* sim-core.c (sim_core_signal): Use sim_stopped instead of
	sim_signalled.

	* sim-signal.c, sim-signal.h: New files.
	* Make-common.in (sim-signal.o): Add rule for.
	(SIM_NEW_COMMON_OBJS): Add sim-signal.o.
	* sim-abort.c: Don't include <signal.h>.
	* sim-basics.h: #include "sim-signal.h".
	* sim-break.c: Don't include <signal.h>.
	(sim_handle_breakpoint): Replace SIGTRAP with SIM_SIGTRAP.
	* sim-core.c: Don't include <signal.h>.
	(SIGBUS): Delete definition.
	(sim_core_signal): Replace SIGSEGV,SIGBUS with SIM_SIGSEGV,SIM_SIGBUS.
	* sim-engine.c: Don't include <signal.h>.
	(sim_engine_abort): Replace SIGABRT with SIM_SIGABRT.
	* sim-reason.c (sim_stop_reason): Call sim_signal_to_host.
	* sim-resume.c: Don't include <signal.h>.
	(SIGTRAP): Delete definition.
	(has_stepped): Replace SIGTRAP with SIM_SIGTRAP.
	* sim-stop.c: Don't include <signal.h>.
	(control_c_simulation): Replace SIGINT with SIM_SIGINT.
	* sim-watch.c: Don't include <signal.h>.
	(handle_watchpoint): Replace SIGINT with SIM_SIGINT.

	* Make-common.in (SIM_NEW_COMMON_OBJS): New variable.

	* sim-base.h (CIA_ADDR): Provide default definition.
	* sim-core.c (sim_core_signal): Use CIA_ADDR to fetch value.
	* sim-break.c (sim_handle_breakpoint): Likewise.

Mon Nov 17 14:15:31 1997  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (srccom): New variable.

	* Make-common.in (DEP, COMMON_DEP_CFLAGS): Define.
	(LIB_OBJS): Add syscall.o.
	(gentmap): Pass $(NL_TARGET) to $(CC).
	(syscall.o): Add rule for.
	(sim_main_headers): Add $(SIM_EXTRA_DEPS).
	(sim-bits.o): Depend on $(sim-n-bits_h).
	(sim-load.o): Depend on callback.h.

	* Make-common.in (cgen-*.o): Update dependencies, mem-ops.h renamed to
	cgen-mem.h, sem-ops.h renamed to cgen-ops.h.
	* cgen-mem.h, cgen-ops.h: New files.

	* aclocal.m4 (--enable-sim-scache): Pass -DWITH_SCACHE=0 for "=no".

	* Makefile.in (nltvals.def): Depend on gennltvals.sh.
	Rewrite build rule.
	* callback.c: #include string.h or strings.h.
	#include sys/types.h and sys/stat.h.
	(cb_init_syscall_map,cb_init_errno_map,cb_init_open_map): Declare.
	(os_get_errno,os_open): Update.
	(os_stat,os_fstat): New functions.
	(os_init): Initialize syscall_map, errno_map, open_map.
	(default_callback): Add entries for os_stat, os_fstat, syscall_map,
	errno_map, open_map, signal_map, stat_map.
	(cb_read_target_syscall_maps): New function.
	(cb_target_to_host_syscall): New function.
	(cb_host_to_target_errno): Renamed from host_to_target_errno.
	(cb_target_to_host_open): Renamed from target_to_host_open.
	(store): New function.
	(cb_host_to_target_stat): New function.
	* syscall.c: New file.
	* gentmap.c (sys_tdefs): New global.
	(gen_targ_vals_h): Output target syscall numbers.
	(gen_targ_map_c): Update.  Output target syscall translation map.
	* gentvals.sh: New first argument `target'.  Preface table with
	#ifdef NL_TARGET_$target if non-null target passed.
	* gennltvals.sh: New file.
	* nltvals.def: Regenerated.

Fri Nov 14 11:33:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_read_unaligned_N): Return static
 	sim_core_dummy_M.
	(sim_core_dummy_M): Declare.
	
Wed Nov 12 18:16:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_signal): Print the address of the
 	instruction.

Thu Nov 13 11:49:41 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-base.h (sim_state_base): Move `magic' to end of struct.

	* sim-base.h (sim_state_base): Add member trace_data.
	(STATE_TRACE_DATA): New macro.
	* sim-trace.h (TRACE_DEBUG_IDX,TRACE_debug): New macros.
	({WITH_,}TRACE_DEBUG_P): New macros.
	(STATE_TRACE_FLAGS,STRACE_P,STRACE_DEBUG_P): New macros.
	(_sim_cpu): Delete forward reference.
	(debug_printf): Update.
	* sim-trace.c (OPTION_TRACE_DEBUG): Define.
	(trace_options): Add --trace-debug.
	(set_trace_options): Handle it.
	(trace_option_handler): Likewise.
	(trace_install): Init state trace_data struct.
	(trace_uninstall): Close state trace file.
	* sim-events.c (ETRACE): Only print source file and line number if
	--trace-debug.
	* sim-n-core.h (sim_core_trace_M): Likewise.

	* sim-core.c (sim_core_signal): Add missing "\n" in message.

1997-11-13  Felix Lee  <flee@cygnus.com>

	* sim-n-core.h (sim_core_read_unaligned_N): illegal empty
	initializer.
	* sim-types.h (unsigned128,signed128): fix typo for MSVC.

Wed Nov 12 12:18:08 1997  Doug Evans  <devans@canuck.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_SCACHE): Fix typo.

	* Make-common.in (BUILT_SRC_FROM_COMMON): Remove files no longer
	built this way.
	(sim-config.o): Remove non-existent $(sim-nconfig_h) dependency.
	(clean): Don't delete $(BUILT_SRC_FROM_COMMON) if building in
	source tree.

Tue Nov 11 13:28:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Re-compute the time -
 	update_time_from_event - as each event is processed. Reverses
 	previous change.

Fri Nov  7 00:37:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (os_poll_quit): Replace _WIN32 with _MSC_VER.

Fri Nov  7 00:37:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Delete redundant call to
 	update_time_from_event.
	(sim_events_slip): Always decrement time_from_event.
	(sim_events_tick, sim_events_deschedule, update_time_from_event):
 	Delete assertion that time_from_event >=0 when work in queue, no
 	longer applicable.

Thu Nov  6 12:06:46 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (STANDARD_OPTIONS): Change OPTION_* to an enum.
	(standard_option_handler): Update.

	* sim-options.h: Clarify documentation.
 	(OPTION_LONG_ONLY_P): Delete definition.
	(OPTION_VALID_P): Define.
	
	* sim-options.c (sim_print_help): Allow short only options.
	(sim_parse_args): Ditto.
	(sim_args_command): Skip short only options.
	(sim_parse_args): Allocate space for NUM_OPTS not just 256. Make
 	separate entries for short and long options in the HANDLERS and
 	ORIG_VAL tables.
	(sim_parse_args): Disable argument permutation.

Wed Nov  5 13:40:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.h (DECLARE_SIM_CORE_WRITE_N. DECLARE_SIM_CORE_READ_N):
 	Add argument M, size of data type.
	(sim_core_read_misaligned_3, sim_core_write_misaligned_3):
 	Declare, ditto for 5, 6 & 7 byte transfers.
	(sim_core_write_unaligned_1, sim_core_write_unaligned_1): Define
 	as aligned variant.
	
	* sim-n-core.h (sim_core_trace_M): Rename from
 	sim_core_trace_N. Add nr_bytes argument. Replace transfer argument
 	with transfer type. Print transfer direction.  Handle 1 and 2 byte
 	transfers.
	(sim_core_read_unaligned_N, sim_core_write_unaligned_N): Trace
 	unaligned accesses.
	(unsigned_M, T2H_M, H2T_M): Rename from unsigned_N, T2H_N, H2T_N.
  	Update all functions.

	* sim-core.c: Generate functions starting with 16 not 1.
	(sim_core_read_unaligned_3): Generate. Ditto for 3 byte write and
 	all 5, 6 & 7 byte transfers.

	* sim-n-core.h (sim_core_read_misaligned_N,
 	sim_core_write_misaligned_N): Implement.

Mon Nov  3 15:03:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-endian.h (U16_8): Implement

	* sim-endian.c (sim_endian_split_16, sim_endian_join_16): New functions

	* sim-endian.h (VL8_16, VH8_16): Implement.

	* sim-memopt.c (memory_option_handler): Typecast 64bit value to
 	long in printf.
	(memory_option_handler): Only zalloc modulo bytes when non-zero.
	(memory_option_handler): Skip comma in alias address list

Fri Oct 31 13:03:33 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-memopt.c (do_memopt_add, do_memopt_delete): Add level and
 	space params.
	(parse_size, parse_addr): New functions
	(memory_option_handler, memory_options): Parse address & size
 	using new functions. Pass level, space, modulo to do_memopt_add &
 	do_memopt_del.

	* sim-memopt.h (struct _sim_memopt): Add level & space fields.

	* sim-core.h (sim_core_arrach, sim_core_detach): Replace
 	`attach_type attach' argument with `unsigned level' argument.
  	Document.

	* sim-core.c (new_sim_core_mapping, sim_core_map_attach,
 	sim_core_attach): Replace argument attach with level.  Update
 	verification of arguments.
	(sim_core_map_detach, sim_core_detach): Replace argument attach
 	with level.

	* sim-basics.h (enum _attach_type): Delete.

Thu Oct 30 13:45:00 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-core.h (sim_core_write_8): Define.

Tue Oct 28 12:29:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.h: Document ROTn macro.

	* sim-endian.h (H2T): Handle 16 byte variables.

	* sim-n-core.h (sim_core_read_unaligned_N): Return a dummy when an
 	error.

	* sim-core.c: Do not generate sim_core_*_word.

	* sim-n-core.h (sim_core_trace_N): Add line_nr argument.
	(sim_core_write_aligned_N, sim_core_read_aligned_N): Update.

	* sim-core.h (sim_core_read_unaligned_word,
 	sim_core_read_aligned_word, sim_core_read_word,
 	sim_core_write_unaligned_word, sim_core_write_aligned_word,
 	sim_core_write_word): Change to macros that map onto sim_core_*_N.

Mon Oct 27 11:25:10 1997  Doug Evans  <devans@canuck.cygnus.com>

	* sim-n-endian.h: Add TAGS entrys for 16 byte versions.

	* sim-endian.h: Disable 16 byte support.

Mon Oct 27 12:00:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-endian.c (_SWAP_16): Define.  Generate 126 bit swap code.

	* sim-n-core.h (sim_core_trace_N): New function.
	(sim_core_read_aligned_N, sim_core_write_aligned_N): Use,
	(sim_core_read_unaligned_N): Do not retyrn bogus value wden error.

	* sim-endian.h:  Add 128 bit variant.

	* sim-core.h, sim-core.c: Add 128 bit variant.

	* sim-types.h: Add signed128 and unsigned128 types using a struct.

Fri Oct 24 11:33:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Clear events->work_pending.
	(sim_events_tickn, sim_events_tick): Accumulate, instead of
 	setting, nr_ticks_to_process.
	(sim_events_preprocess): Allow nr_ticks_to_process to be non-zero
 	when the event queue isn't next.

	* sim-events.h, sim-events.c (sim_events_slip): New function.

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

	* sim-hload.c (sim_load): Pass lma_p==0 and do_load=sim_load.

	* sim-utils.h, sim-load.c (sim_load_file): Add lma_p and do_load
 	arguments.

Tue Oct 21 18:37:57 1997  Doug Evans  <devans@canuck.cygnus.com>

	* nrun.c (main): Remove useless test of name != NULL.
	Exit if bfd_openr fails.  Call bfd_check_format after bfd_openr.

Tue Oct 21 10:42:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (EXPMAX): Type is unsigned.
	(MIN_INT, MAX_INT): Type is signed64.
	(i2fpu): Type of val is signed64.

Tue Oct 21 10:42:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.h (PROFILE_PC_BUCKET_SIZE): Treat a shift of zero as
 	a bucket size of zero.

	* sim-profile.c (OPTION_PROFILE_PC_GRANULARITY,
 	OPTION_PROFILE_PC): Define.
	(profile_option_handler): Add support for --profile-pc and
 	--profile-pc-granularity options.
	(profile_pc_init): When possible, compute nr buckets from bucket
 	size.

	* sim-profile.c (profile_pc_init): Align the profile-pc end
 	address with the profile-pc bucket size.

	* sim-profile.h (PROFILE_PC_NR_BUCKETS): Rename PROFILE_PC_SIZE to
 	something less ambiguous.
	(PROFILE_PC_BUCKET_SIZE): Ditto for PROFILE_PC_SAMPLE_SIZE.

	* sim-profile.c (profile_pc_cleanup): New function. Move
 	profile_pc_uninstall code to here.
	(profile_pc_uninstall): Call.
	(profile_pc_init): Call.

Mon Oct 20 17:23:58 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print_pc): Dump pc profile to dmon.out
 	file using BSD gprof format.

	* sim-bits.h (LSBIT, MSBIT, BIT): Force result to type
 	unsigned_word.
	(LSBIT8, LSBIT16, LSBIT32, LSBIT64, MSBIT8, MSBIT16, MSBIT32,
 	MSBIT64): Force result to unsignedN.

Thu Oct 16 11:38:56 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU16_BEGIN, ALU32_BEGIN, ALU64_BEGIN): Drop opening
 	brace from macro.
	(ALU8_BEGIN, ALU8_SET, ALU8_ADD, ALU8_SUB, ALU8_NEGATE): Define.
	(ALU16_ADD, ALU16_SUB, ALU16_NEGATE): Simplify arrithmetic.
	(ALU32_ADD, ALU32_SUB, ALU32_NEGATE): Simplify arrithmetic.
	(ALU64_ADD, ALU64_SUB, ALU64_NEGATE): Simplify arrithmetic.

Wed Oct 15 09:24:19 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.h (struct _sim_core_mapping): Change free_buffer to
 	type void*.

	* sim-core.c (sim_core_uninstall, new_sim_core_mapping,
 	sim_core_map_attach, sim_core_map_detach): Change free_buffer to
 	type void*.
	(sim_core_attach): Rename buffer_freed to free_buffer, type
 	void*. Ensure that allocated buffer is alligned according to
 	region's address.

Mon Oct 13 11:34:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU64_HAD_OVERFLOW): Define.
	(ALU64_SUB): Define.

	* Make-common.in (all): Build SIM_EXTRA_ALL first.
	(.gdbinit): Remove dependencies, generate once per build.

Tue Oct 14 19:20:09 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_read_aligned_N,
 	sim_core_write_aligned_N): Make xaddr param type address_word not
 	unsigned_word.

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

	* sim-fpu.h, sim-fpu.c: Rewrite.  Change sim_fpu object to an
 	unpacked floating point struct.  Pass sim_fpu object by reference.
	Add preliminary support for rounding modes.
	
Fri Oct  3 09:28:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Thu Oct  2 19:43:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-bitsize): Fix typo, WITH_TARGET_WORD_BITSIZE not
 	WITH_TARGET_BITSIZE.

Thu Sep 25 23:20:20 1997  Felix Lee  <flee@yin.cygnus.com>

        * sim-profile.c (profile_print_core): label needs empty statement.

Thu Sep 25 11:20:47 1997  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* sim-break.c (sim_set_breakpoint sim_clear_breakpoint):  Use ZALLOC
	and zfree instead of xmalloc and free.  Prevents warnings.

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

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

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

	* Make-common.in (SIM_BITSIZE): Assign from configured value.
	(CONFIG_CFLAGS): Add SIM_BITSIZE.

	* aclocal.m4 (--enable-sim-bitsize): Developer option for
 	controling the bitsize/msb of the target.

Wed Sep 24 17:41:40 1997  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* Make-common.in:  New files sim-break.c, sim-break.h.
	* sim-base.h:  Add point to breakpoint list to sim_state_base.
	* sim-break.c sim-break.h:  New modules that implement intrinsic
	breakpoint support.
	* sim-module.c:  Add breakpoint module.
	
Tue Sep 23 00:26:39 1997  Felix Lee  <flee@yin.cygnus.com>

	* sim-events.c (SIM_EVENTS_POLL_RATE): poll more often than once
 	an hour.
	* sim-n-core.h (WITH_XOR_ENDIAN): MSVC barfs on
	if (0) { 1 % 0; }
	* sim-core.c (sim_core_xor_write_buffer): WITH_XOR_ENDIAN + 1.
	(SIGBUS) define for Windows.
	* sim-trace.c (trace_printf,debug_printf): added ALMOST_STDC.
	* sim-resume.c: define SIGTRAP for windows.
	* sim-xcat.h: use token pasting if ALMOST_STDC.

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

	* Make-common.in (SIM_SCACHE, SIM_DEFAULT_MODEL): Assign
 	configured values.
 	(CONFIG_CFLAGS): Add same.
	
Mon Sep 22 17:20:27 1997  Felix Lee  <flee@cygnus.com>

	* sim-types.h (SIGNED64): ##i64 when _MSC_VER, not _WIN32.
	(SIGNED32): use ##i32.

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

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

Tue Sep 23 10:07:47 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-endian): Simplify logic determining [default]
 	endian of target.

	* Make-common.in (SIM_WARNINGS, SIM_ALIGNMENT, SIM_ENDIAN,
 	SIM_HOSTENDIAN, SIM_RESERVED_BITS, SIM_ASSERT, SIM_FLOAT,
 	SIM_HARDWARE, SIM_INLINE, SIM_PACKAGES, SIM_REGPARM, SIM_SMP,
 	SIM_STDCALL, SIM_XOR_ENDIAN): Assign configured values.
	(CONFIG_CFLAGS): Add same.

	* aclocal.m4: Perform AC_SUBST on optional options.

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

	* sim-config.h (WITH_DEFAULT_ALIGNMENT): Don't hardwire any alignment.

	* sim-options.c (standard_option_handler): Typo in warning message.

	* sim-base.h (STATE_MODEL): Make conditional on SIM_HAVE_MODEL.

	* sim-profile.c (profile_print_insn): Check 0 .. MAX_INSN for any
 	insn count.  Make count conditional on there being a valid
 	INSN_NAME.
	(profile_pc_init): Make default PC profile frequency an arbitrary
 	256.

	* sim-base.h: Ditto.

	* sim-profile.h (WITH_PROFILE_MODEL_P): Only enable modeling when
 	SIM_HAVE_MODEL.

	* sim-model.h (struct MACH): Depreciate, to be replaced by bfd
	archure struct.

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

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

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

	* aclocal.m4 (sim_alignment): Simplify logic for selecting the
 	configured alignment.

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

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

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

	* sim-config.c (sim_config): Check for default alignment.

	* sim-options.c (standard_option_handler): Add alignment option.

	* aclocal.m4 (sim_alignment): Allow configuration of hardwired and
 	default alignment requirements on memory accesses.
	
Fri Sep 19 11:51:35 1997  Jeffrey A Law  (law@cygnus.com)

	* sim-load.c (sim_load_file): Return failure if the executable
	had no loadable sections.

Wed Sep 17 13:33:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (ETRACE): Use trace_printf not sim_io_printf for
 	trace output.

	* sim-core.c (sim_core_signal): When bad access halt simulator
 	SIGSEGV / SIGBUS instead of aborting.
	(signal.h): Include.
	
	* sim-watch.c (sim_watchpoint_install): Handler for watchpoint
 	options was missing.

	* sim-bits.h (MOVED): Define

Wed Sep 17 10:33:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU32_HAD_OVERFLOW): Pacify GCC, Use MSBIT instead of
 	BIT.

	* sim-bits.h (LSBIT, MSBIT): Check for overflow of shift value.

	* sim-bits.c: Add 8 bit versions of bit macros.

	* sim-bits.h: Ditto.

Tue Sep 16 16:15:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.c (LSSEXT, MSSEXT): Replace SEXT.
	(LSINSERTED, MSINSERTED): Ditto for INSERTED.
	
	* sim-n-bits.h (MSSEXTn, LSSEXTn): Replace SEXTn.
	(LSINSERTDn, MSINSERTEDN): Ditto for INSERTEDn.
	
	* sim-bits.h (SEXT*): Define as MSEXT/LSEXT.
	(INSERTED*): Ditto for LSINSERTED/MSINSERTED.
	
Mon Sep 15 17:36:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (SIM_AC_COMMON): Add optional config.h file argument.
	configure.in: Output to cconfig.h instead of config.h.

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

Mon Sep 15 15:39:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_analyze_program): Set STATE_ARCHITECTURE from
 	BFD if known.

Tue Sep  9 21:46:46 1997  Felix Lee  <flee@cygnus.com>

	* callback.c (os_write): divert stdout and stderr to their
 	respective hooks.

Thu Sep 11 10:08:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print_speed): Call
 	sim_events_elapsed_time instead of PROFILE_EXEC_TIME for moment.

	* sim-events.c (sim_events_elapsed_time): New function return nr
 	host MS consumed by the simulator.
	(sim_watch_valid): Use.

	* sim-module.c (modules): Install sim_events very very early.

	* sim-profile.c (profile_print): Call profile_print_pc.
	(print_bar):
	(profile_pc_init): New function, set up processor for PC
 	profiling.
	(profile_print_pc): New function, print a PC profile.
	(profile_pc_event): New function, sample PC.

	* sim-profile.h (PROFILE_PC_COUNT, PROFILE_PC_START,
 	PROFILE_PC_END, PROFILE_PC_SHIFT, PROFILE_PC_SAMPLE_SIZE): Add to
 	profile struct.

	* sim-options.c (sim_print_help): Pacify GCC.

	* sim-n-core.h (sim_core_read_aligned_N,
 	sim_core_write_aligned_N): Add un-conditional profile call.
	(sim_core_read_unaligned_N, sim_core_write_unaligned_N): Add
 	profile call when aligned read/write isn't used.

	* sim-base.h: Include sim-profile, sim-model after sim-core &
 	sim-events allow sim-core to define useful values.

	* sim-profile.c (OPTION_PROFILE_CORE): Define.
	(profile_option_handler, profile_options): Add support for
 	--profile-core option.
	(print_bar): Include when core profiling.
	(profile_print_core): New function, print core profile.

	* sim-config.c (print_sim_config): Print profile status.

	* sim-profile.h (PROFILE_NEXT_IDX, PROFILE_core,
 	WITH_PROFILE_PC_P): Define.
	(PROFILE_CORE_COUNT): Count each core-map/size separatly.
	(PROFILE_COUNT_CORE): Define.

Thu Sep 11 08:44:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-watch.c (handle_watchpoint): Pass a char** index into the
 	interrupt_names array as the data.
	(sim-watch.h): Document.

Wed Sep 10 16:15:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (sim_print_help): When the doc string is to long
 	word wrap it.

	* sim-watch.c (sim_watchpoint_install): Use option.doc_name so
 	that only the first few the watch options are listed.  Generate
 	meanginful usage messages.

	* sim-options.h (struct OPTION): Clarify use of doc_name field
	
Wed Sep 10 13:23:24 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (OPTION_ARCHITECTURE_INFO): New option.
	(standard_option_handler): Handle --architecture-info.

Tue Sep  9 21:46:46 1997  Felix Lee  <flee@cygnus.com>

	* sim-core.h (sim_cpu_core): [WITH_XOR_ENDIAN + 1], to avoid
	illegal zero-sized array.
	* sim-core.c (sim_core_xor_read_buffer): same.

Tue Sep  9 11:20:35 1997  Doug Evans  <dje@canuck.cygnus.com>

	* nltvals.def: Regenerate.

Tue Sep  9 02:10:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (DP_FRACHIGH2): Define LL using SIGNED64.

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

	* sim-bits.c (MASKED): Delete.
	(EXTRACTED): Delete.
	(LSEXTRACTED, MSEXTRACTED): New functions.

	* sim-n-bits.h (MASKEDn): Delete, define as MSMASKED or LSMASKED.
	(MSMASKEDn, LSMASKEDn): Add last argument.
	(MSMASK*): Ditto.
	
	* sim-bits.h (EXTEND8, EXTEND16): Define.
	(EXTRACTED64): Define as 64 bit extract, not 32 bit.

	* sim-run.c (sim_engine_run): Use CPU_CIA macro.

	* sim-engine.h (SIM_ENGINE_HALT_HOOK): Use CPU_CIA to get at
 	current instruction address.

	* sim-inline.h (*_ENGINE): Define.

Fri Sep  5 08:39:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_attach): Fix checks of modulo/mask.

	* sim-watch.c (delete_watchpoint): Delete by ident and type.
	(watch_option_handler): Call delete_watchpoint with ident or type.
	(sim_watchpoint_install): Create interrupt specific watchpoint
 	commands on the fly.
	(do_watchpoint_create): New function, create a watch point using
 	type/int-nr info encoded in the option nr.
	(do_watchpoint_info): New function.  List active watchpoints.

	* sim-watch.h: Change data structure to a list.

	* sim-memopt.c (memory_option_handler): Require explicit "all"
 	before deleting all memory regions.

	* sim-utils.c (sim_do_commandf): New function, printf version of
 	sim_do_command.

	* sim-basics.h (asprintf, vasprintf): Hack, define for CYGWIN32. 
	
	* sim-alu.h (ALU64_ADD): Use explicit MSEXTRACTED64, do not assume
 	bit endianness.
	(SIGNED64, UNSIGNED64): Delete.
	(ALU64_ADD): Don't rely on bit endianness.
	(ALU64_BEGIN): Define.

	* sim-n-bits.h (MSEXTRACTEDn, LSEXTRACTED): New functions.
	(EXTRACTEDn): Delete, define as either LSEXTRACTED or MSEXTRACTED.

	* sim-types.h (SIGNED64, UNSIGNED64): New macros, attach relevant
 	suffix - u64, LL - to 64 bit constants.

Thu Sep  4 09:27:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.c (sim_config): Add assert for SIM_MAGIC_NUMBER.

	* sim-utils.h (NZALLOC): Define - zalloc * N.

	* sim-hrw.c (sim_read, sim_write): New file.  Provide generic
 	implementation of read/write functions.

	* Make-common.in (sim-hrw.o): New target.

	* sim-base.h (STATE_MEMOPT_P): Delete, simulators _always_ add
 	memory.

	* sim-memopt.c (memory_option_handler): Implement memory-size
 	command. Implement memory-alias command.  Let memory-delete delete
 	all memory regions.
	(add_memopt): New function.  Add a memory region.
	(do_memopt_delete): New function. Delete a memory region.

	* sim-utils.c (sim_elapsed_time_get): Never return zero.

	* sim-core.c (sim_core_detach): New function.
	(sim_core_map_detach): New function. Perform the actual detach.
	(sim_core_init): Move initialization code from here.
	(sim_core_install): To here.
	(sim_core_uninstall): And here.

	* sim-module.c: Add memopt module.

	* sim-base.h (STATE_MEMOPT, STATE_MEMOPT_P): Add memopt to
 	simulator base type.

	* Make-common.in (sim_main_headers): Add sim-memopt.h
	(sim-memopt.o): New target.

	* sim-core.c (sim_core_install): Add core_options to the option
 	table.

	* sim-watch.c (watch_options): Make --delete-watch a synonym for
 	--watch-delete.

	* sim-config.h (WITH_MODULO_MEMORY): Define as 0.  Update
 	comments.

	* sim-core.h (struct _sim_core_mapping): Change nr_bytes to type
 	address_word, add mask member.
	
	* sim-core.h, sim-core.c (sim_core_attach): Make nr_bytes of type
 	address_word, allow for 64bit targets in 32bit host. Add modulo
 	argument.
	(sim_core_map_attach): Ditto.
	(new_sim_core_mapping): Ditto.
	(sim_core_translate): Mask address when modulo memory.

Wed Sep  3 17:32:54 1997  Doug Evans  <dje@seba.cygnus.com>

	* sim-hload.c (sim_load): Add assert for SIM_MAGIC_NUMBER.

	* gdbinit.in: New file.
	* aclocal.m4 (SIM_AC_OUTPUT): Build .gdbinit.
	* Make-common.in (distclean): Delete .gdbinit.
	(.gdbinit): Add rule for.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

	* Make-common.in (cgen-run.o): Add rule for.

Wed Sep  3 10:08:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-resume.c (sim_resume): Suspend/resume the simulator.

	* sim-events.c (sim_watch_valid): Compute total elapsed time from
 	both resumed and previous elapsed time.
	(sim_events_init): Set initial_wallclock and current_wallclock to
 	zero.
	(sim_events_install): Install sim_events_suspend and
 	sim_events_resume.
	(sim_events_watch_clock): Allow for suspended simulator when
 	computing the time of the clock event.

	* sim-events.h (struct _sim_event): Add resume_wallclock, rename
 	initial_wallclock to elapsed_wallclock, set both to zero.
	(sim_events_init, sim_events_uninstall): Delete prototypes.

	* sim-module.h (MODULE_SUSPEND_FN, MODULE_RESUME_FN): Define types.
	
	* sim-module.c(sim_module_resume, sim_module_suspend): New
 	functions.

Wed Sep  3 10:08:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_attach): Clarify memory overlap error
 	message.

Tue Sep  2 14:57:06 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (TAGS): Add support for "/* TAGS: foo */" marker.
	* Make-common.in (TAGS): Likewise.
	* sim-n-bits.h: Add TAGS comments for all functions.
	* sim-n-core.h: Likewise.
	* sim-n-endian.h: Likewise.

Mon Sep  1 10:50:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_state_alloc): Set CPU backlinks, callback and
 	kind.
  	
	* sim-base.h (sim_state_alloc): Add callback and kind arguments.
	
	* sim-base.h (INVALID_INSTRUCTION_ADDRESS): Add default
 	definition.

Sat Aug 30 09:47:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (DP_GARDMSB, ...): Make unsigned.
	(DP_FRACHIGH, DP_FRACHIGH2, ..): Use MSMASK to avoid LL.

Fri Aug 29 13:37:44 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_attach): Cast attach enum to int.
	(sim_core_xor_read_buffer, sim_core_xor_write_buffer): Make
 	nr_transfered and nr_this_transfer unsigned.

	* sim-events.c (sim_events_tickn): N is signed, as limited to
 	MAXINT.

	* sim-n-endian.h (offset_N): Change size to unsigned.

	* callback.c (os_poll_quit): Add prototypes for kbhit and getkey.

Fri Aug 29 10:10:53 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_copy_argv): Delete, replaced by dupargv.

	* sim-options.c (sim_parse_args): Use dupargv.

Thu Aug 28 10:36:34 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-options.c (standard_option_handler): Use xstrdup, not strdup.

Thu Aug 28 12:09:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-base.h (STATE_ARCHITECTURE, STATE_TARGET): Add to simulator
 	base type.

	* sim-options.c (standard_options): Add --architecture=MACHINE and
 	--target=TARGET options.
	(OPTION_ARCHITECTURE, OPTION_TARGET): Define.
	(standard_option_handler): Handle architecture and target options.
	(bfd.h): Include.
	
	* sim-utils.c (sim_analyze_program): Pass STATE_TARGET to
 	bfd_openr.
	(sim_analyze_program): Set prog_bfd architecture from
 	STATE_ARCHITECTURE if known.

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

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

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

	* aclocal.m4 (enable-sim-warnings): Remove comment stating
 	that option does not apply to certain files.

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

	* sim-bits.h (LSBIT8, LSBIT16, LSBIT32, LSBIT64, LSBIT, MSBIT8,
 	MSBIT16, MSBIT32, MSBIT64, MSBIT): New macros - single bit as
 	offset from MSB/LSB.

	* sim-endian.h (A1_8, A2_8, A4_8, A1_4, A2_4, A1_2): New macro,
 	access address of sub word quantity of a hosts 16, 32, 64 bit word
 	type.
	(V1_2, V1_4, V2_4, V1_8, V2_8, V4_8): Ditto for values.
	(U8_1, U8_2, U8_4, U4_1, U4_2, U2_1): Ditto for set of values.
	(V2_H1, V2_L1, V4_H2, V4_L2, V8_L4, V8_H4): Given N byte argument,
 	return N*2 byte value with argument in Hi/Lo word.  Renamed from
 	V1_H2, V1_L2, V2_H4, V2_L4, V4_H8, V4_L8.
 	
	* sim-alu.h (ALU32_HAD_OVERFLOW): Use 64 bit mask not 32bit.
	(ALU16_HAD_CARRY, ALU32_HAD_CARRY, ALU16_HAD_OVERFLOW): Use MSBIT
 	so that bit offset is explicit.

Wed Aug 27 11:55:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_analyze_program): Add prog_name argument.
  	Update STATE_PROG_BFD when needed with a dup'd copy of the
 	program.

	* sim-config.c (sim_config): Delete ABFD argument, use
 	STATE_PROG_BFD directly.

Tue Aug 26 12:55:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main): Pass the open ABFD to sim_create_inferior.
	
	* nrun.c (main): Determine prog_bfd.  Pass to sim_create_inferior
 	and sim_load.
	(bfd.h): Include.
	
	* sim-hload.c (sim_load): New file. Implement generic sim_load for
 	hardware only simulator targets.

	* Make-common.in (sim-hload.o): Add rule.

Wed Aug 27 09:51:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_copy_argv): Rewrite to match malloc strategy
 	used by copyargv and freeargv.

	* sim-options.c (sim_parse_args): Save a copy of PROG-ARGS in
 	STATE_PROG_ARGV, not just a pointer.

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 12:11:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-endian): Add second argument to
 	SIM_AC_OPTION_ENDIAN.  First is hardwired endian, second is
 	default endian when not hardwired.

	* sim-config.h (WITH_DEFAULT_TARGET_BYTE_ORDER): New macro, if all
 	else failes value for target byte order.

	* sim-config.c (sim_config): Add abfd arguments. Set
 	STATE_PROG_BFD accordingly.  Determine prefered_target_byte_order
 	from same.
	(sim_config): Return SIM_RC, don't abort.
	(bfd.h): Include.
	
	* run.c (main): Update call to sim_open - add ABFD argument.
  	* nrun.c (main): Add NULL ABFD argument.

Thu Aug 14 12:48:57 1997  Doug Evans  <dje@canuck.cygnus.com>

	* callback.c (os_poll_quit): Make static.
	Call sim_cb_eprintf, not p->eprintf.
	(sim_cb_printf, sim_cb_eprintf): New functions.
	* sim-utils.h (sim_cb_printf, sim_cb_eprintf): Declare.

	* sim-basics.h (zalloc,zfree,sim_add_commas,SIM_ELAPSED_TIME,
	sim_elapsed_time_get,sim_elapsed_time_since): Move decls to
	sim-utils.h. #include sim-utils.h.
	* sim-utils.h: Above decls moved here.
	(sim_analyze_program,sim_load_file): Use `struct _bfd', not `bfd'.

	* sim-watch.c (action_watchpoint): Fix thinkos.

Thu Jul 24 08:48:05 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* sim-types.h:  Fix defs of 64 bit data types for MSVC.

Tue Jul 22 10:35:37 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-n-core.h (sim_core_write_unaligned_N): Add missing break
	to FORCED_ALIGNMENT case.

Thu Jun  5 13:48:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (target_to_host_open): Handle hosts with O_BINARY.

Thu Jun  5 08:47:10 1997  Jeffrey A Law  (law@cygnus.com)

	* Make-common.in (libsim.a): Fix typo.

Thu Jun  5 13:48:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Verify the structure returned before using it.

Wed Jun  4 11:44:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h (WITH_ENGINE): Enable the sim-engine module by
 	default.

	* sim-engine.c (sim_engine_install): New function.  Install the
 	engine init functions.
	(sim_engine_init): [Re]initialize the simulator engine.
	
	* sim-module.c: Add sim_engine to list of modules that always
 	install.

Tue Jun  3 04:52:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-watch.c (schedule_watchpoint): Use sim_unschedule_watchpoint
 	to remove the old watchpoint, not delete_watchpoint.
	(watch_option_handler): Action the correct watchpoint, not just
 	cycles.

Wed May 28 14:47:41 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_write_aligned_N): For 8byte reads, output
 	both low and high word.
	(sim_core_write_aligned_N): Ditto.
	
	* sim-trace.c (set_trace_options): Delete code explicitly setting
 	core->trace.

	* sim-options.c (sim_print_help): Call the list commands if not a
 	standalone simulator.
	(sim_print_help): Advise that some options may not be applicable.
	
	* sim-trace.c (set_trace_options): Assume core present.

	* sim-events.c (sim_events_schedule_after_signal): Overflow signal
 	buffer when full not almost full.

Tue May 27 14:32:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Don't blat the event queue
 	when processing watchpoints.

	* sim-watch.h: Make arg unsigned long - stop sign extension.

	* sim-events.c (sim_watch_valid): rewrite so debugable.

	* sim-config.h (WITH_XOR_ENDIAN): Default to zero.

	* sim-watch.c (schedule_watchpoint): Add is_within option so that
 	inequality test is possible.
	(handle_watchpoint): Re-pass is_within arg.
	(watch_option_handler): When `!' prefix to pc-watchpoint arg pass
 	0 to schedule_watchpoint's is_within arg.
	(sim_watchpoint_init): Re-pass is_within arg.

	* sim-options.c (sim_print_help): Add is_command argument.  Don't
 	include -- prefix when called from the command line interpreter.

	* sim-watch.c (schedule_watchpoint): Pass true is_within argument.

	* sim-events.c (sim_events_watch_sim): Add is_within argument,
 	zero indicates that the test should be reversed.
	(sim_events_watch_core): Ditto.
	(WATCH_CORE): Compare range against is_within.
	(WATCH_SIM): Ditto.

Tue May 27 12:48:03 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-events.c (WATCH_CORE): Pass NULL cpu argument to
 	sim_core_read_buffer.  Check nr-bytes transfered.

	* sim-core.h (sim_core_common): Define a new struct that contains
 	the common data.  to sd and cpu structures.
	* sim-core.c (sim_core_attach): Update.
	(sim_core_init): Update. Remember to copy initialized data to each
 	cpu.
	(sim_core_find_mapping): Ditto.

	* sim-core.c (sim_core_read_buffer): Add cpu argument.
	(sim_core_write_buffer): Ditto.

	* sim-n-core.h (sim_core_read_unaligned_N): When mis-aligned
 	transfer use xor version of read buffer.
	(sim_core_write_unaligned_N): Ditto for write.
	
	* sim-core.c (sim_core_xor_read_buffer): New function implement
 	xor-endian data read breaking transfer up into xor-endian sized
 	blocks.
	(sim_core_xor_write_buffer): Ditto for write.
	(reverse_n): Reverse order of arbitrary number of bytes in buffer
 	- needed for xor-endian transfers.

Fri May 23 14:24:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-inline.h: Review description.
	
	* sim-core.h, sim-core.c: Reduce number of functions being inlined
 	to just those involved in data transfers and configuration.
	
	* sim-xcat.h (XSTRING): New macro, map macro definition onto
 	string.
	* sim-n-core.h (sim_core_read_aligned_N): Use.
	(sim_core_read_unaligned_N): Ditto.
	(sim_core_read_unaligned_N): Ditto..
	(sim_core_write_unaligned_N): Ditto.
	
	* sim-core.h: Add xor endian bitmap to main structure.  *
	
 	sim-n-core.h (sim_core_write_aligned_N): Add suport for xor
 	endian.
	(sim_core_read_aligned_N): Ditto.

	* sim-core.c (sim_core_set_xor_endian): New function.
	(sim_core_attach): Don't overwrite the per-cpu xor map when
 	cloning the global core.

Fri May 23 10:53:13 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-engine.h: Update below so that it is using an enumerated
 	type.

Thu May 22 09:12:16 1997  Gavin Koch  <gavin@cygnus.com>

	* sim-engine.c (sim_engine_restart): 
	* sim-resume.c (sim_resume): Change longjmp param/setjmp 
 	return value used for simulator restart from 0 to 2.

Wed May 21 08:47:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* cgen-scache.c (scache_option_handler): Add is_command arg.

	* sim-model.c (model_option_handler): Add is_command argument.

	* sim-profile.c (profile_option_handler): Add is_command arg.

	* sim-events.c (sim_watch_valid): Use ub64, lb64 when 64bit value
 	involved.

	* sim-module.c (sim_module_add_init_fn): Call init fn in the same
 	order that they are registered.

	* sim-options.h (OPTION_HANDLER): Add argument to differentiate
 	between option and command line processing.

	* sim-options.c: Include stdlib.h, ctype.h.

	* Make-common.in (sim-watch.o): Add rule.
	(sim_main_headers): Assume sim-assert.h included.
	(sim-*.o): Simplify make rule.
	
	* sim-module.c: Add sim_watch_install to module list.

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

	* sim-base.h (STATE_LOADED_P): New predicate. Set once everything
 	has been loaded.

	* sim-trace.c (trace_install): Check magic. Include sim-assert.h.
	* sim-events.c (sim_events_install): Ditto.
	* sim-core.c (sim_core_install): Ditto.
	* sim-model.c (model_install): Ditto.
	* sim-options.c (standard_install): Ditto.
	* sim-profile.c (profile_install): Ditto.
	* sim-reason.c (sim_stop_reason): Ditto.
	* sim-run.c (sim_engine_run): Ditto.
	* sim-utils.c (sim_analyze_program): Ditto.

	* sim-module.c (modules): Make profile_install and trace_install
 	optional.

	* sim-base.h (STATE_MEM_BASE): Define for flat memory systems.

	* sim-options.c (standard_option_handler): Set the byte order.

	* sim-events.c (sim_events_process): Allow multi tick processing.
	(sim_events_tickn): New function - multi cycle tick.
	
	* sim-events.h (sim_events_tickn, sim_events_timewarp): Add
 	prototypes.  Under development.
	(sim_events): Replace processing with nr_ticks_to_process.

Tue May 20 09:39:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Pass callbacks to sim_open instead of using
 	sim_set_callbacks.

	* run.c (main): Ditto.

Mon May 19 12:07:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_zalloc): Signal save memory allocator -
 	stop tk interrupting malloc calls.
	(sim_events_zalloc): Converse.

	* Make-common.in (sim_main_headers): Add sim-events.h.

	* sim-events.c (sim_events_schedule_after_signal): Change return
 	type to void - signal events are strictly internal.
	(sim_events_init): Allocate a finite buffer for signal events.
	(sim_events_schedule_after_signal): Enter signal events into the
 	signal buffer.

	* sim-engine.c (sim_engine_halt): Check SIM_DESC magic.
	(sim_engine_restart): Ditto.
	(sim_engine_abort): Ditto.
	* sim-stop.c (sim_stop): Ditto.
	(control_c_simulation): Ditto.
	* sim-resume.c (sim_resume): Ditto.
	(has_stepped): Ditto.
	* sim-abort.c (sim_engine_abort): Ditto.

	* sim-basics.h (transfer_type): New type.

	* sim-core.c (sim_core_signal): New function. Print core signal
 	information.
	(sim_core_find_mapping): Add transfer argument.

	* sim-n-core.h (sim_core_{write,write}_unaligned_N): Call
 	SIM_CORE_SIGNAL if a recoverable abort.
	* sim-core.c (sim_core_find_mapping): Ditto.

Fri May 16 15:13:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_find_mapping): Replace calls to
 	sim_io_error to more resiliant sim_engine_abort.

	* sim-n-core.h (sim_core_read_unaligned_N): Ditto.
	(sim_core_write_unaligned_N): Ditto.

Tue May 13 13:50:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-module.c: Add sim_events_install to list.
	
	* sim-events.c (sim_events_install, sim_events_uninstall): Clonse
 	from sim_core_*.
	(sim_events_init): Now returns SIG_RC.

	* sim-run.c: New file. Generic sim_engine_run.
	* sim-reason.c: New file. Generic sim_stop_reason.
	* sim-stop.c: New file. Generic sim_stop.
	* sim-resume.c: New file. Generic sim_resume.
	
	* Make-common.in (sim-engine.o): Add rule.
	(sim-run.o, sim-reason.o, sim-stop.o, sim-resume.o): Ditto.
	
	* sim-engine.h, sim-engine.c: New file. Provide generic
 	implementation of sim_engine_halt, sim_engine_error. et.al.

	* sim-base.h (sim_state_base): Add member halt.
	(sim-engine.h): Include.

	* sim-events.h (sim_event_handler): Always pass SIM_DESC to event
 	handlers.
	* sim-events.c (sim_events_poll): Update event handler.

Tue May 13 09:57:49 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-events.h, sim-events.c (sim_events_watch_clock): New
 	function.
	(sim_events_watch_sim): New function.
	(sim_events_watch_core): New function.
	(sim_watch_valid): New function.
	(sim_events_preprocess): New function.
	(sim_events_process): Process the watchpoints as well as the timer
 	queue.
	(sim_events_tick): Check WORK_PENDING instead of the hold queue.
	(sim_events_deschedule): Check all the queues when removing an
 	event.
	(sim_events_init): Ditto for cleaning.

Mon May 19 12:07:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (is_ufpu_number): Comment out - currently unused.

Mon May 19 11:23:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (os_open): Type of arg flags is int.

Fri May 16 22:26:43 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-fpu.c (sim_fpu_is_{eq,ne,lt,le,gt,ge}): Compare Infinities
	just like normal numbers as per IEEE rules.

Wed May 14 21:20:38 1997  Bob Manson  <manson@charmed.cygnus.com>

	* callback.c (os_close): Mark the descriptor as being
	available if the close succeeded.
	(os_open): Pass 0644 as the mode of the file being created.

Thu May 15 10:58:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (pack_fpu, unpack_fpu): New functions - decode a
 	float.

	* sim-inline.c (SIM_INLINE_C): Rename from _SIM_INLINE_C_.
	* sim-lnline.h: Update.

	* sim-fpu.h, sim-fpu.c (sim_fpu_[iu]{32,64}to): New int2fp
 	conversion functions.
	(sim_fpu_to{32,64}[iu]): New fp2int functions.
	
	* sim-fpu.h, sim-fpu.c (sim_fpu_is_{lt,le,eq,ne,ge,gt}): New fp
 	compare functions.  Replacing.
	(sim_fpu_cmp): This. Delete.
	
Mon May 12 14:49:05 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_find_mapping): Call engine_error not
 	sim_io_error when possible.

Mon May 12 08:55:07 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-endian.h (V1_H2): Add macro's to insert a word into a
 	high/low double word.

	* sim-trace.h: Remove definition of attribute - defined in
 	sim_basics.h.

Mon May 12 08:55:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.h (struct OPTION): Add doc_opt as the documenting
 	name of the option - or family of options.

	* sim-options.c (sim_args_command): Match command `a-b c' with
 	option `--a-b-c' from option table.

Thu May  8 12:40:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (sim_print_help): For optional arguments, wrap
 	them in [].

	* sim-trace.c (set_trace_options): New function, handle optional
 	argument and multiple assignment.
	(trace_option_handler): Update.

	* sim-trace.c (trace_option_handler): Trace branch and not fpu
 	when branch tracing selected.

Wed May  7 15:19:58 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (trace_one_insn): Make a va-args function.

	* sim-trace.c (trace_vprintf): New function, va-arg version of
 	trace_printf.

Tue May  6 16:38:16 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-trace.c (trace_uninstall): Don't close a file twice.
	* sim-profile.c (profile_uninstall): Likewise.

Tue May  6 06:14:01 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-trace.c (toplevel): Include bfd.h.
	(trace_options): Note that --trace-linenum also turns on
	--trace-insn.  Add --trace-{branch,semantics}.
	(trace_option_handler): If --trace-linenum, also turn on
	--trace-insn.  Add --trace-branch support.  If --trace-semantics,
	turn on ALU, FPU, branch, and memory tracing.
	(trace_one_insn): New function to trace an instruction.  Support
	--trace-linenum.
	(OPTION_TRACE_*): Use an enum, rather than lots of defines.

	* sim-trace.h (TRACE_{SEMANTICS,BRANCH}_IDX): Add new macros.
	(MAX_TRACE_VALUES): Use 32, not 12 by default.
	(TRACE_branch): Add new mask.
	(TRACE_*_P): Define all possible trace_p macros.
	(trace_one_insn): Declare function.

Mon May  5 14:08:34 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-trace.h (__attribute__): Define as nothing if not GNU C or
	GNU C doesn't support __attributes__.
	({trace,debug}_printf): Add attribute's so -Wformat can check the
	format strings.

Mon May  5 11:16:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h (FORCED_ALIGNMENT): New alignment option -
 	addresses are masked forcing them to be correctly aligned.
	(WITH_ALIGNMENT): Make NONSTRICT_ALIGNMENT the default.
	* sim-config.c (config_alignment_to_a): Update.

	* sim-core.h (sim_cpu_core): New data type contains cpu specific
 	core data.
	* sim-base.h (CPU_CORE): Add cpu specific core data to cpu base
 	type.
	* sim-core.c (sim_core_attach): Add CPU argument.  Ready for
 	processor specific core maps.
	(sim_core_map_attach): Copy the core map data to each of the
 	processor specific core data structures.
	* sim-core.c (sim_core_find_mapping): Update.

	* sim-n-core.h (sim_core_read_N, sim_core_write_N): Rename.
	(sim_core_write_aligned_N, sim_core_write_aligned_N): New names.
	(sim_core_write_unaligned_N, sim_core_write_unaligned_N): New
 	alternatives that handle unaligned addresses.
	(sim_core_{read,write}_{,un}aligned_N): Drop SIM_DESC arg, replace
 	with just CPU arg.
	* cgen-utils.c (sim_disassemble_insn): Update.

Mon May  5 13:19:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_FPU_IDX): Add Floating-point specific
 	tracing.

	* sim-fpu.h, sim-fpu.c: New files - prototype for generic target
 	fpu support.

	* sim-inline.h, sim-inline.c: Add support for SIM_FPU.

Fri May  2 17:59:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_to_str): New function ascii equivalent
 	to map type.
	
	* sim-n-core.h (sim_core_read_N, sim_core_write_N): Use in trace
 	statement.

Fri May  2 17:28:02 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* cgen-trace.c: Prepend additional trace_printf argument.

	* cgen-utils.c (sim_disassemble_insn): Add additional core
 	arguments.

Fri May  2 11:40:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Catch/report errorenous simulator states.

	* sim-module.c: #include "libiberty.h" so that xmalloc is defined.
  	* sim-trace.c: #include string.h/strings.h so that memset is
 	defined.
	* sim-utils.c: Ditto.
	* sim-profile.c: Ditto. And stdlib.h.
	(print_bar): Only define when used by instruction or memory profiler.

	* sim-options.c (standard_option_handler): Make ul more local.
	
	* sim-load.c (sim_load_file): Make the name constant.
	(sim_load_file): Passify gcc.

	* sim-utils.h: New file, pre-declare utilites in corresponding .c
 	file.
	* sim-utils.c, sim-load.c: Include sim-utils.h.
	
	* sim-base.h (sim_cpu): Pre define here so available to all.

	* sim-core.h (DECLARE_SIM_CORE_WRITE_N, DECLARE_SIM_CORE_READ_N):
 	Restore the sim_cpu and instruction_address arguments so that full
 	information is available to the abort function.
	* sim-core.c (sim_core_find_mapping, sim_core_write_buffer): Ditto.
	* sim-n-core.h (sim_core_write_N, sim_core_read_N): Update.

	* sim-trace.h, sim-trace.c (trace_option_handler): Add interim
 	tracing support for sim-events and sim-core.
	(trace_option_handler): Convert #if to if where possible so always
 	compiled/checked by C compiler.
	* sim-n-core.h (sim_core_write_N, sim_core_read_N): Update.
	
	* sim-base.h: Adjust comment documenting how to define the cpu
 	structure.
	(sim_state_base): Add sim_core and sim_events to simulator base
 	object.

	* sim-trace.h, sim-trace.c (trace_printf): Add SIM_DESC argument.
	* sim-core.c (sim_core_init, sim_core_attach,
 	sim_core_find_mapping): Update.
	* sim-events.c (ETRACE, sim_events_init, sim_events_time,
 	update_time_from_event, insert_sim_event,
 	sim_events_schedule_after_signal, sim_events_deschedule,
 	sim_events_tick): Ditto.
	
	* sim-basics.h (sim-module.h, sim-trace.h, sim-profile.h,
 	sim-model.h): Move #includes from here.
	* sim-base.h: To here.
	(sim-core.h, sim-events.h, sim-io.h): Include also
	
Wed Apr 30 15:37:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (default_callback): Missing initialisers.

Thu May  1 10:40:47 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-utils.c (sim_add_commas): New function.
	* sim-basics.h (sim_add_commas): Add prototype.
	* cgen-scache.c (scache_print_profile): Print commas in numbers.
	* sim-profile.c (COMMAS): New macro.
	(print_*): Use it to print commas in numbers.

	* configure: Regenerated.

	* cgen-sim.h (sim_signal_type): Add SIM_SIGINT.
	(cgen_state): New member run_fast_p.
	(cgen_init): Add prototype.
	(sim_disassemble_insn): New arg `cpu'.
	* cgen-trace.c (trace_insn): Update call to sim_disassemble_insn.
	* cgen-utils.c (cgen_init): New function.
	(sim_disassemble_insn): New arg `cpu'.  Rewrite fetching of insn.
	* genmloop.sh: Call engine_halt if loop exits.

	* Makefile.in (sim-options_h): Define.
	(sim-{module,options,trace,profile,utils}.o): Clean up dependencies.
	(sim-model.o): Add new rule.
	(cgen-{scache,trace,utils}.o): Add new rules.
	* aclocal.m4 (SIM_AC_OPTION_{SCACHE,DEFAULT_MODEL}): Add.
	* cgen-scache.c (scache_print_profile): Change `sd' arg to `cpu'.
	Indent output by 2 spaces.
	* cgen-scache.h (scache_print_profile): Update.
	* cgen-trace.c (trace_insn_fini): Indent output by 2 spaces.
	Use trace_printf, not fprintf.
	(trace_extract): Use trace_printf, not cgen_trace_printf.
	* genmloop.sh (!FAST case): Increment `insn_count'.
	* sim-base.h (sim_state_base): Only include scache_size if WITH_SCACHE.
	(sim_cpu_base): Rename member `sd' to `state' to be consistent with
	access macro's name.
	* sim-core.c (sim_core_init): Use EXTERN_SIM_CORE to define it.
	Change return type to SIM_RC.
	(sim_core_{install,uninstall}): New functions.
	* sim-core.h (sim_core_{install,uninstall}): Declare.
	(sim_core_init): Use EXTERN_SIM_CORE to define it.
	Change return type to SIM_RC.
	* sim-model.h (models,machs,model_install): Declare.
	* sim-module.c (modules): Add scache_install, model_install.
	(sim_post_argv_init): Set cpu->state backlinks.
	* sim-options.c (standard_options): Delete --simcache-size,--max-insns.
	(standard_option_handler): Likewise.
	* sim-profile.c (PROFILE_{HISTOGRAM,LABEL}_WIDTH): Move to
	sim-profile.h.
	(*): Assume ANSI C.
	(profile_options): Delete --profile-simcache.
	(profile_option_handler): Likewise.
	(profile_print_insn): Change `sd' arg to `cpu'.  Indent output 2
	spaces.
	(profile_print_{memory,model}): Likewise.
	(profile_print_simcache): Delete.
	(profile_print_speed): New function.
	(profile_print): Rewrite.
	* sim-profile.h (PROFILE_scache): Renamed from PROFILE_simcache.
	(WITH_PROFILE_SCACHE_P): Renamed from WITH_PROFILE_SIMCACHE_P.
	(PROFILE_DATA): Delete members simcache_{hits,misses}.
	(PROFILE_COUNT_SIMCACHE_{HIT,MISS}): Delete.
	(PROFILE_{CALLBACK,CPU_CALLBACK}): New types.
	(profile_print): Update prototype.

Wed Apr 30 11:34:14 1997  Doug Evans  <dje@canuck.cygnus.com>

	* cgen-scache.[ch], cgen-sim.h: New files.
	* cgen-trace.[ch], cgen-types.h, cgen-utils.c, genmloop.sh: New files.
	* sim-model.c: New file.

	* Make-common.in (clean targets): Undo patch of Apr. 22.

Fri Apr 25 15:28:32 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-n-bits.h (signed): If we have a standard compiler, undef
	signed, so that signedN is defined correctly.

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

	* sim-module.h, sim-model.h, sim-profile.h: New files.
	* sim-module.c, sim-profile.c: New files.
	* Make-common.in (SIM_PROFILE): Define
	(CONFIG_CFLAGS): Add $(SIM_PROFILE).
	(sim_main_headers): Add sim-module.h, sim-model.h, sim-profile.h.
	(sim_module.o,sim-profile.o): Add rules for.
	* aclocal.m4 (--enable-sim-trace): Allow symbolic arguments.
	(--enable-sim-profile): Add.
	* configure: Regenerated.
	* sim-base.h (sim_state_base): New members init_list, uninstall_list,
	model.  Move trace and profile support to sim-{trace,profile}.h.
 	New members trace_data, profile_data.
	* sim-basics.h: #include sim-module.h, sim-model.h, sim-profile.h.
	* sim-config.h: Provide default definition of WITH_PROFILE.
	(WITH_TRACE): Change default to -1.
	(MAX_NR_PROCESSORS): Always define.
	* sim-options.c: Move trace and profile support to
	sim-{trace,profile}.h.
	(sim_pre_argv_init): Moved to sim-model.c.
	(standard_install): New function.
	* sim-options.h (sim_pre_argv_init): Move decl to sim-model.c.
	(standard_install): Declare.
	* sim-trace.c: Tracing option handling moved here from sim-options.c.
	(trace_install, trace_uninstall): New functions.
	(trace_printf): Update reference to TRACE_FILE.
	* sim-trace.h (TRACE_FOO_IDX): Moved here from sim-base.h.
	(TRACE_foo): Bit masks for symbolic arguments to --enable-sim-trace.
	(WITH_TRACE_FOO_P): Define.
	(trace_install): Declare.
	(TRACE_DATA): New struct.

Wed Apr 23 17:23:15 1997  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: Undo last exec_bfd patch.
	(main): Only pass -E ifdef SIM_HAVE_BIENDIAN.

Wed Apr 23 17:54:27 1997  Mike Meissner  <meissner@cygnus.com>

	* run.c (exec_bfd): Add back in.
	(main): Set exec_bfd.

Tue Apr 22 14:43:46 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-load.c (sim_load_file): #include <stdio.h> for NULL.

Wed Apr 23 02:55:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (insert_sim_event): Call sim_io_error instead of
 	less well defined engine_error.
	* sim-core.c: Ditto.

Tue Apr 22 08:48:16 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* Make-common.in:  Change clean targets to use :: so that other
	Makefiles can have their own clean targets.
	* sim-load.c (xprintf eprintf):  Use ANSI_PROTOTYPES instead of
	__STDC__ to control use of stdarg vs. varargs syntax.  Some
	systems can't use __STDC__, but require stdarg.

Fri Apr 18 11:14:43 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-options.c (standard_options): Add --endian.
	(standard_option_handler): Likewise.

	* nrun.c: #include <signal.h>.
 	(main, cntrl_c): Wrap calls to sim_resume in a SIGINT
 	handler that calls sim_stop ().

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

	* run.c (main, cntrl_c): Wrap calls to sim_resume in a SIGINT
 	handler that calls sim_stop ().  Simulators may still be
 	establishing their own handler.

	* sim-events.c (sim_events_poll): Rename from
 	sim_events_at_large_int.  Poll IO.

	* sim-io.c (sim_io_poll_quit): New function - pass on a polling
 	request.

	* callback.c (os_poll_quit): New function poll for quit signal
	where needed.
	(default_callback): Include magic number.

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

	* aclocal.m4: Check for headers time.h, sys/time.h, sys/resource.h.
	Check for functions getrusage, time.
	* sim-basics.h (SIM_ELAPSED_TIME): New typedef.
	(sim_elapsed_time_get, sim_elapsed_time_since): Add prototypes.
	* sim-utils.c: #include time.h, sys/time.h, sys/resource.h if able.
	(sim_elapsed_time_get, sim_elapsed_time_since): New functions.

	* sim-utils.c (sim_copy_argv, sim_analyze_program): New functions.

	* sim-options.c, sim-options.h: New files.
	* sim-config.h (WITH_DEBUG): Provide default value of zero.
	* Make-common.in (nrun.o): Add rules for.
	* nrun.c: New file.

	* run.c (main): Check return value of sim_open.

	* Make-common.in (sim-options.o, sim-load.o, sim-trace.o): Add rules.
	(sim_main_headers): Add sim-trace.h.
	* run.c (exec_bfd, target_byte_order): Delete.
	(main): Pass -E <endian> to sim_open.  Delete code to load sections,
	call sim_load instead.  Check return code of sim_create_inferior.
	* sim-base.h (CURRENT_STATE): Define.
	(sim_state_base): Make typedef.  New members options, prog_argv,
	prog_bfd, text_{section,start,end}, start_addr, simcache_size,
	mem_size, memory [+ corresponding access macros].
	(sim_cpu_base): New typedef.
	* sim-trace.h: New file.
	* sim-trace.c: New file.
	* sim-basics.h: #include it.
	* sim-load.c: New file.

Tue Apr 15 15:10:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Make-common.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install-common): Depend upon installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM).
	(installdirs): New target.
	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install-man): Depend upon installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM).
	(installdirs): New target.

Tue Apr 15 15:08:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-assert.h (SIM_ASSERT, ASSERT): Allow these macros to
	be overriden.

Wed Apr  9 16:06:44 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-basics.h: Only bring in config.h and tconfig.h if
 	HAVE_CONFIG_H.

Mon Apr  7 11:39:45 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-config.h (WITH_TARGET_WORD_MSB): New Macro. Define the bit
 	numbering convention of the target.
	* sim-config.c (print_sim_config): Print WITH_TARGET_WORD_BITSIZE
 	and WITH_TARGET_WORD_MSB.
	(sim_config): When possible, check for consistency with bitsize
 	and msb.

	* sim-bits.h: Allow MSB to be other than zero.
	* sim-bits.c: Ditto.
	* sim-n-bits.h: Ditto.
	
	* sim-bits.h (MSMASK*): New macros - converce to LSMASK*.
	* sim-n-bits.h (MSMASKEDn): Ditto.

Mon Apr 14 16:29:21 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

Mon Apr  7 10:46:38 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-base.h (sim_state_base): Move `magic' to end of struct.

Mon Apr  7 15:53:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* run.c (main): Check that a program to run was specified.

Mon Apr  7 15:45:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (AC_TYPE_SIGNAL): Add check.

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

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

	* sim-endian.h: Move host {LITTLE,BIG}_ENDIAN support from here,
	* sim-config.h: To here.

	* Make-common.in (SIM_EXTRA_DEPS): New config var.
	(sim_main_headers): Define.
	(sim-*.o): Depend on $(SIM_EXTRA_DEPS).
	(BUILT_SRC_FROM_COMMON): Move here from ../d30v/Makefile.in.
	(clean): Use it.
	(sim-utils.o): Add rule for.
	* sim-utils.o: New file.
	* sim-basics.h: #include sim-base.h.
	(zalloc): Make argument unsigned long.
	* sim-base.h: New file.
	* sim-inline.h (SIM_IO support): Delete.
	* sim-io.h: Delete inline support.
	* sim-io.c: Likewise.  sim-state.h renamed to sim-main.h.
	* sim-config.c: sim-state.h renamed to sim-main.h.
	* sim-core.c: Likewise.
	* sim-events.c: Likewise.

	* run.c (main): Pass SIM_OPEN_STANDALONE to sim_open.

	* aclocal.m4: Check for stdlib.h, string.h, strings.h, unistd.h.
	(sim-debug): Allow arguments.  Define WITH_DEBUG in addition to
	-DDEBUG.
	* 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.

Wed Apr  2 11:08:11 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-config.h (WITH_ALIGNMENT, WITH_FLOATING_POINT,
 	WITH_XOR_ENDIAN, WITH_SMP, WITH_RESERVED_BITS): Assume that these
 	are defined by the configure.

	* aclocal.m4 (sim-stdio): Add option stdio from ../ppc configure.
	
	* aclocal.m4 (floating-point, xor-endian, alignment, smp,
 	reserved-bits): Always define.
	
	* sim-config.h, sim-config.c (sim_config): New function - and new
 	file - co-ordinate the setting/checking of the common simulator
 	configuration options.

	* Make-common.in (sim-config.o): Add rule.

Fri Mar 28 15:32:00 1997  Mike Meissner  <meissner@cygnus.com>

	* callback.c (os_{,e}vprintf_filtered): Change stdarg type to
	va_list from void *, since va_list might not be a pointer type.

Mon Mar 24 15:27:12 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-n-endian.h (offset_N): Correct assertion - word and sub word
 	in wrong order.
	(offset_N): Correct computation of LE offset.

	* sim-io.c (sim_io_error): Include a new line when reporting
 	errors.

	* sim-assert.h (SIM_FILTER_PATH): Out by one when locating last
 	`/'.

Thu Mar 20 22:31:06 1997  Jeffrey A Law  (law@cygnus.com)

	* run.c: Include alloca-conf.h.

	* callback.c (os_evprintf_filtered): Fix typo.

Fri Mar 21 13:36:20 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* run.c (string.h, strings.h, stdlib.h): Include.

	* sim-events.c (sim_events_tick): Recent cleanup failed to return
 	0 when nothing pending.

	* run.c (sim_size, sim_trace): Plicate GCC - these two functions
 	will soon be going away.
	(getopt): Plicate GCC.

	* sim-endian.c (sim-io.h): Plicate GCC.
	* sim-bits.c (sim-io.h): Ditto.
	* sim-n-bits.h (ROTn): Ditto.

	* sim-io.c (sim_io_error): Correct check for NULL.

	* sim-assert.h (SIM_FILTER_PATH): Separate out the code filtering
 	the __FILE__.
	* sim-events.c: Use SIM_FILTER_PATH to filter out the filename
 	path.

Wed Mar 19 01:12:06 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_*: Move so that they are outside of
 	SIM_AC_COMMON - SIM_AC_COMMON was gobling arguments.

Tue Mar 18 20:48:12 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-alu.h: Include sim-xcat.h.
	
Tue Mar 18 13:58:18 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Make-common.in (sim-bits.c, sim-core.c, sim-endian.c,
 	sim-events.c, sim-inline.c, sim-io.c): Define rules for building
 	these.

	* sim-events.c (sim_events_at_large_int): New function.  Just
 	schedules an event every large-int ticks.
	(sim_events_init): Call.
	(sim_events_tick, sim_events_process): Move async handing to
 	sim_events_process.  Move timer decrement so that it occures after
 	events have been processed.
	
	* sim-basics.h (struct _engine): Remove declaration.

	* sim-events.h, sim-events.c: Rename type to sim_events.  Prefix
 	everything with same.  Rename global struct to SIM_DESC.
	* sim-core.h, sim-core.c, sim-n-core.c: Ditto for sim_core.
	* sim-io.h, sim-io.c: Ditto.
	
	* sim-assert.h: New file. Optional assertion checking macros.
	* sim-io.c (sim_io_error): Make just this function tolerant to
 	null pointers.
	
	* sim-xcat.h: New file. Define concatenate macros.
	* sim-basics.h (XCONCAT*): Move to sim-xcat.h.
	* sim-n-core.h, sim-n-bits.h, sim-n-endian.h: Explicitly include
 	concat macros.
	

Tue Mar 18 12:44:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-bits.h (LSMASK): New macro. Create mask of LS bits.

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

	* sim-inline.h: Add definitions for sim-types.
	(ALL_BY_MODULE): New macro, encapsulate full inlining by the
 	module.

Mon Mar 17 15:38:27 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
	
	* sim-events.h: Remove defunct reference to callback struct.

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

	* configure: Re-generate.

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

	* Make-common.in (CSEARCH): Do not include the gdb directory in
 	the search path.

Mon Mar 17 13:16:26 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Make-common.in (SIM_ENDIAN, SIM_HOSTENDIAN, SIM_INLINE,
 	SIM_WARNING): Drop, requiring the simulator specific Makefile.in
 	to explicitly incorporate these.

	* aclocal.m4 (--enable-sim-alignment); New option. Strongly
 	specify the alignment restrictions of the target architecture -
 	without this option all alignment restrictions are accomodated.
 	(--enable-sim-assert): New option.  Conditionally compile in
 	assertion statements.
	(--enable-sim-float): New option. Strongly specify the target's
 	floating point support.
	(--enable-sim-hardware): New option.  Specify the hardware devices
 	included in the simulation.
	(--enable-sim-packages): New option.  Specify the hardware
 	packages included in the simulation.
	(--enable-sim-regparm): New option.  Specify that parameters be
 	passed in registers instead of on the stack.
	(--enable-sim-reserved-bits): New option. Specify that reserved
 	bits within an instruction are are correctly set.
	(--enable-sim-smp): New option. Specify the level of SMP support
 	to be included in the simulator.
	(--enable-sim-stdcall): New option.  Specify an alternative
 	function call convention.
	(--enable-sim-xor-endian): New option.  Configure xor-endian
 	support used by some targets to implement bi-endian support.
	
Fri Mar 14 19:51:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (--enable-sim-hostendian): New option.  Allow the
 	host endianness to be overridden.
	(--enable-sim-endian): Allow the target platform's byte order
	to be overridden.
	(--enable-sim-inline): Control the inlining of common components.
	(--enable-sim-bswap): For compatibility, also define WITH_BSWAP.
	(--enable-sim-warnings): Enable additional GCC compiler checks.
	* Make-common.in (SIM_ENDIAN, SIM_HOSTENDIAN, SIM_INLINE,
	SIM_WARNINGS): Add.
	
	* sim-n-core.h, sim-n-bits.h, sim-n-endian.h: Rename from
 	sim-*-n.h so that the names are uniq on dos machines
	* sim-core.c, sim-bits.c, sim-endian.c: Update.
	
Thu Mar 13 12:32:42 1997  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: #include "libiberty.h".
	(main): New locals sd,no_args,sim_argv.
	Run buildargv on -a option.  Pass argv to sim_open, argv[0]
	is program name.  Update call to sim_set_callbacks.
	Record result of sim_open, pass to other sim_foo routines.

Thu Mar 13 10:24:05 1997  Michael Meissner  <meissner@cygnus.com>

	* callback.c (os_printf_filtered): Do not call exit(1) or print a
	final newline.

Thu Mar  6 15:50:28 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* callback.c: Add os_flush_stdout and vprintf_filtered callbacks.
  	Route stdout through buffered IO.

	* callback.c: Add os_flush_stderr, os_write_stderr,
 	os_evprintf_filtered functions to route error output through
 	stderr.
	
	* sim-io.h, sim-io.c (sim_io_flush_stderr, sim_io_flush_stdout):
 	Correct return type - should be void.

Fri Mar  7 20:14:37 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-basics.h: Clean up.  Many macro's moved to sim-inline.h.

	* sim-config.h: Ditto.  For some options - eg WITH_DEVICES - do
 	not provide a default value as undefined indicates disable code.

Thu Mar  6 15:50:28 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-core.h, sim-core-n.h, sim-core.c: Borrow code from ppc
 	directory.
	* sim-events.h, sim-events.c: Ditto.
	* sim-io.h, sim-io.c: Ditto.
	
Tue Mar  4 09:35:56 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
	
	* sim-alu.h (ALU_SUB_CA, ALU*_SUB_CA): New alu operation.

	* sim-bits.h, sim-bits-n.h, sim-bits.c (LSMASKED*): New macro's
 	extract the tail or least signifiant bits from an integer of the
 	specified size.
	
	* sim-bits.h, sim-bits.c: Clean up conditionally compiled #if
 	WITH_TARGET_BITSIZE so that the compilation will fail when an
 	unsupported bitsize value is defined.

	(INSERTED*): Convert to functions.
	(EXTRACTED*): Ditto.
	
	(SIGN_EXTEND, SEXT): Change to more terse name.
	
Tue Mar  4 09:35:56 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-inline.h: Allow explicit control over which .c files will be
 	included by their header.

	* sim-inline.h: Allow explicit control over which .c files use the
 	alternative - REGPARM - parameter passing mechanism.
	
	* sim-inline.h, sim-inline.c: Don't attempt to include any of
 	icache.c, idecode.c, semantics.c or support.c.  Those names are
 	not generally applicable.
	
Thu Feb 27 10:17:23 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-bits.c, sim-bits-n.h (new): Split sim-bits.c into two parts
 	in a fashion similar to sim-endian-n.

	* sim-endian.h: (H_word, L_word, AL_*, VL_*): Extend to include
 	both value and address macro's.

Tue Feb 25 18:51:57 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-alu.h (ALU16_BEGIN, ALU16_SET, ...): Fill in.

	* sim-endian.h (L_word, H_word): Replace MS2W_4, LS2W_4 with more
 	generic L_word, H_word macro's.

Thu Feb 20 18:36:55 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* sim-basics.h: Borrow code from ppc directory.
	* sim-bits.c: Ditto.
	* sim-bits.h: Ditto.
	* sim-config.h: Ditto.
	* sim-endian-n.h: Ditto.
	* sim-endian.c: Ditto.
	* sim-endian.h: Ditto.
	* sim-inline.c: Ditto.
	* sim-inline.h: Ditto.
	* sim-types.h: Ditto.

Wed Feb 19 12:40:50 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* sim-alu.h (ALU_SET16, ALU_SET32, ALU_SET64, etc): Make available
 	all the ALU size alternatives and then auto-configure a default.
	
	* sim-alu.h: Copy ppc/idecode_expression.h.

Mon Feb 17 10:44:18 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* bits.h, bits.c (SIGN_EXTEND32, SIGN_EXTEND64): New functions,
 	sign extend a bit within a value.

	* sim-endian.h, sim-endian-n.h (offset_N): New functions - return
 	a pointer into the middle of a host word.
	* sim-endian.h (MS2W_4, LS2W_4): Use this function.
	
Tue Feb 11 13:46:49 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* callback.c: If HAVE_CONFIG_H is defined, include config.h from
	autoconf.  If HAVE_UNISTD_H is defined, include unistd.h to get
	appropriate definitions of read, write, etc.  Add prototype for
	system.

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

	* Makefile.in (libcommon.a): Delete.
	(callback.o,targ-map.o): Delete, moved to Make-common.in.
	(gentmap,targ-vals.h,targ-map.c): Likewise.
	(run-autoconf): Delete.
	* aclocal.m4 (SIM_AC_OUTPUT): Redo creation of Makefile.
	(common makefile fragment): Moved back into ...
	* Make-common.in: Resurrect.
	* configure.in (AC_LINK_FILES): Delete, unnecessary now.
	* configure: Regenerated.

Fri Jan 31 07:16:49 1997  Doug Evans  <dje@canuck.cygnus.com>

	* aclocal.m4 (SIM_AC_COMMON): Move COMMON_MAKEFILE_FRAG from here.
	(SIM_AC_OUTPUT): To here.

Fri Jan 24 10:37:17 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* aclocal.m4 (COMMON_MAKEFILE_FRAG):  Quote a couple of $'s in
	comments and single quotes.  Fixes a problem found on hpux.

Thu Jan 23 13:35:03 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* aclocal.m4:  Remove Make-common.in from dependencies.
	* (distclean):  Remove targ-vals.def.

	* aclocal.m4 (SIM_AC_COMMON):  Move contents of Make-common.in
	into here.  Makes insertion into makefiles easier.  Also, change
	the way that callback.o, gentmap, targ-vals.h, targ-map.c,
	targ-map.o, and run are built.  They are now built in the
	individual simulator directories, taking sources from ../common as
	necessary.  This replaces the merging of libcommon.a into
	linsim.a, which was problematic for the WinGDB build process.
	* run.c:  Include config.h from . instead of ../common.
	* Make-common.in:  Remove.  It's no longer necessary.

Mon Dec 16 15:02:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Make-common.in (ALL_CLAGS): Put CFLAGS at the end.
	(.c.o): Put $(ALL_CFLAGS) before the file being compiled.

Wed Dec 11 11:30:58 1996  Jim Wilson  <wilson@cygnus.com>

	* run.c (main): Set target_byte_order before call to sim_open.

Sun Dec  8 18:22:06 1996  Doug Evans  <dje@canuck.cygnus.com>

	* callback.c: #include <stdlib.h>
	(os_error): New function.
	(default_callback): Add os_error.

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

	* Make-common.in (Makefile): Set CONFIG_HEADERS="".
	* aclocal.m4: Mark the fact that --enable-sim-bswap isn't host
	specific.
	(SIM_AC_OUTPUT): Don't build Makefile if CONFIG_FILES="".

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

	* run.c: #include ../common/config.h, tconfig.h.
	(myname): New static global.
	(main): Recognize new options -a, -c.  Also recognize -h if h8/300.
	Only process -c ifdef SIM_HAVE_SIMCACHE.
	Only process -p/-s ifdef SIM_HAVE_PROFILE.
	Parse program name from argv[0] and use in error messages.
	Pass sim_args to sim_open.  Pass prog_args to sim_create_inferior.
	Add support for incomplete h8/300 termination indicators.
	(usage): Make more verbose.
	* aclocal.m4,config.in,tconfig.in,configure.in,configure: New files.
	* Makefile.in,Make-common.in,callback.c: New files.
	* nltvals.def,gentmap.c,gentvals.sh: New files.

Tue Nov 12 13:34:00 1996  Dawn Perchik  <dawn@cygnus.com>   

	* run.c: Include stdarg.h if __STDC__.

Tue Oct 15 11:16:31 1996  Jeffrey A Law  (law@cygnus.com)

	* run.c (main): Don't print out anything if the signal
	number is zero (ie no signal).

Tue Oct 15 11:20:44 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* run.c (main): Print out if the program raised a signal.

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

	* run.c (exec_bfd): Rename from sim_bfd, to use the gdb name.
	(main): Ditto.

Tue Sep 17 11:04:50 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* run.c (main): Explicitly cast malloc() parameter.

Thu Sep 12 11:27:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* run.c (sim_bfd): New global to hold the bfd pointer for the
	executable.
	(main): Initialize sim_bfd.

Fri Dec 15 16:27:49 1995  Ian Lance Taylor  <ian@cygnus.com>

	* run.c (main): Use new bfd_big_endian macro.

Wed Nov  8 15:49:49 1995  James G. Smith  <jsmith@pasanda.cygnus.co.uk>

	* run.c (main): Removed SH specific comments, so source is
 	generic. Also updated to only load relevant sections. Moved
 	sim_open() to after callback attach (to match GDB).

  	* run.1: Removed SH specific comments.

Sat Oct 21 12:31:01 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* run.c (main): Always return sigrc at end.

Tue Oct 10 12:03:13 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* run.c (main): Print error diagnostic and exit if bfd_openr() or
	bfd_check_format() fails.

Thu Sep 28 15:40:36 1995  steve chamberlain  <sac@slash.cygnus.com>

	* run.c, run.1: From sh directory.
