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.
