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.
