2021-05-28  Yoshinori Sato  <ysato@users.sourceforge.jp>

	* sim-main.h (h8_typecodes): Add operand type OP_REG_DEC, OP_REG_INC.
	* compile.c (decode): Rewrite oprand type for specific case.
	(fetch_1): Add handling OP_REG_DEC and OP_REG_INC.
	(step_once): Fix operand fetch order.

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

	* sim-main.h (SIM_HAVE_COMMON_SIM_STATE): Delete.

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

	* compile.c (h8_get_state): Change sd to H8300_SIM_STATE.
	(h8_set_state): Likewise.
	(h8_get_stats): Likewise.
	(h8_increment_stats): Likewise.
	(init_pointers): Likewise.
	(step_once): Likewise.
	(sim_info): Likewise.
	(sim_open): Likewise.
	(sim_load): Likewise.
	* sim-main.h (SIM_HAVE_COMMON_SIM_STATE): Define.
	(struct sim_state): Delete.
	(struct h8300_sim_state): New struct.
	(H8300_SIM_STATE): Define.

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

	* compile.c: Replace config.h include with defs.h.
	* sim-main.h: Delete config.h include.

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

	* config.in, configure: Regenerate.

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

	* compile.c (h8_set_macS): Disable with #if 0.
	(step_once): Set trace & intMask to 0.
	(set_h8300h): Mark static.
	* configure.ac: Delete SIM_AC_OPTION_WARNINGS call.
	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* config.in, configure: Regenerate.

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

	* aclocal.m4, config.in, configure: Regenerate.

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

	* configure, config.in: Rebuild.

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

	* configure: Rebuild.

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

	* aclocal.m4: Regenerate.

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

	* configure: Regenerate.

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

	* configure.ac: Change AC_CHECK_HEADERS to AC_CHECK_HEADERS_ONCE.
	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* compile.c (sim_open): Delete 3rd arg to sim_cpu_alloc_all.

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

	* compile.c (init_pointers): Fix sequence point warning.

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

	* compile.c (cmdline_location): Use new-style declaration.

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

	* aclocal.m4, configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure.ac (AC_CONFIG_MACRO_DIRS): Replace common with m4.
	* aclocal.m4, configure: Regenerate.

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

	* configure.ac: Replace sinclude with AC_CONFIG_MACRO_DIRS.
	* aclocal.m4, configure: Regenerate.

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

	* configure: Regenerate.

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

	* compile.c (memory_size): Move definition to top of file.
	(h8_get_memory, h8_set_memory): Assert access is within memory_size.
	(h8_get_eightbit_buf): Delete.
	h8_set_eightbit_buf, h8_get_eightbit, h8_set_eightbit): Likewise.
	(GET_MEMORY_L): Delete eightbit references.
	(GET_MEMORY_W, GET_MEMORY_B, SET_MEMORY_L, SET_MEMORY_W,
	SET_MEMORY_B, init_pointers, step_once, sim_load): Likewise.
	(sim_write): Likewise.  Return i instead of size.
	(sim_read): Check addr is within memory_size.
	* sim-main.h (struct h8300_cpu_state): Delete eightbit.

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

	* configure.ac: Call SIM_AC_OPTION_WARNINGS.
	* configure: Regenerate.

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

	* config.in, configure: Regenerate.
	* compile.c: Delete HAVE_TIME_H & HAVE_STDLIB_H.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* compile.c (set_simcache_size, h8_get_cache_top, h8_set_cache_top,
	h8_get_compiles, h8_increment_compiles, h8_get_cache_idx_buf,
	h8_set_cache_idx_buf, h8_get_cache_idx, h8_set_cache_idx, compile,
	set_simcache_size): Delete.
	(init_pointers): Delete calls to h8_get_cache_idx_buf,
	h8_set_cache_idx_buf, and set_simcache_size.
	(step_once): Replace call to h8_get_cache_idx with decode.  Delete
	case 0 handling and call to compile.
	(sim_write): Delete call to h8_set_cache_idx.
	(sim_info): Delete call to h8_get_compiles & sim_cache_size.
	(sim_load): Delete calls to h8_get_cache_idx_buf & h8_set_cache_idx_buf.
	* sim-main.h (sim_state): Delete sim_cache_size, sim_cache, cache_idx,
	cache_top, and compiles.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* config.in, configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* config.in, configure: Regenerate.

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

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

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

	* configure: Regenerate.

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

	* compile.c (sim_open): Update sim_parse_args comment.

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

	* config.in, configure: Regenerate.

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

	* configure.ac (SIM_AC_OPTION_ENDIAN): Change BIG_ENDIAN to BIG.
	* configure: Regenerate.

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

	* compile.c (sim_state_initialize): Delete.
	(sim_open): Replace sim_state_initialize call with SBR_REGNUM
	assignment.

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

	* compile.c (h8300_reg_store): Delete sd.  Change init_pointers to
	use CPU_STATE (cpu).  Change h8_set_pc to cpu->pc.  Return -1 and
	drop the printf if the default case.  Change all the set func calls
	to use cpu->regs[rn] instead.
	(h8300_reg_store): Delete sd.  Change init_pointers to
	use CPU_STATE (cpu).  Change h8_get_pc to cpu->pc.  Return -1 and
	drop the printf if the default case.  Change all the get func calls
	to use cpu->regs[rn] instead.  Add ZERO_REGNUM case.  Return 2 and
	4 instead of -1 at the end.

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

	* compile.c (lvalue): Change sim_engine_set_run_state calls to
	sim_engine_halt.  Declare local cpu.
	(fetch_1): Likewise.
	(store_1): Likewise.
	(sim_resume): Rename to ...
	(step_once): ... this.  Declare init1, poll_count, reason, and
	sigrc variables.  Delete step checking.  Change
	sim_engine_set_run_state calls to sim_engine_halt.  Delete poll
	logic.  Change while(1) loop to while(0).
	(sim_engine_run): New function.
	* Makefile.in (SIM_OBJS): Add sim-resume.o.

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

	* compile.c (sim_open): Delete current_alignment and
	current_target_byte_order assignments.
	* configure.ac: Call SIM_AC_OPTION_ENDIAN and
	SIM_AC_OPTION_ALIGNMENT.
	* configure: Regenerate.

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

	* wrapper.c (sim_store_register): Rename to ...
	(h8300_reg_store): ... this.  Declare sd.
	(sim_fetch_register): Rename to ...
	(h8300_reg_fetch): ... this.  Declare sd.
	(sim_open): Call CPU_REG_FETCH/CPU_REG_STORE.

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

	* compile.c (lreg): Delete.
	(init_pointers): Delete lreg assignments.

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

	* inst.h: Delete file.
	* Makefile.in (compile.o): Delete rule.

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

	* config.in, configure: Regenerate.

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

	* compile.c (H8300_OPTIONS): New enum from common/sim-options.c.
	(h8300_option_handler): New func from common/sim-options.c.
	(h8300_options): New options from common/sim-options.c.
	(sim_open): Call sim_add_option_table.
	* tconfig.h: Delete file.

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

	* tconfig.h (SIM_HAVE_SIMCACHE): Delete.

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

	* compile.c (sim_callback, sim_kind, myname): Delete.
	(init_pointers, sim_store_register, sim_fetch_register, sim_info):
	Change sim_callback->printf_filtered calls to sim_io_printf.
	(sim_resume): Likewise.  Declare sim_callback.
	(sim_open): Delete sim_callback, sim_kind, and myname assignment.
	(sim_load); Use sd to look up myname, sim_callback, and sim_kind.

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

	* Makefile.in (SIM_OBJS): Delete sim-reason.o and sim-stop.o.

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

	* Makefile.in (SIM_OBJS): Add sim-reason.o and sim-stop.o.
	* compile.c (sim_stop, sim_stop_reason): Delete.

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

	* Makefile.in (SIM_OBJS): Delete sim-load.o.

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

	* compile.c (sim_close): Delete.

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

	* compile.c (littleendian): Delete.
	(init_pointers): Delete littleendian usage.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* configure: Regenerate.

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

	* sim-main.h (SIM_CPU): Delete.

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

	* sim-main.h (sim_cia): Delete.

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

	* sim-main.h (CIA_GET, CIA_SET): Delete.

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

	* compile.c (h8300_pc_get, h8300_pc_set): New functions.
	(sim_open): Declare new local var i.  Call CPU_PC_FETCH &
	CPU_PC_STORE for all cpus.
	* sim-main.h (SIM_CPU): Define.

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

	* Makefile.in (SIM_OBJS): Delete sim-cpu.o.
	* sim-main.h (STATE_CPU): Delete.

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

	* compile.c: Include sim-options.h.
	(sim_open): Call sim_cpu_alloc_all instead of sim_cpu_alloc.
	* sim-main.h (struct sim_state): Change cpu to an array of pointers.
	(STATE_CPU): Handle WITH_SMP.

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

	* configure: Regenerate.

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

	* Makefile.in (SIM_OBJS): Delete sim-engine.o.

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

	* Makefile.in (SIM_OBJS): Delete $(SIM_EXTRA_OBJS).

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

	* config.in, configure: Regenerate.

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

	* compile.c (sim_set_callbacks, sim_size, sim_trace): Delete.
	* tconfig.h (SIM_HAVE_PROFILE): Delete.

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

	* config.in, configure: Regenerate.
	* tconfig.in: Rename file ...
	* tconfig.h: ... here.

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

	* Makefile.in (SIM_RUN_OBJS): Delete.

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

	* configure.ac (AC_CHECK_HEADERS): Delete stdlib.h & time.h.
	* aclocal.m4, configure: Regenerate.

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

	* compile.c (sim_resume):  Adjust calls to "stat" and "fstat"
	callbacks by calls to "to_stat" and "to_fstat" (resp) callbacks
	following renaming in callback.h.

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-05  Mike Frysinger  <vapier@gentoo.org>

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

2014-02-17  Mike Frysinger  <vapier@gentoo.org>

	PR gdb/16450
	* compile.c (control_c_sim_desc): Delete.
	(control_c): Likewise.
	(sim_resume): Delete signal(SIGINT) handling.

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

	* configure: Regenerate.

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

	* aclocal.m4, configure: Regenerate.

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

	* config.in, configure: Regenerate.

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

	PR 14072
	* compile.c: Include config.h before system header files.
	* sim-main.h: Likewise.

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

	* aclocal.m4, config.in, configure: Regenerate.

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

	* aclocal.m4: New file.
	* configure: Regenerate.

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

	* configure.ac: Change include to common/acinclude.m4.

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

	* configure.ac: Change AC_PREREQ to 2.64.  Delete AC_CONFIG_HEADER
	call.  Replace common.m4 include with SIM_AC_COMMON.
	* configure: Regenerate.

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

	* compile.c (sim_do_command): Delete.

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

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

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

	* compile.c (sim_write): Add const to buffer arg.

2010-01-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2009-12-09  Yoshinori Sato <ysato@users.sourceforge.jp>
	* compile.c(fetch_1): Fix pre-dec, pre-inc, post-dec and post-inc.
	Index registers not masked memory areas.
	Only simply increment or decrement.
	* compile.c(store_1): Ditto.

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

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

	* configure: Regenerate.

2008-12-01  Joel Sherrill <joel.sherrill@oarcorp.com>

	* compile.c: Add const to remove warning.

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

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

	* configure: Regenerate.

2007-07-03  Yoshinori Sato <ysato@users.sourceforge.jp>

	* compile.c (sim_resume): Fix the last byte of ARGV for
	SYS_CMDLINE.

2006-12-21  Hans-Peter Nilsson  <hp@axis.com>

	* acconfig.h: Remove.
	* config.in: Regenerate.

2006-07-13  Yoshinori Sato <ysato@users.sourceforge.jp>

	* compile.c (OBITOP): Bit address mask low three bit.
	* compile.c (decode): Fix warning.

2006-06-13  Richard Earnshaw  <rearnsha@arm.com>

	* configure: Regenerated.

2006-06-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure: Regenerated.

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

	* configure: Regenerate.

2005-01-14  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Sinclude aclocal.m4 before common.m4.  Add
	explicit call to AC_CONFIG_HEADER.
	* configure: Regenerate.

2005-01-12  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Update to use ../common/common.m4.
	* configure: Re-generate.

2005-01-11  Andrew Cagney  <cagney@localhost.localdomain>

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

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

2004-12-08  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for ../common/aclocal.m4 update.

2004-06-28  Alexandre Oliva  <aoliva@redhat.com>

	2003-07-23  Richard Sandiford  <rsandifo@redhat.com>
	* compile.c (sim_resume): Make sure that dst.reg refers to the
	right register byte in mova/sz.l @(dd,RnL),ERn.
	2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
	* compile.c (sim_resume): Zero-extend immediate to muls, mulsu,
	mulxs, divs and divxs.

	* compile.c (sim_load): Update sd->memory_size.

2004-06-10  Michael Snyder  <msnyder@redhat.com>

	Patch submitted by Nitin Yewale <NitinY@KPITCummins.com>.
	* compile.c (sim_resume): Corrected ANDC operation on EXR for H8S.

2004-01-05  Michael Snyder  <msnyder@redhat.com>

	* compile.c (sim_load): Don't pass a type to bfd_openr.

2003-12-16  Michael Snyder  <msnyder@redhat.com>

	Patch submitted by Anil Paranjape <AnilP1@KPITCummins.com>
	* sim-main.h (H8300H_MSIZE): Increase from 18 bits to 24 bits.

2003-12-11  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>

	* compile.c (set_h8300h): Initialize globals to zero.

2003-10-17  Shrinivas Atre  <shrinivasa@KPITCummins.com>

	* compile.c (h8300_normal_mode): New.
	(SP): Handle normal mode.
	(bitfrom): Use normal mode flag to return suitable value.
	(lvalue): Use normal mode flag to return command line location.
	(decode): Decode instruction correctly for normal mode.
	(init_pointers): Initialise memory correctly for normal mode.
	(sim_resume): Handle cases for normal mode using h8300_normal_mode
	flag.
	(sim_store_register): Handle 2 byte PC for normal mode.
	(sim_fetch_register): Handle 2 byte PC for normal mode.
	(set_h8300h): Set normal mode flag as per architechture.
	(sim_load): Allocate 64K for normal mode instead of bigger memory.

2003-07-18  Michael Snyder  <msnyder@redhat.com>

	* compile.c (decode): Enhancements for mova.
	Initialize cst, reg, and rdisp inside the loop, for each
	new instruction.  Defer correction of the disp2 values until
	later, and then adjust them by the size of the first operand,
	rather than the size of the instruction.
	(sim_resume): For mova, adjust the size of the second operand
	according to the type of the first operand (INDEXB vs. INDEXW).
	In cases where there is only one operand, the other two must
	both be composed on the fly.

2003-07-22  Michael Snyder  <msnyder@redhat.com>

	* compile.c (sim_resume): Revert 6-24 change, it does not
	work with gdb breakpoints.

2003-07-17  Michael Snyder  <msnyder@redhat.com>

	* compile.c (sim_resume): Handle shll reg, reg and shlr reg, reg.
	(decode): IMM16 is always zero-extended.

2003-06-24  Michael Snyder  <msnyder@redhat.com>

	* sim-main.h (SIM_WIFSTOPPED, SIM_WSTOPSIG): Define.
	* compile.c (sim_resume): Use the above to return stop signal.

2003-06-18  Michael Snyder  <msnyder@redhat.com>

	* compile.c: Replace "Hitachi" with "Renesas".
	(decode): Distinguish AV_H8S from AV_H8H.
	(sim_resume): H8SX can use any register for TAS.
	(decode): Add support for VECIND.
	(sim_resume): Implement rte/l and rts/l.
	(GETSR): New macro (actually old macro reincarnated).
	(decode): Add handling for IMM2.
	(sim_resume): Drop extra block around jmp, jsr, rts.
	Add handling for trapa and rte.
	For divxu.b, change 0xffff mask to 0xff.
	(set_h8300h): Add bfd_mach_h8300sxn machine.

2003-06-18  Corinna Vinschen  <vinschen@redhat.com>

	* sim-main.h (enum h8_regnum): Turn around order of MACH, MACL
	and SBR, VBR.

2003-06-05  Michael Snyder  <msnyder@redhat.com>

	* compile.c (sim_fetch_register): Handle SBR, VBR, MACH, MACL.
	(sim_store_register): Ditto.

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

	* compile.c (sim_info): Fix typo in output.

	* compile.c (set_h8300h): Replace 'flag' arguments
	with a bfd_machine argument, and decode it inline.
	Check for bfd_mach_h8300hn and bfd_mach_h8300sn.

2003-06-03  Michael Snyder  <msnyder@redhat.com>

	* compile.c: Add h8300sx insns and addressing modes.
	* sim-main.h: Replaces h8300/inst.h.
	* Makefile.in: Tweak to bring in some sim/common stuff.

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

	* compile.c (sim_resume): Implement 'daa' and 'das' instructions.

2003-03-20  D.Venkatasubramanian  <dvenkat@noida.hcltech.com>

	* compile.c (cmdline_location): Added function to
	return the location of 8-bit (256 locations) where the
	Command Line arguments would be stored.
	(decode): Added a TRAP to 0xcc for Commandline
	processing using pseudo opcode O_SYS_CMDLINE.
	(sim_resume): Added handling of O_SYS_CMDLINE Trap.
	(sim_create_inferior): Setting a pointer to
	Commandline Args array.
	* inst.h: Added a new variable ptr_command_line for
	storing pointer to Commandline array.

2003-03-14  D.Venkatasubramanian <dvenkat@noida.hcltech.com>

	* compile.c (decode): Added code for some more magic traps.
	* compile.c (sim_resume): Added support for File I/O system
	calls through callback to host_system.
	System calls provided support for :
	open, read, write, lseek, close, stat, fstat
	Only basic support for stat and fstat.

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

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

2003-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* compile.c (init_pointers): Abort if wreg never gets initialized.
	(sim_resume): Fix the handling of exts.w and extu.w.

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

	* compile.c (sim_resume): Fix the handling of bxor.

2003-01-16  Michael Snyder  <msnyder@redhat.com>

	* compile.c: Change K&R function definitions to ISO.
	(fetch): Make static, and eliminate unused parameter 'n'.

2002-12-26  Kazu Hirata  <kazu@cs.umass.edu>

	* compile.c: Fix formatting.
	* inst.h: Likewise.

2002-07-29  Andrey Volkov  <avolkov@transas.com>

 	* compile.c: Include "gdb/sim-h8300.h"
 	* Makefile.in: Add dependences on "inst.h",
 	"gdb/callback.h", "gdb/remote-sim.h" and "gdb/sim-h8300.h".

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

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

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

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

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

	* compile.c: Fix formatting.

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

	* compile.c: Fix formatting.

2002-05-17  Andrey Volkov  (avolkov@transas.com)

	* compile.c: Add absented opcodes: LDC, STC, EEPMOV, TAS.

2002-05-17  Andrey Volkov  (avolkov@transas.com)

	* compile.c: Add support of EXR register
	* inst.h: Ditto.

2002-05-17  Andrey Volkov  (avolkov@transas.com)

	* compile.c: Made h8300s as new target, not h8300h alias.
	* inst.h: Ditto.

2002-05-17  Andrey Volkov  (avolkov@transas.com)

	* compile.c: Add additional CCR flags (I,UI,H,U)

2002-05-17  Andrey Volkov  (avolkov@transas.com)

	* compile.c: Change literal regnumbers to REGNUMS.
	Fix instruction and cycles counting

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

	* compile.c: Fix formatting.

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

	* compile.c: Fix comment typos.

2000-08-10  Kazu Hirata  <kazu@hxi.com>

	* compile.c (decode): Clean up the code.

2000-06-15  Kazu Hirata  <kazu@hxi.com>

	* compile.c (decode): Distinguish inc/dec.[wl] and adds/subs
	correctly.

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

	* compile.c: Don't include "wait.h".
	(sim_resume): Use local SIM_WIFEXITED and SIM_WIFSIGNALED macros
	instead of WIF* from host.

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

	* compile.c, writecode.c: Correct typo.

2000-06-13  Kazu Hirata  <kazu@hxi.com>

	* compile.c: Fix formatting.

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

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

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

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

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

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

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

	* compile.c (POLL_QUIT_INTERVAL): Define. Used to tweak the
	frequency at which the poll_quit callback is used.
	(sim_resume): Use POLL_QUIT_INTERVAL instead of hard-coded value.

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

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

Sun Apr 26 15:31:55 1998  Tom Tromey  <tromey@creche>

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

Sun Apr 26 15:20:14 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.

Fri Apr 24 14:16:40 1998  Tom Tromey  <tromey@creche>

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

Fri Apr 24 11:19:46 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tue Nov 11 16:52:07 1997  Angela Marie Thomas (angela@cygnus.com)

	* compile.c: #include stdio.h for definition of NULL on
	some platforms.

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

	* compile.c (sim_load): Pass lma_p and sim_write args to
 	sim_load_file.

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

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

Wed Sep 24 17:38:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Sep 23 11:04:38 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Mon Sep 22 11:46:20 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Fri Sep 19 17:45:25 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Wed Sep 17 12:00:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (compile.o): Depend on config.h in local directory.

Mon Sep 15 17:36:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Sep  9 22:17:26 1997  Felix Lee  <flee@cygnus.com>

	* inst.h (sim_state): rename to h8300_sim_state, to avoid conflict
 	with sim/common.
	* configure.in: check for sys/param.h
	* compile.c: #ifdef HAVE_SYS_PARAM_H.
	#define SIGTRAP for wingdb.
	(sim_resume): poll keyboard at least once per call.
	(sim_resume): use host_callback instead of printf for syscall
 	output.

Thu Sep  4 17:21:23 1997  Doug Evans  <dje@seba>

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

Wed Aug 27 18:13:22 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Aug 26 10:38:43 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* compile.c (sim_kill): Delete.
	(sim_create_inferior): Add ABFD argument.
	(sim_load): Move setting of PC from here.
	(sim_create_inferior): To here.
 	(sim_open, sim_load, set_h8300h): Add fixme explaining why much of
 	the sim_load code should be moved to sim_open.

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 15:47:41 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* compile.c (sim_open): Add ABFD argument.

Tue May 20 10:16:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* compile.c (sim_open): Add callback argument.
	(sim_set_callbacks): Delete SIM_DESC argument.

Wed Apr 30 10:22:29 1997  Doug Evans  <dje@canuck.cygnus.com>

	* compile.c (sim_load): Call bfd_get_mach instead of examining
	bfd fields directly.
	* tconfig.in (SIM_PRE_LOAD): Delete, no longer used.

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

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

Fri Apr 18 14:30:09 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* compile.c (sim_resume): Use poll_quit callback.
	(sim_stop): New function.

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

	* Makefile.in (SIM_OBJS): Add sim-load.o.
	* compile.c (sim_kind, myname): New static locals.
	(sim_open): Set sim_kind, myname.
	(sim_load): Return SIM_RC.  New arg abfd.  Update test for h8300h.
	Call sim_load_file to load file into simulator.  Set start address
	from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.

Mon Apr  7 15:45:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

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

Wed Apr  2 15:06:28 1997  Doug Evans  <dje@canuck.cygnus.com>

	* compile.c (sim_open): New arg `kind'.

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

Wed Apr  2 14:34:19 1997 Andrew Cagney <cagney@kremvax.cygnus.com>

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

Wed Mar 19 01:14:00 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

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

Mon Mar 17 15:10:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure: Re-generate.

Fri Mar 14 10:34:11 1997  Michael Meissner  <meissner@cygnus.com>

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

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

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

Tue Feb  4 13:36:29 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (@COMMON_MAKEFILE_FRAG): Use
	COMMON_{PRE,POST}_CONFIG_FRAG instead.
	* configure.in: sinclude ../common/aclocal.m4.
	* configure: Regenerated.

Thu Jan 23 11:46:23 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in Makefile.in:  Update to new configure
	scheme which is more compatible with WinGDB builds.
	* configure.in:  Improve comment on how to run autoconf.
	* configure:  Re-run autoconf to get new ../common/aclocal.m4.
	* Makefile.in:  Use autoconf substitution to install common
	makefile fragment.

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

	* Makefile.in: Delete stuff moved to ../common/Make-common.in.
	(SIM_OBJS): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	* configure: Regenerated.
	* inst.h (enum sim_state): Define.
	(cpu_state_type): New member `state'.  Set it whenever `exception'
	is set.
	* compile.c (sim_callback): New global.
	(sim_set_simcache_size): Renamed from sim_csize.
	(sim_resume, case O_SLEEP): Add right way to decode r0 but #if 0 out
	'cus it can't work.  Change main loop exit test to use cpu.state.
	(sim_trace): New function.
	(sim_stop_reason): Add right way to set results, but #if 0 out.
	(sim_size): New function.
	(sim_info): Redirect calls to printf_filtered through callback.
	(sim_set_callbacks): Record callback.
	* run.c: Deleted, using one in ../common now.
	* tconfig.in: New file.

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

	* Makefile.in (mostlyclean): Don't remove config.log here.

Fri Aug  9 22:59:11 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): rts, sleep, bpt and nop have
	no associated "size".

Tue Jul  9 22:15:39 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Fix all rotate-by-2-bits insns.

Tue Jul  2 23:08:45 1996  Jeffrey A Law  (law@cygnus.com)

	* run.c (main): Don't "load" sections which don't have
	SEC_LOAD set.
	* compile.c (sim_resume, case "O_NOT"): Use ONOT instead
	of OSHIFTS.
	(ONOT): Define.
	(sim_resume, shift/rotate cases): Add support for shift/rotate
	by two bits.
	(OSHIFTS): Corresponding changes.

Tue Jul  2 01:37:27 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Handle "ldm.l" and "stm.l".

Wed Jun 26 08:58:53 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (h8300smode): Declare.

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

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

Tue Jun 18 16:31:10 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* compile.c (sim_load): Treat the H8/S like the H8/300H for now.
	* run.c (main): Treat the H8/S like the H8/300H for now.

Fri May 24 10:35:25 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (SEXTCHAR): Clear upper bits when sign
	bit is clear.

Wed May 22 22:23:37 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Correctly handle divu.

Tue May  7 02:13:05 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Never allow the PC to have an
	odd value.

Fri Apr 12 16:50:37 1996  Jeffrey A Law  (law@cygnus.com)

	* inst.h: Expand on comments regarding H8300H_MSIZE.  Note
	separate memory is allocate for the 8-bit area.
	(struct cpu_state_type): Add new "eightbit' field.
	* compile.c (GET_MEMORY_L): Handle access into the 8-bit
	area.
	(GET_MEMORY_W, GET_MEMORY_B): Likewise.
	(SET_MEMORY_L, SET_MEMORY_W, SET_MEMORY_B): Likewise.
	(init_pointers): Initialize space for the 8-bit area.
	(sim_write): Handle writing into the 8-bit area.
	(sim_read): Handle reading from the 8-bit area.
	(sim_load): Reallocate space for the 8-bit area.

	* compile.c (sim_load): Re-allocate memory for the simulator
	here.

Fri Apr 12 09:39:56 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Fix and simplify overflow and carry
	handling for 32bit ALU insns.

Mon Apr  8 23:58:49 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (sim_resume): Fix overflow checks for ALU insns.

Fri Apr  5 17:20:59 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (decode): Use "bit" to hold L_3 immediates instead
	of holding them in "abs".  Handle ABS8MEM memory references aka
	8-bit area.  Replace ABSMOV references with ABS8MEM.

Wed Mar 13 17:43:56 1996  Jeffrey A Law  (law@cygnus.com)

	* compile.c (fetch): Handle accesses to the exception/function
	vectors.

Mon Mar 11 09:53:25 1996  Doug Evans  <dje@charmed.cygnus.com>

	* compile.c: #include "wait.h".
 	(sim_resume, sleep insn): Check program exit status in r0.
	(sim_resume, shift insns): Fix setting of overflow flag for shal.
	* run.c: #include <signal.h>.
	(main): Abort if program got SIGILL.
	Print error message if argument is invalid.
	(usage): Improve text.

Wed Feb 21 12:15:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Regenerate with autoconf 2.7.

Thu Jan  4 11:52:53 1996  Doug Evans  <dje@canuck.cygnus.com>

	* inst.h (MPOWER,MSIZE): Deleted.
	(H8300{,H}_MSIZE): Define.
	* compile.c (memory_size): New static global.
	(init_pointers): Set memory size from one of H8300{,H}_MSIZE.
	(sim_write,sim_read): Use memory_size.

Fri Oct 13 15:03:19 1995  steve chamberlain  <sac@slash.cygnus.com>

	* compile.c (sim_set_callbacks): New.

Tue Oct 10 11:11:26 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BISON): Remove macro.

Wed Sep 20 13:35:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New synonym for realclean.

Fri Sep  8 12:18:53 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (install): Don't install in $(tooldir).

	* configure.in: Call AC_CONFIG_HEADER.  Don't try to use
	bfd/hosts/*.h file or bfd/config/*.mh file.  Call AC_PROG_CC and
	AC_PROG_RANLIB.  Substitute in values for CFLAGS, HDEFINES and AR.
	Call AC_CHECK_HEADERS for stdlib.h and time.h.  Touch stamp.h if
	creating config.h.
	* configure: Rebuild.
	* config.in: New file, created by autoheader.
	* Makefile.in (AR): Define as @AR@.
	(CC): New variable, defined as @CC@.
	(CFLAGS): Define as @CFLAGS@.
	(RANLIB): Define as @RANLIB@.
	(HDEFINES, TDEFINES): New variables.
	(@host_makefile_frag@): Remove.
	(compile.o, run.o): Depend upon config.h.
	(mostlyclean): Make the same as clean, not distclean.
	(clean): Remove config.log.
	(distclean): Remove config.h and stamp-h.
	(Makefile): Don't depend upon @frags@.  Just rebuild Makefile when
	invoking config.status.
	(config.h, stamp-h): New targets.
	* compile.c: Include "config.h".  Don't include <sys/times.h>.
	Include <time.h> and <stdlib.h> if they exist.  Don't include
	"sysdep.h".
	(get_now): Remove unused local b.
	* run.c: Include "config.h".  Include <stdlib.h> if it exists.
	Don't include "sysdep.h".
	* writecode.c: Don't include "bfd.h" or "sysdep.h".  Include
	<stdio.h>.

Thu Aug  3 10:45:37 1995  Fred Fish  <fnf@cygnus.com>

	* Update all FSF addresses except those in COPYING* files.

Wed Jul  5 14:32:54 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (clean): Remove run.
	(distclean): Remove Makefile.

	* h8300.mt: Removed.

	* Makefile.in, configure.in: converted to autoconf.
	* configure: New file, generated with autconf 2.4.

Fri Jun 30 16:50:24 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* compile.c (sim_do_command): New function.

Tue Jun 20 16:18:13 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* compile.c (get_now): Don't do if win32.
	(sim_resume): Poll in win32 too.

Wed May 24 16:31:38 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* configure.in: Fix typo in last change.

Mon Mar 27 10:32:34 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* run.c: parse arguments with getopt().

Tue Feb 28 17:30:08 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use ../../bfd/hosts/std-host.h if specific
	host unavailable.

Sun Jan 22 12:35:43 1995  Steve Chamberlain  <sac@splat>

	* compile.c (sim_resume): Initialize cpu.mask.

Thu Sep  8 16:53:00 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* inst.h (MPOWER): Bump simulated memory size to 2^18 bytes.

Wed May 18 13:47:58 1994  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c: #include "bfd.h".
	(sim_*): Set result type to void where there isn't one.
	(sim_resume, default case): Set cpu.exception to SIGILL.
	(sim_trace): Delete.
	(sim_set_pc): Delete.
	(sim_info): Delete printf_fn arg, all callers changed.
	Call printf_filtered.
	(set_h8300h): New arg `flag', all callers changed.
	(sim_close): New function.
	(sim_load): New function.
	(sim_create_inferior): Renamed from sim_set_args, all callers changed.
	* run.c: #include <varargs.h>, "remote-sim.h".
	(printf_filtered): New function.

Fri May 13 18:32:27 1994  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c (decode): Fix typo (16 bit branches).
	(*): Some white space clean up.

Fri May  6 13:44:01 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* compile.c (decode): Compile 16bit branches properly.

Sat Dec 11 16:32:36 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* compile.c: Tidy up formatting. (sim_resume): Add orc, xorc,
	andc.  Poll for interrupts.

Thu Oct 28 19:29:34 1993  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c: #include "ansidecl.h" for remote-sim.h.

Tue Oct 26 09:43:36 1993  Doug Evans  (dje@canuck.cygnus.com)

	* Makefile.in (CSEARCH): Add -I$(srcdir)/../../gdb
	* compile.c: #include "remote-sim.h".
	(sim_resume): New arg siggnal.
	(sim_write): Use SIM_ADDR for type of arg addr.
	Always return a value.
	(sim_read): Ditto.
	(sim_store_register): Result is type int.
	(sim_fetch_register): Ditto.
	(sim_stop_reason): Renamed from sim_stop_signal.
	(sim_set_pc): Use SIM_ADDR for type of arg pc.
	(sim_info): int result, new arg printf_fn.
	(sim_kill): int result.
	(sim_open): int result, new arg name.
	* run.c (main): Use sim_set_pc to set pc.
	Update call to sim_info.

Sat Oct 23 15:01:18 1993  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c (sim_stop_signal): Result is now enum sim_stop.

Fri Oct 15 23:49:27 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* compile.c (sim_kill, sim_open, sim_set_args): New functions.

Thu Oct  7 16:24:10 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* compile.c (sim_set_pc): Write to the pc direcly.
	(sim_store_register): Now value is passed by reference. (sim_read,
	sim_write): Return number of bytes copied.

Tue Aug 17 07:16:15 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* compile.c (mop): New function to do multiplies.

Fri Jul 16 13:53:53 1993  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c (sim_resume): Add support for nop insn.

Thu Jul 15 09:59:01 1993  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c: Reset HMODE back to zero (accidently set it to 1).

	* run.c (main): If h8/300h binary detected, call set_h8300h.
	* compile.c (sim_resume): Fix O_NEG insn.

Fri Jul  9 14:36:48 1993  Doug Evans  (dje@canuck.cygnus.com)

	* run.c (main): Add -h flag to enable h8/300h emulation.
	* compile.c: Rename Hmode to HMODE (consistency with gdb).
	(set_h8300h): New function.
	(sim_resume): Add support for extu,exts insns.
	(sim_resume): Fix logical right shifting.
	(sim_resume, label alu32): Fix setting of carry flag.

Sun Jul  4 00:35:41 1993  Doug Evans  (dje@canuck.cygnus.com)

	* compile.c (sim_csize): Initialize cpu.cache.

Fri Jul  2 17:42:59 1993  Doug Evans  (dje@canuck.cygnus.com)

	* Makefile.in: Add -I../../bfd to pick up bfd.h.

Thu Jun 24 13:40:12 1993  Doug Evans  (dje@canuck.cygnus.com)

	* run.c (main): Fix parsing of args.

	* compile.c (sim_resume): Fix shll insn.

Tue Jun  8 14:16:46 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* compile.c: New file, supports H8/300H.
	* p1,p3, gencode.c, state.h, writecode.c All dead and obsolete.

Tue Jun  1 11:14:59 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* run.c (main): Add -v to print info.
	* p3.c (sim_info):  New function.

Mon Mar 15 15:48:31 1993  Ian Lance Taylor  (ian@cygnus.com)

	* h8300.mt (DO_INSTALL): Renamed from INSTALL.

Wed Mar  3 15:06:53 1993  Steve Chamberlain  (sac@poseidon.cygnus.com)

	* Makefile.in: Don't use cb or indent
	* p1.c, state.h, writecode.c: lint

Mon Feb  1 16:44:58 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in:  Make SunOS halfdone VPATH work.
	* p1.c:  Lint picked up by HP native compiler.

Mon Jan  4 12:32:35 1993  Steve Chamberlain  (sac@wahini.cygnus.com)

	* p1.c (sim_resume): when running on dos, any character typed to
	the keyboard will cause a simulated exception.

Sun Jan  3 14:15:07 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* p1.c, p3.c, run.c, writecode.c: all used h8/300 opcodes in and
	running

Tue Dec 22 13:56:48 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* new
