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

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

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

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

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

	* iface.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* support.c: Ditto.

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

	* writecode.c (lookup_inst): Generate inverse table on-the-fly.
	(z8k_inv_list): Delete global.
	(DIRTY_HACK): Delete macro.
	(makelist): Delete global.
	(main): Delete code making a list.  Delete dirty hack code.  Use
	lookup_inst instead of z8k_inv_list.
	* list.c: Delete file.
	* Makefile.in (writecode): Do not link in list.o.
	(list.o): Delete target.

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

	* writecode.c (lookup_inst): Ignore CLASS_IGNORE.
        (info_args): Treat CLASS_IGNORE like CLASS_BIT.
        Handle ARG_NIM4.
        (info_len_in_words): Handle CLASS_IGNORE and ARG_NIM4.

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.
	
Wed Nov 25 18:22:10 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* support.c: Include <errno.h>

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:18:45 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:17:28 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't use 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:54:05 1998  Andrew Cagney  <cagney@b1.cygnus.com>

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

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

	* iface.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 13:23:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (CONFIG_H): Use config.h from local directory.

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

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

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:43:33 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* iface.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): Add FIXME about need to move arch test 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 16:36:10 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* iface.c (sim_open): Add ABFD argument. Change ARGV to PARGV.

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

	* iface.c (sim_set_callbacs): Delete SIM_DESC argument.
	(sim_open): Add callback argument.

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

	* iface.c (sim_load): Set sim_z8001_mode if bfd_mach_z8001.
	* 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:18:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* mem.h (Z8k_PAGE_SIZE): Rename from PAGE_SIZE.  Is it used?

	* iface.c (sim_stop): New function.
	(NULL): Define if not already.

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

	* Makefile.in (SIM_OBJS): Add sim-load.o.
	* iface.c: #include bfd.h.
	(z8k_callback): New global.
	(sim_kind, myname): New static locals.
	(sim_open): Set sim_kind, myname.
	(sim_load): Return SIM_RC.  New arg abfd.  Call sim_load_file to
	load file into simulator.  Set start address from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.
	(sim_set_callbacks): Set z8k_callback.

Thu Apr 17 11:36:04 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* tm.h (sim_trace) : Remove prototype - now in remote-sim.h
	* support.c (sim_trace): Update.

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>

	* iface.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 13:02:08 1997  Doug Evans  <dje@canuck.cygnus.com>

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

Tue Feb  4 13:33:30 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 02:28:21 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in: Delete stuff moved to ../common/Make-common.in.
	(SIM_OBJS,SIM_EXTRA_CFLAGS,SIM_EXTRA_CLEAN): Define.
	* configure.in: Simplify using macros in ../common/aclocal.m4.
	* configure: Regenerated.
	* iface.c (sim_size): New function.
	(sim_stop_reason): Properly set sim_exited return code.
	* support.c: #include "callback.h".
	* run.c: Deleted, using one in ../common now.
	* tconfig.in: New file.

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

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

Wed Jun 26 12:32:29 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.

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

	* configure: Regenerate with autoconf 2.7.

Thu Jan 11 16:59:07 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* writecode.c (info_args, case CLASS_DISP8): Sign extend using
	shifts instead of char cast.
	(shift): Likewise.

Fri Jan  5 15:36:26 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* mem.c (get_page_and_offset): Allocate 16MB not 8MB.

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

	* iface.c (sim_set_callbacks): New.

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

	* Makefile.in (BISON): Remove macro.

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

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

Fri Sep  8 13:16:10 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, AR,
	and CC_FOR_BUILD.  Call AC_CHECK_HEADERS for various header files.
	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@.
	(CC_FOR_BUILD): New variable, defined as @CC_FOR_BUILD@.
	(RANLIB): Define as @RANLIB@.
	(HDEFINES, TDEFINES): New variables.
	(@host_makefile_frag@): Remove.
	(support.o, comped1.o, comped3.o): Depend upon config.h.
	(compedb3.o, comped2.o): Likewise.
	(mem.o): New target.
	(tc-gen2.h): Depend upon writecode, not quick.c.
	(writecode): Build using $(CC_FOR_BUILD).
	(writecode.o, list.o, quick.o): New targets.
	(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.
	* comped1.c: Don't include "sysdep.h".
	(INLINE): Define as inline, not static inline.
	* comped3.c, compedb3.c, run.c: Don't include "sysdep.h".
	* mem.c: Include "config.h".  Don't include "sysdep.h".  Include
	<stdlib.h> if it exists.
	* support.c: Include "config.h".  Don't include "sysdep.h".
	Include <stdio.h>.  Include <time.h> and <sys/times.h> if they
	exists.  Include <sys/types.h> and <sys/stat.h>.
	(get_now): Only use times if <sys/times.h> exists; otherwise use
	time.
	* writecode.c: Include "config.h".  Include <stdio.h>.  Include
	<stdlib.h> and <string.h> if they exist.  Include <strings.h> if
	it exists and <string.h> does not.

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

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

Mon Jul 31 10:18:06 1995  steve chamberlain  <sac@slash.cygnus.com>

	* support.c (normal_flags_16): Calculate carry correctly.
	(support_call): Return values in std regs too.

Fri Jul 28 12:10:06 1995  steve chamberlain  <sac@slash.cygnus.com>

	* inlines.h (put_byte_mem_da): Moved.
	* run.c (main): Return program result.
	* support.c (support_call): Return exit argument.
	* writecode.c (rotate): Fix a load of bugs.
	(info_decode): Insert missing break after OPC_rrc.

Wed Jul  5 16:13:43 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

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

	* z8k.mt: Removed.

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

	* iface.c (sim_do_command): New function.

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:31:00 1995  Ian Lance Taylor  <ian@cygnus.com>

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

Sun Feb 12 16:03:29 1995  Steve Chamberlain  <sac@splat>

	* iface.c (sim_stop_reason): (Make a bad syscall give a SIGILL.
	* writecode.c (adiv):  Divides are always signed.

Wed Dec 28 21:30:09 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* inlines.h: Make INLINES static.
	* mem.c (sitoptr): New instance.
	* support.c (normal_flags_[32|16|8]): New functions.
	(optimize_normal_flags): Use new functions.
	* writecode.c (info_special): Handle sbc. (optimize_normal_flags):
	Always recalc flags.

Wed May 18 14:38:49 1994  Doug Evans  (dje@canuck.cygnus.com)

	* support.c (sim_open): Delete from here.
	(sim_set_args): Delete from here.
	(sim_kill): Delete from here.
	* iface.c (sim_*): Make result void where there isn't one.
	(sim_clear_breakpoints): Delete.
	(sim_set_pc): Delete.
	(sim_info): Delete printf_fn arg, all callers changed.
	(sim_open): Define here.
	(sim_close): New function.
	(sim_load): New function.
	(sim_create_inferior): Renamed from sim_set_args.
	(sim_kill): Define here.
	* run.c (printf): Delete declaration.
	(main): Call sim_create_inferior instead of sim_set_pc.
	* sim.h (sim_clear_breakpoints): Delete.

Wed May 18 13:22:02 1994  Steve Chamberlain  (sac@jonny.cygnus.com)

	* writecode.c (main): Disable the chopping of large initializers.
	GCC can now cope.

Sat May  7 17:24:46 1994  Steve Chamberlain  (sac@cygnus.com)

	* writecode.c (info_args): Add resflg and setflg.
	* list.c : Regenerated.
	* Makefile.in: First rule is now called 'all'

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

	* iface.c (sim_store_register): Get regval the right way up.
	* writecode.c (info_args): Add lda.

Tue Oct 26 13:01:46 1993  Doug Evans  (dje@canuck.cygnus.com)

	* Makefile.in (INCDIR): Fix definition.
	(CSEARCH): Add -I$(srcdir)/../../gdb
	(comped1.o, comped3.o, compedb3.o, comped2.o): Use CSEARCH, not INCDIR.
	* iface.c: Replace #include "../include/wait.h" with "remote-sim.h".
	(sim_set_pc): int result, use SIM_ADDR for type of arg `addr'.
	(sim_store_register): int result, pass value by reference.
	(sim_fetch_register): Use unsigned char * for arg `buf'.
	(sim_write): int result, use SIM_ADDR for `where' arg,
	use unsigned char * for `what' arg.
	(sim_read): Ditto.
	(sim_resume): int result.
	(sim_stop_reason): Renamed from sim_stop_signal, int result,
	new arg `reason'.
	(sim_info): int result, merge sim_info_print into here.
	(sim_info_print): Deleted.
	* run.c: #include <stdio.h>
	(main): Update call to sim_info.
	* sim.h: Remove various prototypes defined in remote-sim.h.

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

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

Thu Oct  7 19:01:07 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* writecode.c (doset, info_docode): Understand set and res insns.

Thu Sep 30 11:30:42 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* support.c (tm_info_print):  If no timetaken, don't divide by zero.

Fri Jul 30 15:51:54 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* writecode.c (div): rename to divide, to resolve conflict with
	ANSI function div from <stdlib.h>

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

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

Tue Mar  9 12:32:29 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* writecode.c (main): Make the vector 'big' static, so that it
	will compile on the apollo.
	* support.c: Use the ANSI compilant __inline__.

Fri Mar  5 07:54:18 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* writecode.c (main): When using gcc, split the tables into
	sections so that it will compile.
	* Makefile.in: Get ar args right.
	* tm.h: Fix gcc prototypes.

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

	* support.c (fail): Get the argument count right.
	* tm.h: Lint.
	* writecode.c (main): Pass all the arguments emit needs.

Tue Feb  2 07:49:42 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* lint, prototypes

Fri Jan 15 12:43:08 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* New


