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

	* Make-common.in (SIM_RESERVED_BITS): Delete.

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

	* Make-common.in (GUILE): New variable.
	(CGEN): Use $(GUILE).

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_SCACHE): Delete.
	* cgen-scache.h (WITH_SCACHE): Delete.
	* sim-profile.c (profile_info): Check CGEN_ARCH.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* cgen-scache.c (scache_install): Rename to ...
	(sim_install_scache): ... this.  New prototype.
	* cgen-scache.h (scache_install): Delete.
	* sim-module.c (early_modules): Delete scache_install.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-module.c (early_modules): Delete profile_install.
	* sim-profile.c (profile_install): Rename to ...
	(sim_install_profile): ... this.  New prototype.
	* sim-profile.h (profile_install): Delete.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-module.c (early_modules): Delete trace_install.
	* sim-trace.c (trace_install): Rename to ...
	(sim_install_trace): ... this.  New prototype.
	* sim-trace.h (trace_install): Delete.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-engine.c (sim_engine_install): Rename to ...
	(sim_install_engine): ... this.  New prototype.
	* sim-engine.h (sim_engine_install): Delete.
	* sim-module.c (early_modules): Delete sim_engine_install.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-config.h (WITH_MODEL): Delete.
	(CURRENT_MODEL, MODEL_ISSUE_IGNORE, MODEL_ISSUE_PROCESS,
	WITH_MODEL_ISSUE, CURRENT_MODEL_ISSUE): Likewise.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_DEFAULT_MODEL): Delete.
	* sim-base.h (struct sim_state): Add model_name.
	(STATE_MODEL_NAME): Define.
	* sim-model.c (model_option_handler): Set STATE_MODEL_NAME.
	(sim_model_init): Delete WITH_MODEL_P check.  Change
	WITH_DEFAULT_MODEL to STATE_MODEL_NAME.
	* sim-model.h (WITH_DEFAULT_MODEL): Delete.
	(WITH_MODEL_P): Delete.

2021-06-30  Mike Frysinger  <vapier@gentoo.org>

	* cgen-defs.h (cgen_cpu_max_extra_bytes): Add SIM_DESC arg.
	* cgen-utils.c (cgen_cpu_max_extra_bytes): Likewise.  Change sim_machs
	to STATE_MACHS.
	* sim-base.h (struct sim_state): Add machs.
	(STATE_MACHS): New define.
	* sim-cpu.c (sim_cpu_alloc): Pass sd to cgen_cpu_max_extra_bytes.
	* sim-model.c (model_option_handler): Pass sd to sim_model_lookup.
	Change sim_machs to STATE_MACHS.
	(sim_model_lookup): Add SIM_DESC arg.  Change sim_machs to
	STATE_MACHS.
	(sim_mach_lookup): Likewiwse.
	(sim_mach_lookup_bfd_name): Likewise.
	(sim_model_init): Pass sd to sim_model_lookup and
	sim_mach_lookup_bfd_name.
	(sim_machs): Delete.
	* sim-model.h (enum mach_attr): Delete.
	(SIM_MODEL): Change num to int.
	(sim_machs): Delete.
	(sim_model_lookup): Add SIM_DESC arg.
	(sim_mach_lookup): Likewise.
	(sim_mach_lookup_bfd_name): Likewise.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (Makefile): Replace $(arch) and pass more files to
	config.status.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* callback.c [!HAVE_KILL] (os_kill): Return ENOSYS.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* sim-model.c (model_option_handler): Make machp const.
	(sim_model_lookup): Likewise.
	(sim_mach_lookup): Likewise.
	(sim_mach_lookup_bfd_name): Likewise.
	(sim_machs): Add const.
	* sim-model.h (sim_machs): Likewise.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* sim-io.h (sim_io_vprintf): Add ATTRIBUTE_PRINTF.
	(sim_io_evprintf): Likewise.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* sim-io.c (sim_io_error): Change "" to " ".

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (sim_cb_printf, sim_cb_eprintf): Delete.
	(os_poll_quit): Delete __GO32__ support.
	* sim-utils.h (sim_cb_printf, sim_cb_eprintf): Delete.

2021-06-29  Mike Frysinger  <vapier@gentoo.org>

	* cgen-types.h (HAVE_LONGLONG): Delete define.
	[!HAVE_LONGLONG]: Delete all protected code.
	* cgen-utils.c (make_struct_di): Delete.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-trace.c: Include diagnostics.h.
	(cgen_trace_extract): Call DIAGNOSTIC_PUSH,
	DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL, and DIAGNOSTIC_POP.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-run.c (engine_run_n): Assert cpu arguments are valid.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-trace.h (cgen_trace_printf): Add ATTRIBUTE_PRINTF_2.
	(sim_disasm_sprintf): Likewise.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-trace.c (cgen_trace_extract): Make name & fmt const.
	(cgen_trace_result): Make name const.
	(cgen_trace_printf): Make fmt const.
	* cgen-trace.h (cgen_trace_extract): Make 3rd arg const.
	(cgen_trace_result): Make 2nd arg const.
	(cgen_trace_printf): Likewise.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-mem.h (DECLARE_GETMEM_EXTERN): New macro.
	(DECLARE_GETMEM): Use DECLARE_GETMEM_EXTERN.
	(DECLARE_SETMEM_EXTERN): New macro.
	(DECLARE_SETMEM): Use DECLARE_SETMEM_EXTERN.
	(DECLARE_GETIMEM_EXTERN): New macro.
	(DECLARE_GETIMEM): Use DECLARE_GETIMEM_EXTERN.
	(DECLARE_GETT_EXTERN): New macro.
	(DECLARE_GETT): Use DECLARE_GETT_EXTERN.
	(DECLARE_SETT_EXTERN): New macro.
	(DECLARE_SETT): Use DECLARE_SETT_EXTERN.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-ops.h: Move prototype blocks before function definitions.

2021-06-27  Mike Frysinger  <vapier@gentoo.org>

	* cgen-ops.h (SUBWORDSIQI): Add int 2nd argument.
	(SUBWORDSIHI, SUBWORDSIUQI, SUBWORDDIUQI): Likewise.
	(ADDCFSI): Change return type to BI.
	(ADDOFSI, SUBCFSI, SUBOFSI, ADDCFHI, ADDOFHI, SUBCFHI, SUBOFHI,
	ADDCFQI, ADDOFQI, SUBCFQI, SUBOFQI): Likewise.
	(MUL1OFSI): Change SI arguments to USI.

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

	* sim-syscall.c (sim_syscall_multi): Handle CB_SYS_kill.

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

	* callback.c (os_kill): New function.
	(default_callback): Add os_kill.
	* syscall.c (cb_syscall): Handle CB_SYS_kill.

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

	* Make-common.in (srcdir): Change to abs_srcdir.

2021-06-22  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (cb_target_to_host_signal): New function.

2021-06-22  Mike Frysinger  <vapier@gentoo.org>

	* callback.c: Include signal.h.
	(cb_init_signal_map): New prototype.
	(os_init): Assign signal_map.
	* gentmap.c (signal_tdefs): New array.
	(gen_targ_vals_h): Output signal_tdefs.
	(gen_targ_map_c): Likewise.

2021-06-22  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (os_getpid): New function.
	(default_callback): Add os_getpid.
	* syscall.c (cb_syscall): Change getpid to cb->getpid.

2021-06-22  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (VPATH): Use $(srcdir).
	(config.status): New variable.
	(stamp-hw): Depend on $(config.status).
	(Makefile): Likewise.  Change rule based on SIM_COMMON_BUILD.
	(config.status): Disable when SIM_COMMON_BUILD is true.
	(.gdbinit): Likewise.

2021-06-21  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in: Move sim-hw settings to ../arch-subdir.mk.in.

2021-06-21  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_HW): Delete.
	(SIM_HW_OBJS): Redefine.
	(SIM_HW_SOCKSER, SIM_HW_DEVICES): Define.
	(stamp-hw): Change SIM_HW to SIM_HW_DEVICES.

2021-06-20  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (CGENDIR): Delete.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_INLINE): Delete.

2021-06-19  Simon Marchi  <simon.marchi@polymtl.ca>

	* sim-inline.h: Move UNUSED before TYPE.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (clean): Delete BUILT_SRC_FROM_COMMON usage.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (CSEARCH): Change @INCINTL@ to $(INTL_CFLAGS).
	(LIBINTL, LIBINTL_DEP): Delete.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in: Move dependency vars to ../arch-subdir.mk.in.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in: Move toolchain vars to ../arch-subdir.mk.in.

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (lt_cv_dlopen_libs): Delete.
	(@PLUGINS_TRUE@LIBDL): Likewise.
	(ZLIB): Use $(zlibdir).

2021-06-19  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (CONFIG_LIBS): Add $(COMMON_LIBS).

2021-06-18  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (WARN_CFLAGS, WERROR_CFLAGS): Delete.

2021-06-18  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in: Include ../arch-subdir.mk.

2021-06-18  Mike Frysinger  <vapier@gentoo.org>

	* cgen-run.c: Include sim-signal.h.
	* cgen-utils.c, nrun.c, sim-core.c, sim-engine.c, sim-reason.c,
	sim-resume.c, sim-signal.c, sim-stop.c, sim-watch.c: Likewise.
	* sim-basics.h: Delete sim-signal.h include.

2021-06-18  Mike Frysinger  <vapier@gentoo.org>

	* sim-basics.h: Delete libiberty.h include.

2021-06-17  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_ENDIAN): Delete.
	* sim-config.c (sim_config): Delete WITH_DEFAULT_TARGET_BYTE_ORDER.
	(sim_config_print): Likewise.
	* sim-config.h (WITH_TARGET_BYTE_ORDER): Delete.
	(WITH_DEFAULT_TARGET_BYTE_ORDER): Likewise.

2021-06-17  Mike Frysinger  <vapier@gentoo.org>

	* cgen-trace.c: Include sim/callback.h.
	* nrun.c, sim-hw.c, sim-io.c, sim-syscall.c, sim-trace.c: Likewise.
	* sim-basics.h: Delete sim/callback.h include.
	* sim-endian.h: Include bfd.h.
	* sim-syscall.h (struct cb_syscall): New forward decl.
	* sim-utils.h (sim_analyze_program): Likewise.

2021-06-16  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (CONFIG_CFLAGS): Change @DEFS@ to -DHAVE_CONFIG_H.
	(generated_files): Delete config.h.
	(distclean): Likewise.
	(config.h, stamp-h): Delete rules.
	* defs.h [SIM_COMMON_BUILD]: Delete config.h include and PACKAGE*
	defines.

2021-06-15  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in: Add stamp-modules rule to avoid rebuilds.
	(clean): Delete modules.c files.
	* local.mk: Add version.c-stamp rule to avoid rebuilds.
	(CLEANFILES): Add version.c files.

2021-06-14  Mike Frysinger  <vapier@gentoo.org>

	* local.mk (%D%/version.c): Use AM_V_GEN & AM_V_at wrappers.

2021-06-14  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (GNULIB_BUILDDIR): Rename to ...
	(GNULIB_PARENT_DIR): ... this.  Remove "gnulib" from value.

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

	* Make-common.in (COMMON_OBJS_NAMES): Add portability.o.
	* local.mk (%C%_libcommon_a_SOURCES): Add %D%/portability.c.
	* portability.c, portability.h: New files.

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Move sim-load.o to ...
	(COMMON_OBJS_NAMES): ... here.  Rename var from COMMON_OBJS.
	(COMMON_OBJS): Redefine.
	* defs.h [SIM_COMMON_BUILD]: Do not include ../config.h.
	* local.mk (%C%_libcommon_a_CPPFLAGS): New variable.
	(%C%_libcommon_a_SOURCES): Add %D%/sim-load.c.

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

	* dv-sockser.c: Include sys/select.h.

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

	* Make-common.in: Delete SIM_ALIGNMENT.
	* sim-config.c (sim_config): Change WITH_DEFAULT_ALIGNMENT to
	NONSTRICT_ALIGNMENT.
	(sim_config_print): Delete WITH_DEFAULT_ALIGNMENT logic.
	* sim-config.h (WITH_DEFAULT_ALIGNMENT): Delete.

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

	* defs.h: Include ../config.h.  Undefine PACKAGE* defines.

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

	* sim-basics.h (NULL): Delete.

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

	* nrun.c (main): Set default_callback.target_endian to
	current_target_byte_order when it's BFD_ENDIAN_UNKNOWN.

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

	* cgen-defs.h (STATE_RUN_FAST_P, CGEN_STATE, cgen_init): Delete.
	* cgen-run.c (cgen_get_fast_p): New function.
	(sim_resume): Move fast_p up and call cgen_get_fast_p.
	* cgen-utils.c (cgen_init): Delete.
	* sim-base.h: Delete cgen-sim.h include.
	(struct sim_state): Delete cgen_state and STATE_CGEN_STATE.

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

	* Make-common.in (IGEN_RUN): New variable.
	(IGEN): Remove ASAN_OPTIONS.

2021-06-05  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (COMMON_OBJS): Define.
	(LIB_OBJS): Replace version.o with $(COMMON_OBJS).
	(version.c): Delete target.
	(generated_files): Delete version.c.
	* local.mk: New file.

2021-05-29  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (EXTRA_LIBS): Add $(LIBGNU_EXTRA_LIBS).

2021-05-29  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (GNULIB_BUILDDIR): Define.
	Include $(GNULIB_BUILDDIR)/Makefile.gnulib.inc.
	(CSEARCH): Add -I../...
	(ALL_CFLAGS): Add $(INCGNU).
	(EXTRA_LIBS): Add $(LIBGNU).
	* defs.h: Include gnulib/config.h.  Undefine PACKAGE* defines.

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

	* sim-base.h (SIM_HAVE_COMMON_SIM_STATE): Delete.
	(struct sim_state_base): Merge into ...
	(struct sim_state): ... this.
	(STATE_MY_NAME): Delete base.
	(STATE_OPEN_KIND): Likewise.
	(STATE_CALLBACK): Likewise.
	(STATE_ENVIRONMENT): Likewise.
	(STATE_CONFIG): Likewise.
	(STATE_MODULES): Likewise.
	(STATE_OPTIONS): Likewise.
	(STATE_VERBOSE_P): Likewise.
	(STATE_TRACE_DATA): Likewise.
	(STATE_ARCHITECTURE): Likewise.
	(STATE_TARGET): Likewise.
	(STATE_PROG_ARGV): Likewise.
	(STATE_PROG_BFD): Likewise.
	(STATE_PROG_SYMS): Likewise.
	(STATE_PROG_SYMS_COUNT): Likewise.
	(STATE_TEXT_SECTION): Likewise.
	(STATE_TEXT_START): Likewise.
	(STATE_TEXT_END): Likewise.
	(STATE_START_ADDR): Likewise.
	(STATE_SCACHE_SIZE): Likewise.
	(STATE_CORE): Likewise.
	(STATE_MEMOPT): Likewise.
	(STATE_EVENTS): Likewise.
	(STATE_ENGINE): Likewise.
	(STATE_WATCHPOINTS): Likewise.
	(STATE_HW): Likewise.
	(STATE_LOAD_AT_LMA_P): Likewise.
	(SIM_MAGIC_NUMBER): Likewise.
	(STATE_MAGIC): Likewise.
	* sim-utils.c (sim_state_alloc_extra): Delete check for
	SIM_HAVE_COMMON_SIM_STATE.

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

	* cgen-defs.h (STATE_RUN_FAST_P): Call STATE_CGEN_STATE.
	* sim-base.h [CGEN_ARCH]: Include cgen-sim.h and define
	SIM_HAVE_COMMON_SIM_STATE.
	(struct sim_state): Add cgen_state.
	(STATE_CGEN_STATE): Define.

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

	* sim-base.h (struct sim_state): Update comment.
	(struct sim_state): Define.
	(STATE_ARCH_DATA): Likewise.
	(sim_state_alloc): New define.
	(sim_state_alloc_extra): Renamed & add 3rd arg.
	* sim-utils.c (sim_state_alloc): Likewise.
	(sim_state_alloc_extra): Set arch data.

2021-05-16  Mike Frysinger  <vapier@gentoo.org>

	* callback.c: Replace config.h include with defs.h.
	* cgen-accfp.c, cgen-fpu.c, cgen-par.c, cgen-run.c, cgen-scache.c,
	dv-core.c, dv-glue.c, genmloop.sh, hw-alloc.c, hw-base.c, hw-device.c,
	hw-events.c, hw-handles.c, hw-instances.c, hw-ports.c,
	hw-properties.c, hw-tree.c, sim-abort.c, sim-arange.c, sim-bits.c,
	sim-close.c, sim-command.c, sim-config.c, sim-core.c, sim-cpu.c,
	sim-endian.c, sim-engine.c, sim-events.c, sim-fpu.c, sim-hload.c,
	sim-hrw.c, sim-hw.c, sim-info.c, sim-inline.c, sim-model.c,
	sim-profile.c, sim-reason.c, sim-reg.c, sim-resume.c, sim-run.c,
	sim-signal.c, sim-stop.c, sim-trace.c, sim-utils.c: Include defs.h.
	* cgen-trace.c, cgen-utils.c, dv-cfi.c, dv-pal.c, dv-sockser.c,
	nrun.c, sim-basics.h, sim-load.c, sim-memopt.c, sim-module.c,
	sim-options.c, sim-syscall.c, sim-watch.c, syscall.c: Replace
	config.h include with defs.h.
	* gentmap.c (gen_targ_map_c): Replace config.h with defs.h.
	* sim-io.c: Include defs.h.
	(open): Undefine.
	* defs.h: New file.

2021-05-15  Mike Frysinger  <vapier@gentoo.org>

	* nrun.c: Include environ.h.
	(environ): Delete prototype.
	(main): Delete HAVE_ENVIRON check.

2021-05-14  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (os_lseek): Change return and 3rd arg to int64_t.
	(os_ftruncate): Change 3rd arg to int64_t.
	(os_truncate): Change 3rd arg to int64_t.
	* sim-io.c (sim_io_lseek): Change return and 3rd arg to int64_t.
	* sim-io.h (sim_io_lseek): Likewise.

2021-05-14  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (os_time): Change return to int64_t.  Delete 2nd arg.
	(os_fstat): Delete 2nd arg to time callback.
	* sim-io.c (sim_io_time): Change return to int64_t.  Delete 2nd arg
	to time callback.
	* sim-io.h (sim_io_time): Change return to int64_t.
	* syscall.c (cb_syscall): Delete 2nd arg to time callback.

2021-05-14  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (cb_host_to_target_stat): Change PTR to void*.
	* sim-syscall.c (sim_syscall_multi): Delete (PTR) casts.

2021-05-14  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (callback_h, remote_sim_h): Update path.
	* callback.c: Update include path.
	* gentmap.c (gen_targ_map_c): Likewise.
	* sim-basics.h: Likewise.
	* sim-close.c: Likewise.
	* sim-core.c: Likewise.
	* sim-load.c: Likewise.
	* sim-module.h: Likewise.
	* syscall.c: Likewise.

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

	* Make-common.in (modules.c): Touch $@ at the end.

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

	* cgen-trace.c (sim_cgen_disassemble_insn): Change %x to PRIxTA.

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

	* cgen-types.h (mode_names): Rename to ...
	(cgen_mode_names): ... this.
	(MODE_NAME): Use cgen_mode_names.
	* cgen-utils.c (mode_names): Rename to ...
	(cgen_mode_names): ... this.

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

	* cgen-ops.h (cgen_rtx_error): Declare.
	* cgen-utils.c (cgen_rtx_error): Add %s printf argument.

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

	* cgen-utils.c (virtual_insn_entries): Change {0} to {}.

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

	* Make-common.in (html, clean-html, install-html, pdf, clean-pdf,
	install-pdf): New rules.

2021-05-08  Tom Tromey  <tom@tromey.com>

	* sim-options.c (compare_strings): Remove.
	(dup_arg_p): Use htab_eq_string.

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

	* sim-hw.c (sim_hw_install): Rename to ...
	(sim_install_hw): ... this.  New prototype.
	* sim-hw.h (sim_hw_install): Delete.
	* sim-module.c: Delete sim-hw.h include.
	(early_modules): Delete sim_hw_install.

2021-05-04  Tom Tromey  <tromey@adacore.com>

	* Make-common.in (generated_files): Add config.h.

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

	* cgen-trace.c (sim_disasm_perror_memory): Use BFD_VMA_FMT and drop
	cast.
	* sim-load.c (xprintf_bfd_vma): Delete.
	(sim_load_file): Delete xprintf_bfd_vma calls.  Use BFD_VMA_FMT.

2021-05-03  Simon Marchi  <simon.marchi@polymtl.ca>

	* hw-events.h (hw_event_queue_schedule_tracef): Use format attribute.
	(hw_event_queue_schedule_vtracef): Likewise.
	* hw-tree.h (hw_tree_vparse): Likewise.
	* sim-profile.c (profile_vprintf): Likewise.
	* sim-trace.c (dis_printf): Likewise.
	* sim-trace.h (trace_printf): Likewise.
	(trace_vprintf): Likewise.
	* sim-utils.h (sim_do_commandf): Likewise.
	* hw-events.c (hw_event_queue_schedule): Use
	hw_event_queue_schedule_tracef.

2021-05-02  Simon Marchi  <simon.marchi@polymtl.ca>

	* sim-options.c (standard_option_handler): Add default cases to
	switches.

2021-05-02  Mike Frysinger  <vapier@gentoo.org>

	* callback.c (os_error): Change __attribute__((noreturn)) to
	ATTRIBUTE_NORETURN.
	* hw-device.h (hw_abort, hw_vabort, hw_halthw_trace): Change
	attributes to ATTRIBUTE_PRINTF and ATTRIBUTE_NORETURN.
	* hw-events.h (hw_event_queue_schedule_tracef): Likewise.
	* hw-tree.h (hw_tree_delete): Likewise.
	* sim-basics.h (__attribute__): Delete.
	* sim-engine.h (sim_engine_halt): Change __attribute__((noreturn))
	to ATTRIBUTE_NORETURN.
	(sim_engine_abort, sim_engine_vabort): Likewise.
	* sim-hw.h (sim_hw_install, sim_hw_abort): Change
	__attribute__((printf)) to ATTRIBUTE_PRINTF.
	* sim-inline.h (NORETURN): Delete.
	(UNUSED): Change to ATTRIBUTE_UNUSED.
	* sim-io.h (sim_io_printf): Change attributes to ATTRIBUTE_PRINTF
	and ATTRIBUTE_NORETURN.
	(sim_io_eprintf, sim_io_error): Likewise.
	* sim-profile.c (profile_printf): Likewise.
	* sim-trace.h (trace_prefix, trace_generic, trace_printf,
	sim_debug_printf): Likewise.

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

	* sim-options.c (dup_arg_p): Call htab_empty.

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

	* dv-sockser.c (dv_sockser_install): Rename to ...
	(sim_install_dv_sockser): ... this.
	* dv-sockser.h (dv_sockser_install): Delete.
	* sim-module.c: Delete dv-sockser.h include.
	(early_modules): Delete dv_sockser_install.

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

	* Make-common.in (LIB_OBJS): Add modules.o.
	(generated_files): Add modules.c.
	(modules.c): New target.
	* sim-module.c (modules): Rename to ...
	(early_modules): ... this.  Delete 0 sentinel.
	(early_modules_len): Define.
	(sim_modules_detected, sim_modules_detected_len): Declare.
	(sim_pre_argv_init): Call sim_module_install_list.
	(sim_module_install): New function.
	(sim_module_install_list): New function.
	* sim-module.h (sim_module_install_list): Declare.

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

	* nrun.c (strsignal): New prototype.

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

	* callback.c (wrap): Delete.
	(os_close): Replace wrap call with direct call & setting last_errno.
	(os_isatty, os_lseek, os_read_stdin, os_write, os_rename, os_system,
	os_time, os_unlink, os_stat, os_fstat, os_lstat): Likewise.

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

	* gennltvals.py (TARGETS): Delete.  Update comment.
	(gentvals): Unify common code paths.
	(gen_targets): Change TARGETS to TARGETS_DIRS.  Call gentvals without
	target argument.
	* nltvals.def: Regenerate.

2021-04-25  Tom Tromey  <tom@tromey.com>

	* sim-options.c (compare_strings): New function.
	(ARG_HASH_SIZE, ARG_HASH): Remove.
	(dup_arg_p): Use htab_t.
	(sim_parse_args): Remove assert.

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

	* dv-cfi.c (attach_cfi_regs): Change %u to PRIiTC.

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

	* sim-options.c (ARG_HASH_SIZE): Increase to 256.
	(sim_parse_args): Call SIM_ASSERT.

2021-04-22  Tom Tromey  <tom@tromey.com>

	* sim-utils.c: Update includes.

2021-04-22  Tom Tromey  <tom@tromey.com>

	* Make-common.in: Require GNU make.

2021-04-22  Tom Tromey  <tom@tromey.com>

	* Make-common.in (stamp-hw): New target.
	(hw-config.h): Depend on stamp-hw.
	(mostlyclean): Remove stamp-hw and hw-config.h.

2021-04-22  Tom Tromey  <tom@tromey.com>

	* Make-common.in (mostlyclean): Now an alias for clean, not
	distclean.

2021-04-22  Tom Tromey  <tom@tromey.com>

	* sim-events.c (sim_events_schedule): Use
	sim_events_schedule_tracef.

2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>

	* callback.c (os_printf_filtered, os_vprintf_filtered,
	os_evprintf_filtered, os_error): Use ATTRIBUTE_PRINTF.
	* sim-engine.h (sim_engine_abort, sim_engine_vabort): Likewise.
	* sim-events.h (sim_events_schedule_tracef,
	sim_events_schedule_vtracef): Use ATTRIBUTE_NULL_PRINTF.

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

	* gennltvals.py (TARGETS): Add moxie.
	* nltvals.def: Regenerate.

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

	* gennltvals.py (TARGET_DIRS, TARGETS): Add sh.
	* nltvals.def: Regenerate.

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

	* gennltvals.py (TARGETS): Add rx.
	* nltvals.def: Regenerate.

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

	* gennltvals.py (TARGETS): Add m32c.
	* nltvals.def: Regenerate.

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

	* gennltvals.py (TARGETS): Add iq2000.
	* nltvals.def: Regenerate.

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

	* syscall.c (cb_syscall): Implement CB_SYS_getpid.

2021-04-15  John Baldwin  <jhb@FreeBSD.org>

	* Make-common.in (CONFIG_CFLAGS): Remove SIM_EXTRA_CFLAGS.
	(ALL_CLAGS, COMMON_DEP_CFLAGS): Add SIM_EXTRA_CFLAGS after
	CSEARCH.

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

	* sim-cpu.c (sim_cpu_alloc_all): Delete 3rd arg.  Delete 2nd arg to
	sim_cpu_alloc.
	(sim_cpu_alloc): Move extra_bytes to local var.  Add result of
	cgen_cpu_max_extra_bytes.
	* sim-cpu.h (sim_cpu_alloc_all): Delete 3rd arg.
	(sim_cpu_alloc): Delete 2nd arg.

2021-04-08  Tom Tromey  <tom@tromey.com>

	* cgen-utils.c (RORQI, ROLQI, RORHI, ROLHI, RORSI, ROLSI): Use
	new-style declaration.

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

	* Make-common.in (install-common): Install as run-$arch and
	libsim-$arch.a when not the primary arch.

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

	* Make-common.in (CFLAGS_FOR_BUILD): Define.
	(BUILD_CFLAGS): Replace -g -O with $(CFLAGS_FOR_BUILD).

2021-03-13  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (LINK_FOR_BUILD): Change BUILD_LDFLAGS to
	LDFLAGS_FOR_BUILD.

2021-03-13  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (COMPILE_FOR_BUILD, LINK_FOR_BUILD): Define.
	(gentmap.o): New rule.
	(gentmap): Call LINK_FOR_BUILD.

2021-03-07  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (check): Delete body.

2021-02-28  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_EXTRA_LIBDEPS): Delete.
	(LIBDEPS): Delete $(SIM_EXTRA_LIBDEPS).

2021-02-27  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_EXTRA_ALL): Delete.
	(all): Delete $(SIM_EXTRA_ALL).

2021-02-21  Mike Frysinger  <vapier@gentoo.org>

	* acinclude.m4: Removed.

2021-02-13  Mike Frysinger  <vapier@gentoo.org>

	* acinclude.m4: Delete all sinclude & m4_include calls.

2021-02-13  Mike Frysinger  <vapier@gentoo.org>

	* aclocal.m4: Delete.

2021-02-06  Mike Frysinger  <vapier@gentoo.org>

	* sim-events.c: Include sim-cpu.h.
	(sim_event_watchpoints): Define watch_pc.
	(sim_events_watch_pc): New function.
	(WATCH_SIM): Handle watch_pc.
	* sim-events.h (sim_events_watch_pc): New prototype.
	* sim-watch.c (schedule_watchpoint): Replace sim_events_watch_sim with
	sim_events_watch_pc.
	* sim-watch.h (sim_watchpoints): Delete pc.

2021-02-06  Mike Frysinger  <vapier@gentoo.org>

	* acinclude.m4 (SIM_AC_COMMON): Replace AC_CONFIG_HEADER with
	AC_CONFIG_HEADERS.

2021-02-06  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (HDEFINES, TDEFINES): Delete.
	(CONFIG_CFLAGS): Delete $(HDEFINES) $(TDEFINES).
	* acinclude.m4 (SIM_AC_COMMON): Delete AC_SUBST(HDEFINES) and
	bfd/configure.host sourcing.

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

	* gennltvals.py (TARGETS): Add riscv.
	(TARGET_DIRS): Likewise.
	* nltvals.def: Regenerate from the latest libgloss sources.

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

	* cgen-trace.c (cgen_trace_insn): Add "%s" argument.

2021-01-31  Stafford Horne  <shorne@gmail.com>

	* cgen-accfp.c (fixsfsi): Change res from unsigned32 to signed32.
	(fixdfsi): Change res from unsigned32 to signed32.
	(fixdfdi): Change res from unsigned64 to signed64.

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

	* gennltvals.sh: Replace shell script with ...
	* gennltvals.py: ... this Python script.
	* nltvals.def: Regenerate.

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

	* sim-watch.c (schedule_watchpoint): Change sizeof_pc to sizeof
	sim_cia.
	* sim-watch.h (struct _sim_watchpoints): Delete sizeof_pc.

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

	* sim-profile.c (profile_pc_init): Change 1 in shifts to 1ULL.

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

	* sim-hw.c (merge_device_file): Replace fgets with getline.

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

	* gennltvals.sh (gen_arches): Sort calls by first arg.
	* nltvals.def: Regenerate.

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

	* Make-common.in (version.c): Simplifiy args and call move-if-change.
	* create-version.sh: Delete host & target alias logic.  Write to the
	output directly.

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

	* configure, configure.ac, Makefile.in: Delete.

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

	* sim-watch.c (default_interrupt_handler): Define.
	(sim_watchpoint_install): Set default interrupt_handler to new
	default_interrupt_handler.

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

	* sim-watch.c (do_watchpoint_create): Parse arg+1 and assign to arg1.

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

	* sim-events.c (sim_events_watch_sim): Change byte_order type to
	enum bfd_endian.
	(sim_events_watch_core): Likewise.
	* sim-events.h (sim_events_watch_sim, sim_events_watch_core): Likewise.
	* sim-watch.c (schedule_watchpoint): Change 0 to HOST_BYTE_ORDER in
	call to sim_events_watch_sim.

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

	* sim-profile.h [!WITH_PROFILE]: Rewrite to use #error.

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

	* acinclude.m4 (SIM_AC_OUTPUT): Require SIM_AC_OPTION_WARNINGS.

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

	* sim-core.c (sim_memory_map): Change %#x to PRIxTW.

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

	* acinclude.m4 (SIM_AC_COMMON): Delete checks for stdlib.h, string.h,
	strings.h, time.h, and errno.h.
	* callback.c, cgen-scache.c, dv-glue.c, dv-pal.c, dv-sockser.c,
	hw-alloc.c, hw-base.c, hw-device.c, hw-events.c, hw-handles.c,
	hw-ports.c, hw-properties.c, hw-tree.c, nrun.c, sim-arange.c,
	sim-events.c, sim-fpu.c, sim-hw.c, sim-load.c, sim-memopt.c,
	sim-options.c, sim-profile.c, sim-trace.c, sim-utils.c,
	sim-watch.c, syscall.c: Delete HAVE_ERRNO_H, HAVE_STDLIB_H,
	HAVE_STRING_H, HAVE_STRINGS_H, HAVE_LIMITS_H, HAVE_TIME_H,
	and strings.h include.

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

	* sim-basics.h [__CYGWIN32__] (vasprintf, asprintf): Delete.
	* sim-core.c, sim-watch.c: Include libiberty.h.

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

	* acinclude.m4: Replace duplicate text with pointer to README-HACKING.

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

	* acinclude.m4 (SIM_AC_OPTION_WARNINGS): Document 1st argument.
	Set WERROR_CFLAGS when first arg is not set or is "yes".

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

	* hw-base.c (full_name_of_hw): Delete full_name.  Replace
	hw_strdup call with hw_malloc.

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

	* cgen-par.c: Include stdlib.h.
	* cgen-trace.c, hw-events.c, sim-abort.c: Likewise.

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

	* Make-common.in (C_DIALECT): Define.
	(COMPILE.pre): Append $(C_DIALECT).
	* acinclude.m4 (SIM_AC_COMMON): Probe C11 to define C_DIALECT.

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

	* sim-core.c (sim_memory_map): Define.

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

	* acinclude.m4 (ACX_BUGURL): Change http:// to https://.
	* configure: Regenerate.

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

	* sim-options.c (sim_print_version): Print out more details when
	is_command is non-zero.

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

	* sim-options.c (standard_option_handler): Call sim_print_version.
	(sim_print_version): New function.
	* sim-options.h (sim_print_version): New prototype.

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

	* sim-config.c (print_sim_config): Rename to ...
	(sim_config_print): ... this.
	* sim-config.h: Likewise.

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

	* sim-bits.h (_ALIGNa, _FLOORa, ALIGN_8, ALIGN_16, ALIGN_PAGE,
	FLOOR_PAGE): Delete unused macros.
	(align_up, align_down): Define.

2020-08-10  Tom de Vries  <tdevries@suse.de>

	* sim-cpu.c: Include stdlib.h for free.

2020-01-19  Simon Marchi  <simon.marchi@polymtl.ca>

	* nrun.c: Include stdlib.h.
	* sim-core.c: Likewise.
	* sim-engine.c: Likewise.
	* sim-io.c: Likewise.
	* sim-module.c: Likewise.
	* sim-reason.c: Likewise.

2019-12-19  Tom Tromey  <tromey@adacore.com>

	PR build/24572:
	* Makefile.in (install-strip): New target.

2019-12-01  Pavel I. Kryukov  <kryukov@frtk.ru>

	* sim-utils.c: Prevent buffer overflow.

2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>

	* gennltvals.sh: Add PRU libgloss target.
	* nltvals.def: Regenerate from the latest libgloss sources.

2019-06-13  Stafford Horne  <shorne@gmail.com>

	* cgen-accfp.c (unorderedsf, unordereddf): New functions.
	(cgen_init_accurate_fpu): Wire up unorderedsf and unordereddf.
	* cgen-fpu.h (cgen_fp_ops): Define fields unorderedsf and unordereddf.

2019-06-13  Stafford Horne  <shorne@gmail.com>

	* cgen-accfp.c (floatdidf, fixdfdi): New functions.
	(cgen_init_accurate_fpu): Add floatdidf and fixdfdi.

2019-04-13  Andrew Burgess  <andrew.burgess@embecosm.com>

	* cgen-ops.h (SUBWORDXFSI): Compare HOST_BYTE_ORDER not
	CURRENT_TARGET_BYTE_ORDER.
	(SUBWORDTFSI): Likewise.
	(JOINSIDF): Likewise.
	(JOINSIXF): Likewise.
	(JOINSITF): Likewise.

2019-03-28  Andrew Burgess  <andrew.burgess@embecosm.com>

	* sim-base.h: Add 'sim-assert.h' include.
	* sim-basics.h: Add 'libiberty.h' include.

2019-03-28  Stafford Horne  <shorne@gmail.com>

	* sim-options.c: Include "config.h".
	Include <stdio.h>.
	* sim-watch.c: Include "config.h".
	Include <stdio.h>.
	* hw-device.c: Include <string.h>.
	* hw-events.c: Include <string.h>.
	* hw-handles.c: Include <stdlib.h>.
	* sim-fpu.c: Include <stdlib.h>.

2019-03-28  Stafford Horne  <shorne@gmail.com>

	* Make-common.in (sim-arange_h): Remove sim-arange.c
	* sim-arange.c: Remove SIM_ARANGE_C.
	Add ifdef for _SIM_ARANGE_C_.
	Include "sim-arange.h".
	Remove include for unused "sim-assert.h".
	Remove DEFINE_INLINE_P.  Remove DEFINE_NON_INLINE_P.
	(sim_addr_range_add): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_delete): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_hit_p): Change from SIM_ARANGE_INLINE to
	INLINE_SIM_ARANGE.
	* sim-arange.h (sim_addr_range_add): Declare as
	INLINE_SIM_ARANGE.
	(sim_addr_range_delete): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_hit_p) Declare as INLINE_SIM_ARANGE.
	Remove definition of SIM_ARANGE_INLINE.
	Remove [HAVE_INLINE].
	Wrap include "sim-arange.c" in H_REVEALS_MODULE_P.
	* sim-base.h: Include "sim-arange.h"
	* sim-basics.h: Remove include of "sim-arange.h"
	* sim-inline.c: Include "sim-arange.c"
	* sim-inline.h: Define INLINE_SIM_ARANGE.
	Define SIM_ARANGE_INLINE.  Define EXTERN_SIM_ARANGE_P.
	Define STATIC_INLINE_SIM_ARANGE.  Define STATIC_SIM_ARANGE.

2019-01-26  Tom Tromey  <tom@tromey.com>

	* Make-common.in (version.c): Use sim's create-version.sh.
	* create-version.sh: New file.

2019-01-16  Pavel I. Kryukov  <kryukov@frtk.ru>

	* sim-arange.c (DEFINE_INLINE_P, DEFINE_NON_INLINE_P): Remove.

2019-01-15  Simon Marchi  <simon.marchi@ericsson.com>

	* sim-arange.h (SIM_ARANGE_INLINE): Change EXTERN to extern.

2018-12-18  Andrew Burgess  <andrew.burgess@embecosm.com>

	* sim-syscall.c (sim_syscall_multi): Don't update sc->errcode at
	this point, it should have already been set in cb_syscall.

2018-10-05  Stafford Horne  <shorne@gmail.com>

	* cgen-ops.h (ADDCFDI): New function, add carry flag DI variant.
	(ADDOFDI): New function, add overflow flag DI variant.
	(SUBCFDI): New function, subtract carry flag DI variant.
	(SUBOFDI): New function, subtract overflow flag DI variant.

2018-09-28  Компан, Вячеслав Олегович  <kompan.vo@phystech.edu>

	* sim-core.h (sim_cpu_core): Rename cpu_core.xor to
	cpu_core.byte_xor.
	* sim-core.c (sim_core_set_xor): Likewise.
	(sim_core_xor_read_buffer): Likewise.
	(sim_core_xor_write_buffer): Likewise.

2017-12-12  Peter Gavin  <pgavin@gmail.com>
	    Stafford Horne  <shorne@gmail.com>

	* cgen-ops.h (MUL2OFSI): New function, 2's complement overflow
	flag.
	(MUL1OFSI): New function, 1's complement overflow flag.

2017-12-12  Peter Gavin  <pgavin@gmail.com>
	    Stafford Horne <shorne@gmail.com>

	* cgen-accfp.c (remsf, remdf): New function.
	(cgen_init_accurate_fpu): Add remsf and remdf.
	* cgen-fpu.h (cgen_fp_ops): Add remsf, remdf, remxf and remtf.
	* sim-fpu.c (sim_fpu_rem): New function.
	* sim-fpu.h (sim_fpu_status_invalid_irx): New enum.
	(sim_fpu_rem): New function.
	(sim_fpu_print_status): Add case for sim_fpu_status_invalid_irx.

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

	* acinclude.m4 (SIM_AC_COMMON): Honor existing CC_FOR_BUILD in
	environment.

2017-05-24  Yao Qi  <yao.qi@linaro.org>

	* sim-trace.c (trace_disasm): Caller update.

2016-08-15  Mike Frysinger  <vapier@gentoo.org>

	* sim-base.h (sim_state_base): Add prog_syms_count.
	(STATE_PROG_SYMS_COUNT): Define.
	* sim-trace.c (trace_uninstall): Free STATE_PROG_SYMS memory.
	(trace_load_symbols): New function.
	(trace_sym_value): Likewise.
	(trace_prefix): Change STATE_CPU(cpu) to sd.  Replace symbol
	loading logic with a call to trace_load_symbols.
	* sim-trace.h (trace_load_symbols, trace_sym_value): New
	prototypes.

2016-08-13  Mike Frysinger  <vapier@gentoo.org>

	* cgen-types.h (mode_names): Mark const.
	* cgen-utils.c (mode_names): Likewise.

2016-08-13  Mike Frysinger  <vapier@gentoo.org>

	* cgen-defs.h (struct cgen_state): Delete argv and envp.
	(STATE_ARGV, STATE_ENVP): Delete.

2016-02-04  Nick Clifton  <nickc@redhat.com>

	* cgen-scache.c (scache_option_handler): Prevent possible
	undefined behaviour computing the size of the scache by using
	unsigned integers instead of signed integers.

2016-01-17  Joel Brobecker  <brobecker@adacore.com>

	* sim-fpu.c: Minor comment fixes throughout.

2016-01-17  Joel Brobecker  <brobecker@adacore.com>

	* sim-fpu.c (print_bits): Minor reformatting (no code change).
	(sim_fpu_map): Likewise.

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

	* sim-config.c (print_sim_config): Drop extra whitespace before =
	in output for byte order, stdio, and msb settings.

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

	* acinclude.m4 (SIM_AC_COMMON): Call AC_MSG_CHECKING,
	AC_DEFINE_UNQUOTED, and AC_MSG_RESULT for sim-debug.  Likewise for
	sim-stdio, sim-trace, and sim-profile.
	(SIM_AC_OPTION_ENVIRONMENT): Likewise.
	(SIM_AC_OPTION_ASSERT): Likewise.
	(SIM_AC_OPTION_SMP): Likewise.
	(SIM_AC_OPTION_XOR_ENDIAN): Likewise.
	* configure: Regenerate.
	* Make-common.in (SIM_DEBUG, SIM_TRACE, SIM_PROFILE, SIM_ASSERT,
	SIM_ENVIRONMENT, SIM_SMP, SIM_XOR_ENDIAN): Delete.
	(CONFIG_CFLAGS): Delete $(SIM_DEBUG), $(SIM_TRACE), $(SIM_PROFILE),
	$(SIM_ASSERT), $(SIM_ENVIRONMENT), $(SIM_SMP), and $(SIM_XOR_ENDIAN).
	* sim-config.c (sim_config): Change DEFAULT_ENVIRONMENT to
	WITH_ENVIRONMENT & USER_ENVIRONMENT.
	* sim-config.h (SIM_HAVE_ENVIRONMENT, WITH_ENVIRONMENT,
	DEFAULT_ENVIRONMENT, WITH_DEBUG, WITH_TRACE, WITH_PROFILE,
	WITH_ASSERT, WITH_STDIO): Delete.
	* sim-options.c (standard_options): Delete SIM_HAVE_ENVIRONMENT
	check.

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

	* acinclude.m4 (SIM_AC_OPTION_PACKAGES): Delete.
	* configure: Regenerate.
	* Make-common.in (SIM_PACKAGES): Delete.
	(CONFIG_CFLAGS): Delete $(SIM_PACKAGES).

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

	* acinclude.m4 (SIM_AC_COMMON): Call SIM_AC_OPTION_ENVIRONMENT.

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

	* acinclude.m4 (SIM_AC_COMMON): Call SIM_AC_OPTION_ASSERT.

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

	* acinclude.m4 (SIM_AC_COMMON): Delete sim_link_files and
	sim_link_links.
	(SIM_AC_OUTPUT): Delete AC_LINK_FILES call.
	* gentmap.c: Change targ-vals.def include to nltvals.def.
	* Make-common.in (gentmap): Change targ-vals.def to
	$(srccom)/nltvals.def.
	(distclean): Delete rm -f targ-vals.def.
	* Makefile.in: Update comment.

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

	* acinclude.m4 (SIM_AC_COMMON): Call SIM_AC_OPTION_INLINE.
	(SIM_AC_OPTION_INLINE): Rename default_sim_inline to sim_inline
	and always set -DDEFAULT_INLINE.  Delete AC_ARG_ENABLE 4th arg.

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

	* acinclude.m4: Delete --enable-sim-regparm and sim_regparm,
	and --enable-sim-stdcall and sim_stdcall.
	* configure: Regenerate.
	* Make-common.in (SIM_REGPARM, SIM_STDCALL): Delete.
	(CONFIG_CFLAGS): Delete $(SIM_REGPARM) and $(SIM_STDCALL).
	* sim-config.h (WITH_REGPARM, WITH_STDCALL): Delete.
	* sim-inline.h (REGPARM_MODULE, REGPARM): Delete.
	(REGPARM_*): Delete all regparm defines and their use.

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

	* acinclude.m4: Delete --enable-sim-cflags and sim_cflags.
	* Make-common.in (SIM_CFLAGS): Delete.
	(CONFIG_CFLAGS): Delete $(SIM_CFLAGS).
	* Makefile.in: Likewise.

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

	* configure.ac: Change SIM_AC_COMMON to AC_PROG_CC.  Drop 2nd arg
	to AC_OUTPUT.  Move AC_CHECK_HEADERS, AC_CHECK_FUNCS,
	AC_CHECK_MEMBERS, and -AC_CHECK_TYPES ...
	* acinclude.m4 (SIM_AC_COMMON): ... here.
	* aclocal.m4, configure: Regenerate.
	* config.in: Delete file.
	* callback.c: Change cconfig.h include to config.h.
	* dv-cfi.c, nrun.c, sim-basics.h, sim-load.c, sim-memopt.c,
	syscall.c: Likewise.
	* Make-common.in (sim-basics_h): Delete ../common/cconfig.h.
	* Makefile.in (distclean): Delete rm -f cconfig.h config.h stamp-h.

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

	* sim-config.c (print_sim_config): Delete sim_io_printf of version,
	date, and time information.

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

	* sim-options.c (sim_parse_args): Mark argv array const.
	* sim-options.h (sim_parse_args): Likewise.

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

	* sim-trace.c: Include dis-asm.h.
	(OPTION_TRACE_DISASM): New enum.
	(trace_options): Add trace-disasm flag.
	(trace_option_handler): Handle OPTION_TRACE_DISASM.
	(trace_idx_to_str): Handle TRACE_DISASM_IDX.
	(dis_read, dis_printf, trace_disasm): New functions.
	* sim-trace.h: Include dis-asm.h.
	(TRACE_INSN_IDX): Clarify comment.
	(TRACE_DISASM_IDX): New enum.
	(TRACE_disasm): New define.
	(WITH_TRACE_DISASM_P): New define.
	(struct _trace_data): Add dis_bfd, disassembler, and dis_info.
	(STRACE_DISASM_P): New define.
	(TRACE_DISASM_P): Likewise.
	(TRACE_DISASM_P): Likewise.
	(TRACE_DISASM): Likewise.
	(trace_disasm): New function.

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

	* sim-utils.c (sim_state_free): Change to STATE_MAGIC.

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

	* cgen-scache.c (MAX): Delete.
	(scache_init): Change MAX to max.
	* cgen-trace.c (min): Delete.
	* cgen-utils.c (min): Delete.
	* sim-basics.h [!min] (min): Define.
	[!max] (max): Define.

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

	* sim-options.c (sim_parse_args): Tweak getopt error message.

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

	* acinclude.m4 (sim-bswap): Delete.
	* configure: Regenerate.
	* Make-common.in (SIM_BSWAP): Delete.
	(CONFIG_CFLAGS): Delete $(SIM_BSWAP).
	* sim-config.h (htonl, ntohl): Delete.
	(WITH_BSWAP): Delete.

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

	* sim-options.c (sim_parse_args): Declare local save_opterr.  Save
	opterr state to it before calling getopt_long and restore afterwards.
	Set opterr to 0.  When optc is '?', call sim_io_eprintf.

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

	* hw-device.h (device): Delete commented typedef.
	* sim-basics.h (device): Delete typedef.

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

	* sim-options.c (sim_parse_args): Replace for loop with a call
	to countargv.

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

	* nrun.c (myname): Mark const.
	(main): Mark name const.  Replace myname parsing loop with a
	call to lbasename.

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

	(CONFIG_CFLAGS): Delte $(SIM_HOSTENDIAN).
	* acinclude.m4 (SIM_AC_COMMON): Call AC_C_BIGENDIAN.
	(SIM_AC_OPTION_HOSTENDIAN): Delete.
	* config.in, configure: Regenerate.
	* Make-common.in (SIM_HOSTENDIAN): Delete.
	* sim-config.c (current_host_byte_order): Delete.
	(sim_config): Delete current_host_byte_order assignments and
	CURRENT_HOST_BYTE_ORDER checks.
	(print_sim_config): Change WITH_HOST_BYTE_ORDER to HOST_BYTE_ORDER.
	* sim-config.h (WITH_HOST_BYTE_ORDER): Change to ...
	(HOST_BYTE_ORDER): ... this.  Define based on WORDS_BIGENDIAN.
	(current_host_byte_order): Delete.
	(CURRENT_HOST_BYTE_ORDER): Likewise.
	* sim-endian.c (WITH_HOST_BYTE_ORDER): Rename to ...
	(HOST_BYTE_ORDER): ... this.
	(sim_endian_split_16): Change WITH_HOST_BYTE_ORDER to
	HOST_BYTE_ORDER.
	(sim_endian_join_16): Likewise.
	* sim-n-core.h (sim_core_read_misaligned_N): Change
	CURRENT_HOST_BYTE_ORDER to HOST_BYTE_ORDER.
	(sim_core_write_misaligned_N): Likewise.
	* sim-n-endian.h (endian_t2h_N): Likewise.
	(endian_h2t_N, endian_h2be_N, endian_be2h_N, endian_h2le_N,
	endian_le2h_N): Likewise.
	(offset_N): Change WITH_HOST_BYTE_ORDER to HOST_BYTE_ORDER.

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

	* acinclude.m4 (SIM_AC_OPTION_ENDIAN): Change BIG_ENDIAN to
	BFD_ENDIAN_BIG, LITTLE_ENDIAN to BFD_ENDIAN_LITTLE, and 0 to
	BFD_ENDIAN_UNKNOWN.
	(SIM_AC_OPTION_HOSTENDIAN): Likewise.
	* cgen-ops.h (SUBWORDXFSI): Change BIG_ENDIAN to BFD_ENDIAN_BIG.
	(SUBWORDTFSI, JOINSIDF, JOINSIXF, JOINSITF): Likewise.
	* nrun.c (main): Likewise.
	* sim-config.c (current_host_byte_order): Change type to enum
	bfd_endian.  Initialize to BFD_ENDIAN_UNKNOWN.
	(current_target_byte_order): Likewise.
	(config_byte_order_to_a): Likewise.  Change BIG_ENDIAN to
	BFD_ENDIAN_BIG, LITTLE_ENDIAN to BFD_ENDIAN_LITTLE, and 0 to
	BFD_ENDIAN_UNKNOWN.
	(sim_config): Change prefered_target_byte_order type to enum
	bfd_endian.  Change BIG_ENDIAN to BFD_ENDIAN_BIG, LITTLE_ENDIAN
	to BFD_ENDIAN_LITTLE, and 0 to BFD_ENDIAN_UNKNOWN.
	* sim-config.h: Change BIG_ENDIAN to BFD_ENDIAN_BIG, LITTLE_ENDIAN
	to BFD_ENDIAN_LITTLE, and 0 to BFD_ENDIAN_UNKNOWN.
	Delete all the various arch/OS endian includes & defines.
	(current_host_byte_order): Change type to enum bfd_endian.
	(current_target_byte_order): Likewise.
	(CURRENT_HOST_BYTE_ORDER): Compare to BFD_ENDIAN_UNKNOWN, not 0.
	(CURRENT_TARGET_BYTE_ORDER): Likewise.
	* sim-endian.c: Change LITTLE_ENDIAN to BFD_ENDIAN_LITTLE.
	* sim-events.c (sim_events_watch_sim): Change BIG_ENDIAN to
	BFD_ENDIAN_BIG, LITTLE_ENDIAN to BFD_ENDIAN_LITTLE, and 0 to
	BFD_ENDIAN_UNKNOWN.
	(sim_events_watch_core): Likewise.
	* sim-events.h: Likewise.
	* sim-n-core.h (sim_core_read_misaligned_N): Change BIG_ENDIAN to
	BFD_ENDIAN_BIG.
	(sim_core_write_misaligned_N): Likewise.
	* sim-n-endian.h (endian_h2be_N): Likewise.
	(endian_be2h_N): Likewise.
	(endian_h2le_N): Change LITTLE_ENDIAN to BFD_ENDIAN_LITTLE.
	(offset_N): Likewise.
	* sim-options.c (standard_option_handler): Change LITTLE_ENDIAN to
	BFD_ENDIAN_LITTLE and BIG_ENDIAN to BFD_ENDIAN_BIG.

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

	* cgen-defs.h (current_state): Delete.
	* sim-base.h (CURRENT_STATE_REG, CURRENT_STATE): Delete.
	* sim-utils.c (current_state): Delete.

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

	* sim-module.c (sim_pre_argv_init): Change STATE_MY_NAME assignment
	to use lbasename.

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

	* Makefile.in (SIM_NEW_COMMON_OBJS): Add sim-hload.o.

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

	* acinclude.m4 (AH_BOTTOM): Delete tconfig.h appending.
	* config.in, configure: Regenerate.
	* Make-common.in (sim-basics_h): Delete tconfig.h.
	(distclean): Likewise.
	* sim-core.c (device_io_read_buffer, device_io_write_buffer): Delete.
	(new_sim_core_mapping): Delete WITH_HW and device *device.
	(sim_core_map_attach, sim_core_attach): Likewise.
	(sim_core_read_buffer): Delete WITH_DEVICES logic.
	(sim_core_write_buffer): Likewise.
	* sim-core.h (struct _sim_core_mapping): Delete WITH_HW and device
	*device.
	(sim_core_attach): Likewise.
	(device_io_read_buffer, device_io_write_buffer): Delete.
	* sim-n-core.h (sim_core_read_aligned_N): Delete WITH_DEVICES logic.
	(sim_core_write_aligned_N): Likewise.
	* tconfig.h: Delete file.

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

	* sim-core.c (sim_core_read_buffer): Move cia decl to top of func.
	Call sim_cpu_hw_io_read_buffer if cpu is valid.
	(sim_core_write_buffer): Move cia decl to top of func.  Call
	sim_cpu_hw_io_write_buffer if cpu is valid.

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

	* hw-properties.c (hw_find_ihandle_runtime_property): Delete
	HW_TRACE call.
	(hw_find_integer_property): Likewise.
	(hw_find_integer_array_property): Likewise.
	(hw_add_duplicate_property): Likewise.

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

	* sim-config.h (WITH_ENGINE): Delete.
	* sim-module.c (modules): Always include sim_engine_install.

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-model.o.
	* cgen-types.h (SIM_HAVE_MODEL): Delete.
	* sim-base.h: Always include sim-model.h.
	* sim-config.h (WITH_DEFAULT_MODEL): Delete.
	* sim-cpu.h (sim_cpu_base): Always declare mach/model members.
	* sim-model.c (sim_model_init): Return when !WITH_MODEL_P.
	[!WITH_MODEL_P] (sim_machs): Define.
	* sim-model.h: Add some developer docs.
	[!WITH_DEFAULT_MODEL] (mach_attr, WITH_DEFAULT_MODEL): Define.
	(WITH_MODEL_P): Define.
	* sim-module.c (modules): Always include sim_model_install.
	* sim-profile.h (WITH_PROFILE_MODEL_P): Delete.

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

	* sim-cpu.h: Rename MACH to SIM_MACH and MODEL to SIM_MODEL.
	* sim-model.c: Likewise.
	* sim-model.h: Likewise.  Rename MACH_IMP_PROPERTIES to
	SIM_MACH_IMP_PROPERTIES

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

	* sim-core.c (device_error): Delete.
	(sim_core_map_attach): Delete calls to device_error.
	(sim_core_attach): Likewise.
	* sim-core.h (device_error): Delete.
	* sim-n-core.h (sim_core_read_aligned_N): Change device_error call
	to sim_engine_abort.
	(sim_core_write_aligned_N): Likewise.

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

	* sim-config.h (WITH_CALLBACK_MEMORY): Delete.
	* sim-core.c (sim_core_write_buffer): Likewise.
	* sim-n-core.h (sim_core_read_aligned_N): Likewise.
	(sim_core_write_aligned_N): Likewise.

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

	* dv-pal.c: Include config.h and sim-main.h.
	(hw_pal_io_read_buffer): Always call CPU_INDEX.

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

	* sim-options.c (standard_options): Always enable load-lma and
	load-vma options.
	(standard_install): Always set STATE_LOAD_AT_LMA_P(sd) to 1.

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

	* sim-module.c (MODULE_LIST): Delete.

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

	* sim-options.c (OPTION_H8300H, OPTION_H8300S, OPTION_H8300SX):
	Move to h8300/compile.c.
	[SIM_H8300] (standard_options): Likewise.
	(standard_option_handler): Likewise.

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

	* sim-module.c [WITH_WATCHPOINTS] (modules): Always call
	sim_watchpoint_install.

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

	* sim-base.h [SIM_HAVE_FLATMEM] (sim_state_base): Delete flatmem code.
	* sim-module.c [SIM_HAVE_FLATMEM] (modules): Always call
	sim_memopt_install.
	* sim-options.c (OPTION_MEM_SIZE): Delete.
	[SIM_HAVE_FLATMEM] (standard_options): Delete flatmem code.
	(standard_option_handler): Likewise.

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

	* tconfig.h (SIM_HAVE_SIMCACHE): Delete.

2015-11-21  Mike Frysinger  <vapier@gentoo.org>

	PR sim/18762
	* Makefile.in (CPPFLAGS, CXXFLAGS, LDFLAGS): Define.

2015-11-21  Mike Frysinger  <vapier@gentoo.org>

	PR sim/19273
	* sim-utils.c (sim_do_commandf): Declare ret.  Call va_start,
	vasprintf, and va_end together.  Check ret after va_end call.

2015-11-21  Mike Frysinger  <vapier@gentoo.org>

	* sim-types.h (SIM_PRI_TB): Define.
	(PRI_TW, PRIiTW, PRIxTW): New PRI target word defines.
	(PRI_TA, PRIiTA, PRIxTA): New PRI target address defines.
	(PRI_TC, PRIiTC, PRIxTC): New PRI target cell defines.
	(PRI_TF, PRIiTF, PRIxTF): New PRI target floating point defines.

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

	* sim-main.h (WITH_MODULO_MEMORY): Delete.
	* sim-core.c (new_sim_core_mapping): Always assign mask to modulo-1.
	(sim_core_attach): Delete WITH_MODULO_MEMORY == 0 logic.
	(sim_core_translate): Likewise.
	* sim-core.h: Delete mention of WITH_MODULO_MEMORY.

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

	* sim-close.c (__cgen_cpu_close, _cgen_cpu_close): Delete.
	(cgen_cpu_close): Change to XCONCAT2.

2015-11-15  Mike Frysinger  <vapier@gentoo.org>

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-reason.o, sim-reg.o,
	and sim-stop.o.

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-close.o
	* sim-close.c: New file.

2015-09-25  Andrew Bennett  <andrew.bennett@imgtec.com>
	    Ali Lown  <ali.lown@imgtec.com>

	* sim-bits.h (EXTEND6): New macro.
	(EXTEND12): New macro.
	(EXTEND25): New macro.

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

	* sim-trace.c (trace_one_insn): Delete.
	* sim-trace.h (trace_one_insn): Delete.

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

	* sim-trace.c (debug_printf): Rename to ...
	(sim_debug_printf): ... this.
	* sim-trace.h (debug_printf): Delete define.
	(debug_printf): Rename to ...
	(sim_debug_printf): ... this.

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

	* sim-trace.c (OPTION_TRACE_REGISTER): New enum.
	(trace_options): Add trace-register option.
	(trace_option_handler): Handle OPTION_TRACE_REGISTER case.
	(trace_idx_to_str): Handle TRACE_REGISTER_IDX case and re-indent.
	* sim-trace.h (TRACE_REGISTER_IDX): New enum.
	(TRACE_register, WITH_TRACE_REGISTER_P, STRACE_REGISTER_P,
	TRACE_REGISTER_P, TRACE_REGISTER): Define.

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

	* sim-trace.h (STRACE, STRACE_INSN, STRACE_DECODE, STRACE_EXTRACT,
	STRACE_LINENUM, STRACE_MEMORY, STRACE_MODEL, STRACE_ALU, STRACE_CORE,
	STRACE_EVENTS, STRACE_FPU, STRACE_VPU, STRACE_BRANCH, STRACE_SYSCALL,
	STRACE_DEBUG): Define.

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

	* sim-trace.c (trace_options): Update help text for trace-alu,
	trace-fpu, trace-vpu, and trace-semantics.
	* sim-trace.h (TRACE_ALU_IDX): Update comment text.
	(TRACE_FPU_IDX, TRACE_VPU_IDX): Likewise.

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

	* sim-assert.h (SIM_FILTER_PATH): Delete.
	[!SIM_ASSERT, WITH_ASSERT]: Include libiberty.h.
	(SIM_ASSERT): Replace SIM_FILTER_PATH with lbasename.
	[!ASSERT, WITH_ASSERT]: Include libiberty.h.
	(ASSERT): Replace SIM_FILTER_PATH with lbasename.
	* sim-events.c: Include libiberty.h.
	(ETRACE): Replace SIM_FILTER_PATH with lbasename.

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

	* acinclude.m4 (AC_ARG_ENABLE(sim-bswap)): Call AS_HELP_STRING.
	(AC_ARG_ENABLE(sim-cflags)): Likewise.
	(AC_ARG_ENABLE(sim-debug)): Likewise.
	(AC_ARG_ENABLE(sim-stdio)): Likewise.
	(AC_ARG_ENABLE(sim-trace)): Likewise.
	(AC_ARG_ENABLE(sim-profile)): Likewise.
	(AC_ARG_ENABLE(sim-environment)): Likewise.
	(AC_ARG_ENABLE(sim-alignment)): Likewise.
	(AC_ARG_ENABLE(sim-assert)): Likewise.
	(AC_ARG_ENABLE(sim-bitsize)): Likewise.
	(AC_ARG_ENABLE(sim-endian)): Likewise.
	(AC_ARG_ENABLE(sim-hostendian)): Likewise.
	(AC_ARG_ENABLE(sim-float)): Likewise.
	(AC_ARG_ENABLE(sim-scache)): Likewise.
	(AC_ARG_ENABLE(sim-default-model)): Likewise.
	(AC_ARG_ENABLE(sim-inline)): Likewise.
	(AC_ARG_ENABLE(sim-packages)): Likewise.
	(AC_ARG_ENABLE(sim-regparm)): Likewise.
	(AC_ARG_ENABLE(sim-reserved-bits)): Likewise.
	(AC_ARG_ENABLE(sim-smp)): Likewise.
	(AC_ARG_ENABLE(sim-stdcall)): Likewise.
	(AC_ARG_ENABLE(sim-xor-endian)): Likewise.
	(AC_ARG_ENABLE(cgen-maint)): Likewise.
	* configure: Regenerate.

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

	* sim-config.h (WITH_TRACE): Define to ~TRACE_debug.

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

	* cgen-trace.c [!__STDC__]: Delete.
	* sim-trace.h [!__STDC__]: Likewise.

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

	* sim-model.c (sim_model_init): Assert model is not NULL.

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

	* sim-types.h: Move SIM_TYPES_H define to top of file.  Include
	stdint.h.  Replace all signed/unsigned typedefs with int#_t and
	uint#_t.

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

	* sim-alu.h (_SIM_ALU_H_): Rename to ...
	(SIM_ALU_H): ... this.
	* sim-assert.h (_SIM_ASSERT_H_): Rename to ...
	(SIM_ASSERT_H): ... this.
	* sim-basics.h (_SIM_BASICS_H_): Rename to ...
	(SIM_BASICS_H): ... this.
	* sim-bits.h (_SIM_BITS_H_): Rename to ...
	(SIM_BITS_H): ... this.
	* sim-endian.h (_SIM_ENDIAN_H_): Rename to ...
	(SIM_ENDIAN_H): ... this.

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

	* sim-syscall.c (sim_syscall_multi): Change unknown_syscall to a
	constant string.

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

	* callback.c (cb_target_map_entry, cb_host_map_entry): Change map to
	m for sentinel testing.

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

	* sim-syscall.c: Include errno.h and targ-vals.h.
	(sim_syscall_multi, sim_syscall): Define.
	* sim-syscall.h (sim_syscall_multi, sim_syscall): Declare.
	* syscall.c (cb_syscall): Extend comment.

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-syscall.o.
	* sim-syscall.c: New file.
	* sim-syscall.h: New file.

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

	* callback.c (cb_target_map_entry, cb_host_map_entry): Define.
	(cb_target_to_host_syscall): Rewrite to use cb_target_map_entry.
	(cb_host_to_target_errno): Rewrite to use cb_host_map_entry.
	(cb_host_str_syscall, cb_host_str_errno, cb_host_str_signal,
	cb_target_str_syscall, cb_target_str_errno, cb_target_str_signal):
	Define.
	* gentmap.c (gen_targ_map_c): Output name field.

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

	* acinclude.m4: Change configure.in to configure.ac.
	* sim-config.h: Likewise.

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

	* acinclude.m4 (sim-trace): Delete -DTRACE flags.
	* configure: Regenerate.

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

	* sim-trace.h (TRACE, TRACE_INSN, TRACE_DECODE, TRACE_EXTRACT,
	TRACE_LINENUM, TRACE_MEMORY, TRACE_MODEL, TRACE_ALU, TRACE_CORE,
	TRACE_EVENTS, TRACE_FPU, TRACE_VPU, TRACE_BRANCH, TRACE_SYSCALL,
	TRACE_DEBUG): Define.

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

	* sim-module.c (modules): Change WITH_TRACE to WITH_TRACE_ANY_P.
	* sim-trace.c (trace_option_handler): Likewise.
	* sim-trace.h (WITH_TRACE_ANY_P): Define.
	(STRACE_ANY_P): Use WITH_TRACE_ANY_P.
	(TRACE_ANY_P): Likewise.

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

	* cgen-run.c (sim_resume): Rename TRACE_INSN_FINI to
	CGEN_TRACE_INSN_FINI.
	* cgen-trace.c: Rename trace_insn to cgen_trace_insn,
	trace_result to cgen_trace_result, trace_insn_fini to
	cgen_trace_insn_fini, trace_insn_init to cgen_trace_insn_init,
	and trace_extract to cgen_trace_extract.
	* cgen-trace.h (trace_insn_init): Rename to ...
	(cgen_trace_insn_init): ... this.
	(trace_insn_fini): Rename to ...
	(cgen_trace_insn_fini): ... this.
	(trace_insn): Rename to ...
	(cgen_trace_insn): ... this.
	(trace_extract): Rename to ...
	(cgen_trace_extract): ... this.
	(trace_result): Rename to ...
	(cgen_trace_result): ... this.
	(TRACE_RESULT_P): Rename to ...
	(CGEN_TRACE_RESULT_P): ... this.
	(TRACE_INSN_INIT): Rename to ...
	(CGEN_TRACE_INSN_INIT): ... this.  Change trace_insn_init to
	cgen_trace_insn_init.
	(TRACE_INSN_FINI): Rename to ...
	(CGEN_TRACE_INSN_FINI): ... this.  Change trace_insn_fini to
	cgen_trace_insn_fini.
	(TRACE_PRINTF): Rename to ...
	(CGEN_TRACE_PRINTF): ... this.
	(TRACE_INSN): Rename to ...
	(CGEN_TRACE_INSN): ... this.  Change trace_insn to cgen_trace_insn.
	(TRACE_EXTRACT): Rename to ...
	(CGEN_TRACE_EXTRACT): ... this.  Change trace_extract to
	cgen_trace_extract.
	(TRACE_RESULT): Rename to ...
	(CGEN_TRACE_RESULT): ... this.  Change TRACE_RESULT_P to
	CGEN_TRACE_RESULT_P and trace_result to cgen_trace_result.
	* genmloop.sh (@prefix@_pbb_before): Change TRACE_INSN_FINI to
	CGEN_TRACE_INSN_FINI, TRACE_INSN_INIT to CGEN_TRACE_INSN_INIT, and
	TRACE_INSN to CGEN_TRACE_INSN.
	(@prefix@_pbb_after): Change TRACE_INSN_FINI to CGEN_TRACE_INSN_FINI.

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

	* sim-events.c (ETRACE_P): Delete.
	(ETRACE): Change ETRACE_P to STRACE_EVENTS_P(sd).
	(update_time_from_event, sim_events_schedule_vtracef): Likewise.
	* sim-events.h (struct _sim_events): Delete trace member.
	* sim-trace.c (set_trace_option_mask): Delete trace_nr check and
	always set STATE_TRACE_FLAGS(sd)[trace_nr] element.

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

	* sim-trace.h (STRACE_ANY_P, STRACE_INSN_P, STRACE_DECODE_P,
	STRACE_EXTRACT_P, STRACE_LINENUM_P, STRACE_MEMORY_P, STRACE_MODEL_P,
	STRACE_ALU_P, STRACE_CORE_P, STRACE_EVENTS_P, STRACE_FPU_P,
	STRACE_VPU_P, STRACE_BRANCH_P, STRACE_SYSCALL_P): Define.

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

	* sim-trace.h (TRACE_USEFUL_MASK): Change to TRACE_xxx defines.

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

	* sim-trace.h (WITH_TRACE_P): New define.
	(WITH_TRACE_INSN_P, WITH_TRACE_DECODE_P, WITH_TRACE_EXTRACT_P,
	WITH_TRACE_LINENUM_P, WITH_TRACE_MEMORY_P, WITH_TRACE_MODEL_P,
	WITH_TRACE_ALU_P, WITH_TRACE_CORE_P, WITH_TRACE_EVENTS_P,
	WITH_TRACE_FPU_P, WITH_TRACE_VPU_P, WITH_TRACE_BRANCH_P,
	WITH_TRACE_SYSCALL_P, WITH_TRACE_DEBUG_P, STRACE_P, TRACE_P):
	Redefine to use WITH_TRACE_P.

2015-06-09  Mike Stump  <mrs@mrs.kithrup.com>

	* sim-events.c (sim_events_schedule_after_signal): Fix spelling
	mistake in call to sim_engine_abort.

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

	PR 18273
	* sim-fpu.c (INLINE_SIM_FPU): Fix static analysis warning by
	increasing parenthesis around casts to signed values.

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

	* gennltvals.sh: Add mcore support.
	* nltvals.def: Regenerate.

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

	* cgen.sh: Add +x permissions.
	* genmloop.sh: Likewise.
	* gentvals.sh: Likewise.
	* gennltvals.sh (newlibroot): New variable to hold the path to newlib.
	Change all uses of srcroot for newlib to newlibroot.

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

	* sim-base.h (SIM_CPU): New typedef.

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

	* cgen-engine.h (CIA_ADDR): Delete.
	* sim-base.h: Update sim_cia example.
	[!CIA_ADDR] (sim_cia): New typedef.

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

	* cgen-utils.c (cgen_rtx_error): Change CIA_GET to CPU_PC_GET.
	* sim-core.c (sim_core_read_buffer, sim_core_write_buffer): Likewise.
	* sim-engine.h (SIM_ENGINE_HALT_HOOK): Change CIA_SET to CPU_PC_SET.
	* sim-run.c (sim_engine_run): Change CIA_GET to CPU_PC_GET and
	CIA_SET to CPU_PC_SET.

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

	* Makefile.in (SIM_NEW_COMMON_OBJS): Add sim-cpu.o.
	* sim-main.h (STATE_CPU): Remove from comment and define.

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

	* acinclude.m4 (ACX_PKGVERSION): Change GDB to SIM.
	* configure: Regenerate.

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

	* sim-options.c: Include version.h.
	(OPTIONS_VERSION): New enum.
	(standard_options): Add "version".
	(standard_option_handler): Handle OPTIONS_VERSION.

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

	* Makefile.in (version.o): Change to using create-version.sh from gdb.
	(create-version.sh): Delete.

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-engine.o and sim-hrw.o.

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

	* run-sim.h, run.c: Delete.
	* tconfig.h (SIM_HAVE_PROFILE, SIM_HAVE_BIENDIAN): Delete.

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

	* config.in, configure: Regenerate.
	* Make-common.in (CSEARCH): Add $(ZLIBINC).
	(ZLIB, ZLIBINC): Define.
	(BFD_LIB): Add $(ZLIB).

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

	* cgen-mem.h (MEMOPS_INLINE): Change to EXTERN_INLINE.
	* cgen-ops.h (SEMOPS_INLINE): Likewise.

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

	* sim-arange.h (SIM_ARANGE_INLINE): Move above sim_addr_range_hit_p.
	(sim_addr_range_hit_p): Change INLINE to SIM_ARANGE_INLINE.
	* sim-inline.h (INLINE2): Define to gnu_inline when available.

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

	* sim-profile.c (profile_pc_event): Get pc via sim_pc_get.  Delete
	usage of STATE_WATCHPOINTS.
	(profile_pc_init): Delete STATE_WATCHPOINTS (sd)->pc check.  Change
	STATE_WATCHPOINTS (sd)->sizeof_pc to sizeof (sim_cia).

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

	* tconfig.h: Note SIM_HAVE_PROFILE is deprecated.

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

	* tconfig.h: Note SIM_HAVE_BIENDIAN is deprecated.

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

	* acinclude.m4 (SIM_AC_OPTION_HARDWARE): Move default option setting
	of enable_sim_hardware to AC_ARG_ENABLE.

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

	* acinclude.m4 (SIM_AC_OPTION_HARDWARE): Delete SIM_DV_SOCKSER_O.
	Add dv-sockser.o to sim_hw_objs.

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

	* dv-sockser.c: Include config.h.
	* dv-sockser.h: Include sim-inline.h.
	[HAVE_DV_SOCKSER]: Move all prototypes here.
	[!HAVE_DV_SOCKSER] (dv_sockser_status, dv_sockser_write,
	dv_sockser_write_buffer, dv_sockser_read): New stub functions.

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

	* gentmap.c, run.c: Convert old style prototypes.

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

	* acinclude.m4 (SIM_AC_COMMON): Call AH_BOTTOM.  Delete logic for
	symlinking tconfig.h to tconfig.in.
	* config.in, configure: Regenerate.
	* nrun.c, run.c, sim-basics.h: Delete tconfig.h include.
	* tconfig.in: Rename file ...
	* tconfig.h: ... here.

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

	* dv-socker.h (dv_sockser_install): Declare.
	* sim-module.c: Include config.h.
	[HAVE_DV_SOCKSER]: Include dv-sockser.h.
	(modules) [HAVE_DV_SOCKSER]: Add dv_sockser_install.
	* sim-module.h: Include gdb/remote-sim.h.

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

	* Make-common.in (BUILT_SRC_FROM_COMMON): Delete.
	(sim-inline.c): Delete rule.

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

	* Make-common.in (SIM_RUN_OBJS): Change to nrun.o.
	* run.c [SIM_USE_DEPRECATED_RUN_FRONTEND]: Issue a warning.
	[!SIM_USE_DEPRECATED_RUN_FRONTEND]: Throw an error.

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

	* sim-assert.h [!SIM_ASSERT, WITH_ASSERT]: Include sim-io.h.
	[!ASSERT, WITH_ASSERT]: Likewise.
	* sim-endian.c: Delete sim-io.h include.

2015-02-19  Mike Frysinger  <vapier@gentoo.org>

	* run-sim.h (sim_kill): Delete unused prototype.

2015-02-13  Chen Gang  <gang.chen.5i5j@gmail.com>

	* gentmap.c: Include "string.h".

2015-02-02  Chen Gang  <gang.chen.5i5j@gmail.com>

	* sim-options.c (sim_args_command): Call freeargv() when failure
	occurs.

2015-01-07  Joel Brobecker  <brobecker@adacore.com>

	* aclocal.m4, configure: Regenerate using automake 1.11.1.

2014-12-03  Joel Brobecker  <brobecker@adacore.com>

	* sim-io.c (sim_io_stat, sim_io_fstat): Adjust calls to "stat"
	and "fstat" callbacks by calls to "to_stat" and "to_fstat" (resp)
	callbacks following renaming in callback.h.
	* syscall.c (cb_syscall): Likewise.  Adjust calls to "lstat"
	callback by call to "to_lstat" callback

2014-08-28  Gary Benson  <gbenson@redhat.com>

	* sim-trace.h (debug_printf): New define.

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

	* configure: Regenerate.

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

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

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

	* sim-command.c (sim_do_command): Add const to cmd.
	* sim-options.c (sim_args_command): Add const to cmd.
	* sim-options.h (sim_args_command): Add const to cmd.

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

	* sim-hload.c (sim_load): Add const to prog.
	* sim-load.c (sim_load_file): Likewise.
	* sim-utils.c (sim_analyze_program): Likewise.
	* sim-utils.h (sim_analyze_program): Likewise.
	(sim_load_file): Likewise.

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

	* acinclude.m4 (build_warnings): Copy from gdb/configure.ac.
	* callback.c (system): Delete unused prototype.
	(os_init): Likewise.
	(os_shutdown): Likewise.
	(os_unlink): Likewise.
	(os_time): Likewise.
	(os_system): Likewise.
	(os_rename): Likewise.
	(os_write_stdout): Likewise.
	(os_flush_stdout): Likewise.
	(os_write_stderr): Likewise.
	(os_flush_stderr): Likewise.
	(os_write): Likewise.
	(os_read_stdin): Likewise.
	(os_read): Likewise.
	(os_open): Likewise.
	(os_lseek): Likewise.
	(os_isatty): Likewise.
	(os_get_errno): Likewise.
	(os_close): Likewise.
	(os_vprintf_filtered): Likewise.
	(os_evprintf_filtered): Likewise.
	(os_error): Likewise.
	(fdmap): Likewise.
	(fdbad): Likewise.
	(wrap): Likewise.
	(wrap): Change to new style prototype.
	(fdbad): Likewise.
	(fdmap): Likewise.
	(os_close): Likewise.
	(os_poll_quit): Likewise.
	(os_get_errno): Likewise.
	(os_isatty): Likewise.
	(os_lseek): Likewise.
	(os_open): Likewise.
	(os_read): Likewise.
	(os_read_stdin): Likewise.
	(os_write): Likewise.
	(os_write_stdout): Likewise.
	(os_flush_stdout): Likewise.
	(os_write_stderr): Likewise.
	(os_flush_stderr): Likewise.
	(os_rename): Likewise.
	(os_system): Likewise.
	(os_time): Likewise.
	(os_unlink): Likewise.
	(os_stat): Likewise.
	(os_fstat): Likewise.
	(os_lstat): Likewise.
	(os_ftruncate): Likewise.
	(os_truncate): Likewise.
	(os_pipe): Likewise.
	(os_pipe_empty): Likewise.
	(os_pipe_nonempty): Likewise.
	(os_shutdown): Likewise.
	(os_init): Likewise.
	(cb_read_target_syscall_maps): Likewise.
	(cb_target_to_host_syscall): Likewise.
	(cb_host_to_target_errno): Likewise.
	(cb_target_to_host_open): Likewise.
	(cb_store_target_endian): Likewise.
	(cb_host_to_target_stat): Likewise.
	* sim-hload.c (sim_load): Change to new style prototype.
	* sim-load.c (sim_load_file): Change to new style prototype.
	(report_transfer_performance): Likewise.
	(xprintf_bfd_vma): Likewise.
	* syscall.c (cb_get_string): Change to new style prototype.
	(get_path): Likewise.
	(cb_syscall): Likewise.

2013-10-15  Hans-Peter Nilsson  <hp@axis.com>

	* create-version.sh: Align parameters to match those of
	../../gdb/common/create-version.sh.
	* Make-common.in (srcsim): New variable.
	(version.c): Adjust call to create-version.sh as per above.

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

	* configure: Regenerate.

2013-09-03  Mike Stump  <mikestump@comcast.net>

	* sim-options.c (complete_option_list): Mark text and word const.

2013-06-28  Tom Tromey  <tromey@redhat.com>

	* Make-common.in (version.c): Use version.in, not
	common/version.in.
	* create-version.sh: Likewise.

2013-06-24  Joel Brobecker  <brobecker@adacore.com>

	* create-version.sh: New script. Adapted from
	gdb/commong/create-version.sh.
	* Make-common.in (version.c): Update rule dependencies,
	and re-implement using create-version.sh.

2013-06-21  Nick Clifton  <nickc@redhat.com>

	* gennltvals.sh: Add msp430 support.
	* nltvals.def: Regenerate.

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

	* acinclude.m4: Replace maintainer-mode code with AM_MAINTAINER_MODE.
	* aclocal.m4, configure: Regenerate.

2013-05-10  Freddie Chopin  <freddie_chopin@op.pl>

	PR build/15414:
	* acinclude.m4 (SIM_AC_OPTION_WARNINGS): Do not use
	-Wformat-nonliteral with -Wno-format.

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

	* acinclude.m4: Regenerate.

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

	* acinclude.m4: Add SIM_DV_SOCKSER_O which is empty  on hosts
	which do not support dv-sockser.o.  Add always as option to
	first argument to SIM_AC_OPTION_HARDWARE. Fail if hardware
	is always required to be enabled by simulator.

2012-08-28  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>

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

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

	* acinclude.m4 (SIM_AC_COMMON): Define PACKAGE.
	* config.in, configure: Regenerate.

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

	* sim-signal.h (sim_signal_to_target): Rename to ...
	(sim_signal_to_gdb_signal): ... this.
	* sim-signal.c (sim_signal_to_target): Rename to ...
	(sim_signal_to_gdb_signal): ... this.
	* sim-reason.c (sim_stop_reason): Adjust to rename.

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

	PR gdb/7205

	Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.

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

	PR gdb/7205

	Replace target_signal with gdb_signal throughout.

2012-05-18  Nick Clifton  <nickc@redhat.com>

	PR 14072
	* callback.c: Include config.h before system header files.
	* cgen-trace.c: Likewise.
	* cgen-utils.c: Likewise.
	* gentmap.c: Likewise.

2012-04-02  Mike Frysinger  <vapier@gentoo.org>

	* hw-ports.c (hw_port_decode): Change "Unreconized" to "Unrecognized".

2012-03-28  Rathish C  <rathish.c@kpitcummins.com>

	* sim-trace.c: Update the function prototype of save_data_size.
	Move the enum data_fmt from here...
	* sim-trace.h: ...to here.
	Add function prototype of save_data.

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

	* sim-core.h (sim_core_trans_addr): Add prototype.

2012-03-24  Hans-Peter Nilsson  <hp@axis.com>

	* nrun.c: Add #ifdef HAVE_CONFIG_H and associated includes stanza
	missing in last change.

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

	* acinclude.m4 (SIM_AC_COMMON): Call AC_USE_SYSTEM_EXTENSIONS.
	* nrun.c: Include string.h/strings.h.
	* aclocal.m4, config.in, configure: Regenerate.

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

	* acinclude.m4 (SIM_AC_OPTION_WARNINGS): Copy AC_ARG_ENABLE(werror),
	WERROR_CFLAGS, and build_warnings from gdb/configure.ac.  Comment
	out -Werror initialization.

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

	* Make-common.in (TAGS): Change a-z to [:lower:].
	* acinclude.m4 (sim-trace): Likewise.
	* gennltvals.sh: Change A-Z0-9 to [:upper:][:digit:].
	Change A-Za-z0-9 to [:alnum:].

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

	* nrun.c (main): Display strsignal of sigrc.

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

	* Makefile.in (abs_srcdir): Declare.
	(srcroot): Define in terms of abs_srcdir.
	(headers): Change srcdir to abs_srcdir.

2012-01-02  Joel Brobecker  <brobecker@adacore.com>

	* dv-sockser.h, sim-assert.h, sim-fpu.c: Reformat the copyright
	header.

2011-12-19  Joel Brobecker  <brobecker@adacore.com>

	* Make-common.in (hw-config.h): Work around bug in Solaris 2.8
	system bourne shell.

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

	* syscall.c (cb_get_string): Rename from "get_string".
	(get_path): Rename get_string call to cb_get_string.

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

	* Make-common.in (VPATH): Add $(srccom).
	(DEP): Delete.
	(DEPMODE, DEPDIR, depcomp, COMPILE.pre, COMPILE.post, COMPILE,
	POSTCOMPILE): New variables.
	(.c.o): Replace recipe with call to $(COMPILE) and $(POSTCOMPILE).
	Include dependency files, when using GNU Make.  Delete all
	dependency-only rules.
	* aclocal.m4: Include ../../config/depstand.m4.  Call
	ZW_CREATE_DEPDIR and ZW_PROG_COMPILER_DEPENDENCIES.
	(MAKE, GMAKE): New substs.

2011-11-07  Mike Frysinger  <vapier@gentoo.org>

	PR sim/13161
	* configure.ac (AC_CHECK_FUNCS): Add posix_fallocate.
	* configure, config.in: Regenerate.
	* dv-cfi.c (attach_cfi_regs): Check for HAVE_POSIX_FALLOCATE.

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

	* acinclude.m4: Call AC_CHECK_LIB when $hardware contains cfi.

2011-10-18  John Wehle  <john@feith.com>  (tiny patch)

	* sim-profile.c (profile_info): Only print the title once.

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

	* acinclude.m4: Rename from aclocal.m4.
	* aclocal.m4: Regenerate.

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

	* aclocal.m4: Change AC_PREREQ comment to 2.64.
	* common.m4: Delete.
	* configure.ac: Change AC_PREREQ to 2.64.  Replace AC_CONFIG_HEADER
	call and common.m4 include with SIM_AC_COMMON(cconfig.h).
	* configure: Regenerate.

2011-10-14  Alexey Makhalov  <makhaloff@gmail.com>

	* sim-alu.h (ALU32_AND): Clear carry flag.
	(ALU32_AND): Clear carry flag.

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

	* dv-cfi.c: Include stdbool.h.

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

	* dv-cfi.c: Replace devices.h include with hw-base.h and hw-main.h.

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

	* aclocal.m4 (SIM_AC_COMMON): Call AM_ZLIB, ACX_PKGVERSION, and
	ACX_BUGURL.  Define PKGVERSION and REPORT_BUGS_TO.

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

	* sim-command.c: Include sim-options.h.

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

	* aclocal.m4: Move sinclude comment after AC_INIT comment.

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

	* aclocal.m4 (SIM_AC_COMMON): Call AC_REQUIRE on AC_PROG_CC.
	Delete direct call to AC_PROG_CC.

2011-07-05  Mike Frysinger  <vapier@gentoo.org>

	* sim-command.c: New file.
	* Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-command.o.
	(sim-command.o): New rule.

2011-05-27  Mike Frysinger  <vapier@gentoo.org>

	* sim-options.c (standard_option_handler): Remove arg[0] check
	when freeing simulator_sysroot.  Only strdup arg when arg[0] is
	not an empty string, otherwise assign "" back to it.

2011-05-26  Mike Frysinger  <vapier@gentoo.org>

	* nltvals.def: Regenerate to include Blackfin syscalls again.

2011-05-25  Mike Frysinger  <vapier@gentoo.org>

	* sim-trace.c (OPTION_TRACE_SYSCALL): New enum.
	(trace_options): Handle "trace-syscall" with OPTION_TRACE_SYSCALL.
	(trace_option_handler): Handle OPTION_TRACE_SYSCALL.
	(trace_idx_to_str): Likewise.
	* sim-trace.h (TRACE_SYSCALL_IDX): New enum.
	(TRACE_syscall): Define.
	(WITH_TRACE_SYSCALL_P): Likewise.
	(TRACE_SYSCALL_P): Likewise.

2011-05-23  Mike Frysinger  <vapier@gentoo.org>

	* dv-glue.c (hw_glue_finish): Move "name" to function scope and
	remove now-unnecessary sub-scope for glue->type setting.
	Check to see if the "reg" property exists before we use it, and
	if it doesn't exist, error out for "glue" devices.

2011-05-23  Mike Frysinger  <vapier@gentoo.org>

	* dv-glue.c (hw_glue_finish): Set type to glue_or when name is
	glue-or, and set type to glue_xor when name is glue-xor.
	(hw_glue_port_event): Return immediately when type is glue_io
	or unmatched.  Handle glue_or and glue_xor types.  Move HW_TRACE
	and hw_port_event calls from glue_and to end of function.

2011-05-11  Mike Frysinger  <vapier@gentoo.org>

	* callback.c, dv-pal.c, dv-sockser.c, hw-base.c, hw-device.c,
	hw-instances.c, hw-ports.c, hw-properties.c, hw-tree.c, sim-abort.c,
	sim-arange.c, sim-config.c, sim-core.c, sim-engine.c, sim-events.c,
	sim-hw.c, sim-io.c, sim-memopt.c, sim-options.c, sim-profile.c,
	sim-resume.c, sim-stop.c, syscall.c: Add space before parenthesis
	around function arguments.

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

	* sim-options.c (complete_option_list, sim_complete_command):
	New functions.

2011-04-02  Mike Frysinger  <vapier@gentoo.org>

	* dv-glue.c: Fix up style.

2011-04-02  Mike Frysinger  <vapier@gentoo.org>

	* hw-alloc.c (hw_alloc_data): Adjust brace.
	* hw-base.c (hw_base_data): Likewise.
	(generic_hw_unit_decode): Fix indentation.
	* hw-device.h (_hw_unit, enum, hw): Adjust braces.
	* hw-events.c (hw_event, hw_event_data): Likewise.
	* hw-handles.c (hw_handle_mapping, hw_handle_data): Likewise.
	* hw-instances.c (hw_instance_data): Likewise.
	* hw-instances.h (hw_instance): Likewise.
	* hw-main.h (hw_descriptor, enum): Likewise.
	* hw-ports.c (hw_port_edge, hw_port_data, empty_hw_ports): Likewise.
	* hw-ports.h (hw_port_descriptor): Likewise.
	* hw-properties.c (hw_property_data): Likewise.
	* hw-properties.h (enum, hw_property, _ihandle_runtime_property_spec,
	_range_property_spec, _reg_property_spec): Likewise.
	* hw-tree.c (_name_specifier, printer): Likewise.
	(split_device_specifier, parse_string_property, hw_tree_traverse,
	print_size, print_reg_property, print_string, print_properties):
	Fix indentation.

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

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Add cfi to default list.
	* Make-common.in (dv-cfi.o): New rule.
	* dv-cfi.c, dv-cfi.h: New files.

2011-03-21  Kevin Buettner  <kevinb@redhat.com>

	* gennltvals.sh: Search sys/_default_fcntl.h, in addition to
	fcntl.h and sys/fcntl.h, for constants.
	* nltvals.def: Regenerate.
	* sim-io.c (sim_io_stat, sim_io_fstat): New functions.
	* sim-io.h (sys/types.h, sys/stat.h): Include.
	(sim_io_stat, sim_io_fstat): Declare.

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

	* callback.c, cgen-engine.h, dv-core.c, dv-glue.c, dv-pal.c,
	hw-base.c, hw-device.c, hw-device.h, hw-handles.c, hw-instances.c,
	hw-ports.c, hw-ports.h, hw-properties.c, hw-tree.c, nrun.c,
	run-sim.h, run.c, sim-alu.h, sim-assert.h, sim-base.h, sim-basics.h,
	sim-config.c, sim-core.c, sim-core.h, sim-engine.h, sim-events.c,
	sim-events.h, sim-fpu.c, sim-hw.c, sim-inline.h, sim-load.c,
	sim-memopt.c, sim-n-core.h, sim-options.c, sim-profile.c,
	sim-signal.c, sim-trace.c, sim-trace.h, sim-utils.c, sim-watch.c,
	syscall.c: Trim trailing whitespace.

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

	* gennltvals.sh: Handle bfin targets.
	* nltvals.def: Regenerate.

2011-02-25  Kevin Buettner  <kevinb@redhat.com>

	* callback.c (fdbad): Return EBADF rather than EINVAL for bad
	file descriptors.

2011-02-14  Mike Frysinger  <vapier@gentoo.org>

	* hw-alloc.c (hw_alloc_data): Delete zalloc_p.
	(hw_zalloc, hw_malloc): Delete zalloc_p reference.
	(hw_free): Drop zfree logic and always call free.
	* hw-base.c (hw_delete): Change zfree to free.
	* hw-handles.c (hw_handle_remove_ihandle): Likewise.
	(hw_handle_remove_phandle): Likewise.
	* hw-instances.c (hw_instance_delete): Likewise.
	* hw-tree.c (parse_reg_property): Likewise.
	(parse_ranges_property): Likewise.
	(parse_string_property): Likewise.
	* sim-core.c (sim_core_uninstall): Likewise.
	* sim-cpu.c (sim_cpu_free_all): Likewise.
	* sim-hw.c (sim_hw_uninstall): Likewise.
	* sim-memopt.c (do_memopt_delete): Likewise.
	(sim_memory_uninstall): Likewise.
	* sim-module.c (sim_module_uninstall): Likewise.
	* sim-options.c (sim_parse_args): Likewise.
	* sim-profile.c (profile_pc_cleanup): Likewise.
	(profile_uninstall): Likewise.
	* sim-watch.c (do_watchpoint_delete): Likewise.
	* sim-utils.c (zfree): Delete.
	(sim_state_free): Change zfree to free.
	* sim-utils.h (zfree): Delete.

2011-02-13  Mike Frysinger  <vapier@gentoo.org>

	* sim-events.h (_sim_events.time_from_event): Change type to signed64.

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

	* sim-hw.c (sim_hw_uninstall): Uncomment hw_tree_delete.

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

	* sim-module.c (sim_pre_argv_init): Return SIM_RC_FAIL when asprintf
	fails.
	* sim-options.c (sim_parse_args): Issue an error and return SIM_RC_FAIL
	when asprintf fails.
	* sim-utils.c (sim_do_commandf): Issue an error and return when
	asprintf fails.
	* sim-watch.c (sim_watchpoint_install): Return SIM_RC_FAIL when
	asprintf fails.

2011-01-11  Mike Frysinger  <vapier@gentoo.org>

	* sim-memopt.c (do_memopt_add): Set nr_bytes to s.st_size before
	bytes has been calculated and when mmap_next_fd is valid and
	nr_bytes is 0.
	(memory_option_handler): Allow missing size when mmap_next_fd is
	valid.

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

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Set $hardware to $2 when $2 is
	not empty, and always append $3 to $hardware.

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

	* hw-device.h (hw_abort, hw_vabort, hw_halt): Add noreturn attribute.
	* sim-hw.h (sim_hw_abort): Likewise.

2011-01-05  Mike Frysinger  <vapier@gentoo.org>

	* sim-load.c (sim_load_file): Change buffer type to unsigned char *.

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

	* run.1: Copyright year update.

2010-12-28  Mike Frysinger  <vapier@gentoo.org>

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

010-12-28  Mike Frysinger  <vapier@gentoo.org>

	* hw-alloc.h (HW_NZALLOC): Change ME,TYPE,N to me,type,n.

2010-12-15  Mike Frysinger  <vapier@gentoo.org>

	* sim-memopt.c (OPTION_MAP_INFO): Define.
	(memory_options): Handle --map-info.
	(memory_option_handler): Handle OPTION_MAP_INFO.

2010-11-22  Mike Frysinger  <vapier@gentoo.org>

	* sim-profile.c (PROFILE_PC_FREQ, PROFILE_PC_NR_BUCKETS,
	PROFILE_PC_SHIFT, PROFILE_PC_START, PROFILE_PC_END,
	PROFILE_INSN_COUNT): Add stubs when profile is disabled.

2010-11-22  Mike Frysinger  <vapier@gentoo.org>

	* sim-core.c (WITH_HW): Add device casts to device_error,
	device_io_read_buffer, and device_io_write_buffer.

2010-11-16  Mike Frysinger  <vapier@gentoo.org>

	* dv-sockser.c (dv_sockser_write_buffer): New function.
	(dv_sockser_write): Rewrite to use dv_sockser_write_buffer.
	* dv-sockser.h (dv_sockser_write_buffer): New prototype.

2010-10-07  Hans-Peter Nilsson  <hp@axis.com>

	* callback.c (os_lseek): Call wrap on lseek result.

2010-05-26  Ozkan Sezer  <sezeroz@gmail.com>

	* dv-sockser.c (dv_sockser_init): Check error return from socket()
	call by its equality to -1 not by it being negative.
	(connected_p): Likewise for accept() call.

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

	* sim-fpu.c (sim_fpu_zero, sim_fpu_qnan): Add 0 initializers.

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

	* profile.c (sim_profile_print_bar): Add cpu argument.

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

	* sim-profile.h (sim_profile_print_bar): Use sim_cpu, not SIM_CPU.

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

	* sim-profile.c (profile_vprintf, profile_printf): New functions.
	(profile_print_pc): Convert sim_io_printf to profile_printf.
	(profile_print_insn): Likewise.
	(profile_print_memory): Likewise.
	(profile_print_core): Likewise.
	(profile_print_model): Likewise.
	(sim_profile_print_bar): Likewise.
	(profile_print_speed): Likewise.
	(profile_print_addr_ranges): Likewise.
	(profile_info): Likewise.
	* sim-profile.h (sim_profile_print_bar): Add cpu argument.

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

	* sim-model.c (OPTION_MODEL): Convert to enum.
	(OPTION_MODEL_INFO): New enum.
	(model_options): Add model-info/info-model entries.
	(model_option_handler): Handle OPTION_MODEL_INFO.

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

	* dv-sockser.h (DV_SOCKSER_DISCONNECTED): Define.
	* dv-sockser.c (dv_sockser_status): Set DV_SOCKSER_DISCONNECTED
	initially.

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

	* sim-hrw.c (sim_write): Add const to buf arg.
	* sim-utils.h (sim_write_fn): Likewise.

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

	* sim-profile.h (PROFILE_BRANCH_TAKEN, PROFILE_BRANCH_UNTAKEN): New
	defines.

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

	* dv-core.c (dv_core_descriptor): Add NULL initializer.
	* dv-glue.c (hw_glue_ports, dv_glue_descriptor): Likewise.
	* dv-pal.c (hw_pal_ports, dv_pal_descriptor): Likewise.
	* dv-sockser.c (sockser_options): Likewise.
	* hw-ports.c (empty_hw_ports): Likewise.
	* sim-hw.c (hw_options): Likewise.
	* sim-model.c (model_options): Likewise.
	* sim-options.c (standard_options): Likewise.
	* sim-profile.c (profile_options): Likewise.
	* sim-trace.c (trace_options): Likewise.
	* sim-watch.c (watchpoint_options): Likewise.

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

	* sim-options.c (dup_arg_p): Add "const" to the "arg" argument,
	the local "arg_table" variable, and the xmalloc cast.

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

	* sim-fpu.c (sim_fpu_print_status): Add const markings to local
	"prefix" var.
	(sim_fpu_print_func): Add const markings to format buffer.

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

	* sim-fpu.c (sim_fpu_print_status): Remove duplicate break statements.

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

	* sim-trace.c (save_data): Add const markings to "buf" argument.

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

	* sim-options.c (standard_option_handler): Add const markings to
	local "type" var.

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

	* hw-ports.h: Fix spelling typos.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Check for socklen_t.
	* configure, config.in: Regenerated.
	* dv-sockser.c (connected_p): Change addrlen type to socklen_t.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-utils.c (sim_io_eprintf_cpu): Use %s with printf string.
	* sim-hw.c (hw_option_handler): Likewise.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-watch.c (watchpoint_type_to_str): Add const to return.
	(interrupt_nr_to_str): Likewise.
	(default_interrupt_names): Add const to pointer type.
	(sim_watchpoint_install): Add const to prefix.
	* sim-watch.h (struct _sim_watchpoints): Add const to interrupt_names.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-core.c (sim_core_read_buffer): Change raddr to address_word.
	(sim_core_write_buffer): Likewise.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-trace.c (trace_option_handler): Move cpu_nr decl behind
	the SIM_HAVE_ADDR_RANGE define.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-core.h (device_error): Add const to message, and add printf
	format attribute.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* sim-profile.c (profile_print_addr_ranges): Wrap with the
	SIM_HAVE_ADDR_RANGE define.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* dv-glue.c (hw_glue_ports): Swap static and const.

2010-03-30  Mike Frysinger  <vapier@gentoo.org>

	* nrun.c (usage): Use void in definition.
	* sim-options.c (dup_arg_p): Convert old-style function definition.
	(sim_parse_args): Likewise.
	(sim_print_help): Likewise.
	* sim-trace.c (set_trace_option_mask): Likewise.
	(set_trace_option): Likewise.
	* sim-utils.c (sim_analyze_program): Likewise.
	(sim_elapsed_time_get): Likewise.
	(sim_elapsed_time_since): Likewise.

2010-03-22  Mike Frysinger  <vapier@gentoo.org>

	* sim/common/sim-options.c (enum): Remove SIM_HAVE_BIENDIAN ifdef.
	(standard_options): Likewise.
	(standard_option_handler): Likewise.

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

	* hw-ports.c (TRACE): Delete.
	* hw-properties.c (TRACE): Delete.
	(hw_find_ihandle_runtime_property): Change TRACE to HW_TRACE.
	(hw_find_integer_property): Likewise.
	(hw_find_integer_array_property): Likewise.
	(hw_add_duplicate_property): Likewise.

2010-03-15  Mike Frysinger  <vapier@gentoo.org>

	* hw-properties.h (hw_add_boolean_property): Rename "bool" to
	"boolean".

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

	* sim-model.c: Include sim-model.h

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

	* sim-base.h: Declare sim_state.cpu as a pointer in the comment.  Drop
	& from the STATE_CPU() examples.

2010-01-24  Doug Evans  <dje@sebabeach.org>

	* cgen-accfp.c (fextsfdf): New arg how.  All callers updated.
	(ftruncdfsf, floatsisf, flostsidf, ufloatsisf, fixsfsi, fixdfsi,
	ufixsfsi): Ditto.
	* cgen-fpu.h (CGEN_FPCONV_KIND): New enum.
	(struct cgen_fp_ops): Update signatures of floating point conversion
	operations.

	* Make-common.in (CGEN_SIM_DEPS): Define.
	(CGEN_INCLUDE_DEPS): Use it.
	(CGEN_MAIN_CPU_DEPS): Simplify.

2010-01-22  Doug Evans  <dje@sebabeach.org>

	* cgen-ops.h (SUBWORDXFSI): Fix word ordering.
	(SUBWORDTFSI, JOINSIDI): Ditto.

2010-01-05  Doug Evans  <dje@sebabeach.org>

	* cgen-types.h (SETDI): Delete, unused.

2009-12-02  Doug Evans  <dje@sebabeach.org>

	* cgen-engine.h: Remove duplicated comment.

2009-11-23  Doug Evans  <dje@sebabeach.org>

	* cgen-engine.h (EXTRACT_MSB0_SINT): Renamed from EXTRACT_MSB0_INT.
	(EXTRACT_LSB0_SINT): Renamed from EXTRACT_LSB0_INT.

2009-11-22  Doug Evans  <dje@sebabeach.org>

	* cgen-engine.h (EXTRACT_MSB0_LGSINT, EXTRACT_MSB0_LGUINT): Define.
	(EXTRACT_LSB0_LGSINT, EXTRACT_LSB0_LGUINT): Define.
	(EXTRACT_FN, SEMANTIC_FN): Use CGEN_INSN_WORD in prototype
	instead of CGEN_INSN_INT.

	* cgen-trace.h (trace_extract): Add cast to fix warning.

2009-11-05  Doug Evans  <dje@sebabeach.org>

	* cgen-mem.h (DECLARE_GETT): Don't inline.
	(DECLARE_SETT): Ditto.

2009-10-15  Joel Sherrill <joel.sherrill@oarcorp.com>

	* sim-inline.h: Fix spelling error.

2009-10-02  Ralf Corsepius <ralf.corsepius@rtems.org>

	* Make-common.in: Add datarootdir.

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

	* aclocal.m4 (SIM_CHECK_MEMBER, SIM_CHECK_MEMBERS)
	(SIM_CHECK_MEMBERS_1): Remove.
	* configure.ac: Replace SIM_CHECK_MEMBERS call with equivalent
	AC_CHECK_MEMBERS one.
	* configure: Regenerate.

	* aclocal.m4 (SIM_CHECK_MEMBER): Use AU_ALIAS to define, not defn.
	* configure: Regenerate.

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

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

	* aclocal.m4 (SIM_CHECK_MEMBER): Replace definition with
	definition of AC_CHECK_MEMBER.

	* aclocal.m4: m4_include toplevel config/override.m4.
	* configure: Regenerate.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (datarootdir): New variable.

2009-07-07  Doug Evans  <dje@sebabeach.org>

	* Make-common.in (CPU_DIR): Define.

2009-07-06  Doug Evans  <dje@sebabeach.org>

	* Make-common.in (CGEN_CPU_EXTR,CGEN_CPU_READ): Pass canonical
	identifiers for file types rather than encoding internal
	implementation details of cgen.sh.
	(CGEN_CPU_WRITE,CGEN_CPU_SEM,CGEN_CPU_SEMSW): Ditto.
	* cgen.sh: Add support for parallel makes.
	Rewrite cpu/decode handling to avoid generating "extrafiles" twice.

2009-05-18  Jon Beniston <jon@beniston.com>

	* gennltvals.sh: Add lm32 target.
	* nltvals.def: Add lm32 syscall definitions.

2009-03-19  J"orn Rennecke  <joern.rennecke@arc.com>  (tiny change)

	Speed up simulator startup:
	* sim-utils.c (zalloc): Use xcalloc.

2009-01-07  Hans-Peter Nilsson  <hp@axis.com>

	* cgen-ops.h (ADDQI, SUBQI, MULQI, NEGQI, ABSQI, ADDHI, SUBHI)
	(MULHI, NEGHI, ABSHI, ADDSI, SUBSI, MULSI, NEGSI, ABSSI, ADDDI)
	(SUBDI, MULDI, NEGDI, ABSDI): Cast arguments to the unsigned type
	variant; UQI, UHI, USI, UDI, and cast the result to the signed
	type, QI, HI, SI, DI.

	* callback.c (os_error): Mark as being a noreturn function.
	* sim-io.h (sim_io_error): Similar for sim_io_error.

2008-11-12  Joel Sherrill <joel.sherrill@oarcorp.com>

	* aclocal.m4:  Fix underquoting of function names.

2008-10-21  Julian Brown  <julian@codesourcery.com>

	* Make-common.in (run$(EXEEXT)): Add LDFLAGS.

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

	* common.m4: Add test for libz and zlib.h.
	* configure: Regenerate to track ../common/common.m4 changes.
	* config.in: Ditto.

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

	* aclocal.m4: Include ../../config/acx.m4.
	* common.m4: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerate.
	* Make-common.in (LIB_OBJS): Add version.o.
	(version.c, version.o): New rules.
	* run.c: Include version.h.
	(usage): Add help parameter. Print output either to stdout or
	stderr depending on that parameter.
	(print_version): New.
	(main): Check for --help and --version.
	* run-sim.h (sim_target_display_usage): Add help parameter.
	* version.h: New.

2008-04-14  Hans Kester  <kester.hans@gmail.com>

	* sim-signal.c: Define missing signals for _WIN32.

2008-02-12  M Ranga Swami Reddy  <MR.Swami.Reddy@nsc.com>

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

2007-10-11  Jesper Nilsson  <jesper.nilsson@axis.com>

	* callback.c (cb_is_stdin, cb_is_stdout, cb_is_stderr): Add functions.
	* syscall.c (cb_syscall): Test for stdin/out/err, not just fd 0/1/2.

2007-08-10  Nick Clifton  <nickc@redhat.com>

	* sim-memopt.c (memory_options): Mention that the
	--memory-size switch accepts suffixes.
	(parse_size): Handle a suffix on the size value.
	* sim-options.c (standard_options): Mention that the mem-size
	switch accepts suffixes.
	(standard_option_handler): Handle a suffix on the size value.

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

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

2006-11-07  Thiemo Seufer  <ths@mips.com>

	* gentmap.c: Fix compile time warning.

2006-11-07  Thiemo Seufer  <ths@mips.com>

	* sim-base.h (text_start, text_end, start_addr): Use bfd_vma type
	for bfd text addresses.

2006-08-29  Thiemo Seufer  <ths@mips.com>
	    Nigel Stephens  <nigel@mips.com>

	* sim-fpu.c (pack_fpu): Handle QUIET_NAN correctly for
	SIM_QUIET_NAN_NEGATED.

2006-08-29  Nigel Stephens  <nigel@mips.com>

	* sim-profile.c (profile_pc_init): Initialise default profiling
	frequency to a prime number.
	(profile_print_pc): Convert gmon.out sample data into target
	byte order.

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

	* aclocal.m4: Pass ../../intl to ZW_GNU_GETTEXT_SISTER_DIR.
	* common.m4: Likewise.
	* configure: Regenerated.

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

	* aclocal.m4: Use ZW_GNU_GETTEXT_SISTER_DIR.
	* configure: Regenerated.

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

	* Make-common.in: Replace INTLLIBS and INTLDEPS with LIBINTL
	and LIBINTL_DEP everywhere.
	(CSEARCH): Use INCINTL.
	* aclocal.m4: Use ZW_GNU_GETTEXT_SISTER_DIR.  Include new
	gettext macros.
	* configure: Regenerated.

2006-03-29  Hans-Peter Nilsson  <hp@axis.com>

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Correct duplicate-
	option-contents test.

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

	* sim-signal.c (sim_signal_to_target): Fix typos.

	* sim-reason.c (sim_stop_reason): Use
	sim_signal_to_target, not sim_signal_to_host.
	* sim-signal.c (sim_signal_to_host): Fix typo.
	(sim_signal_to_target): New function.

2005-07-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* sim-load.c (xprintf, eprintf): Remove fallout from ANSI_PROTOTYPES
	change.

2005-07-08  Ian Lance Taylor  <ian@airs.com>

	* sim-fpu.c (sim_fpu_abs): Always clear the sign bit.

	* sim-fpu.c (pack_fpu): If SIM_QUIET_NAN_NEGATED is defined, use a
	different fraction for a quiet NaN.
	(unpack_fpu): Likewise.

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

	* callback.c: Remove ANSI_PROTOTYPES conditional code.
	* sim-load.c: Likewise.
	* syscall.c: Likewise.

2005-05-24  Corinna Vinschen  <vinschen@redhat.com>

	* Make-common.in (LIBDEPS): Correctly use INTLDEPS for dependency
	check.

2005-05-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* Make-common.in (install-common, installdirs): Honor $DESTDIR.

2005-04-20  Manoj Iyer  <manjo@austin.ibm.com>

	* sim-types.h: Changed unsigned32 and unsigned64 to signed32
	and signed64 for __ALPHA__.

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

	* aclocal.m4 Include ../../gettext.m4.
	(CY_WITH_NLS, CY_GNU_GETTEXT, AM_PATH_PROG_WITH_TEST)
	(AM_LC_MESSAGES): Remove.
	* configure: Regenerate.

2005-02-28  Jim Blandy  <jimb@redhat.com>

	* aclocal.m4 (SIM_AC_OPTION_WARNINGS): Don't include
	-Wuninitialized in the default list of build warnings if CFLAGS is
	set, and doesn't include -O.  (Using -Wuninitialized without
	optimization produces a warning, which interferes with compilation
	with -Werror.)

2005-02-21  Jim Blandy  <jimb@redhat.com>

	* callback.c (os_fstat): Don't declare 't' unless it's used.

2005-02-09  Jim Blandy  <jimb@redhat.com>

	* Make-common.in (CGEN): Load guile.scm, and include a trailing
	'-s' argument.
	(CGEN_FLAGS_TO_PASS): Include single quotes around the reference
	to $(CGEN), to ensure that the command substitution happens where
	the variable is referenced in the submake, not when the submake's
	arguments are expanded.
	(cgen.sh): Be prepared for the 'cgen' argument to contain spaces.
	(arch, cpu, decode, cpu-decode, defs, desc): Place the name of the
	application Scheme script directly after ${cgen}; don't precede it
	with a -s.

2005-01-28  Hans-Peter Nilsson  <hp@axis.com>

	* syscall.c (cb_syscall) <case CB_SYS_pipe>: New case.
	* callback.c [HAVE_LIMITS_H]: Include limits.h.
  	Include libiberty.h.
	(os_close, os_read, os_write, os_fstat, os_ftruncate): Support fd
	being either end of a pipe.
	(os_pipe, os_pipe_empty, os_pipe_nonempty): New functions.
	(os_shutdown): Clear pipe state.
	(default_callback): Initialize new members.

	* callback.c (default_callback): Initialize target_endian.
	(cb_store_target_endian): Renamed from store, new first parameter
	host_callback *cb, drop last parameter big_p.  Take endianness
	from cb.
	(cb_host_to_target_stat): Change to use cb_store_target_endian.
	Remove variable big_p.
	* nrun.c (main): Initialize default_callback.target_endian.

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

	* configure.ac: Replace SIM_AC_COMMON with sinclude of common.m4.
	Add explicit call to AC_CONFIG_HEADER.
	* common.m4: Delete call to AC_CONFIG_HEADER, update usage.
	* configure: Re-generate.

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

	* common.m4: New file, based on of aclocal.m4.

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

	* aclocal.m4 (SIM_AC_OUTPUT): Rewrite to use 2.59 macros.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

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

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* aclocal.m4 (SIM_AC_COMMON): Delete call to AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

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

	* syscall.c (cb_syscall) <case CB_SYS_truncate>
	<case CB_SYS_ftruncate>: New cases.

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

	* syscall.c (cb_syscall) <case CB_SYS_lstat>: New case.
	(cb_syscall) <case CB_SYS_rename>: New case.
	* callback.c (os_lstat): New function.

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

	* run.1: Document --sysroot=filepath.
	* sim-options.c (STANDARD_OPTIONS): New member OPTION_SYSROOT.
	(standard_options): Support --sysroot=<path>.
	(standard_option_handler): Handle OPTION_SYSROOT.
	* syscall.c (simulator_sysroot): Define, initialized empty.
	(get_path): Prepend simulator_sysroot to absolute file path.
	[HAVE_STRING_H]: Include string.h.
	[!HAVE_STRING_H && HAVE_STRINGS_H]: Include strings.h.
	* nrun.c [HAVE_UNISTD_H]: Include unistd.h.
	(main): If simulator_sysroot is not empty, chdir there.
	* sim-config.h (simulator_sysroot): Declare.

	* aclocal.m4 (SIM_AC_OUTPUT): Substitute @cgen_breaks@ for "break
	cgen_rtx_error" in a CGEN-generated simulator.
	* gdbinit.in: Break on sim_core_signal too.  Have autoconf
	replacement for CGEN-related breakpoints.

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

	* Make-common.in (sim-basics_h): Add $(callback_h).

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

	* configure.in (SIM_CHECK_MEMBERS): Call for struct stat members
	st_dev, st_ino, st_mode, st_nlink, st_uid, st_gid, st_rdev,
	st_size, st_blksize, st_blocks, st_atime, st_mtime and st_ctime.
	* aclocal.m4 (SIM_CHECK_MEMBER, SIM_CHECK_MEMBERS_1)
	(SIM_CHECK_MEMBERS): New macros.
	* callback.c (cb_host_to_target_stat): Use temporary macro ST_x
	for struct stat member test and write.  Add ST_x calls for each
	struct stat member tested in configure.in.  Wrap each ST_x call in
	#ifdef of configure macro for that member.
	* configure, config.in: Regenerate.

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

	* cgen.sh: New thirteenth parameter opcfile, defaulting to
	/dev/null.
	<case desc>: Pass -OPC opcfile.
	* Make-common.in (cgen-desc): Pass $(opcfile) as thirteenth
	parameter to cgen.sh.

2004-11-30  Richard Earnshaw  <rearnsha@arm.com>

	* Make-common.in (sim-basics_h): Correct dependencies on
	cconfig.h and tconfig.h
	(sim-load.o): Correct typo in sim-basics_h dependency.

2004-11-18  Richard Earnshaw  <rearnsha@arm.com>

	* Make-common.in (sim-*_h): Add macros for all sim headers listing
	sub-dependencies for other sim files that they include.
	(sim_main_headers): Use sim-*_h macros.
	(sim-load.o): Depend on sim-basics_h, not sim_main_headers.

2004-11-16  Hans-Peter Nilsson  <hp@axis.com>

	* sim-config.c (sim_config): Recognize when a bfd has unspecified
	endian information.

	* Make-common.in (sim-load.o): Depend on $(sim_main_headers) and
	$(remote_sim_h) too.
	(sim_main_headers): Add sim-utils.h.

2004-10-07  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* cgen-defs.h (ENDSWITCH): Changed to compile with gcc-3.4.2.

2004-07-26  Andrew Cagney  <cagney@gnu.org>

	Problem from Olaf Hering <olh@suse.de>.
	* Makefile.in (install-man, installdirs): Add DESTDIR prefix.

2004-07-10  Ben Elliston  <bje@au.ibm.com>

	* hw-tree.c (parse_integer_property): Typo fix in comments.
	* sim-options.c	(sim_args_command): Likewise.

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

	* run.c: Rename ui_loop_hook to deprecated_ui_loop_hook.

2004-06-27  J"orn Rennecke <joern.rennecke@superh.com>

	* callback.c (os_shutdown): Fix bug in last change: actually
	mark file descriptors as available on startup.

2004-06-25  J"orn Rennecke <joern.rennecke@superh.com>

	[ include/gdb: * callback.h (host_callback_struct): Replace
		       members fdopen and alwaysopen with fd_buddy.  ]
	* callback.c: Changed all users.

2004-06-15  Alan Modra  <amodra@bigpond.net.au>

	* sim-load.c (sim_load_file): Use bfd_get_section_size
	instead of bfd_get_section_size_before_reloc.

2004-05-18  Daniel Jacobowitz  <dan@debian.org>

	* dv-glue.c (hw_glue_finish): Cast result of sizeof to long before
	passing it to printf.

2004-05-10  Daniel Jacobowitz  <dan@debian.org>

	* callback.c: Update copyright dates.
	* run.c: Likewise.
	* sim-basics.h: Likewise.
	* sim-load.c: Likewise.
	* syscall.c: Likewise.

2004-05-10  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* callback.c: Include cconfig.h instead of config.h.
	* run.c: Likewise.
	* sim-basics.h: Likewise.
	* sim-load.c: Likewise.
	* syscall.c: Likewise.

2004-01-16  Ben Elliston  <bje@wasabisystems.com>

	* Makefile.in (clean): Remove rm -f $(ALL), as $(ALL) is empty.

2003-12-19  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* sim-core.c (sim_core_trans_addr): Added for m32r-linux-run.

2003-11-22  Kazu Hirata  <kazu@cs.umass.edu>

	* sim-options.c (standard_options): Fix the names of H8
	variants.

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

	* sim-trace.c, sim-base.h: Replace "struct symbol_cache_entry"
	with "struct bfd_symbol".

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

	* callback.c (os_truncate): Call "truncate", and not "stat".

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

	* sim-base.h: Replace "struct sec" with "struct bfd_section".

2003-10-15  J"orn Rennecke <joern.rennecke@superh.com>

	* callback.c (os_ftruncate, os_truncate): New functions.
	(default_callback): Initialize ftruncate and truncate members.

2003-09-08  Dave Brolley  <brolley@redhat.com>

	On behalf of Doug Evans <dje@sebabeach.org>
	* cgen.sh: New arg archfile.
	* Make-common.in (cgen-arch,cgen-cpu,cgen-defs,cgen-decode,
	cgen-cpu-decode,cgen-desc): Update call to cgen.sh.

2003-08-28  Andrew Cagney  <cagney@redhat.com>

	* dv-glue.c (hw_glue_finish): Change %d to %ld to match sizeof.
	* sim-options.c (print_help): Cast the format with specifier to
	"int".

2003-08-20  Michael Snyder  <msnyder@redhat.com>
	    Dave Brolley  <brolley@redhat.com>

	* cgen-par.h (flags, word1): New target-specific
	fields of CGEN_WRITE_QUEUE_ELEMENT.
	(CGEN_WRITE_QUEUE_ELEMENT_FLAGS): New accessor macro.
	(CGEN_WRITE_QUEUE_ELEMENT_WORD1): New accessor macro.
	* gennltvals.sh: Add frv target.
	* nltvals.def: Add frv target.

2003-06-23  Michael Snyder  <msnyder@redhat.com>

	* nrun.c (main): Delete h8/300 ifdef (sim now handles signals).
	* sim-reg.c: Fix cut-and-paste bug in comment.

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

	From matthew green <mrg@redhat.com>:
	* sim-fpu.h: Update copyright.
	(sim_fpu_fraction, sim_fpu_guard): New prototypes.
	* sim-fpu.c: Update copyright.
	(sim_fpu_fraction, sim_fpu_guard): New inline functions.

2003-06-17  Frank Ch. Eigler  <fche@redhat.com>

	From Doug Evans <dje@sebabeach.org>:
	* cgen-trace.h (sim_disasm_read_memory): Update args to be compatible
	with disassemble_info:read_memory_func.
	* cgen-trace.c (sim_disasm_read_memory): Ditto.

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

	* common/run.c (main): Remove SIM_H8300 ifdef.
	(usage): Ditto.
	* common/sim-options.c (STANDARD_OPTIONS): Add SIM_H8300SX.
	(standard_options): Add '-x' for h8/300sx.
	(standard_option_handler): Add case for SIM_H8300SX.

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

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

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

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

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

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

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

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

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

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

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

	* run.c (usage): Fix typos.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* run.c: Fix formatting.

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

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

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

	* run.c: Made h8300s as new target, not h8300h alias.
	Added new option -S (h8300s target)
	* sim-options.c: Ditto.

2002-05-01  Chris Demetriou  <cgd@broadcom.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* hw-base.c (hw_delete): Don't free base_of_hw since it's freed.
	(set_hw_delete): Moved the macro as a function.
	* hw-base.h (set_hw_delete): Declare as external function.
	* hw-alloc.c (delete_hw_alloc_data): Allow to free the memory
	allocated using hw_malloc.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* run.c (main): Initialize sigrc.

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

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

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

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

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

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

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

	* cgen-ops.h: Added TRUNCSISI.

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

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

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

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

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

	* callback.c: Fix compile time warning messages.
	* run.c: Fix compile time warning messages.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sim-resume.c (sim_resume): Ensure that the siggnal [sic] is only
 	passed in when sim_resume is first entered - don't re-pass it
 	after a restart.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* aclocal.m4: Use AC_EXEEXT instead of AM_EXEEXT.  Delete defn of
	AM_CYGWIN32 and AM_EXEEXT.
	* configure: Regenerate.

Fri Apr 16 16:43:22 1999  Doug Evans  <devans@charmed.cygnus.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* dv-sockser.c (DEFAULT_TIMEOUT): Increase to 1 ms.

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

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

	* sim-n-core.h (sim_core_trace_M): Allay const warning.
	* sim-trace.h (trace_generic): Ditto.
	* sim-trace.c (trace_generic): Ditto.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1998-11-13  Frank Ch. Eigler  <fche@elastic.org>

	* aclocal.m4: Add tests for dlopen family.
	* config.in: Regenerated.

Wed Nov 11 14:02:25 1998  Doug Evans  <devans@canuck.cygnus.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* Make-common.in (SIM_COMMON_HW_OBJS): Add hw-handles.o and
 	hw-instances.o.
	hw-handles.c, hw-instances.c, hw-handles.h, hw-instances.h: New
 	files.
	* hw-main.h: Include hw-handles.h, hw-instances.h.
	* hw-base.h ({create,delete}_hw_{handles,instances}_data): Declare
	* hw-base.c (hw_create, hw_delete): Call same.

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

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

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

	* hw-base.h (do_hw_attach_regs, do_hw_poll_read_method,
 	do_hw_poll_read): Move declarations from here.
	* hw-main.h: To here.

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

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

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

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

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

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

	* hw-base.c (hw_create, hw_delete): Call
	* hw-properties.c (create_hw_property_data,
 	delete_hw_property_data): Define.

Mon May 25 17:40:46 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

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

	* Make-common.in (SIM_NEW_COMMON_OBJS): Add hw-alloc.o.
	(hw-alloc.o): New target.

Mon May 25 17:14:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

	* hw-device.h (struct hw): Add struct hw_event_data events_of_hw.
	* hw-events.h (struct hw_event): Replace typedef hw_event.

	* hw-base.h (create_hw_event_data, delete_hw_event_data): Declare.
	* hw-base.c (hw_create, hw_delete): Call.
	* hw-events.c (create_hw_event_data, delete_hw_event_data): Define.

	* dv-pal.c: Update.

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

	* hw-base.c (panic_hw_port_event, empty_hw_ports): Move from here.
  	* hw-ports.c: To here.

	* hw-base.h, hw-ports.c (create_hw_port_data,
 	delete_hw_port_data): New functions.
	* hw-base.c (hw_delete, hw_create): Call same.

	* hw-base.h (set_hw_ports, set_hw_port_event): Move set functions
 	from here.
  	* hw-ports.h: To here.

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

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

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

	* aclocal.m4 (SIM_AC_OPTION_HW): Add enable / disable argument.
  	Move common object files from here.
	* Make-common.in (SIM_COMMON_HW_OBJS): To here.

Thu May 21 17:57:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* hw-tree.h (hw_tree_print): Paramaterize with print and file
 	arguments.
	* hw-tree.c: Update.

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

	* hw-device.h (SIM_DESC): Replace with struct sim_state.
	* hw-base.h (hw_create): Ditto.
	* hw-base.c (hw_create): Ditto.

	* hw-device.c (hw_abort, hw_trace, hw_hw_event_queue_schedule,
 	hw_event_queue_deschedule, hw_event_queue_time): Delete, moved
 	from here to.
	* sim-hw.c: Here.
	* hw-device.h (hw_system_cpu): Declare.
	* sim-hw.c (hw_system_cpu): New function.

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

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

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

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

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

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

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

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

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

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

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

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

Sun Apr 26 15:25:07 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h (NEED_DECLARATION_PRINTF): Removed.

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

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

Fri Apr 24 11:38:08 1998  Tom Tromey  <tromey@cygnus.com>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sim-bits.h (EXTEND4): Define.
	(EXTEND4, EXTEND15, EXTEND11): Ditto.

Tue Apr 14 16:31:35 1998  John Metzler  <jmetzler@cygnus.com>

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

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

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

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

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

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

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

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

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

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

	* sim-bits.h (sim-bits.c): Include when H_REVEALS_MODULE_P.
 	selected.
	* sim-endian.h (sim-endian.c): Ditto.

	* sim-events.h (_SIM_EVENTS_H_): Replace with SIM_EVENTS_H.
	(sim_events_set_trace): Delete unused prototype.

	* sim-core.h (_SIM_CORE_H_): Replace with SIM_CORE_H.
	* sim-core.c (_SIM_CORE_C_): Ditto for SIM_CORE_C.

	* sim-fpu.h (sim-fpu.c): Include when H_REVEALS_MODULE_P.
	(sim_fpu_to232i, sim_fpu_to232u, sim_fpu_i232to, sim_fpu_u232to):
 	Comment out, not yet implemented in sim-fpu.c.
	(sim_fpu_zero, sim_fpu_one, sim_fpu_two, sim_fpu_qnan,
 	sim_fpu_max32, sim_fpu_max64): Mark as EXTERN_SIM_FPU.

	* sim-inline.h: Rewrite description.
	(H_REVEALS_MODULE_P, C_REVEALS_MODULE_P): Define.
	(SIM_MAIN_INLINE): Add inline option.

	* sim-inline.c (semantics.c, idecode.c, engine.c, ...): Do not
 	include generated files. Handled by generator directly.

Sat Apr  4 01:07:06 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

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

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

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

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

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

	* sim-hw.c: New file.
	* sim-hw.h (sim_hw_parse): Declare function.
	(hw-tree.h): Do not include.

	* sim-base.h (STATE_HW): Define.
	(struct sim_state_base): Add member struct *hw.

	* sim-module.c (sim-hw.h): Include.
	(modules): Add sim_hw_install.

	* aclocal.m4 (sim_hw_obj): Add sim-hw.o

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* aclocal.m4 (SIM_AC_OPTION_HARDWARE): Add second argument,
 	appends extra devices.
	(SIM_AC_OPTION_HARDWARE): Substute sim_hw, a non-duplicate list of
 	the device names.

	* Make-common.in (hw-config.h): New target, create hw-config.h
 	file.
	(SIM_HW): Definition from @sim_hw@.
	(hw-base.o): Depend on hw-config.h

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

	* Make-common.in:  Get SHELL from configure.
	* (stamp-tvals sim-inline.c):  Use $(SHELL) when invoking
	move-if-change.  Fixes NT native build problem.
	* Makefile.in (nltvals.def):   Use $(SHELL) when invoking
	move-if-change.  Fixes NT native build problem.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

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

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

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

	* hw-properties.c: Clean up property not found / wrong type error
 	messages.

	* hw-tree.c (hw_tree_parse): Finish a devices initialization
 	before attaching any ports.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* hw-device.h (HW_ZALLOC, HW_MALLOC): New macros.
	(hw_alloc_data): Delcare.
	(struct hw): Add member alloc_of_hw.

	* hw-device.c (hw_zalloc, hw_malloc, hw_free, hw_free_all): New
 	functions. Assocate memory with a device.
	(stdlib.h): Include.

	* hw-base.h (set_hw_delete): Define.
	(hw_delete_callback): Declare.
	(hw_delete): Declare.

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

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

	* hw-properties.c: Replace zalloc/zfree with hw_zalloc/hw_free.

	* hw-ports.c: Replace zalloc/zfree with hw_zalloc/hw_free.
	(attach_hw_port_edge): Add struct hw argument

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

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

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

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

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

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

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

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

	* sim-hw.h: New file.

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

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

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

	* dv-core.c, dv-pal.c: New files. Copied from
 	../ppc/hw_{core,pal}.c

	* sim-basics.h (struct hw): Declare.
	(enum port_direction, enum object_disposition): Declare.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sim-core.c, sim-core.h (sim_core_attach): Replace argument
 	attach with more generic mapmask.
	(sim_core_{read,write}_*): Change map argument to unsigned.

	* sim-core.c (sim_core_uninstall, sim_core_attach,
 	sim_core_detach): Iterate over nr_maps instead of
 	sim_core_nr_maps.

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

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

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

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

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

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

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

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

Mon Mar  9 11:59:03 1998  Jim Wilson  <wilson@cygnus.com>

	* sim-fpu.c (NR_GUARDS64): Change NR_PAD32 to NR_PAD64.

Tue Mar  3 10:53:05 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (SIGNED32, SIGNED64): Pacify GCC.

	* sim-alu.h (ALU64_BEGIN): Make alu64_r unsigned.

Mon Mar  2 10:20:06 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (TAGS): Make smarter.
	* Makefile.in (TAGS): Ditto.

Fri Feb 27 19:09:57 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-module.c (*): Fix typos in assertion tests.

Sat Feb 28 13:54:10 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-module.c (sim_pre_argv_init): String passed to asprintf
 	can't be constant.

	* sim-options.c (sim_parse_args): Ditto.
	(sim_args_command): Return OK, instead of nothing, for an empty
 	command.

Fri Feb 27 13:29:13 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_info): Rename from profile_print. Drop
 	misc and misc_cpu callback arguments.  Use
 	PROFILE_INFO_CPU_CALLBACK and STATE_PROFILE_INFO_CALLBACK instead.
	(profile_install): Install profile_info function.

	* sim-profile.h (PROFILE_INFO_CPU_CALLBACK,
 	STATE_PROFILE_INFO_CALLBACK): Define.
	(struct PROFILE_DATA): Add field info_cpu_callback.
	(profile_print): Delete function.

	* sim-base.h (STATE_MODULES): Define.  Replace individual
 	STATE_*_LIST with single struct module_list.

	* sim-module.h (MODULE_INFO_FN, MODULE_INFO_LIST): Declare.
	(struct module_list): Declare.

	* sim-module.h, sim-module.c (sim_module_add_info_fn,
 	sim_module_info): New functions.
	(sim_module_install): Clean up module data structures.

	* sim-info.c (sim_info): New file. New function. Call
 	sim_module_info.

	* Make-common.in (sim-info.o): Define rule.
	(SIM_NEW_COMMON_OBJS): Add sim-info.o.


Fri Feb 27 18:26:16 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-base.h (sim_cpu_base): New members name, options.
	(sim_cpu_lookup): Add prototype.
	* sim-module.c (sim_pre_argv_init): Provide default names for cpus.
	* sim-options.h (DECLARE_OPTION_HANDLER): New argument `cpu'.
	(sim_add_option_table): Update prototype.
	* sim-options.c (sim_add_option_table): New argument `cpu'.
	(standard_option_handler,standard_install): Update.
	(sim_parse_args): Handle cpu specific options.
	(print_help): New static function.
	(sim_print_help): Call it.  Print cpu specific options.
	(find_match): New static function.
	(sim_args_command): Call it.  Handle cpu specific options.
	* sim-utils.c (sim_cpu_lookup): New function.
	* sim-memopt.c (memory_option_handler): Update.
	(sim_memopt_install): Update.
	* sim-model.c (model_option_handler): Update.
	(model_install): Update.
	* sim-profile.c (profile_option_handler): Update.
	(profile_install): Update.
	* sim-trace.c (trace_option_handler): Update.
	(trace_install): Update.
	* sim-watch.c (watchpoint_option_handler): Update.
	(sim_watchpoint_install): Update.
	* cgen-scache.c (scache_option_handler): Update.
	(scache_install): Update.

Wed Feb 25 11:00:26 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (check): Run `make check' in testsuite dir.

Wed Feb 25 14:40:24 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (trace_result0): New function.

	* sim-trace.h (TRACE_FP_*, TRACE_FPU_*): Rename TRACE_FPU_*
 	macro's to TRACE_FP_*. TRACE_FPU_* should be defined and used when
 	tracing sim_fpu variables.
	(TRACE_ALU_RESULT0): Define.
	(TRACE_FP_RESULT_WORD): Define.
	(TRACE_FP_INPUT_WORD1): Define.

	* sim-fpu.c, sim-fpu.h (sim_fpu_max32, sim_fpu_max64, sim_fpu_one,
 	sim_fpu_two): New constants.
	(sim_fpu_op1, sim_fpu_op2): New types.
	(struct _sim_fpu): Delete member result.  Re-order other members.
	(sim_fpu_sign, sim_fpu_exp): New functions.
	(sim_fpu_max, sim_fpu_min): new functions.
	(EXPMAX32, EXPMAX64, NR_PAD32, NR_PAD64, NR_GUARDS32, NR_GUARDS64,
 	NORMAL_EXPMAX32, NORMAL_EXPMAX64): Define.

Tue Feb 24 22:45:39 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-profile.c (profile_print): Delete duplicate test of
	PROFILE_INSN_IDX.
	(profile_print_pc): Exit early if data collection not set up.
	(profile_print_core): Simplify by calling sim_core_map_to_str.
	* sim-core.h (sim_core_map_to_str): Declare.
	* sim-core.c (sim_core_map_to_str): Make non-static.

	* genmloop.sh (engine_resume): Update insn_count before exiting.
	(engine_resume_full): Keep accurate core profile data.

	* cgen-utils.c (sim_disassemble_insn): Don't use
	sim_core_read_aligned_N, it messes up profiling results.

Mon Feb 23 20:45:57 1998  Mark Alexander  <marka@cygnus.com>

	* nltvals.def: Regenerate with MN10300 additions.

Tue Feb 24 13:18:42 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_ALU_RESULT2): Define.

	* sim-trace.h, sim-trace.c (trace_result_word2,
 	trace_input_word4, trace_result_word4): New function.

Mon Feb 23 13:08:35 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-sim.h (SEM_NEXT_PC): New arg `len'.

	* sim-xcat.h: Delete.
	* cgen-mem.h: Delete inclusion of sim-xcat.h.
	* cgen-sim.h: Ditto.
	* sim-alu.h: Replace sim-xcat.h with symcat.h.
	* sim-n-bits.h: Ditto.
	* sim-n-core.h: Ditto.
	* sim-n-endian.h: Ditto.

Mon Feb 23 13:19:58 1998  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): Handle short reads, and EOF.

Tue Feb 24 00:29:57 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (print_data): case trace_fmt_fp missing break.  Use
 	sim_fpu to safely print fp_word values.
	(print_data): Add trace_fmt_bool and trace_fmt_addr.
	(trace_result_bool1, trace_result_addr1): New functions.
	(trace_input_bool1, trace_input_addr1): New functions.

	* sim-trace.h (TRACE_FPU_*): Define.

Mon Feb 23 13:24:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.h (enum sim_fpu_class): Add sim_fpu_class_denorm.
	(sim_fpu_fpto, sim_fpu_tofp): Define.

Fri Feb 20 18:08:51 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (sim_fpu_cmp): New function.

Wed Feb 18 16:29:21 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-utils.h (sim_disassemble_insn): Use CGEN_INSN_BITSIZE
	instead of abuf->length.
	* sim-trace.c (trace_options): Have -t only trace a few useful things.
	(set_trace_option_mask): Renamed from set_trace_options.
	(set_trace_option): New function.
	(trace_option_handler): Update calls to set_trace_option{,_mask}.
	* sim-trace.h (TRACE_USEFUL_MASK): New macro.

Wed Feb 18 12:42:15 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-basics.h: Declare struct _sim_fpu.

Tue Feb 17 16:27:46 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_ALU_INPUT*, TRACE_ALU_RESULT): Define.
	(trace_prefix, trace_input*, trace_result*): Declare.
	(trace_one_insn): Change declaration, assume trace_prefix called.
	(trace_generic): Like trace_one_insn.
	(TRACE_ALU_IDX, TRACE_*_IDX): Change #define's to enum.
	(TRACE_alu, TRACE_[a-z]*): Update.

	* sim-trace.c (trace_prefix, trace_input*, trace_result*,
 	trace_insn, save_data, trace_idx_to_str, print_data): New
 	functions.
	(trace_one_insn): Rewrite.
	(trace_generic): New function.

Tue Feb 17 17:27:30 1998  Doug Evans  <devans@seba.cygnus.com>

	* aclocal.m4 (USE_MAINTAINER_MODE): New variable.

	* cgen-sim.h (SEMANTIC_CACHE_FN): Delete.
	(SEMANTIC_FN): Rewrite declaration.
	(DECODE): Update type of semantic_fast member.
	({EX,SEM}_FN_NAME): Have only one version.
	* sim-base.h (sim_state_base): Delete conditionals surrounding
	member scache_size.

Tue Feb 10 18:31:49 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-load.c (sim_load_file): Print LMA/VMA according to value
 	used.

Tue Feb 10 14:56:23 1998  Ian Carmichael  <iancarm@cygnus.com>

	* sim-core.c: Add missing prototypes for WITH_DEVICES.
	Add missing parameters to device_io calls.
	* sim-core.h: Add missing parameters to device_io calls.

Mon Feb  9 14:48:37 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen-sim.h (DECODE): Always use switch for `read' for now.
	(PAREXEC): Renamed from PARALLEL_EXEC.  All uses updated.
	(SEMANTIC{,_CACHE}_FN): Fix return type.
	* genmloop.sh (@cpu@_engine_run): Delete `current_state'.
	(engine_resume): Likewise.  Make `engine' volatile.  Save copy
	of cpu pointer in volatile object.  Initialize read switch if
	-parallel.

Thu Feb  5 13:27:04 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-sim.h (EX_FN_NAME): _exc_ -> _ex_.
	(SEM_INSN): New macro.

Tue Feb  3 16:31:56 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-run.c (sim_engine_run): Assume IMEM is 32 bit.

Sun Feb  1 16:47:51 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sun Feb  1 16:16:57 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (fp_word): New type, define according to
 	WITH_TARGET_FLOATING_POINT_BITSIZE.

	* aclocal.m4 (default_sim_floating_point_bitsize): Add
 	configuration of size of floating point registers.

Sun Feb  1 14:02:31 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print): Only print CPU <N> if other
 	output is going to appear.

Sat Jan 31 18:15:41 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Sat Jan 31 18:03:55 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-types.h (address_word): Typedef according to
 	WITH_TARGET_ADDRESS_BITSIZE.
	(signed_cell, unsigned_cell, natural_cell): Ditto using
 	WITH_TARGET_CELL_BITSIZE.

	* sim-config.h (WITH_TARGET_ADDRESS_BITSIZE): Define.
	(WITH_TARGET_CELL_BITSIZE): Define.
	(WITH_HOST_WORD_BITSIZE): Delete.

	* sim-config.c (print_sim_config): Update.

	* aclocal.m4 (SIM_AC_OPTION_BITSIZE): Add support for
 	configuration of address and OpenFirmware cell sizes.

Fri Jan 30 09:36:33 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-engine.h (sim_engine_run): Add argument nr_cpus.
	* sim-run.c (sim_engine_run): Update.

	* sim-engine.h (SIM_ENGINE_HALT_HOOK): Use SET_CPU_CIA instead of
 	CPU_CIA.
  	* sim-run.c (sim_engine_run): Ditto.

	* sim-resume.c (sim_resume): Obtain nr_cpus from sim_engine.
	(sim_resume): Pass nr_cpus to sim_engine_run.

	* sim-engine.h (struct _sim_engine): Add member nr_cpus.

	* sim-engine.c (sim_engine_init): Hardwire nr_cpus to
 	MAX_NR_PROCESSORS.
	(sim_engine_nr_cpus) sim-engine.c, sim-engine.h: New function

Fri Jan 23 14:20:54 1998  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (stamp-tvals): New rule.
	(targ-vals.h,targ-map.c): Depend on it.
	(clean): Remove stamp-tvals.

Tue Jan 20 21:35:13 1998  Michael Meissner  <meissner@cygnus.com>

	* sim-utils.c (sim_state_alloc): #if 0 variable that is only used
	in code also #if 0'ed.

Mon Jan 19 22:26:29 1998  Doug Evans  <devans@seba>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* aclocal.m4: Recognize --enable-maintainer-mode.

Mon Jan 19 12:45:45 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen-scache.h: Deleted.
	* Make-common.in (cgen-run.o,cgen-scache.o): Delete cgen-scache.h dep.
	* cgen-scache.c: Only compile contents if WITH_SCACHE.
	(scache_init): Use runtime computed size of SCACHE.
	(scache_flush): Likewise.
	* cgen-mem.h (GETIMEMU[QHSD]I): Declare.
	([GS]ETT{QI,UQI,HI,UHI,SI,USI,DI,UDI}): Declare.
	* cgen-sim.h: Scache support moved here.
	(PC): Redo definition.
	(ARGBUF,SCACHE,PARALLEL_EXEC): Provide forward decls.
	(DECODE): Add parallel execution support.
	Only include semantic label members if using switch.
	(SWITCH,CASE,BREAK,DEFAULT,ENDSWITCH): Portable computed goto support.
	(CGEN_CPU): Delete members exec_state, halt_sigrc, halt_jmp_buf.
	(IADDR,CIA,SEM_ARG,EX_FN_NAME,SEM_FN_NAME,RECORD_IADDR,SEM_ARGBUF,
	SEM_NEXT_PC,SEM_BRANCH_VIA_{CACHE,ADDR},SEM_NEW_PC_ADDR): Moved here
	from cgen-types.h.
	(engine_{stop,run,resume,halt,signal}): Delete decls.
	* cgen-types.h (CGEN_{XCAT3,CAT3}): Delete.
	(argbuf,scache): Delete forward decls.
	(STATE): Delete decl.
	* cgen-utils.c: Don't include decode.h, mem-ops.h, sem-ops.h.
	Include cgen-mem.h, cgen-ops.h.
	(engine_halt,engine_signal): Delete.
	({ex,exc,sem,semc}_illegal): Delete.
	(sim_disassemble_insn): Result of extract fn is in bits.
	* genmloop.sh: Rewrite.

	* cgen-trace.c (trace_insn): Set printed_result_p=0 if not tracing
	line numbers.

	* sim-base.h (sim_state_base): Delete member `model'.
	(sim_cpu_base): Add member `model'.
	* sim-model.h (IMP_PROPERTIES): New type.
	(MACH): New members imp_props, models.
	(models): Delete decl.
	* sim-model.c (set_model): Update.
	* sim-profile.c (profile_print_model): Update.

	* sim-utils.c (sim_state_alloc): Delete setting of cpu backlink here.

Fri Jan 16 12:33:09 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen-trace.c (trace_insn): Call CGEN_INSN_MNEMONIC() rather than
	CGEN_INSN_SYNTAX().

Mon Dec 15 23:17:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Mon Dec 15 23:16:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (AR): Check for sigaction.

Thu Dec  4 09:21:05 1997  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (sim-core.o): Depend on $(sim_main_headers).

	* sim-config.h (WITH_TREE_PROPERTIES): Define as 0.
	* sim-config.c (sim_config): Replace WITH_DEVICES with
	WITH_TREE_PROPERTIES.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Dec  3 17:56:02 1997  Doug Evans  <devans@canuck.cygnus.com>

	* Make-common.in (SIM_ENVIRONMENT): New variable.
	(CONFIG_CFLAGS): Add it.
	* aclocal.m4 (SIM_AC_OPTION_ENVIRONMENT): Handle
	--enable-sim-environment option.
	* configure: Regenerated.
	* sim-config.h (environment support): Rewrite.
	* sim-config.c (current_environment): Define as enum, unconditionally.
	(current_alignment): Define unconditionally.
	(config_environment_to_a): Update.
	(config_alignment_to_a): Fix type of argument.  Define unconditionally.
	(sim_config): Handle environment and alignment determination
	unconditionally.  Delete sanity checks of current_environment,
	unnecessary.
	(print_sim_config): Update.
	* sim-options.c (STANDARD_OPTIONS enum): Add OPTION_ENVIRONMENT.
	(standard_options): Add --environment.
	(standard_option_handler): Likewise.

Fri Nov 28 12:21:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h: Add notes on carry vs borrow for subtraction.
	(ALU{,8,16,32,64}ADD): Redefine ADD macro as add overflowing.
	(ALU{,8,16,32,64}ADDC): Define - add carrying.
	(ALU{,8,16,32,64}SUB): Redefine SUB macro as subtract overflowing.
	(ALU{,8,16,32,64}SUBB): Define - subtract borrowing.
	(ALU{,8,16,32,64}SUBC): Define - tract carrying.
	(ALU{,8,16,32,64}ADD_CA, ALU{,8,16,32,64}ADDC_C): Replace single
 	argument ADD_CA macro with two argument ADDC_C - add carrying with
 	carry in.
	(ALU{,8,16,32,64}SUB_CA, ALU{,8,16,32,64}SUBC_X): Replace single
 	argument SUB_CA macro with two argument SUBC_X - subtract
 	carrying, extended.
	(ALU{,8,16,32,64}SUBB_B): Define - subtract borrowing with
 	borrow-in.
	(ALU{,8,16,32,64}NEGC, ALU{,8,16,32,64}NEGB): Define.

Sun Nov 30 17:40:57 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_{syscalls,getstring}): Delete.  No longer used.
	* sim-io.h (sim_io_syscalls): Delete.

Fri Nov 28 20:10:09 1997  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): Add missing else, so write to stdout
	isn't doubled.

	* sim-alu.h (ALU{,8,16,32,64}_SET_CARRY): Provide macros to import
	the carry bit from the CPU's psw.

Fri Nov 28 11:15:05 1997  Doug Evans  <devans@canuck.cygnus.com>

	* gennltvals.sh: Redo syscall support.
	* nltvals.def: Regenerated.

Wed Nov 26 16:49:38 1997  Michael Meissner  <meissner@cygnus.com>

	* syscall.c (cb_syscall): If writing to stdout or stderr, flush
	the stream immediately.

Wed Nov 26 12:32:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-io.c (sim_io_getstring): Delete unused len2.
	(sim_io_syscalls): Ditto for sys_errno.

Wed Nov 26 11:18:40 1997  Doug Evans  <devans@canuck.cygnus.com>

	* syscall.c (cb_syscall): Test CB_SYSCALL struct magic number.

	* Make-common.in (run.o): Depend on remote-sim.h.
	(nrun.o,sim-hload.o,sim-hrw.o): Likewise.
	(sim-io.o,sim-reason.o,sim-resume.o): Likewise.

Tue Nov 25 20:12:46 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_syscalls): Disable lseek.

Tue Nov 25 00:12:38 1997  Doug Evans  <devans@seba.cygnus.com>

	* gennltvals.sh: Generate syscall values for d30v.

	* gennltvals.sh: Use libgloss/syscall.h for sparc.
	* nltvals.def: Regenerate.

	* callback.c (os_stat): Make 3rd arg a host struct stat ptr.
	(os_fstat): Likewise.  Validate fd argument.
	(cb_host_to_target_stat): Delete big_p arg.  If HS arg is NULL,
	just compute target stat struct length.
	* syscall.c: #include "libiberty.h", <sys/types.h>, <sys/stat.h>.
	(ENOSYS,ENAMETOOLONG): Provide definitions if missing.
	(get_string): Return host errno values so they can be properly
	translated later.
	(cb_syscall): Likewise.
	(cb_syscall, cases open,unlink): Use get_path instead of get_string.
	(cb_syscall, case read): Use read_stdin for file descriptor 0.
	(cb_syscall, case write): Use write_stderr for file descriptor 2.
	(cb_syscall): Add cases for lseek, unlink, stat, fstat, time.
	(get_path): New function.

Mon Nov 24 18:56:07 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-io.c (sim_io_syscalls): New function to provide system call
	emulation.  Provide exit, open, close, read, write, lseek, and
	unlink.
	(sim_io_getstring): New function to return a string from a
	simulated memory location.

	* sim-io.h (sim_io_syscalls): Add declaration.

Mon Nov 24 12:09:59 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-core.c (sim_core_signal): Fix spelling error in message.

	* sim-hrw.c (sim_read): Use read map, not write map.

	* Make-common.in (all): Add .gdbinit.
	* gdbinit.in: Add dump command.

	* sim-model.c (model_options): Use '\0' for `shortopt'.

	* sim-trace.c (trace_option_handler): Set state trace file
	for --trace-file in addition to cpu's values.
	(trace_vprintf): If cpu == NULL, try state's trace file.
	(trace_options): Reorganize table, reword some descriptions.

Sun Nov 23 10:57:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (sim_fpu_abs, sim_fpu_neg, sim_fpu_inv), sim-fpu.h:
 	New functions.

Sat Nov 22 19:16:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-reason.c (sim_stop_reason): For sim_signalled, return the
 	signal untranslated, document problem with this.

	* nrun.c (main): Check for a prog name of `*step'.  If present,
 	step the simulator instead of allowing it to run free.

	* sim-signal.c (SIGQUIT): Define on _MSC_VER hosts.

	* Make-common.in (sim_main_headers): Add sim-signal.h.

Fri Nov 21 09:32:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-signal.c (sim_signal_to_host): Return 0 for SIM_SIGNONE.

Thu Nov 20 20:35:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-signal.h: Start simulator signals at 64 so that host signal
 	numbers can be detected and reported.

	* sim-signal.h (SIM_SIGFPE), sim-signal.h: Add signal.

Wed Nov 19 12:02:41 1997  Doug Evans  <devans@seba.cygnus.com>

	* callback.c (cb_host_to_target_stat): Fix return values.

	* cgen-sim.h (enum_signal_type): Delete.
	(engine_signal): Update prototype.
	* cgen-utils.c: Don't include <signal.h>.
	(sim_signal_to_host): Delete, lives in sim-signal.c now.
	(engine_signal): Update.

	* sim-utils.c (sim_state_alloc): Call SIM_STATE_ALLOC if defined.
	(sim_state_free): Call SIM_STATE_FREE if defined.

	* sim-module.c (sim_module_install): Don't leave any modules
	installed if one fails to install.

Wed Nov 19 13:25:48 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-options.c: Don't include ../libiberty/alloca-conf.h any
	more, since alloca is not used in this file.

	* sim-alu.h (ALU{32,64}_*): Rewrite 32 and 64 bit ALU support to
	correctly set the carry and overflow bits for those types.
	(ALU{8,16,32,64}_{ADD,SUB}_CA): Take VAL argument to add along
	with carry, so carry is correct after doing both adds.
	(ALU*): Space out '\' to make it easier to read.

Tue Nov 18 15:53:45 1997  Doug Evans  <devans@canuck.cygnus.com>

	* sim-core.c (sim_core_signal): Use sim_stopped instead of
	sim_signalled.

	* sim-signal.c, sim-signal.h: New files.
	* Make-common.in (sim-signal.o): Add rule for.
	(SIM_NEW_COMMON_OBJS): Add sim-signal.o.
	* sim-abort.c: Don't include <signal.h>.
	* sim-basics.h: #include "sim-signal.h".
	* sim-break.c: Don't include <signal.h>.
	(sim_handle_breakpoint): Replace SIGTRAP with SIM_SIGTRAP.
	* sim-core.c: Don't include <signal.h>.
	(SIGBUS): Delete definition.
	(sim_core_signal): Replace SIGSEGV,SIGBUS with SIM_SIGSEGV,SIM_SIGBUS.
	* sim-engine.c: Don't include <signal.h>.
	(sim_engine_abort): Replace SIGABRT with SIM_SIGABRT.
	* sim-reason.c (sim_stop_reason): Call sim_signal_to_host.
	* sim-resume.c: Don't include <signal.h>.
	(SIGTRAP): Delete definition.
	(has_stepped): Replace SIGTRAP with SIM_SIGTRAP.
	* sim-stop.c: Don't include <signal.h>.
	(control_c_simulation): Replace SIGINT with SIM_SIGINT.
	* sim-watch.c: Don't include <signal.h>.
	(handle_watchpoint): Replace SIGINT with SIM_SIGINT.

	* Make-common.in (SIM_NEW_COMMON_OBJS): New variable.

	* sim-base.h (CIA_ADDR): Provide default definition.
	* sim-core.c (sim_core_signal): Use CIA_ADDR to fetch value.
	* sim-break.c (sim_handle_breakpoint): Likewise.

Mon Nov 17 14:15:31 1997  Doug Evans  <devans@seba.cygnus.com>

	* Make-common.in (srccom): New variable.

	* Make-common.in (DEP, COMMON_DEP_CFLAGS): Define.
	(LIB_OBJS): Add syscall.o.
	(gentmap): Pass $(NL_TARGET) to $(CC).
	(syscall.o): Add rule for.
	(sim_main_headers): Add $(SIM_EXTRA_DEPS).
	(sim-bits.o): Depend on $(sim-n-bits_h).
	(sim-load.o): Depend on callback.h.

	* Make-common.in (cgen-*.o): Update dependencies, mem-ops.h renamed to
	cgen-mem.h, sem-ops.h renamed to cgen-ops.h.
	* cgen-mem.h, cgen-ops.h: New files.

	* aclocal.m4 (--enable-sim-scache): Pass -DWITH_SCACHE=0 for "=no".

	* Makefile.in (nltvals.def): Depend on gennltvals.sh.
	Rewrite build rule.
	* callback.c: #include string.h or strings.h.
	#include sys/types.h and sys/stat.h.
	(cb_init_syscall_map,cb_init_errno_map,cb_init_open_map): Declare.
	(os_get_errno,os_open): Update.
	(os_stat,os_fstat): New functions.
	(os_init): Initialize syscall_map, errno_map, open_map.
	(default_callback): Add entries for os_stat, os_fstat, syscall_map,
	errno_map, open_map, signal_map, stat_map.
	(cb_read_target_syscall_maps): New function.
	(cb_target_to_host_syscall): New function.
	(cb_host_to_target_errno): Renamed from host_to_target_errno.
	(cb_target_to_host_open): Renamed from target_to_host_open.
	(store): New function.
	(cb_host_to_target_stat): New function.
	* syscall.c: New file.
	* gentmap.c (sys_tdefs): New global.
	(gen_targ_vals_h): Output target syscall numbers.
	(gen_targ_map_c): Update.  Output target syscall translation map.
	* gentvals.sh: New first argument `target'.  Preface table with
	#ifdef NL_TARGET_$target if non-null target passed.
	* gennltvals.sh: New file.
	* nltvals.def: Regenerated.

Fri Nov 14 11:33:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_read_unaligned_N): Return static
 	sim_core_dummy_M.
	(sim_core_dummy_M): Declare.

Wed Nov 12 18:16:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_signal): Print the address of the
 	instruction.

Thu Nov 13 11:49:41 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-base.h (sim_state_base): Move `magic' to end of struct.

	* sim-base.h (sim_state_base): Add member trace_data.
	(STATE_TRACE_DATA): New macro.
	* sim-trace.h (TRACE_DEBUG_IDX,TRACE_debug): New macros.
	({WITH_,}TRACE_DEBUG_P): New macros.
	(STATE_TRACE_FLAGS,STRACE_P,STRACE_DEBUG_P): New macros.
	(_sim_cpu): Delete forward reference.
	(debug_printf): Update.
	* sim-trace.c (OPTION_TRACE_DEBUG): Define.
	(trace_options): Add --trace-debug.
	(set_trace_options): Handle it.
	(trace_option_handler): Likewise.
	(trace_install): Init state trace_data struct.
	(trace_uninstall): Close state trace file.
	* sim-events.c (ETRACE): Only print source file and line number if
	--trace-debug.
	* sim-n-core.h (sim_core_trace_M): Likewise.

	* sim-core.c (sim_core_signal): Add missing "\n" in message.

1997-11-13  Felix Lee  <flee@cygnus.com>

	* sim-n-core.h (sim_core_read_unaligned_N): illegal empty
	initializer.
	* sim-types.h (unsigned128,signed128): fix typo for MSVC.

Wed Nov 12 12:18:08 1997  Doug Evans  <devans@canuck.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_SCACHE): Fix typo.

	* Make-common.in (BUILT_SRC_FROM_COMMON): Remove files no longer
	built this way.
	(sim-config.o): Remove non-existent $(sim-nconfig_h) dependency.
	(clean): Don't delete $(BUILT_SRC_FROM_COMMON) if building in
	source tree.

Tue Nov 11 13:28:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Re-compute the time -
 	update_time_from_event - as each event is processed. Reverses
 	previous change.

Fri Nov  7 00:37:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (os_poll_quit): Replace _WIN32 with _MSC_VER.

Fri Nov  7 00:37:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Delete redundant call to
 	update_time_from_event.
	(sim_events_slip): Always decrement time_from_event.
	(sim_events_tick, sim_events_deschedule, update_time_from_event):
 	Delete assertion that time_from_event >=0 when work in queue, no
 	longer applicable.

Thu Nov  6 12:06:46 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (STANDARD_OPTIONS): Change OPTION_* to an enum.
	(standard_option_handler): Update.

	* sim-options.h: Clarify documentation.
 	(OPTION_LONG_ONLY_P): Delete definition.
	(OPTION_VALID_P): Define.

	* sim-options.c (sim_print_help): Allow short only options.
	(sim_parse_args): Ditto.
	(sim_args_command): Skip short only options.
	(sim_parse_args): Allocate space for NUM_OPTS not just 256. Make
 	separate entries for short and long options in the HANDLERS and
 	ORIG_VAL tables.
	(sim_parse_args): Disable argument permutation.

Wed Nov  5 13:40:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.h (DECLARE_SIM_CORE_WRITE_N. DECLARE_SIM_CORE_READ_N):
 	Add argument M, size of data type.
	(sim_core_read_misaligned_3, sim_core_write_misaligned_3):
 	Declare, ditto for 5, 6 & 7 byte transfers.
	(sim_core_write_unaligned_1, sim_core_write_unaligned_1): Define
 	as aligned variant.

	* sim-n-core.h (sim_core_trace_M): Rename from
 	sim_core_trace_N. Add nr_bytes argument. Replace transfer argument
 	with transfer type. Print transfer direction.  Handle 1 and 2 byte
 	transfers.
	(sim_core_read_unaligned_N, sim_core_write_unaligned_N): Trace
 	unaligned accesses.
	(unsigned_M, T2H_M, H2T_M): Rename from unsigned_N, T2H_N, H2T_N.
  	Update all functions.

	* sim-core.c: Generate functions starting with 16 not 1.
	(sim_core_read_unaligned_3): Generate. Ditto for 3 byte write and
 	all 5, 6 & 7 byte transfers.

	* sim-n-core.h (sim_core_read_misaligned_N,
 	sim_core_write_misaligned_N): Implement.

Mon Nov  3 15:03:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-endian.h (U16_8): Implement

	* sim-endian.c (sim_endian_split_16, sim_endian_join_16): New functions

	* sim-endian.h (VL8_16, VH8_16): Implement.

	* sim-memopt.c (memory_option_handler): Typecast 64bit value to
 	long in printf.
	(memory_option_handler): Only zalloc modulo bytes when non-zero.
	(memory_option_handler): Skip comma in alias address list

Fri Oct 31 13:03:33 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-memopt.c (do_memopt_add, do_memopt_delete): Add level and
 	space params.
	(parse_size, parse_addr): New functions
	(memory_option_handler, memory_options): Parse address & size
 	using new functions. Pass level, space, modulo to do_memopt_add &
 	do_memopt_del.

	* sim-memopt.h (struct _sim_memopt): Add level & space fields.

	* sim-core.h (sim_core_arrach, sim_core_detach): Replace
 	`attach_type attach' argument with `unsigned level' argument.
  	Document.

	* sim-core.c (new_sim_core_mapping, sim_core_map_attach,
 	sim_core_attach): Replace argument attach with level.  Update
 	verification of arguments.
	(sim_core_map_detach, sim_core_detach): Replace argument attach
 	with level.

	* sim-basics.h (enum _attach_type): Delete.

Thu Oct 30 13:45:00 1997  Doug Evans  <devans@seba.cygnus.com>

	* sim-core.h (sim_core_write_8): Define.

Tue Oct 28 12:29:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.h: Document ROTn macro.

	* sim-endian.h (H2T): Handle 16 byte variables.

	* sim-n-core.h (sim_core_read_unaligned_N): Return a dummy when an
 	error.

	* sim-core.c: Do not generate sim_core_*_word.

	* sim-n-core.h (sim_core_trace_N): Add line_nr argument.
	(sim_core_write_aligned_N, sim_core_read_aligned_N): Update.

	* sim-core.h (sim_core_read_unaligned_word,
 	sim_core_read_aligned_word, sim_core_read_word,
 	sim_core_write_unaligned_word, sim_core_write_aligned_word,
 	sim_core_write_word): Change to macros that map onto sim_core_*_N.

Mon Oct 27 11:25:10 1997  Doug Evans  <devans@canuck.cygnus.com>

	* sim-n-endian.h: Add TAGS entrys for 16 byte versions.

	* sim-endian.h: Disable 16 byte support.

Mon Oct 27 12:00:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-endian.c (_SWAP_16): Define.  Generate 126 bit swap code.

	* sim-n-core.h (sim_core_trace_N): New function.
	(sim_core_read_aligned_N, sim_core_write_aligned_N): Use,
	(sim_core_read_unaligned_N): Do not retyrn bogus value wden error.

	* sim-endian.h:  Add 128 bit variant.

	* sim-core.h, sim-core.c: Add 128 bit variant.

	* sim-types.h: Add signed128 and unsigned128 types using a struct.

Fri Oct 24 11:33:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Clear events->work_pending.
	(sim_events_tickn, sim_events_tick): Accumulate, instead of
 	setting, nr_ticks_to_process.
	(sim_events_preprocess): Allow nr_ticks_to_process to be non-zero
 	when the event queue isn't next.

	* sim-events.h, sim-events.c (sim_events_slip): New function.

Wed Oct 22 14:18:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-hload.c (sim_load): Pass lma_p==0 and do_load=sim_load.

	* sim-utils.h, sim-load.c (sim_load_file): Add lma_p and do_load
 	arguments.

Tue Oct 21 18:37:57 1997  Doug Evans  <devans@canuck.cygnus.com>

	* nrun.c (main): Remove useless test of name != NULL.
	Exit if bfd_openr fails.  Call bfd_check_format after bfd_openr.

Tue Oct 21 10:42:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (EXPMAX): Type is unsigned.
	(MIN_INT, MAX_INT): Type is signed64.
	(i2fpu): Type of val is signed64.

Tue Oct 21 10:42:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.h (PROFILE_PC_BUCKET_SIZE): Treat a shift of zero as
 	a bucket size of zero.

	* sim-profile.c (OPTION_PROFILE_PC_GRANULARITY,
 	OPTION_PROFILE_PC): Define.
	(profile_option_handler): Add support for --profile-pc and
 	--profile-pc-granularity options.
	(profile_pc_init): When possible, compute nr buckets from bucket
 	size.

	* sim-profile.c (profile_pc_init): Align the profile-pc end
 	address with the profile-pc bucket size.

	* sim-profile.h (PROFILE_PC_NR_BUCKETS): Rename PROFILE_PC_SIZE to
 	something less ambiguous.
	(PROFILE_PC_BUCKET_SIZE): Ditto for PROFILE_PC_SAMPLE_SIZE.

	* sim-profile.c (profile_pc_cleanup): New function. Move
 	profile_pc_uninstall code to here.
	(profile_pc_uninstall): Call.
	(profile_pc_init): Call.

Mon Oct 20 17:23:58 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print_pc): Dump pc profile to dmon.out
 	file using BSD gprof format.

	* sim-bits.h (LSBIT, MSBIT, BIT): Force result to type
 	unsigned_word.
	(LSBIT8, LSBIT16, LSBIT32, LSBIT64, MSBIT8, MSBIT16, MSBIT32,
 	MSBIT64): Force result to unsignedN.

Thu Oct 16 11:38:56 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU16_BEGIN, ALU32_BEGIN, ALU64_BEGIN): Drop opening
 	brace from macro.
	(ALU8_BEGIN, ALU8_SET, ALU8_ADD, ALU8_SUB, ALU8_NEGATE): Define.
	(ALU16_ADD, ALU16_SUB, ALU16_NEGATE): Simplify arrithmetic.
	(ALU32_ADD, ALU32_SUB, ALU32_NEGATE): Simplify arrithmetic.
	(ALU64_ADD, ALU64_SUB, ALU64_NEGATE): Simplify arrithmetic.

Wed Oct 15 09:24:19 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.h (struct _sim_core_mapping): Change free_buffer to
 	type void*.

	* sim-core.c (sim_core_uninstall, new_sim_core_mapping,
 	sim_core_map_attach, sim_core_map_detach): Change free_buffer to
 	type void*.
	(sim_core_attach): Rename buffer_freed to free_buffer, type
 	void*. Ensure that allocated buffer is alligned according to
 	region's address.

Mon Oct 13 11:34:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU64_HAD_OVERFLOW): Define.
	(ALU64_SUB): Define.

	* Make-common.in (all): Build SIM_EXTRA_ALL first.
	(.gdbinit): Remove dependencies, generate once per build.

Tue Oct 14 19:20:09 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_read_aligned_N,
 	sim_core_write_aligned_N): Make xaddr param type address_word not
 	unsigned_word.

Fri Oct  3 09:49:18 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.h, sim-fpu.c: Rewrite.  Change sim_fpu object to an
 	unpacked floating point struct.  Pass sim_fpu object by reference.
	Add preliminary support for rounding modes.

Fri Oct  3 09:28:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Thu Oct  2 19:43:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-bitsize): Fix typo, WITH_TARGET_WORD_BITSIZE not
 	WITH_TARGET_BITSIZE.

Thu Sep 25 23:20:20 1997  Felix Lee  <flee@yin.cygnus.com>

	* sim-profile.c (profile_print_core): label needs empty statement.

Thu Sep 25 11:20:47 1997  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* sim-break.c (sim_set_breakpoint sim_clear_breakpoint):  Use ZALLOC
	and zfree instead of xmalloc and free.  Prevents warnings.

Wed Sep 24 17:38:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Sep 24 17:23:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Make-common.in (SIM_BITSIZE): Assign from configured value.
	(CONFIG_CFLAGS): Add SIM_BITSIZE.

	* aclocal.m4 (--enable-sim-bitsize): Developer option for
 	controling the bitsize/msb of the target.

Wed Sep 24 17:41:40 1997  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* Make-common.in:  New files sim-break.c, sim-break.h.
	* sim-base.h:  Add point to breakpoint list to sim_state_base.
	* sim-break.c sim-break.h:  New modules that implement intrinsic
	breakpoint support.
	* sim-module.c:  Add breakpoint module.

Tue Sep 23 00:26:39 1997  Felix Lee  <flee@yin.cygnus.com>

	* sim-events.c (SIM_EVENTS_POLL_RATE): poll more often than once
 	an hour.
	* sim-n-core.h (WITH_XOR_ENDIAN): MSVC barfs on
	if (0) { 1 % 0; }
	* sim-core.c (sim_core_xor_write_buffer): WITH_XOR_ENDIAN + 1.
	(SIGBUS) define for Windows.
	* sim-trace.c (trace_printf,debug_printf): added ALMOST_STDC.
	* sim-resume.c: define SIGTRAP for windows.
	* sim-xcat.h: use token pasting if ALMOST_STDC.

Tue Sep 23 11:04:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Make-common.in (SIM_SCACHE, SIM_DEFAULT_MODEL): Assign
 	configured values.
 	(CONFIG_CFLAGS): Add same.

Mon Sep 22 17:20:27 1997  Felix Lee  <flee@cygnus.com>

	* sim-types.h (SIGNED64): ##i64 when _MSC_VER, not _WIN32.
	(SIGNED32): use ##i32.

Tue Sep 23 11:04:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Tue Sep 23 10:07:47 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-endian): Simplify logic determining [default]
 	endian of target.

	* Make-common.in (SIM_WARNINGS, SIM_ALIGNMENT, SIM_ENDIAN,
 	SIM_HOSTENDIAN, SIM_RESERVED_BITS, SIM_ASSERT, SIM_FLOAT,
 	SIM_HARDWARE, SIM_INLINE, SIM_PACKAGES, SIM_REGPARM, SIM_SMP,
 	SIM_STDCALL, SIM_XOR_ENDIAN): Assign configured values.
	(CONFIG_CFLAGS): Add same.

	* aclocal.m4: Perform AC_SUBST on optional options.

Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h (WITH_DEFAULT_ALIGNMENT): Don't hardwire any alignment.

	* sim-options.c (standard_option_handler): Typo in warning message.

	* sim-base.h (STATE_MODEL): Make conditional on SIM_HAVE_MODEL.

	* sim-profile.c (profile_print_insn): Check 0 .. MAX_INSN for any
 	insn count.  Make count conditional on there being a valid
 	INSN_NAME.
	(profile_pc_init): Make default PC profile frequency an arbitrary
 	256.

	* sim-base.h: Ditto.

	* sim-profile.h (WITH_PROFILE_MODEL_P): Only enable modeling when
 	SIM_HAVE_MODEL.

	* sim-model.h (struct MACH): Depreciate, to be replaced by bfd
	archure struct.

Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Sep 22 11:45:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim_alignment): Simplify logic for selecting the
 	configured alignment.

Fri Sep 19 17:45:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Sep 19 17:26:14 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.c (sim_config): Check for default alignment.

	* sim-options.c (standard_option_handler): Add alignment option.

	* aclocal.m4 (sim_alignment): Allow configuration of hardwired and
 	default alignment requirements on memory accesses.

Fri Sep 19 11:51:35 1997  Jeffrey A Law  (law@cygnus.com)

	* sim-load.c (sim_load_file): Return failure if the executable
	had no loadable sections.

Wed Sep 17 13:33:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (ETRACE): Use trace_printf not sim_io_printf for
 	trace output.

	* sim-core.c (sim_core_signal): When bad access halt simulator
 	SIGSEGV / SIGBUS instead of aborting.
	(signal.h): Include.

	* sim-watch.c (sim_watchpoint_install): Handler for watchpoint
 	options was missing.

	* sim-bits.h (MOVED): Define

Wed Sep 17 10:33:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-alu.h (ALU32_HAD_OVERFLOW): Pacify GCC, Use MSBIT instead of
 	BIT.

	* sim-bits.h (LSBIT, MSBIT): Check for overflow of shift value.

	* sim-bits.c: Add 8 bit versions of bit macros.

	* sim-bits.h: Ditto.

Tue Sep 16 16:15:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.c (LSSEXT, MSSEXT): Replace SEXT.
	(LSINSERTED, MSINSERTED): Ditto for INSERTED.

	* sim-n-bits.h (MSSEXTn, LSSEXTn): Replace SEXTn.
	(LSINSERTDn, MSINSERTEDN): Ditto for INSERTEDn.

	* sim-bits.h (SEXT*): Define as MSEXT/LSEXT.
	(INSERTED*): Ditto for LSINSERTED/MSINSERTED.

Mon Sep 15 17:36:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (SIM_AC_COMMON): Add optional config.h file argument.
	configure.in: Output to cconfig.h instead of config.h.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Mon Sep 15 15:39:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_analyze_program): Set STATE_ARCHITECTURE from
 	BFD if known.

Tue Sep  9 21:46:46 1997  Felix Lee  <flee@cygnus.com>

	* callback.c (os_write): divert stdout and stderr to their
 	respective hooks.

Thu Sep 11 10:08:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-profile.c (profile_print_speed): Call
 	sim_events_elapsed_time instead of PROFILE_EXEC_TIME for moment.

	* sim-events.c (sim_events_elapsed_time): New function return nr
 	host MS consumed by the simulator.
	(sim_watch_valid): Use.

	* sim-module.c (modules): Install sim_events very very early.

	* sim-profile.c (profile_print): Call profile_print_pc.
	(print_bar):
	(profile_pc_init): New function, set up processor for PC
 	profiling.
	(profile_print_pc): New function, print a PC profile.
	(profile_pc_event): New function, sample PC.

	* sim-profile.h (PROFILE_PC_COUNT, PROFILE_PC_START,
 	PROFILE_PC_END, PROFILE_PC_SHIFT, PROFILE_PC_SAMPLE_SIZE): Add to
 	profile struct.

	* sim-options.c (sim_print_help): Pacify GCC.

	* sim-n-core.h (sim_core_read_aligned_N,
 	sim_core_write_aligned_N): Add un-conditional profile call.
	(sim_core_read_unaligned_N, sim_core_write_unaligned_N): Add
 	profile call when aligned read/write isn't used.

	* sim-base.h: Include sim-profile, sim-model after sim-core &
 	sim-events allow sim-core to define useful values.

	* sim-profile.c (OPTION_PROFILE_CORE): Define.
	(profile_option_handler, profile_options): Add support for
 	--profile-core option.
	(print_bar): Include when core profiling.
	(profile_print_core): New function, print core profile.

	* sim-config.c (print_sim_config): Print profile status.

	* sim-profile.h (PROFILE_NEXT_IDX, PROFILE_core,
 	WITH_PROFILE_PC_P): Define.
	(PROFILE_CORE_COUNT): Count each core-map/size separatly.
	(PROFILE_COUNT_CORE): Define.

Thu Sep 11 08:44:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-watch.c (handle_watchpoint): Pass a char** index into the
 	interrupt_names array as the data.
	(sim-watch.h): Document.

Wed Sep 10 16:15:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (sim_print_help): When the doc string is to long
 	word wrap it.

	* sim-watch.c (sim_watchpoint_install): Use option.doc_name so
 	that only the first few the watch options are listed.  Generate
 	meanginful usage messages.

	* sim-options.h (struct OPTION): Clarify use of doc_name field

Wed Sep 10 13:23:24 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (OPTION_ARCHITECTURE_INFO): New option.
	(standard_option_handler): Handle --architecture-info.

Tue Sep  9 21:46:46 1997  Felix Lee  <flee@cygnus.com>

	* sim-core.h (sim_cpu_core): [WITH_XOR_ENDIAN + 1], to avoid
	illegal zero-sized array.
	* sim-core.c (sim_core_xor_read_buffer): same.

Tue Sep  9 11:20:35 1997  Doug Evans  <dje@canuck.cygnus.com>

	* nltvals.def: Regenerate.

Tue Sep  9 02:10:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (DP_FRACHIGH2): Define LL using SIGNED64.

Mon Sep  8 12:22:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.c (MASKED): Delete.
	(EXTRACTED): Delete.
	(LSEXTRACTED, MSEXTRACTED): New functions.

	* sim-n-bits.h (MASKEDn): Delete, define as MSMASKED or LSMASKED.
	(MSMASKEDn, LSMASKEDn): Add last argument.
	(MSMASK*): Ditto.

	* sim-bits.h (EXTEND8, EXTEND16): Define.
	(EXTRACTED64): Define as 64 bit extract, not 32 bit.

	* sim-run.c (sim_engine_run): Use CPU_CIA macro.

	* sim-engine.h (SIM_ENGINE_HALT_HOOK): Use CPU_CIA to get at
 	current instruction address.

	* sim-inline.h (*_ENGINE): Define.

Fri Sep  5 08:39:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_attach): Fix checks of modulo/mask.

	* sim-watch.c (delete_watchpoint): Delete by ident and type.
	(watch_option_handler): Call delete_watchpoint with ident or type.
	(sim_watchpoint_install): Create interrupt specific watchpoint
 	commands on the fly.
	(do_watchpoint_create): New function, create a watch point using
 	type/int-nr info encoded in the option nr.
	(do_watchpoint_info): New function.  List active watchpoints.

	* sim-watch.h: Change data structure to a list.

	* sim-memopt.c (memory_option_handler): Require explicit "all"
 	before deleting all memory regions.

	* sim-utils.c (sim_do_commandf): New function, printf version of
 	sim_do_command.

	* sim-basics.h (asprintf, vasprintf): Hack, define for CYGWIN32.

	* sim-alu.h (ALU64_ADD): Use explicit MSEXTRACTED64, do not assume
 	bit endianness.
	(SIGNED64, UNSIGNED64): Delete.
	(ALU64_ADD): Don't rely on bit endianness.
	(ALU64_BEGIN): Define.

	* sim-n-bits.h (MSEXTRACTEDn, LSEXTRACTED): New functions.
	(EXTRACTEDn): Delete, define as either LSEXTRACTED or MSEXTRACTED.

	* sim-types.h (SIGNED64, UNSIGNED64): New macros, attach relevant
 	suffix - u64, LL - to 64 bit constants.

Thu Sep  4 09:27:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.c (sim_config): Add assert for SIM_MAGIC_NUMBER.

	* sim-utils.h (NZALLOC): Define - zalloc * N.

	* sim-hrw.c (sim_read, sim_write): New file.  Provide generic
 	implementation of read/write functions.

	* Make-common.in (sim-hrw.o): New target.

	* sim-base.h (STATE_MEMOPT_P): Delete, simulators _always_ add
 	memory.

	* sim-memopt.c (memory_option_handler): Implement memory-size
 	command. Implement memory-alias command.  Let memory-delete delete
 	all memory regions.
	(add_memopt): New function.  Add a memory region.
	(do_memopt_delete): New function. Delete a memory region.

	* sim-utils.c (sim_elapsed_time_get): Never return zero.

	* sim-core.c (sim_core_detach): New function.
	(sim_core_map_detach): New function. Perform the actual detach.
	(sim_core_init): Move initialization code from here.
	(sim_core_install): To here.
	(sim_core_uninstall): And here.

	* sim-module.c: Add memopt module.

	* sim-base.h (STATE_MEMOPT, STATE_MEMOPT_P): Add memopt to
 	simulator base type.

	* Make-common.in (sim_main_headers): Add sim-memopt.h
	(sim-memopt.o): New target.

	* sim-core.c (sim_core_install): Add core_options to the option
 	table.

	* sim-watch.c (watch_options): Make --delete-watch a synonym for
 	--watch-delete.

	* sim-config.h (WITH_MODULO_MEMORY): Define as 0.  Update
 	comments.

	* sim-core.h (struct _sim_core_mapping): Change nr_bytes to type
 	address_word, add mask member.

	* sim-core.h, sim-core.c (sim_core_attach): Make nr_bytes of type
 	address_word, allow for 64bit targets in 32bit host. Add modulo
 	argument.
	(sim_core_map_attach): Ditto.
	(new_sim_core_mapping): Ditto.
	(sim_core_translate): Mask address when modulo memory.

Wed Sep  3 17:32:54 1997  Doug Evans  <dje@seba.cygnus.com>

	* sim-hload.c (sim_load): Add assert for SIM_MAGIC_NUMBER.

	* gdbinit.in: New file.
	* aclocal.m4 (SIM_AC_OUTPUT): Build .gdbinit.
	* Make-common.in (distclean): Delete .gdbinit.
	(.gdbinit): Add rule for.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

	* Make-common.in (cgen-run.o): Add rule for.

Wed Sep  3 10:08:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-resume.c (sim_resume): Suspend/resume the simulator.

	* sim-events.c (sim_watch_valid): Compute total elapsed time from
 	both resumed and previous elapsed time.
	(sim_events_init): Set initial_wallclock and current_wallclock to
 	zero.
	(sim_events_install): Install sim_events_suspend and
 	sim_events_resume.
	(sim_events_watch_clock): Allow for suspended simulator when
 	computing the time of the clock event.

	* sim-events.h (struct _sim_event): Add resume_wallclock, rename
 	initial_wallclock to elapsed_wallclock, set both to zero.
	(sim_events_init, sim_events_uninstall): Delete prototypes.

	* sim-module.h (MODULE_SUSPEND_FN, MODULE_RESUME_FN): Define types.

	* sim-module.c(sim_module_resume, sim_module_suspend): New
 	functions.

Wed Sep  3 10:08:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_attach): Clarify memory overlap error
 	message.

Tue Sep  2 14:57:06 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (TAGS): Add support for "/* TAGS: foo */" marker.
	* Make-common.in (TAGS): Likewise.
	* sim-n-bits.h: Add TAGS comments for all functions.
	* sim-n-core.h: Likewise.
	* sim-n-endian.h: Likewise.

Mon Sep  1 10:50:11 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_state_alloc): Set CPU backlinks, callback and
 	kind.

	* sim-base.h (sim_state_alloc): Add callback and kind arguments.

	* sim-base.h (INVALID_INSTRUCTION_ADDRESS): Add default
 	definition.

Sat Aug 30 09:47:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (DP_GARDMSB, ...): Make unsigned.
	(DP_FRACHIGH, DP_FRACHIGH2, ..): Use MSMASK to avoid LL.

Fri Aug 29 13:37:44 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_attach): Cast attach enum to int.
	(sim_core_xor_read_buffer, sim_core_xor_write_buffer): Make
 	nr_transfered and nr_this_transfer unsigned.

	* sim-events.c (sim_events_tickn): N is signed, as limited to
 	MAXINT.

	* sim-n-endian.h (offset_N): Change size to unsigned.

	* callback.c (os_poll_quit): Add prototypes for kbhit and getkey.

Fri Aug 29 10:10:53 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_copy_argv): Delete, replaced by dupargv.

	* sim-options.c (sim_parse_args): Use dupargv.

Thu Aug 28 10:36:34 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-options.c (standard_option_handler): Use xstrdup, not strdup.

Thu Aug 28 12:09:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-base.h (STATE_ARCHITECTURE, STATE_TARGET): Add to simulator
 	base type.

	* sim-options.c (standard_options): Add --architecture=MACHINE and
 	--target=TARGET options.
	(OPTION_ARCHITECTURE, OPTION_TARGET): Define.
	(standard_option_handler): Handle architecture and target options.
	(bfd.h): Include.

	* sim-utils.c (sim_analyze_program): Pass STATE_TARGET to
 	bfd_openr.
	(sim_analyze_program): Set prog_bfd architecture from
 	STATE_ARCHITECTURE if known.

Wed Aug 27 18:13:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Wed Aug 27 18:11:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (enable-sim-warnings): Remove comment stating
 	that option does not apply to certain files.

Wed Aug 27 15:13:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-bits.h (LSBIT8, LSBIT16, LSBIT32, LSBIT64, LSBIT, MSBIT8,
 	MSBIT16, MSBIT32, MSBIT64, MSBIT): New macros - single bit as
 	offset from MSB/LSB.

	* sim-endian.h (A1_8, A2_8, A4_8, A1_4, A2_4, A1_2): New macro,
 	access address of sub word quantity of a hosts 16, 32, 64 bit word
 	type.
	(V1_2, V1_4, V2_4, V1_8, V2_8, V4_8): Ditto for values.
	(U8_1, U8_2, U8_4, U4_1, U4_2, U2_1): Ditto for set of values.
	(V2_H1, V2_L1, V4_H2, V4_L2, V8_L4, V8_H4): Given N byte argument,
 	return N*2 byte value with argument in Hi/Lo word.  Renamed from
 	V1_H2, V1_L2, V2_H4, V2_L4, V4_H8, V4_L8.

	* sim-alu.h (ALU32_HAD_OVERFLOW): Use 64 bit mask not 32bit.
	(ALU16_HAD_CARRY, ALU32_HAD_CARRY, ALU16_HAD_OVERFLOW): Use MSBIT
 	so that bit offset is explicit.

Wed Aug 27 11:55:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_analyze_program): Add prog_name argument.
  	Update STATE_PROG_BFD when needed with a dup'd copy of the
 	program.

	* sim-config.c (sim_config): Delete ABFD argument, use
 	STATE_PROG_BFD directly.

Tue Aug 26 12:55:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main): Pass the open ABFD to sim_create_inferior.

	* nrun.c (main): Determine prog_bfd.  Pass to sim_create_inferior
 	and sim_load.
	(bfd.h): Include.

	* sim-hload.c (sim_load): New file. Implement generic sim_load for
 	hardware only simulator targets.

	* Make-common.in (sim-hload.o): Add rule.

Wed Aug 27 09:51:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-utils.c (sim_copy_argv): Rewrite to match malloc strategy
 	used by copyargv and freeargv.

	* sim-options.c (sim_parse_args): Save a copy of PROG-ARGS in
 	STATE_PROG_ARGV, not just a pointer.

Mon Aug 25 17:50:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Mon Aug 25 12:11:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4 (sim-endian): Add second argument to
 	SIM_AC_OPTION_ENDIAN.  First is hardwired endian, second is
 	default endian when not hardwired.

	* sim-config.h (WITH_DEFAULT_TARGET_BYTE_ORDER): New macro, if all
 	else failes value for target byte order.

	* sim-config.c (sim_config): Add abfd arguments. Set
 	STATE_PROG_BFD accordingly.  Determine prefered_target_byte_order
 	from same.
	(sim_config): Return SIM_RC, don't abort.
	(bfd.h): Include.

	* run.c (main): Update call to sim_open - add ABFD argument.
  	* nrun.c (main): Add NULL ABFD argument.

Thu Aug 14 12:48:57 1997  Doug Evans  <dje@canuck.cygnus.com>

	* callback.c (os_poll_quit): Make static.
	Call sim_cb_eprintf, not p->eprintf.
	(sim_cb_printf, sim_cb_eprintf): New functions.
	* sim-utils.h (sim_cb_printf, sim_cb_eprintf): Declare.

	* sim-basics.h (zalloc,zfree,sim_add_commas,SIM_ELAPSED_TIME,
	sim_elapsed_time_get,sim_elapsed_time_since): Move decls to
	sim-utils.h. #include sim-utils.h.
	* sim-utils.h: Above decls moved here.
	(sim_analyze_program,sim_load_file): Use `struct _bfd', not `bfd'.

	* sim-watch.c (action_watchpoint): Fix thinkos.

Thu Jul 24 08:48:05 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* sim-types.h:  Fix defs of 64 bit data types for MSVC.

Tue Jul 22 10:35:37 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-n-core.h (sim_core_write_unaligned_N): Add missing break
	to FORCED_ALIGNMENT case.

Thu Jun  5 13:48:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (target_to_host_open): Handle hosts with O_BINARY.

Thu Jun  5 08:47:10 1997  Jeffrey A Law  (law@cygnus.com)

	* Make-common.in (libsim.a): Fix typo.

Thu Jun  5 13:48:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Verify the structure returned before using it.

Wed Jun  4 11:44:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h (WITH_ENGINE): Enable the sim-engine module by
 	default.

	* sim-engine.c (sim_engine_install): New function.  Install the
 	engine init functions.
	(sim_engine_init): [Re]initialize the simulator engine.

	* sim-module.c: Add sim_engine to list of modules that always
 	install.

Tue Jun  3 04:52:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-watch.c (schedule_watchpoint): Use sim_unschedule_watchpoint
 	to remove the old watchpoint, not delete_watchpoint.
	(watch_option_handler): Action the correct watchpoint, not just
 	cycles.

Wed May 28 14:47:41 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-n-core.h (sim_core_write_aligned_N): For 8byte reads, output
 	both low and high word.
	(sim_core_write_aligned_N): Ditto.

	* sim-trace.c (set_trace_options): Delete code explicitly setting
 	core->trace.

	* sim-options.c (sim_print_help): Call the list commands if not a
 	standalone simulator.
	(sim_print_help): Advise that some options may not be applicable.

	* sim-trace.c (set_trace_options): Assume core present.

	* sim-events.c (sim_events_schedule_after_signal): Overflow signal
 	buffer when full not almost full.

Tue May 27 14:32:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_process): Don't blat the event queue
 	when processing watchpoints.

	* sim-watch.h: Make arg unsigned long - stop sign extension.

	* sim-events.c (sim_watch_valid): rewrite so debugable.

	* sim-config.h (WITH_XOR_ENDIAN): Default to zero.

	* sim-watch.c (schedule_watchpoint): Add is_within option so that
 	inequality test is possible.
	(handle_watchpoint): Re-pass is_within arg.
	(watch_option_handler): When `!' prefix to pc-watchpoint arg pass
 	0 to schedule_watchpoint's is_within arg.
	(sim_watchpoint_init): Re-pass is_within arg.

	* sim-options.c (sim_print_help): Add is_command argument.  Don't
 	include -- prefix when called from the command line interpreter.

	* sim-watch.c (schedule_watchpoint): Pass true is_within argument.

	* sim-events.c (sim_events_watch_sim): Add is_within argument,
 	zero indicates that the test should be reversed.
	(sim_events_watch_core): Ditto.
	(WATCH_CORE): Compare range against is_within.
	(WATCH_SIM): Ditto.

Tue May 27 12:48:03 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-events.c (WATCH_CORE): Pass NULL cpu argument to
 	sim_core_read_buffer.  Check nr-bytes transfered.

	* sim-core.h (sim_core_common): Define a new struct that contains
 	the common data.  to sd and cpu structures.
	* sim-core.c (sim_core_attach): Update.
	(sim_core_init): Update. Remember to copy initialized data to each
 	cpu.
	(sim_core_find_mapping): Ditto.

	* sim-core.c (sim_core_read_buffer): Add cpu argument.
	(sim_core_write_buffer): Ditto.

	* sim-n-core.h (sim_core_read_unaligned_N): When mis-aligned
 	transfer use xor version of read buffer.
	(sim_core_write_unaligned_N): Ditto for write.

	* sim-core.c (sim_core_xor_read_buffer): New function implement
 	xor-endian data read breaking transfer up into xor-endian sized
 	blocks.
	(sim_core_xor_write_buffer): Ditto for write.
	(reverse_n): Reverse order of arbitrary number of bytes in buffer
 	- needed for xor-endian transfers.

Fri May 23 14:24:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-inline.h: Review description.

	* sim-core.h, sim-core.c: Reduce number of functions being inlined
 	to just those involved in data transfers and configuration.

	* sim-xcat.h (XSTRING): New macro, map macro definition onto
 	string.
	* sim-n-core.h (sim_core_read_aligned_N): Use.
	(sim_core_read_unaligned_N): Ditto.
	(sim_core_read_unaligned_N): Ditto..
	(sim_core_write_unaligned_N): Ditto.

	* sim-core.h: Add xor endian bitmap to main structure.  *

 	sim-n-core.h (sim_core_write_aligned_N): Add suport for xor
 	endian.
	(sim_core_read_aligned_N): Ditto.

	* sim-core.c (sim_core_set_xor_endian): New function.
	(sim_core_attach): Don't overwrite the per-cpu xor map when
 	cloning the global core.

Fri May 23 10:53:13 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-engine.h: Update below so that it is using an enumerated
 	type.

Thu May 22 09:12:16 1997  Gavin Koch  <gavin@cygnus.com>

	* sim-engine.c (sim_engine_restart):
	* sim-resume.c (sim_resume): Change longjmp param/setjmp
 	return value used for simulator restart from 0 to 2.

Wed May 21 08:47:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* cgen-scache.c (scache_option_handler): Add is_command arg.

	* sim-model.c (model_option_handler): Add is_command argument.

	* sim-profile.c (profile_option_handler): Add is_command arg.

	* sim-events.c (sim_watch_valid): Use ub64, lb64 when 64bit value
 	involved.

	* sim-module.c (sim_module_add_init_fn): Call init fn in the same
 	order that they are registered.

	* sim-options.h (OPTION_HANDLER): Add argument to differentiate
 	between option and command line processing.

	* sim-options.c: Include stdlib.h, ctype.h.

	* Make-common.in (sim-watch.o): Add rule.
	(sim_main_headers): Assume sim-assert.h included.
	(sim-*.o): Simplify make rule.

	* sim-module.c: Add sim_watch_install to module list.

Tue May 20 14:15:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-base.h (STATE_LOADED_P): New predicate. Set once everything
 	has been loaded.

	* sim-trace.c (trace_install): Check magic. Include sim-assert.h.
	* sim-events.c (sim_events_install): Ditto.
	* sim-core.c (sim_core_install): Ditto.
	* sim-model.c (model_install): Ditto.
	* sim-options.c (standard_install): Ditto.
	* sim-profile.c (profile_install): Ditto.
	* sim-reason.c (sim_stop_reason): Ditto.
	* sim-run.c (sim_engine_run): Ditto.
	* sim-utils.c (sim_analyze_program): Ditto.

	* sim-module.c (modules): Make profile_install and trace_install
 	optional.

	* sim-base.h (STATE_MEM_BASE): Define for flat memory systems.

	* sim-options.c (standard_option_handler): Set the byte order.

	* sim-events.c (sim_events_process): Allow multi tick processing.
	(sim_events_tickn): New function - multi cycle tick.

	* sim-events.h (sim_events_tickn, sim_events_timewarp): Add
 	prototypes.  Under development.
	(sim_events): Replace processing with nr_ticks_to_process.

Tue May 20 09:39:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Pass callbacks to sim_open instead of using
 	sim_set_callbacks.

	* run.c (main): Ditto.

Mon May 19 12:07:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (sim_events_zalloc): Signal save memory allocator -
 	stop tk interrupting malloc calls.
	(sim_events_zalloc): Converse.

	* Make-common.in (sim_main_headers): Add sim-events.h.

	* sim-events.c (sim_events_schedule_after_signal): Change return
 	type to void - signal events are strictly internal.
	(sim_events_init): Allocate a finite buffer for signal events.
	(sim_events_schedule_after_signal): Enter signal events into the
 	signal buffer.

	* sim-engine.c (sim_engine_halt): Check SIM_DESC magic.
	(sim_engine_restart): Ditto.
	(sim_engine_abort): Ditto.
	* sim-stop.c (sim_stop): Ditto.
	(control_c_simulation): Ditto.
	* sim-resume.c (sim_resume): Ditto.
	(has_stepped): Ditto.
	* sim-abort.c (sim_engine_abort): Ditto.

	* sim-basics.h (transfer_type): New type.

	* sim-core.c (sim_core_signal): New function. Print core signal
 	information.
	(sim_core_find_mapping): Add transfer argument.

	* sim-n-core.h (sim_core_{write,write}_unaligned_N): Call
 	SIM_CORE_SIGNAL if a recoverable abort.
	* sim-core.c (sim_core_find_mapping): Ditto.

Fri May 16 15:13:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_find_mapping): Replace calls to
 	sim_io_error to more resiliant sim_engine_abort.

	* sim-n-core.h (sim_core_read_unaligned_N): Ditto.
	(sim_core_write_unaligned_N): Ditto.

Tue May 13 13:50:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-module.c: Add sim_events_install to list.

	* sim-events.c (sim_events_install, sim_events_uninstall): Clonse
 	from sim_core_*.
	(sim_events_init): Now returns SIG_RC.

	* sim-run.c: New file. Generic sim_engine_run.
	* sim-reason.c: New file. Generic sim_stop_reason.
	* sim-stop.c: New file. Generic sim_stop.
	* sim-resume.c: New file. Generic sim_resume.

	* Make-common.in (sim-engine.o): Add rule.
	(sim-run.o, sim-reason.o, sim-stop.o, sim-resume.o): Ditto.

	* sim-engine.h, sim-engine.c: New file. Provide generic
 	implementation of sim_engine_halt, sim_engine_error. et.al.

	* sim-base.h (sim_state_base): Add member halt.
	(sim-engine.h): Include.

	* sim-events.h (sim_event_handler): Always pass SIM_DESC to event
 	handlers.
	* sim-events.c (sim_events_poll): Update event handler.

Tue May 13 09:57:49 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-events.h, sim-events.c (sim_events_watch_clock): New
 	function.
	(sim_events_watch_sim): New function.
	(sim_events_watch_core): New function.
	(sim_watch_valid): New function.
	(sim_events_preprocess): New function.
	(sim_events_process): Process the watchpoints as well as the timer
 	queue.
	(sim_events_tick): Check WORK_PENDING instead of the hold queue.
	(sim_events_deschedule): Check all the queues when removing an
 	event.
	(sim_events_init): Ditto for cleaning.

Mon May 19 12:07:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (is_ufpu_number): Comment out - currently unused.

Mon May 19 11:23:03 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (os_open): Type of arg flags is int.

Fri May 16 22:26:43 1997  Michael Meissner  <meissner@cygnus.com>

	* sim-fpu.c (sim_fpu_is_{eq,ne,lt,le,gt,ge}): Compare Infinities
	just like normal numbers as per IEEE rules.

Wed May 14 21:20:38 1997  Bob Manson  <manson@charmed.cygnus.com>

	* callback.c (os_close): Mark the descriptor as being
	available if the close succeeded.
	(os_open): Pass 0644 as the mode of the file being created.

Thu May 15 10:58:52 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-fpu.c (pack_fpu, unpack_fpu): New functions - decode a
 	float.

	* sim-inline.c (SIM_INLINE_C): Rename from _SIM_INLINE_C_.
	* sim-lnline.h: Update.

	* sim-fpu.h, sim-fpu.c (sim_fpu_[iu]{32,64}to): New int2fp
 	conversion functions.
	(sim_fpu_to{32,64}[iu]): New fp2int functions.

	* sim-fpu.h, sim-fpu.c (sim_fpu_is_{lt,le,eq,ne,ge,gt}): New fp
 	compare functions.  Replacing.
	(sim_fpu_cmp): This. Delete.

Mon May 12 14:49:05 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_find_mapping): Call engine_error not
 	sim_io_error when possible.

Mon May 12 08:55:07 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* sim-endian.h (V1_H2): Add macro's to insert a word into a
 	high/low double word.

	* sim-trace.h: Remove definition of attribute - defined in
 	sim_basics.h.

Mon May 12 08:55:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.h (struct OPTION): Add doc_opt as the documenting
 	name of the option - or family of options.

	* sim-options.c (sim_args_command): Match command `a-b c' with
 	option `--a-b-c' from option table.

Thu May  8 12:40:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-options.c (sim_print_help): For optional arguments, wrap
 	them in [].

	* sim-trace.c (set_trace_options): New function, handle optional
 	argument and multiple assignment.
	(trace_option_handler): Update.

	* sim-trace.c (trace_option_handler): Trace branch and not fpu
 	when branch tracing selected.

Wed May  7 15:19:58 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.c (trace_one_insn): Make a va-args function.

	* sim-trace.c (trace_vprintf): New function, va-arg version of
 	trace_printf.

Tue May  6 16:38:16 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-trace.c (trace_uninstall): Don't close a file twice.
	* sim-profile.c (profile_uninstall): Likewise.

Tue May  6 06:14:01 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-trace.c (toplevel): Include bfd.h.
	(trace_options): Note that --trace-linenum also turns on
	--trace-insn.  Add --trace-{branch,semantics}.
	(trace_option_handler): If --trace-linenum, also turn on
	--trace-insn.  Add --trace-branch support.  If --trace-semantics,
	turn on ALU, FPU, branch, and memory tracing.
	(trace_one_insn): New function to trace an instruction.  Support
	--trace-linenum.
	(OPTION_TRACE_*): Use an enum, rather than lots of defines.

	* sim-trace.h (TRACE_{SEMANTICS,BRANCH}_IDX): Add new macros.
	(MAX_TRACE_VALUES): Use 32, not 12 by default.
	(TRACE_branch): Add new mask.
	(TRACE_*_P): Define all possible trace_p macros.
	(trace_one_insn): Declare function.

Mon May  5 14:08:34 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-trace.h (__attribute__): Define as nothing if not GNU C or
	GNU C doesn't support __attributes__.
	({trace,debug}_printf): Add attribute's so -Wformat can check the
	format strings.

Mon May  5 11:16:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-config.h (FORCED_ALIGNMENT): New alignment option -
 	addresses are masked forcing them to be correctly aligned.
	(WITH_ALIGNMENT): Make NONSTRICT_ALIGNMENT the default.
	* sim-config.c (config_alignment_to_a): Update.

	* sim-core.h (sim_cpu_core): New data type contains cpu specific
 	core data.
	* sim-base.h (CPU_CORE): Add cpu specific core data to cpu base
 	type.
	* sim-core.c (sim_core_attach): Add CPU argument.  Ready for
 	processor specific core maps.
	(sim_core_map_attach): Copy the core map data to each of the
 	processor specific core data structures.
	* sim-core.c (sim_core_find_mapping): Update.

	* sim-n-core.h (sim_core_read_N, sim_core_write_N): Rename.
	(sim_core_write_aligned_N, sim_core_write_aligned_N): New names.
	(sim_core_write_unaligned_N, sim_core_write_unaligned_N): New
 	alternatives that handle unaligned addresses.
	(sim_core_{read,write}_{,un}aligned_N): Drop SIM_DESC arg, replace
 	with just CPU arg.
	* cgen-utils.c (sim_disassemble_insn): Update.

Mon May  5 13:19:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-trace.h (TRACE_FPU_IDX): Add Floating-point specific
 	tracing.

	* sim-fpu.h, sim-fpu.c: New files - prototype for generic target
 	fpu support.

	* sim-inline.h, sim-inline.c: Add support for SIM_FPU.

Fri May  2 17:59:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-core.c (sim_core_map_to_str): New function ascii equivalent
 	to map type.

	* sim-n-core.h (sim_core_read_N, sim_core_write_N): Use in trace
 	statement.

Fri May  2 17:28:02 1997  Andrew Cagney  <cagney@b2.cygnus.com>

	* cgen-trace.c: Prepend additional trace_printf argument.

	* cgen-utils.c (sim_disassemble_insn): Add additional core
 	arguments.

Fri May  2 11:40:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* nrun.c (main): Catch/report errorenous simulator states.

	* sim-module.c: #include "libiberty.h" so that xmalloc is defined.
  	* sim-trace.c: #include string.h/strings.h so that memset is
 	defined.
	* sim-utils.c: Ditto.
	* sim-profile.c: Ditto. And stdlib.h.
	(print_bar): Only define when used by instruction or memory profiler.

	* sim-options.c (standard_option_handler): Make ul more local.

	* sim-load.c (sim_load_file): Make the name constant.
	(sim_load_file): Passify gcc.

	* sim-utils.h: New file, pre-declare utilites in corresponding .c
 	file.
	* sim-utils.c, sim-load.c: Include sim-utils.h.

	* sim-base.h (sim_cpu): Pre define here so available to all.

	* sim-core.h (DECLARE_SIM_CORE_WRITE_N, DECLARE_SIM_CORE_READ_N):
 	Restore the sim_cpu and instruction_address arguments so that full
 	information is available to the abort function.
	* sim-core.c (sim_core_find_mapping, sim_core_write_buffer): Ditto.
	* sim-n-core.h (sim_core_write_N, sim_core_read_N): Update.

	* sim-trace.h, sim-trace.c (trace_option_handler): Add interim
 	tracing support for sim-events and sim-core.
	(trace_option_handler): Convert #if to if where possible so always
 	compiled/checked by C compiler.
	* sim-n-core.h (sim_core_write_N, sim_core_read_N): Update.

	* sim-base.h: Adjust comment documenting how to define the cpu
 	structure.
	(sim_state_base): Add sim_core and sim_events to simulator base
 	object.

	* sim-trace.h, sim-trace.c (trace_printf): Add SIM_DESC argument.
	* sim-core.c (sim_core_init, sim_core_attach,
 	sim_core_find_mapping): Update.
	* sim-events.c (ETRACE, sim_events_init, sim_events_time,
 	update_time_from_event, insert_sim_event,
 	sim_events_schedule_after_signal, sim_events_deschedule,
 	sim_events_tick): Ditto.

	* sim-basics.h (sim-module.h, sim-trace.h, sim-profile.h,
 	sim-model.h): Move #includes from here.
	* sim-base.h: To here.
	(sim-core.h, sim-events.h, sim-io.h): Include also

Wed Apr 30 15:37:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* callback.c (default_callback): Missing initialisers.

Thu May  1 10:40:47 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-utils.c (sim_add_commas): New function.
	* sim-basics.h (sim_add_commas): Add prototype.
	* cgen-scache.c (scache_print_profile): Print commas in numbers.
	* sim-profile.c (COMMAS): New macro.
	(print_*): Use it to print commas in numbers.

	* configure: Regenerated.

	* cgen-sim.h (sim_signal_type): Add SIM_SIGINT.
	(cgen_state): New member run_fast_p.
	(cgen_init): Add prototype.
	(sim_disassemble_insn): New arg `cpu'.
	* cgen-trace.c (trace_insn): Update call to sim_disassemble_insn.
	* cgen-utils.c (cgen_init): New function.
	(sim_disassemble_insn): New arg `cpu'.  Rewrite fetching of insn.
	* genmloop.sh: Call engine_halt if loop exits.

	* Makefile.in (sim-options_h): Define.
	(sim-{module,options,trace,profile,utils}.o): Clean up dependencies.
	(sim-model.o): Add new rule.
	(cgen-{scache,trace,utils}.o): Add new rules.
	* aclocal.m4 (SIM_AC_OPTION_{SCACHE,DEFAULT_MODEL}): Add.
	* cgen-scache.c (scache_print_profile): Change `sd' arg to `cpu'.
	Indent output by 2 spaces.
	* cgen-scache.h (scache_print_profile): Update.
	* cgen-trace.c (trace_insn_fini): Indent output by 2 spaces.
	Use trace_printf, not fprintf.
	(trace_extract): Use trace_printf, not cgen_trace_printf.
	* genmloop.sh (!FAST case): Increment `insn_count'.
	* sim-base.h (sim_state_base): Only include scache_size if WITH_SCACHE.
	(sim_cpu_base): Rename member `sd' to `state' to be consistent with
	access macro's name.
	* sim-core.c (sim_core_init): Use EXTERN_SIM_CORE to define it.
	Change return type to SIM_RC.
	(sim_core_{install,uninstall}): New functions.
	* sim-core.h (sim_core_{install,uninstall}): Declare.
	(sim_core_init): Use EXTERN_SIM_CORE to define it.
	Change return type to SIM_RC.
	* sim-model.h (models,machs,model_install): Declare.
	* sim-module.c (modules): Add scache_install, model_install.
	(sim_post_argv_init): Set cpu->state backlinks.
	* sim-options.c (standard_options): Delete --simcache-size,--max-insns.
	(standard_option_handler): Likewise.
	* sim-profile.c (PROFILE_{HISTOGRAM,LABEL}_WIDTH): Move to
	sim-profile.h.
	(*): Assume ANSI C.
	(profile_options): Delete --profile-simcache.
	(profile_option_handler): Likewise.
	(profile_print_insn): Change `sd' arg to `cpu'.  Indent output 2
	spaces.
	(profile_print_{memory,model}): Likewise.
	(profile_print_simcache): Delete.
	(profile_print_speed): New function.
	(profile_print): Rewrite.
	* sim-profile.h (PROFILE_scache): Renamed from PROFILE_simcache.
	(WITH_PROFILE_SCACHE_P): Renamed from WITH_PROFILE_SIMCACHE_P.
	(PROFILE_DATA): Delete members simcache_{hits,misses}.
	(PROFILE_COUNT_SIMCACHE_{HIT,MISS}): Delete.
	(PROFILE_{CALLBACK,CPU_CALLBACK}): New types.
	(profile_print): Update prototype.

Wed Apr 30 11:34:14 1997  Doug Evans  <dje@canuck.cygnus.com>

	* cgen-scache.[ch], cgen-sim.h: New files.
	* cgen-trace.[ch], cgen-types.h, cgen-utils.c, genmloop.sh: New files.
	* sim-model.c: New file.

	* Make-common.in (clean targets): Undo patch of Apr. 22.

Fri Apr 25 15:28:32 1997  Mike Meissner  <meissner@cygnus.com>

	* sim-n-bits.h (signed): If we have a standard compiler, undef
	signed, so that signedN is defined correctly.

Thu Apr 24 00:00:07 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-module.h, sim-model.h, sim-profile.h: New files.
	* sim-module.c, sim-profile.c: New files.
	* Make-common.in (SIM_PROFILE): Define
	(CONFIG_CFLAGS): Add $(SIM_PROFILE).
	(sim_main_headers): Add sim-module.h, sim-model.h, sim-profile.h.
	(sim_module.o,sim-profile.o): Add rules for.
	* aclocal.m4 (--enable-sim-trace): Allow symbolic arguments.
	(--enable-sim-profile): Add.
	* configure: Regenerated.
	* sim-base.h (sim_state_base): New members init_list, uninstall_list,
	model.  Move trace and profile support to sim-{trace,profile}.h.
 	New members trace_data, profile_data.
	* sim-basics.h: #include sim-module.h, sim-model.h, sim-profile.h.
	* sim-config.h: Provide default definition of WITH_PROFILE.
	(WITH_TRACE): Change default to -1.
	(MAX_NR_PROCESSORS): Always define.
	* sim-options.c: Move trace and profile support to
	sim-{trace,profile}.h.
	(sim_pre_argv_init): Moved to sim-model.c.
	(standard_install): New function.
	* sim-options.h (sim_pre_argv_init): Move decl to sim-model.c.
	(standard_install): Declare.
	* sim-trace.c: Tracing option handling moved here from sim-options.c.
	(trace_install, trace_uninstall): New functions.
	(trace_printf): Update reference to TRACE_FILE.
	* sim-trace.h (TRACE_FOO_IDX): Moved here from sim-base.h.
	(TRACE_foo): Bit masks for symbolic arguments to --enable-sim-trace.
	(WITH_TRACE_FOO_P): Define.
	(trace_install): Declare.
	(TRACE_DATA): New struct.

Wed Apr 23 17:23:15 1997  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: Undo last exec_bfd patch.
	(main): Only pass -E ifdef SIM_HAVE_BIENDIAN.

Wed Apr 23 17:54:27 1997  Mike Meissner  <meissner@cygnus.com>

	* run.c (exec_bfd): Add back in.
	(main): Set exec_bfd.

Tue Apr 22 14:43:46 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-load.c (sim_load_file): #include <stdio.h> for NULL.

Wed Apr 23 02:55:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-events.c (insert_sim_event): Call sim_io_error instead of
 	less well defined engine_error.
	* sim-core.c: Ditto.

Tue Apr 22 08:48:16 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* Make-common.in:  Change clean targets to use :: so that other
	Makefiles can have their own clean targets.
	* sim-load.c (xprintf eprintf):  Use ANSI_PROTOTYPES instead of
	__STDC__ to control use of stdarg vs. varargs syntax.  Some
	systems can't use __STDC__, but require stdarg.

Fri Apr 18 11:14:43 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-options.c (standard_options): Add --endian.
	(standard_option_handler): Likewise.

	* nrun.c: #include <signal.h>.
 	(main, cntrl_c): Wrap calls to sim_resume in a SIGINT
 	handler that calls sim_stop ().

Fri Apr 18 13:11:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* run.c (main, cntrl_c): Wrap calls to sim_resume in a SIGINT
 	handler that calls sim_stop ().  Simulators may still be
 	establishing their own handler.

	* sim-events.c (sim_events_poll): Rename from
 	sim_events_at_large_int.  Poll IO.

	* sim-io.c (sim_io_poll_quit): New function - pass on a polling
 	request.

	* callback.c (os_poll_quit): New function poll for quit signal
	where needed.
	(default_callback): Include magic number.

Thu Apr 17 02:25:11 1997  Doug Evans  <dje@canuck.cygnus.com>

	* aclocal.m4: Check for headers time.h, sys/time.h, sys/resource.h.
	Check for functions getrusage, time.
	* sim-basics.h (SIM_ELAPSED_TIME): New typedef.
	(sim_elapsed_time_get, sim_elapsed_time_since): Add prototypes.
	* sim-utils.c: #include time.h, sys/time.h, sys/resource.h if able.
	(sim_elapsed_time_get, sim_elapsed_time_since): New functions.

	* sim-utils.c (sim_copy_argv, sim_analyze_program): New functions.

	* sim-options.c, sim-options.h: New files.
	* sim-config.h (WITH_DEBUG): Provide default value of zero.
	* Make-common.in (nrun.o): Add rules for.
	* nrun.c: New file.

	* run.c (main): Check return value of sim_open.

	* Make-common.in (sim-options.o, sim-load.o, sim-trace.o): Add rules.
	(sim_main_headers): Add sim-trace.h.
	* run.c (exec_bfd, target_byte_order): Delete.
	(main): Pass -E <endian> to sim_open.  Delete code to load sections,
	call sim_load instead.  Check return code of sim_create_inferior.
	* sim-base.h (CURRENT_STATE): Define.
	(sim_state_base): Make typedef.  New members options, prog_argv,
	prog_bfd, text_{section,start,end}, start_addr, simcache_size,
	mem_size, memory [+ corresponding access macros].
	(sim_cpu_base): New typedef.
	* sim-trace.h: New file.
	* sim-trace.c: New file.
	* sim-basics.h: #include it.
	* sim-load.c: New file.

Tue Apr 15 15:10:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Make-common.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install-common): Depend upon installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM).
	(installdirs): New target.
	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install-man): Depend upon installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM).
	(installdirs): New target.

Tue Apr 15 15:08:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim-assert.h (SIM_ASSERT, ASSERT): Allow these macros to
	be overriden.

Wed Apr  9 16:06:44 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-basics.h: Only bring in config.h and tconfig.h if
 	HAVE_CONFIG_H.

Mon Apr  7 11:39:45 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-config.h (WITH_TARGET_WORD_MSB): New Macro. Define the bit
 	numbering convention of the target.
	* sim-config.c (print_sim_config): Print WITH_TARGET_WORD_BITSIZE
 	and WITH_TARGET_WORD_MSB.
	(sim_config): When possible, check for consistency with bitsize
 	and msb.

	* sim-bits.h: Allow MSB to be other than zero.
	* sim-bits.c: Ditto.
	* sim-n-bits.h: Ditto.

	* sim-bits.h (MSMASK*): New macros - converce to LSMASK*.
	* sim-n-bits.h (MSMASKEDn): Ditto.

Mon Apr 14 16:29:21 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

Mon Apr  7 10:46:38 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-base.h (sim_state_base): Move `magic' to end of struct.

Mon Apr  7 15:53:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* run.c (main): Check that a program to run was specified.

Mon Apr  7 15:45:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (AC_TYPE_SIGNAL): Add check.

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Wed Apr  2 15:06:28 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sim-endian.h: Move host {LITTLE,BIG}_ENDIAN support from here,
	* sim-config.h: To here.

	* Make-common.in (SIM_EXTRA_DEPS): New config var.
	(sim_main_headers): Define.
	(sim-*.o): Depend on $(SIM_EXTRA_DEPS).
	(BUILT_SRC_FROM_COMMON): Move here from ../d30v/Makefile.in.
	(clean): Use it.
	(sim-utils.o): Add rule for.
	* sim-utils.o: New file.
	* sim-basics.h: #include sim-base.h.
	(zalloc): Make argument unsigned long.
	* sim-base.h: New file.
	* sim-inline.h (SIM_IO support): Delete.
	* sim-io.h: Delete inline support.
	* sim-io.c: Likewise.  sim-state.h renamed to sim-main.h.
	* sim-config.c: sim-state.h renamed to sim-main.h.
	* sim-core.c: Likewise.
	* sim-events.c: Likewise.

	* run.c (main): Pass SIM_OPEN_STANDALONE to sim_open.

	* aclocal.m4: Check for stdlib.h, string.h, strings.h, unistd.h.
	(sim-debug): Allow arguments.  Define WITH_DEBUG in addition to
	-DDEBUG.
	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr  2 14:34:19 1997 Andrew Cagney <cagney@kremvax.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Wed Apr  2 11:08:11 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-config.h (WITH_ALIGNMENT, WITH_FLOATING_POINT,
 	WITH_XOR_ENDIAN, WITH_SMP, WITH_RESERVED_BITS): Assume that these
 	are defined by the configure.

	* aclocal.m4 (sim-stdio): Add option stdio from ../ppc configure.

	* aclocal.m4 (floating-point, xor-endian, alignment, smp,
 	reserved-bits): Always define.

	* sim-config.h, sim-config.c (sim_config): New function - and new
 	file - co-ordinate the setting/checking of the common simulator
 	configuration options.

	* Make-common.in (sim-config.o): Add rule.

Fri Mar 28 15:32:00 1997  Mike Meissner  <meissner@cygnus.com>

	* callback.c (os_{,e}vprintf_filtered): Change stdarg type to
	va_list from void *, since va_list might not be a pointer type.

Mon Mar 24 15:27:12 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-n-endian.h (offset_N): Correct assertion - word and sub word
 	in wrong order.
	(offset_N): Correct computation of LE offset.

	* sim-io.c (sim_io_error): Include a new line when reporting
 	errors.

	* sim-assert.h (SIM_FILTER_PATH): Out by one when locating last
 	`/'.

Thu Mar 20 22:31:06 1997  Jeffrey A Law  (law@cygnus.com)

	* run.c: Include alloca-conf.h.

	* callback.c (os_evprintf_filtered): Fix typo.

Fri Mar 21 13:36:20 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* run.c (string.h, strings.h, stdlib.h): Include.

	* sim-events.c (sim_events_tick): Recent cleanup failed to return
 	0 when nothing pending.

	* run.c (sim_size, sim_trace): Plicate GCC - these two functions
 	will soon be going away.
	(getopt): Plicate GCC.

	* sim-endian.c (sim-io.h): Plicate GCC.
	* sim-bits.c (sim-io.h): Ditto.
	* sim-n-bits.h (ROTn): Ditto.

	* sim-io.c (sim_io_error): Correct check for NULL.

	* sim-assert.h (SIM_FILTER_PATH): Separate out the code filtering
 	the __FILE__.
	* sim-events.c: Use SIM_FILTER_PATH to filter out the filename
 	path.

Wed Mar 19 01:12:06 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (SIM_AC_OPTION_*: Move so that they are outside of
 	SIM_AC_COMMON - SIM_AC_COMMON was gobling arguments.

Tue Mar 18 20:48:12 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-alu.h: Include sim-xcat.h.

Tue Mar 18 13:58:18 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Make-common.in (sim-bits.c, sim-core.c, sim-endian.c,
 	sim-events.c, sim-inline.c, sim-io.c): Define rules for building
 	these.

	* sim-events.c (sim_events_at_large_int): New function.  Just
 	schedules an event every large-int ticks.
	(sim_events_init): Call.
	(sim_events_tick, sim_events_process): Move async handing to
 	sim_events_process.  Move timer decrement so that it occures after
 	events have been processed.

	* sim-basics.h (struct _engine): Remove declaration.

	* sim-events.h, sim-events.c: Rename type to sim_events.  Prefix
 	everything with same.  Rename global struct to SIM_DESC.
	* sim-core.h, sim-core.c, sim-n-core.c: Ditto for sim_core.
	* sim-io.h, sim-io.c: Ditto.

	* sim-assert.h: New file. Optional assertion checking macros.
	* sim-io.c (sim_io_error): Make just this function tolerant to
 	null pointers.

	* sim-xcat.h: New file. Define concatenate macros.
	* sim-basics.h (XCONCAT*): Move to sim-xcat.h.
	* sim-n-core.h, sim-n-bits.h, sim-n-endian.h: Explicitly include
 	concat macros.


Tue Mar 18 12:44:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-bits.h (LSMASK): New macro. Create mask of LS bits.

Mon Mar 17 18:10:05 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-inline.h: Add definitions for sim-types.
	(ALL_BY_MODULE): New macro, encapsulate full inlining by the
 	module.

Mon Mar 17 15:38:27 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-events.h: Remove defunct reference to callback struct.

Mon Mar 17 15:10:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Re-generate.

Mon Mar 17 15:04:47 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Make-common.in (CSEARCH): Do not include the gdb directory in
 	the search path.

Mon Mar 17 13:16:26 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Make-common.in (SIM_ENDIAN, SIM_HOSTENDIAN, SIM_INLINE,
 	SIM_WARNING): Drop, requiring the simulator specific Makefile.in
 	to explicitly incorporate these.

	* aclocal.m4 (--enable-sim-alignment); New option. Strongly
 	specify the alignment restrictions of the target architecture -
 	without this option all alignment restrictions are accomodated.
 	(--enable-sim-assert): New option.  Conditionally compile in
 	assertion statements.
	(--enable-sim-float): New option. Strongly specify the target's
 	floating point support.
	(--enable-sim-hardware): New option.  Specify the hardware devices
 	included in the simulation.
	(--enable-sim-packages): New option.  Specify the hardware
 	packages included in the simulation.
	(--enable-sim-regparm): New option.  Specify that parameters be
 	passed in registers instead of on the stack.
	(--enable-sim-reserved-bits): New option. Specify that reserved
 	bits within an instruction are are correctly set.
	(--enable-sim-smp): New option. Specify the level of SMP support
 	to be included in the simulator.
	(--enable-sim-stdcall): New option.  Specify an alternative
 	function call convention.
	(--enable-sim-xor-endian): New option.  Configure xor-endian
 	support used by some targets to implement bi-endian support.

Fri Mar 14 19:51:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* aclocal.m4 (--enable-sim-hostendian): New option.  Allow the
 	host endianness to be overridden.
	(--enable-sim-endian): Allow the target platform's byte order
	to be overridden.
	(--enable-sim-inline): Control the inlining of common components.
	(--enable-sim-bswap): For compatibility, also define WITH_BSWAP.
	(--enable-sim-warnings): Enable additional GCC compiler checks.
	* Make-common.in (SIM_ENDIAN, SIM_HOSTENDIAN, SIM_INLINE,
	SIM_WARNINGS): Add.

	* sim-n-core.h, sim-n-bits.h, sim-n-endian.h: Rename from
 	sim-*-n.h so that the names are uniq on dos machines
	* sim-core.c, sim-bits.c, sim-endian.c: Update.

Thu Mar 13 12:32:42 1997  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: #include "libiberty.h".
	(main): New locals sd,no_args,sim_argv.
	Run buildargv on -a option.  Pass argv to sim_open, argv[0]
	is program name.  Update call to sim_set_callbacks.
	Record result of sim_open, pass to other sim_foo routines.

Thu Mar 13 10:24:05 1997  Michael Meissner  <meissner@cygnus.com>

	* callback.c (os_printf_filtered): Do not call exit(1) or print a
	final newline.

Thu Mar  6 15:50:28 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* callback.c: Add os_flush_stdout and vprintf_filtered callbacks.
  	Route stdout through buffered IO.

	* callback.c: Add os_flush_stderr, os_write_stderr,
 	os_evprintf_filtered functions to route error output through
 	stderr.

	* sim-io.h, sim-io.c (sim_io_flush_stderr, sim_io_flush_stdout):
 	Correct return type - should be void.

Fri Mar  7 20:14:37 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-basics.h: Clean up.  Many macro's moved to sim-inline.h.

	* sim-config.h: Ditto.  For some options - eg WITH_DEVICES - do
 	not provide a default value as undefined indicates disable code.

Thu Mar  6 15:50:28 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-core.h, sim-core-n.h, sim-core.c: Borrow code from ppc
 	directory.
	* sim-events.h, sim-events.c: Ditto.
	* sim-io.h, sim-io.c: Ditto.

Tue Mar  4 09:35:56 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-alu.h (ALU_SUB_CA, ALU*_SUB_CA): New alu operation.

	* sim-bits.h, sim-bits-n.h, sim-bits.c (LSMASKED*): New macro's
 	extract the tail or least signifiant bits from an integer of the
 	specified size.

	* sim-bits.h, sim-bits.c: Clean up conditionally compiled #if
 	WITH_TARGET_BITSIZE so that the compilation will fail when an
 	unsupported bitsize value is defined.

	(INSERTED*): Convert to functions.
	(EXTRACTED*): Ditto.

	(SIGN_EXTEND, SEXT): Change to more terse name.

Tue Mar  4 09:35:56 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-inline.h: Allow explicit control over which .c files will be
 	included by their header.

	* sim-inline.h: Allow explicit control over which .c files use the
 	alternative - REGPARM - parameter passing mechanism.

	* sim-inline.h, sim-inline.c: Don't attempt to include any of
 	icache.c, idecode.c, semantics.c or support.c.  Those names are
 	not generally applicable.

Thu Feb 27 10:17:23 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-bits.c, sim-bits-n.h (new): Split sim-bits.c into two parts
 	in a fashion similar to sim-endian-n.

	* sim-endian.h: (H_word, L_word, AL_*, VL_*): Extend to include
 	both value and address macro's.

Tue Feb 25 18:51:57 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* sim-alu.h (ALU16_BEGIN, ALU16_SET, ...): Fill in.

	* sim-endian.h (L_word, H_word): Replace MS2W_4, LS2W_4 with more
 	generic L_word, H_word macro's.

Thu Feb 20 18:36:55 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* sim-basics.h: Borrow code from ppc directory.
	* sim-bits.c: Ditto.
	* sim-bits.h: Ditto.
	* sim-config.h: Ditto.
	* sim-endian-n.h: Ditto.
	* sim-endian.c: Ditto.
	* sim-endian.h: Ditto.
	* sim-inline.c: Ditto.
	* sim-inline.h: Ditto.
	* sim-types.h: Ditto.

Wed Feb 19 12:40:50 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* sim-alu.h (ALU_SET16, ALU_SET32, ALU_SET64, etc): Make available
 	all the ALU size alternatives and then auto-configure a default.

	* sim-alu.h: Copy ppc/idecode_expression.h.

Mon Feb 17 10:44:18 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* bits.h, bits.c (SIGN_EXTEND32, SIGN_EXTEND64): New functions,
 	sign extend a bit within a value.

	* sim-endian.h, sim-endian-n.h (offset_N): New functions - return
 	a pointer into the middle of a host word.
	* sim-endian.h (MS2W_4, LS2W_4): Use this function.

Tue Feb 11 13:46:49 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* callback.c: If HAVE_CONFIG_H is defined, include config.h from
	autoconf.  If HAVE_UNISTD_H is defined, include unistd.h to get
	appropriate definitions of read, write, etc.  Add prototype for
	system.

Tue Feb  4 13:24:44 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (libcommon.a): Delete.
	(callback.o,targ-map.o): Delete, moved to Make-common.in.
	(gentmap,targ-vals.h,targ-map.c): Likewise.
	(run-autoconf): Delete.
	* aclocal.m4 (SIM_AC_OUTPUT): Redo creation of Makefile.
	(common makefile fragment): Moved back into ...
	* Make-common.in: Resurrect.
	* configure.in (AC_LINK_FILES): Delete, unnecessary now.
	* configure: Regenerated.

Fri Jan 31 07:16:49 1997  Doug Evans  <dje@canuck.cygnus.com>

	* aclocal.m4 (SIM_AC_COMMON): Move COMMON_MAKEFILE_FRAG from here.
	(SIM_AC_OUTPUT): To here.

Fri Jan 24 10:37:17 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* aclocal.m4 (COMMON_MAKEFILE_FRAG):  Quote a couple of $'s in
	comments and single quotes.  Fixes a problem found on hpux.

Thu Jan 23 13:35:03 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* aclocal.m4:  Remove Make-common.in from dependencies.
	* (distclean):  Remove targ-vals.def.

	* aclocal.m4 (SIM_AC_COMMON):  Move contents of Make-common.in
	into here.  Makes insertion into makefiles easier.  Also, change
	the way that callback.o, gentmap, targ-vals.h, targ-map.c,
	targ-map.o, and run are built.  They are now built in the
	individual simulator directories, taking sources from ../common as
	necessary.  This replaces the merging of libcommon.a into
	linsim.a, which was problematic for the WinGDB build process.
	* run.c:  Include config.h from . instead of ../common.
	* Make-common.in:  Remove.  It's no longer necessary.

Mon Dec 16 15:02:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Make-common.in (ALL_CLAGS): Put CFLAGS at the end.
	(.c.o): Put $(ALL_CFLAGS) before the file being compiled.

Wed Dec 11 11:30:58 1996  Jim Wilson  <wilson@cygnus.com>

	* run.c (main): Set target_byte_order before call to sim_open.

Sun Dec  8 18:22:06 1996  Doug Evans  <dje@canuck.cygnus.com>

	* callback.c: #include <stdlib.h>
	(os_error): New function.
	(default_callback): Add os_error.

Mon Nov 25 19:44:35 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Make-common.in (Makefile): Set CONFIG_HEADERS="".
	* aclocal.m4: Mark the fact that --enable-sim-bswap isn't host
	specific.
	(SIM_AC_OUTPUT): Don't build Makefile if CONFIG_FILES="".

Wed Nov 20 01:11:04 1996  Doug Evans  <dje@canuck.cygnus.com>

	* run.c: #include ../common/config.h, tconfig.h.
	(myname): New static global.
	(main): Recognize new options -a, -c.  Also recognize -h if h8/300.
	Only process -c ifdef SIM_HAVE_SIMCACHE.
	Only process -p/-s ifdef SIM_HAVE_PROFILE.
	Parse program name from argv[0] and use in error messages.
	Pass sim_args to sim_open.  Pass prog_args to sim_create_inferior.
	Add support for incomplete h8/300 termination indicators.
	(usage): Make more verbose.
	* aclocal.m4,config.in,tconfig.in,configure.in,configure: New files.
	* Makefile.in,Make-common.in,callback.c: New files.
	* nltvals.def,gentmap.c,gentvals.sh: New files.

Tue Nov 12 13:34:00 1996  Dawn Perchik  <dawn@cygnus.com>

	* run.c: Include stdarg.h if __STDC__.

Tue Oct 15 11:16:31 1996  Jeffrey A Law  (law@cygnus.com)

	* run.c (main): Don't print out anything if the signal
	number is zero (ie no signal).

Tue Oct 15 11:20:44 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* run.c (main): Print out if the program raised a signal.

Wed Sep 18 09:52:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* run.c (exec_bfd): Rename from sim_bfd, to use the gdb name.
	(main): Ditto.

Tue Sep 17 11:04:50 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* run.c (main): Explicitly cast malloc() parameter.

Thu Sep 12 11:27:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* run.c (sim_bfd): New global to hold the bfd pointer for the
	executable.
	(main): Initialize sim_bfd.

Fri Dec 15 16:27:49 1995  Ian Lance Taylor  <ian@cygnus.com>

	* run.c (main): Use new bfd_big_endian macro.

Wed Nov  8 15:49:49 1995  James G. Smith  <jsmith@pasanda.cygnus.co.uk>

	* run.c (main): Removed SH specific comments, so source is
 	generic. Also updated to only load relevant sections. Moved
 	sim_open() to after callback attach (to match GDB).

  	* run.1: Removed SH specific comments.

Sat Oct 21 12:31:01 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* run.c (main): Always return sigrc at end.

Tue Oct 10 12:03:13 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* run.c (main): Print error diagnostic and exit if bfd_openr() or
	bfd_check_format() fails.

Thu Sep 28 15:40:36 1995  steve chamberlain  <sac@slash.cygnus.com>

	* run.c, run.1: From sh directory.
