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 

