2011-11-29  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS (Global Maintainers): New section.  Add Mike
	Frysinger.

2011-11-28  DJ Delorie  <dj@redhat.com>

	* configure.tgt: Add rl78 support.
	* configure: Regenerate.
	* rl78: New directory.
	* MAINTAINERS: Add myself as RL78 maintainer.

2011-07-08  Hans-Peter Nilsson  <hp@axis.com>

	* MAINTAINERS: Remove Thiemo Seufer.

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

	* configure.tgt (bfin-*-*): Add sim_testsuite=yes.
	* configure: Regenerate.

2011-05-04  Joseph Myers  <joseph@codesourcery.com>

	* configure.tgt (thumb*-*-* | strongarm*-*-* | xscale-*-*): Don't
	handle targets.
	* configure: Regenerate.

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

	* MAINTAINERS: Add bfin entry.
	* configure.tgt (bfin-*-*): Handle bfin targets.
	* configure: Regenerate.

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

	* .gitignore: Add /*/hw-config.h.

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

	* .gitignore: New file.

2010-07-28  DJ Delorie  <dj@redhat.com>

	* MAINTAINERS: Add self as RX maintainer.  Sort list.

2010-06-08  Nick Clifton  <nickc@redhat.com>

	* reg.c (set_oszc): Use unsigned int for the mask.
	(set_szc, set_osz, set_sz): Likewise.

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

	* configure.ac: Target logic moved out to and included from ...
	* configure.tgt: ... this new file.
	* configure: Regenerated.

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

	* README-HACKING: Add more sections.

2010-02-11  Doug Evans  <dje@sebabeach.org>

	* cris/cpuv10.h, * cris/cpuv32.h, * cris/cris-desc.c,
	* cris/cris-desc.h, * cris/decodev10.c, * cris/decodev32.c,
	* cris/modelv10.c, * cris/modelv32.c, * cris/semcrisv10f-switch.c,
	* cris/semcrisv32f-switch.c: Regenerate.

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

	* avr/configure: Regenerate.
	* cris/configure: Regenerate.
	* microblaze/configure: Regenerate.

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

	* cris/arch.c, * cris/arch.h, * cris/cpuall.h, * cris/cpuv10.c,
	* cris/cpuv10.h, * cris/cpuv32.c, * cris/cpuv32.h, * cris/cris-desc.c,
	* cris/cris-desc.h, * cris/cris-opc.h, * cris/decodev10.c,
	* cris/decodev10.h, * cris/decodev32.c, * cris/decodev32.h,
	* cris/modelv10.c, * cris/modelv32.c, * cris/semcrisv10f-switch.c,
	* cris/semcrisv32f-switch.c: Regenerate, update copyright year.

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

	* cris/mloop.in: Fix copyright year update snafu.

2009-11-24  Joel Brobecker  <brobecker@adacore.com>

	* common/aclocal.m4: Add include of ../../config/zlib.m4.
	* common/common.m4: Use AM_ZLIB to check for zlib support.
	* ppc/configure.ac: Likewise.
	* arm/configure, avr/configure, common/configure, cr16/configure,
	cris/configure, d10v/configure, erc32/configure, frv/configure,
	h8300/configure, iq2000/configure, lm32/configure, m32c/configure,
	m32r/configure, m68hc11/configure, mcore/configure,
	microblaze/configure, mips/configure, mn10300/configure,
	moxie/configure, ppc/configure, sh/configure, sh64/configure,
	v850/configure: Regenerate.

2009-11-24  DJ Delorie  <dj@redhat.com>

	* rx: New directory.
	* configure.ac: Add entry for Renesas RX.
	* configure: Regenerate.

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

	* cris/cpuall.h: Regenerate.
	* cris/cpuv10.h: Regenerate.
	* cris/cpuv32.h: Regenerate.
	* cris/decodev10.c: Regenerate.
	* cris/decodev10.h: Regenerate.
	* cris/decodev32.c: Regenerate.
	* cris/decodev32.h: Regenerate.

2009-11-12  Tristan Gingold  <gingold@adacore.com>

	* avr/interp.c (sim_write): Allow byte access.
	(sim_read): Ditto.

2009-11-12  Tristan Gingold  <gingold@adacore.com>

	* avr/interp.c (sim_load): Clear memory before loading.

2009-11-09  Tristan Gingold  <gingold@adacore.com>

	* avr/interp.c (sim_resume): Fix typo for OP_ret.

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

	* cris/arch.c: Regenerate.
	* cris/arch.h: Regenerate.
	* cris/cpuall.h: Regenerate.
	* cris/cpuv10.c: Regenerate.
	* cris/cpuv10.h: Regenerate.
	* cris/cpuv32.c: Regenerate.
	* cris/cpuv32.h: Regenerate.
	* cris/cris-desc.c: Regenerate.
	* cris/cris-desc.h: Regenerate.
	* cris/cris-opc.h: Regenerate.
	* cris/decodev10.c: Regenerate.
	* cris/decodev10.h: Regenerate.
	* cris/decodev32.c: Regenerate.
	* cris/decodev32.h: Regenerate.
	* cris/modelv10.c: Regenerate.
	* cris/modelv32.c: Regenerate.
	* cris/semcrisv10f-switch.c: Regenerate.
	* cris/semcrisv32f-switch.c: Regenerate.

2009-10-22  Tristan Gingold  <gingold@adacore.com>

	* avr/interp.c (sim_stop): Return 1.

2009-10-16  Doug Evans  <dje@sebabeach.org>

	* MAINTAINERS: Add myself as m32r maintainer.

2009-10-15  Michael Egaer  <eager@eagercon.com>

	* MAINTAINERS: Add self as MicroBlaze maintainer.

2009-10-14  Ben Elliston  <bje@gnu.org>

	* MAINTAINERS (common): Move myself to "past maintainers" section.

2009-10-06  Michael Eager  <eager@eagercon.com>

	* microblaze/interp.c: Add include microblaze-dis.h.
	
2009-09-23  Michael Eager  <eager@eagercon.com>

	* configure: Add microblaze-*.* (not regenerated).
	* configure.ac: Likewise.
	* microblaze/config.in: New.
	* microblaze/configure: Generate.
	* microblaze/configure.ac: New.
	* microblaze/interp.c: New.
	* microblaze/Makefile.in: New.
	* microblaze/microblaze.h: New.
	* microblaze/microblaze.isa: New.
	* microblaze/sim-main.h: New.
	* microblaze/sysdep.h: New.

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

	* avr/config.in: Regenerate.
	* avr/configure: Likewise.
	* configure: Likewise.
	* cris/config.in: Likewise.
	* cris/configure: Likewise.

	* configure.ac: m4_include toplevel config/override.m4.
	* configure: Regenerate.
	* avr/configure: Regenerate.
	* cris/configure: Regenerate.

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

	* Makefile.in (datarootdir): New variable.

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

        * MAINTAINERS: Add Jon Beniston as maintainer of lm32 sim.
        * configure.ac: Add lm32 target. 
        * lm32: New directory.               

2009-05-11  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS: Orphan ppc.

2009-05-08  Kevin Buettner  <kevinb@redhat.com>

	* m32c/gdb-if.c (m32c_signal_to_host): Rename to
	m32c_signal_to_target.  Change signal return values from SIGILL,
	SIGTRAP, SIGSEGV, etc. to TARGET_SIGNAL_ILL, TARGET_SIGNAL_TRAP,
	TARGET_SIGNAL_SEGV, etc.  Fix all callers.

2009-04-30  Anthony Green  <green@moxielogic.com>

	* MAINTAINERS: Add myself for the moxie port.
	* moxie: New directory.
	* configure.ac: Add entry for moxie.
	* configure: Regenerate.

2009-04-27  Tristan Gingold  <gingold@adacore.com>

	* avr: New directory.
	* avr/interp.c, avr/Makefile.in, avr/configure.ac: New files.
	* avr/config.in: New file, generated by autoheader.
	* avr/configure: New file generated by autoconf.
	* configure.ac: Add avr.
	* configure: Regenerated.

2009-04-17  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Add dummy install-pdf, html, and
	install-html targets.

2009-01-18  Hans-Peter Nilsson  <hp@axis.com>

	* cris/sim-if.c: Include errno.h.
	(cris_start_address, cris_program_offset): New variables.
	(OPTION_CRIS_PROGRAM_OFFSET, OPTION_CRIS_STARTADDR): New option
	enums.
	(cris_options): New options --cris-program-offset and
	--cris-start-address.
	(cris_option_handler): Handle new options.
	(cris_program_offset_write, cris_set_section_offset_iterator)
	(cris_offset_sections, cris_offset_sections): New functions.
	(sim_load): Use cris_program_offset_write as function argument to
	cris_load_elf_file, not sim_write.
	(struct offsetinfo): New struct.
	(cris_handle_interpreter): Fix typo in comment.
	(sim_open): Call cris_offset_sections as soon as the bfd of the
	infile is available.  Gate bfd validity checks on abfd non-NULL.
	(sim_create_inferior): Let cris_start_address when != -1 override
	other start-address choices.

2009-01-06  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (abort): Define to call sim_io_error.
	(create_map): Make -1 imply a non-fixed address, not 0.  All
	callers changed.  Only prefer the next higher unmapped address if
	the last mapped address is no less than 0x40000000.  Check that
	the address to be mapped is not already mapped.  Update head
	comment.
	(unmap_pages): Don't call abort when recursive call fails, just
	note and return an error if a page in the range couldn't be unmapped.
	(cris_bmod_handler, h_supr_set_handler, h_supr_get_handler)
	(schedule, make_first_thread, cris_pipe_empty): New local variable sd.
	(cris_break_13_handler) <case TARGET_SYS_mmap2>: Handle
	non-MAP_FIXED argument overlapping existing map.  For MAP_FIXED,
	don't abort on page not being mapped.  Handle non-anon filemap
	with length padded to pagesize.

2009-01-03  Hans-Peter Nilsson  <hp@axis.com>

	* cris/sim-if.c (TARGET_AT_NULL, TARGET_AT_PHDR, TARGET_AT_PHENT)
	(TARGET_AT_PHNUM, TARGET_AT_PAGESZ, TARGET_AT_BASE)
	(TARGET_AT_FLAGS, TARGET_AT_ENTRY, TARGET_AT_UID, TARGET_AT_EUID)
	(TARGET_AT_GID, TARGET_AT_EGID, TARGET_AT_HWCAP)
	(TARGET_AT_CLKTCK): Remove redundant macros.
	(AUX_ENT): Adjust to use standard ELF AT_* macros.
	(AUX_ENTF): Ditto.  Remove always-0 middle argument.  Update all
	callers.
	(sim_open): Also pass AT_SECURE.

	* cris/sim-main.h (struct _sim_cpu): New member
	set_target_thread_data.
	* cris/crisv32f.c (CRIS_TLS_REGISTER): Define.
	* cris/crisv10f.c: Ditto.
	* cris/cris-tmpl.c (MY (set_target_thread_data)): New function.
	(MY (f_specific_init)): Set new _sim_cpu member to new function.
	* cris/traps.c (TARGET_SYS_set_thread_area): Define.
	(cris_break_13_handler) <case TARGET_SYS_set_thread_area>: New
	case.

	* cris/traps.c (TARGET_SYS_exit_group): Define.
	(cris_break_13_handler): Handle it like the exit for the last
	thread.

	* cris/traps.c (TARGET_UTSNAME): Update to 2009-01-01.
	(TARGET_EPOCH): Update to match TARGET_UTSNAME.  Correct comment.
	(cris_break_13_handler) <case TARGET_SYS_uname>: Update to
	2.6.27.  Set machine field to the BFD printable name of the
	machine.

	* cris/traps.c (TARGET_MAP_DENYWRITE): Define.
	(cris_break_13_handler) <case TARGET_SYS_mmap2>: Handle
	TARGET_MAP_DENYWRITE.

	* cris/traps.c (TARGET_SYS_access, TARGET_R_OK, TARGET_W_OK)
	(TARGET_X_OK, TARGET_F_OK): Define.
	(cris_break_13_handler) <case TARGET_SYS_access>: New case.

	* cris/semcrisv32f-switch.c: Regenerate.

2008-12-30  Hans-Peter Nilsson  <hp@axis.com>

	* cris/sim-if.c (sim_open): If sim_analyze_program fails, emit
	just a short CRIS-specific notice.  Tweak the wording for a
	failing architecture test.

	* cris/traps.c (TARGET_SYS_writev): New macro.
	(is_mapped_only, cris_dump_map): New functions.
	(cris_break_13_handler) <case TARGET_SYS_mmap2>: Handle more flags
	and prot combinations and a non-zero page-offset.  If
	TARGET_MAP_FIXED, unmap pages before mapping them.
	<case TARGET_SYS_mprotect>: When checking, allow any length
	argument.  Don't actually do anything.
	<case TARGET_SYS_writev>: New case.

	* cris/Makefile.in (SIM_OBJS): Remove sim-hload.o.
	* cris/sim-if.c: Include elf-bfd.h.
	(struct progbounds): New members end_loadmem, start_nonloadmem.
	(xprintf, eprintf): New functions, copied from common/sim-load.c.
	(cris_load_elf_file, sim_load, cris_get_progbounds): New functions.
	(get_progbounds_iterator): Renamed from get_progbounds.  Make
	static.  Update head comment.  Set new struct progbounds members.
	(exec_load_addr, interp_load_addr, interp_start_addr): New static
	variables.
	(aux_ent_phdr, aux_ent_phent, aux_ent_phnum, aux_ent_base)
	(aux_ent_entry, cris_write_interp, cris_handle_interpreter): New
	functions.
	(sim_open): New constant array auxv_entries.  Rewrite AUX_ENT
	handling to use auxv_entries.  Improve error message and checking
	for invalid programs.  Use new variable abfd for the program
	instead of for each access reaching into sd to get it.
	(sim_create_inferior): If non-zero, use interp_start_addr instead
	of the program start address.
	(cris_disassemble_insn): Remove incorrect and unclear, supposedly
	stale comment.  Always specify little-endian.

2008-07-29  Nick Clifton  <nickc@redhat.com>

	* common/genmloop.sh: Add new parameter: -shell to specify the
	command interpreter to use to run the input file.  This is
	necessary because otherwise SHELL is taken from the user's
	environment, and not from the makefile that invoked this script
	and the user might not be running an sh-like shell.
	* cris/Makefile.in: Pass -shell parameter to genmloop.sh.
	* fr30/Makefile.in: Likewise.
	* frv/Makefile.in: Likewise.
	* i960/Makefile.in: Likewise.
	* iq2000/Makefile.in: Likewise.
	* m32r/Makefile.in: Likewise.

	* frv/mloop.in: Add missing start of line comment marker.

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

	* cris/configure: Regenerate to track ../common/common.m4 changes.
	* cris/config.in: Ditto.

2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* cris/configure: Regenerate.

2008-05-09  Olivier Hainque  <hainque@adacore.com>

	* ppc/altivec.igen (vperm): Latch inputs into temporaries.

2008-03-25  M R Swami Reddy <MR.Swami.Reddy@nsc.com>

	* MAINTAINERS: Add myself as maintainer of cr16 port.

2008-02-12  M Ranga Swami Reddy <MR.Swami.Reddy@nsc.com>

	Add simulator for National cr16 processor.
	* cr16: New directory.
	* configure.ac: Add entry for National cr16.
	* configure: Regenerate.

2008-02-05  DJ Delorie  <dj@redhat.com>

	* configure.ac (v850): V850 now has a testsuite.
	* configure (v850): Likewise.

2008-01-01  Daniel Jacobowitz  <dan@codesourcery.com>

	Updated copyright notices for most files.

2007-12-19  DJ Delorie  <dj@redhat.com>

	* frv/frv.c (frvbf_cut): Only look at the six LSBs of
	cut_point.

2007-10-22  Hans-Peter Nilsson  <hp@axis.com>

	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.

2007-08-24  Joel Brobecker  <brobecker@adacore.com>

	Switch the license of all files explicitly copyright the FSF
	to GPLv3.

2007-03-27  Brooks Moses  <brooks.moses@codesourcery.com>

	* Makefile.in: Add dummy "pdf" target.

2007-02-20  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (dump_statistics): Change format for cycle numbers
	to %llu and cast parameters to unsigned long long.

2007-02-16  Thiemo Seufer  <ths@mips.com>

	* Makefile.in (FLAGS_TO_PASS, TARGET_FLAGS_TO_PASS): Add RUNTEST.

2007-01-28  Manuel Lauss  <slauss@resi.at>

	* configure.ac (sh64-*-*): Change to sh64*-*-*.
	(sh-*-*): Change to sh*-*-*.
	* configure: Regenerated.

2007-01-09  Daniel Jacobowitz  <dan@codesourcery.com>

	Updated copyright notices for most files.

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

	* Makefile.in (autoconf-common autoheader-common): Only run
	autoheader on subdirs with a file config.in.

	* configure.ac (common): Make the default "yes" for all targets
	with sim subdirs.
	* configure: Regenerate.

	* Makefile.in (autoconf-common autoheader-common): In documented
	usage, say SHELL=/bin/sh.
	(.PHONY): Add autoheader-common.

	* MAINTAINERS: Add self as authorized committer for *.

2006-10-02  Edgar E. Iglesias  <edgar@axis.com>
	    Hans-Peter Nilsson  <hp@axis.com>

	* cris/cris-sim.h (enum cris_unknown_syscall_action_type)
	(cris_unknown_syscall_action): Declare.
	* cris/sim-if.c (cris_unknown_syscall_action): Define.
	(cris_options): Add cris-unknown-syscall option.
	(cris_option_handler): Correct comment about and error message for
	invalid --cris-cycles argument.  Handle --cris-unknown-syscall.
	* cris/traps.c: Include stdarg.h
	(cris_unknown_syscall): New function.
	(cris_break_13_handler): Instead of sim_io_eprintf and
	sim_engine_halt, call cris_unknown_syscall to handle more or less
	unknown syscalls.  Adjust code as necessary to handle return
	value.

2006-09-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Add Dave Brolley for sh64.

2006-09-30  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (TARGET_PIPE_BUF): New macro.
	(cris_pipe_empty): Correct initialization of "remaining".  Only
	adjust the "write" return value if more than TARGET_PIPE_BUF bytes
	are written.

2006-09-29  Hans-Peter Nilsson  <hp@axis.com>

	* cris/configure.ac: Check for limits.h and sys/param.h.
	* cris/configure, cris/config.in: Rebuild.
	* cris/traps.c (SIM_PATHMAX): New macro.
	(cris_break_13_handler): Use SIM_PATHMAX, not MAXPATHLEN.

2006-08-08  Joel Sherrill <joel.sherrill@oarcorp.com>

	* configure.ac (sparc-*-rtems*|sparc-*-elf*): Enable erc32 simulator.
	* Makefile.in (FLAGS_TO_PASS): Include libdir.
	* configure: Regenerated.

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

	* cris/configure: Regenerated.

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

	* cris/configure: Regenerated.

2006-05-05  Andreas Schwab  <schwab@suse.de>

	* configure.ac (CFLAGS_FOR_BUILD): Set and substitute.
	* configure: Regenerate.

	* Makefile.in (CFLAGS_FOR_BUILD): Define.
	(CC_FOR_BUILD): Don't override.
	(FLAGS_TO_PASS): Pass CFLAGS_FOR_BUILD.

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

	* MAINTAINERS: Add an "Authorized committers" section, and list
	DJ Delorie for v850.

2006-04-08  Hans-Peter Nilsson  <hp@axis.com>

	* cris/crisv32f.c (MY (deliver_interrupt)): Set CCS to new_ccs.

2006-04-03  Hans-Peter Nilsson  <hp@axis.com>

	* cris/dv-cris.c, cris/dv-rv.c, cris/rvdummy.c: New files.
	* cris/Makefile.in (CONFIG_DEVICES): Remove redundant setting.
	(dv-cris.o, dv-rv.o rvdummy$(EXEEXT), rvdummy.o): New rules.
	(all): Depend on rvdummy$(EXEEXT).
	* cris/configure.ac: Call SIM_AC_OPTION_WARNINGS.  Check for
	sys/socket.h and sys/select.h.  Call SIM_AC_OPTION_HARDWARE,
	default off.
	* cris/configure: Regenerate.
	* cris/cris-sim.h (cris_have_900000xxif): Declare here.
	(enum cris_interrupt_type, crisv10deliver_interrupt)
	(crisv32deliver_interrupt: New declarations.
	* cris/cris-tmpl.c [WITH_HW] (MY (f_model_insn_after)): Call
	sim_events_tickn and set state-events member work_pending when it's
	time for the next event.
	[WITH_HW] (MY (f_specific_init)): Set CPU-model-specific
	interrupt-delivery function.
	* cris/crisv10f.c (MY (deliver_interrupt)): New function.
	* cris/crisv32f.c (MY (deliver_interrupt)): New function.
	* cris/devices.c: Include hw-device.h.
	(device_io_read_buffer) [WITH_HW]: Call hw_io_read_buffer.
	(device_io_write_buffer): Only perform 0x900000xx-functions if
	cris_have_900000xxif is nonzero.  Else if WITH_HW defined,
	call hw_io_write_buffer.  Add return 0 last in function.
	* cris/sim-if.c (cris_have_900000xxif): Now global.
	(sim_open) [WITH_HW]: Clear deliver_interrupt cpu member.
	Force "-model" option, effectively.
	* cris/sim-main.h (cris_interrupt_delivery_fn): New type.
	(struct _sim_cpu) [WITH_HW]: New member deliver_interrupt.

2006-04-02  Hans-Peter Nilsson  <hp@axis.com>

	* cris/Makefile.in (CRISV10F_OBJS): Remove semcrisv10f-switch.o.
	(CRISV32F_OBJS): Remove semcrisv32f-switch.o.
	(semcrisv10f-switch.o, semcrisv32f-switch.o: Remove dependency rules.

2006-03-13  DJ Delorie  <dj@redhat.com>

	* MAINTAINERS: Add self as m32c sim maintainer.

2006-02-23  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (syscall_map): Remove CB_SYS_time / TARGET_SYS_time
	mapping.
	(cris_break_13_handler) <case TARGET_SYS_time>: New case.

2006-01-23  Jim Blandy  <jimb@redhat.com>

	Add simulator for Renesas M32C and M16C.

	* m32c: New directory.
	* configure.ac: Add entry for Renesas M32C.
	* configure: Regenerate.

2006-01-10  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cris-tmpl.c (MY (f_model_insn_before)): Only display basic
	cycle count for the current insn.

2005-12-06  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cpuv10.h, cris/cpuv32.h, cris/cris-desc.c, cris/cris-opc.h,
	cris/decodev10.c, cris/decodev10.h, cris/decodev32.c,
	cris/decodev32.h, cris/modelv10.c, cris/modelv32.c,
	cris/semcrisv10f-switch.c, cris/semcrisv32f-switch.c: Regenerate.

2005-12-05  Hans-Peter Nilsson  <hp@axis.com>

	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.

2005-11-20  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (TARGET_O_RDONLY, TARGET_O_WRONLY): Define.
	(open_map): Use TARGET_O_ACCMODE, TARGET_O_RDONLY and
	TARGET_O_WRONLY.
	(cris_break_13_handler) <case TARGET_SYS_fcntl>: Add support for
	F_GETFL on fd 0, 1 and 2.

2005-11-17  Hans-Peter Nilsson  <hp@axis.com>

	* cris/sim-main.h (struct _sim_cpu): New members last_syscall,
	last_open_fd, last_open_flags.
	* cris/traps.c: Don't include targ-vals.h.
	(TARGET_O_ACCMODE): Define.
	(cris_break_13_handler): Set new _sim_cpu members.
	<case TARGET_SYS_fcntl>: Support special case of F_GETFL.
	Rearrange code as switch.  Emit "unimplemented" abort for
	unimplemented fcntl calls.

	* cris/traps.c (TARGET_SYS_stat): Define.
	(syscall_stat32_map): Add entry for TARGET_SYS_stat.
	(cris_break_13_handler) <case TARGET_SYS_stat>: New case.

2005-11-16  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cris-tmpl.c (MY (f_model_insn_before)): Make sure only the
	low 32 bits are used after an unsigned long cast.

2005-05-28  Hans-Peter Nilsson  <hp@axis.com>

	* cris/Makefile.in (stamp-v32fmloop): Depend on stamp-v10fmloop.

2005-05-26  Chris Demetriou  <cgd@netbsd.org>

	* MAINTAINERS: Update my mail address, move myself to the
	"Past maintainers" section.

2005-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* configure.ac: Add igen to v850 build.
	* configure: Regenerate.

2005-04-29  Paul Brook  <paul@codesourcery.com>

	* common/callback.c (PIPE_BUF): Provide default definition.
	(os_lstat): Use stat if lstat is not available on the host.
	(os_ftruncate): Return EINVAL if not available on the host.
	(os_truncate): Ditto.
	* common/configure.ac: Check for lstat, truncate and ftruncate.
	* common/configure: Regenerate.
	* common/config.in: Regenerate.

2005-04-27  Paul Brook  <paul@codesourcery.com>

	* common/Make-common.in: Add $(EXEEXT) to "run".

2005-04-18  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (cris_break_13_handler) <case TARGET_SYS_mmap2>:
	For ((len & 8191) != 0 && fd == (USI) -1), don't say this isn't
	implemented.  In call to create_map, pad length argument to 8k. 

2005-04-15  Corinna Vinschen  <vinschen@redhat.com>

	* configure.ac: Add explicit sh64 case.
	* configure: Regenerate.

2005-03-30  Paul Brook  <paul@codesourcery.com>

	* arm/wrapper.c: Provide SIGTRAP and SIGBUS.

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

	* cris/Makefile.in (stamp-v10fcpu, stamp-v32fcpu): Add kludge to
	include cgen-ops.h in decodev10.c and decodev32.c.
	* cris/sim-main.h: Don't include cgen-ops.h here.
	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.

	* cris/traps.c (cris_break_13_handler) <case
	TARGET_SYS_rt_sigaction>: Rename sa_handler, sa_flags,
	sa_restorer, sa_mask_low, sa_mask_high to target_sa_handler etc.

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

	* cris/configure: Regenerate.

2005-02-28  Jim Blandy  <jimb@redhat.com>

	* d10v/configure.ac, igen/configure.ac, m68hc11/configure.ac,
	mips/configure.ac, mn10300/configure.ac, v850/configure.ac:
	Regenerated, after change to common/aclocal.m4.

2005-02-18  Corinna Vinschen  <vinschen@redhat.com>

	* iq2000: New target subdirectory.
	* configure.ac: Add iq2000 target.
	* configure: Regenerate.

2005-01-29  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (all, clean mostlyclean, distclean maintainer-clean)
	(realclean, install): Fail if subdir make failed.

2005-01-28  Hans-Peter Nilsson  <hp@axis.com>

	* cris: New directory, simulator for Axis Communications CRIS
	including CRIS v32, CGEN-based.
	* configure.ac: Add corresponding configury.
	* configure: Regenerate.

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

	* configure.ac: For mips*-*-* and mn10300*-*-* configure the
	common directory.  Remove sparc*-*-* from list.
	
2005-01-11  Andrew Cagney  <cagney@gnu.org>

	* Makefile.in (autoconf-common autoheader-common): Add --force to
	autoconf and autoheader.
	(autoconf-common autoheader-common)
	(autoconf-install autoheader-install): Check for configure.ac, not
	configure.in.
	* configure.ac: Delete AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

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

	* configure.ac: Replace configure.in.  Requires autoconf 2.59 and
	correctly calls AC_CONFIG_SUBDIRS.
	* configure: Re-generate.

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

	* i960, h8500: Delete directory.

2004-11-12  Andrew Cagney  <cagney@gnu.org>

	* d30v, fr30, mn10200, z8k: Delete directory.

2004-03-10  Ben Elliston  <bje@gnu.org>

	* MAINTAINERS: Update my mail address.

2004-01-26  Chris Demetriou  <cgd@broadcom.com>

	* configure.in (mips*-*-*): Configure in testsuite.
	* configure: Regenerate.

2003-10-08  Dave Brolley  <brolley@redhat.com>

	* configure.in: Move frv handling to alphabetically correct placement.

2003-09-03  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (FLAGS_TO_PASS): Pass down $(bindir) and $(mandir).

2003-08-29  Dave Brolley  <brolley@redhat.com>

	* MAINTAINERS: Add myself as maintainer of the FRV port.

2003-08-20  Michael Snyder  <msnyder@redhat.com>
            Dave Brolley  <brolley@redhat.com>

	* frv/: New directory, simulator for the Fujitsu FRV.
	* configure.in: Add frv configury.
	* configure: Regenerate.

2003-08-10  Ben Elliston  <bje@wasabisystems.com>

	* MAINTAINERS: Update my mail address.

2003-08-09  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Andrew Cagney (mips) and Geoff Keating (ppc) drop
	maintenance.  List igen and sh maintainers.  Mention that target
	and global maintainers pick up the slack.

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

	* configure.in: Add testsuite to extra_subdirs for sh.
	* configure: Regenerate.

2003-01-23  Nick Clifton  <nickc@redhat.com>

	* Add sh2e support:

2002-04-02  Alexandre Oliva  <aoliva@redhat.com>

	* sh/gencode.c: Replace sh3e with sh2e except in fsqrt.

2002-08-24  Geoffrey Keating  <geoffk@redhat.com>

	* MAINTAINERS: Update my email address.

2002-07-17  Andrew Cagney  <ac131313@redhat.com>

	* w65/: Delete directory.

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

	* configure.in (extra_subdirs): Mark fr30-*-* as obsolete.
	* configure: Re-generate.

2002-07-13  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (extra_subdirs): Mark d30v-*-* as obsolete.
	* configure: Re-generate.
	
2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (autoconf-changelog autoheader-changelog): Let name,
	id, date and host to be overriden by NAME, ID, DATE and HOST
	respectfully.  Use ISO dates.

Thu Jun  6 12:34:13 2002  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (ChangeLog): New makefile variable.
	* README-HACKING: Mention the ChangeLog makefile variable.

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

	* tic80/: Delete directory.

2002-05-16  Stephane Carrez  <stcarrez@nerim.fr>

	* MAINTAINERS: Update my email address.

2002-03-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* MAINTAINERS: Record self as maintainer of m68hc11 simulator.

2002-03-01  Frank Ch. Eigler  <fche@redhat.com>

	* MAINTAINERS: Record self as a co-maintainer of just common/.

2002-02-07  Nick Clifton  <nickc@cambridge.redhat.com>

	* MAINTAINERS: Point to GDB files describing overall maintaince
	and check-in procedures.

2002-01-10  Nick Clifton  <nickc@cambridge.redhat.com>

	* MAINTAINERS: Add myself for ARM portions.

2001-10-19  Andrew Cagney  <ac131313@redhat.com>

	* configure.in: When Linux or NetBSD, enable PowerPC simulator.
	* configure: Re-generate.

2001-02-16  Ben Elliston  <bje@redhat.com>

	* MAINTAINERS: Add myself for common portions.

2001-01-15  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS: Added self and Andrew for the mips sim.

2000-10-25  Geoff Keating  <geoffk@cygnus.com>

	* MAINTAINERS: Added self and Andrew for the ppc sim.

Thu Jul 27 21:26:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* m68hc11: New directory.
	* configure.in: Add.
	* configure: Regenerate.

Tue Jul  4 13:43:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* tic80: New directory.
	* configure.in: Add configury.
	* configure: Regenerate.

2000-04-20  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add testsuite to strongarm
	directories. 
	* configure: Regenerate.

Sat Mar  4 16:48:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: New file.  Blank.

1999-11-18  Ben Elliston  <bje@cygnus.com>

	* configure.in: Require autoconf 2.13 and remove obsolete
	invocation of AC_C_CROSS.
	* configure: Regenerate.

1999-09-29  Doug Evans  <devans@casey.cygnus.com>

	* configure.in: Configure the testsuite directory for thumb.
	* configure: Regenerate.

1999-07-16  Ben Elliston  <bje@cygnus.com>

	* configure.in: Configure the testsuite directory for arm.
	* configure: Regenerate.

1999-04-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for MCore target.
	* configure: Regenerate.

1999-03-14  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in (FLAGS_TO_PASS, TARGET_FLAGS_TO_PASS): Remove
 	RUNTEST instead of commenting out, fixes portability problem.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for StrongARM target.
	* configure: Regenerate.

1999-01-04  Jason Molenda  (jsm@bugshack.cygnus.com)

	* configure.in: Require autoconf 2.12.1 or higher.

1998-12-08  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* configure.in (i960-*-*): Add.
	* configure: Rebuild.

Wed Nov  4 19:11:43 1998  Dave Brolley  <brolley@cygnus.com>

	* configure.in: Added case for fr30-*-*.
	* configure: Regenerated.

Fri Sep 25 10:12:19 1998  Christopher Faylor <cgf@cygnus.com>

	* ppc/Makefile.in: Add EXEEXT to installed powerpc-eabi-run program
	to allow successful operation on Windows.

Thu May 28 14:59:46 1998 Jillian Ye <jillian@cygnus.com>

	* Makefile.in: Take RUNTEST out of FLAGS_TO_PASS so that make
	check can be invoked recursively.

Wed Apr 29 12:38:53 1998  Mark Alexander  <marka@cygnus.com>

	* configure.in: Build simulator on sparclite and sparc86x targets.
	* configure: Regenerate.

Sun Apr 26 15:21:01 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (autoconf-common autoheader-common): Don't pass -l
	to autoconf and autoheader.

Fri Apr 24 11:14:13 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (autoconf-common autoheader-common): Pass `-l
	../common' to autoconf and autoheader.  Unconditionally run
	autoconf in every subdir.
	(autoconf-changelog autoheader-changelog): Unconditionally run
	commands in every subdir.
	(autoconf-install autoheader-install): Likewise.

Tue Mar 24 17:12:43 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Makefile.in:  Get SHELL from configure.
	* (FLAGS_TO_PASS):  Pass down SHELL.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

Tue Mar 24 11::18:00 1998  Joyce Janczyn  <janczyn@cygnus.com>

	* configure.in (extra_subdirs): Enable igen for mn10300.
	* configure: Re-generate.

Tue Dec  2 10:10:42 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add support for thumb target.

	* configure (extra_subdirs): Add support for thumb target.

Wed Oct  8 12:38:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): Add IGEN directory when MIPS
 	target.
	* configure: Regenerate.
	
Fri Sep 12 13:10:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): v850ea needs igen.
	* configure: Re-generate.
	
Mon Sep  1 16:48:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (testdir): When a testsuite directory, add that to
 	the list of confdirs.

Tue Aug 19 11:17:46 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): Enable igen ready for V850.

Tue Aug 26 15:14:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (w65-*-*, only_if_enabled): Set.
	* configure: Re-generate.
	
Mon Aug 25 16:26:53 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (sparc*-*-*, only_if_enabled): Set
 	only_if_enabled=yes.  Check only_if_enabled before enabling a
 	simulator.
	* configure: Regenerate.
	
Mon Aug 18 10:56:59 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add v850e target.

Mon Aug 18 10:56:59 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add v850ea target.

Fri Jul 25 11:40:47 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (sparc*-*-*): Don't build erc32.
	* configure: Regenerate.

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

	* configure.in (m32r-*-*): New target.
	* configure: Regenerate.

	* Makefile.in (autoconf-common, autoconf-changelog): Change $* to $@.

Mon Apr 21 22:57:55 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (.NOEXPORT, MAKEOVERRIDES): Moved to end, BSD make
 	thought that .NOEXPORT was the default target.

Fri Apr 11 17:18:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (clean mostlyclean): Restore targets accidentally
	deleted in earlier change.

Thu Apr  3 12:20:32 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (autoheader-common, autoheader-changelog,
 	autoheader-install): Perform autoheader in addition to autoconf.

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

	* Makefile.in (autoconf-install): New target.
	(autoconf-changelog): Try different way to obtain user name.

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

	* Makefile.in (autoconf-changelog): New target, update
 	ChangeLog for all subdirectories - normally used after
 	autoconf-common target.

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

	* configure.in (extra_subdirs): Include testsuite for d30v.
	* configure: Regenerate.
	
	* Makefile.in (RUNTEST, RUNTESTFLAGS): Borrow test rules from
 	../gdb/Makefile.in
	(check): New rules - drive the testsuite.

Mon Mar  3 13:01:00 1997  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Add mn10200 configure lines accidentally
	removed.
	* configure: Regenerated.

Wed Feb 19 10:34:20 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* configure.in (extra_subdirs): Generalize common sub directory
 	into a list.
	(extra_subdirs): For d30v add igen to the list to be built.

Sun Feb 16 16:37:47 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* configure.in (d30v): New target.
	* configure: Regenerated.
	
Wed Feb 19 23:17:13 1997  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Don't require GCC to build the mn10200
	simulator anymore.
	* configure: Rebuilt.

Wed Feb  5 13:28:13 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in: Don't configure any subdirs if no simulator
	is being built.  Don't use erc32 for sparc64.
	* configure: Regenerated.

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

	* Makefile.in (autoconf-common): New target.
	* configure.in: Do configure common.
	* configure: Regenerated.

Thu Jan 23 13:59:52 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in:  Don't configure common anymore.  Files
	from common are now built in the individual simualtor directories.
	This fixes problems with the WinGDB build procedure.

Mon Jan 13 13:16:42 1997  Jeffrey A Law  (law@cygnus.com)

	* configure: Enable the mn10200 simulator.

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

	* configure.in (configdirs): Add common.
	* configure: Regenerated.

Fri Nov  1 08:03:30 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-*-linux*): Treat like the other powerpc
	system V based targets.
	* configure: Regenerate.

Thu Oct 17 12:50:08 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (--enable-sim-powerpc): Delete.
	(--enable-sim): Add.
	* configure: Regenerated.

Fri Oct 11 21:13:43 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Only build the V850 simulator if
	we are using gcc.
	* configure: Rebuild.

Sun Sep  8 17:22:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Do build erc32 for DOS and Windows hosts.
	* configure: Rebuild.

Wed Sep  4 18:11:27 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Makefile.in erc32/Makefile.in:  Don't set srcroot.  This should
	be inherited from the parent.  Remove INSTALL_XFORM and
	INSTALL_XFORM1.  Make INSTALL be set from configure.

Wed Sep  4 15:49:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Only build the MIPS simulator if we are using
	gcc.
	* configure: Rebuild.

Wed Aug 28 19:05:23 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in (v850-*-*): Added V850 simulator.

Thu Aug  1 17:08:41 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (d10v-*-*): Added D10V simulator.

Wed Jun 26 12:33:57 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.

Mon Jun 24 14:18:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Only configure erc32 if using gcc.
	* configure: Rebuild.

Tue Jun  4 09:24:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (sim_target): Build PowerPC simulator for powerpc
	System V.4, Solaris, and Elf targets.
	* configure: Regenerate with autoconf 2.10.

Wed May 22 12:10:49 1996  Rob Savoye  <rob@chinadoll>

	* configure.in: Only built erc32 simulator on Unix hosts as it
	uses pseudo ttys.
	* configure: Regenerated with autoconf 2.8.

Sun May 19 20:20:40 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* erc32: Sparc simulator from the ESA.

Sun Apr  7 21:00:09 1996  Fred Fish  <fnf@cygnus.com>

	From: Miles Bader  <miles@gnu.ai.mit.edu>
	* configure.in: Use AC_CHECK_TOOL to find AR & RANLIB.
	* configure: Regenerate using autoconf.

Thu Feb 22 11:31:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (install): Fix typo.

Wed Feb 21 11:59:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Regenerate with autoconf 2.7.

	* Makefile.in (all): Simplify.
	(clean, mostlyclean): SUBDIRS may contain whitespace; fix the loop
	as in the all target.
	(distclean, maintainer-clean, realclean): Likewise.
	(install): Likewise.

Thu Feb 15 18:37:00 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (all): Remove extra '\' char from shell script.

Wed Feb 14 16:43:59 1996  Mike Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (all): Avoid a for loop with zero elements, even if
	the loop will not be executed because of an if statement.

Wed Jan 31 21:48:34 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (install): Add missing semicolon in "fi \".

Thu Nov  9 16:10:56 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (AR, CC, CFLAGS, CC_FOR_BUILD, RANLIB): Pick up
	defaults from configure.

	* configure.in: Pick up AR, CC, CFLAGS, CC_FOR_BUILD, RANLIB using
	configure defaults.
	(powerpc*-*-eabi*): Build simulator for all powerpc eabi targets
	if either --enable-sim-powerpc is used, or the host compiler is
	GCC.

Wed Nov  8 15:46:49 1995  James G. Smith  <jsmith@pasanda.cygnus.co.uk>

	* configure.in (mips*-*-*): Added "mips" simulator target.
	* configure: Re-generated.

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

	* Makefile.in (BISON): Remove macro.
	(FLAGS_TO_PASS): Remove BISON.

Sun Oct  8 04:26:27 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in:  Explicitly `exit 0' for broken shells.
	* configure:  Rebuilt.

Fri Oct  6 12:03:27 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* common/run.c (main): Initialize the callbacks.

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

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

Fri Aug 25 11:53:43 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-*-eabisim*): Only build the simulator if
	the target is powerpc*-*-eabisim*, since it requires GCC to build.

Mon Aug 21 17:53:48 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc{,le}-*-*): Add psim from Andrew Cagney
	<cagney@highland.com.au>.
	* configure: Regnerate from configure.in.

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

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

Thu Jul 20 15:17:29 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (CC_FOR_BUILD):  Define default and arrange to pass
	submakes either default or passed in value.

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

	* Makefile.in (all, clean, distclean, mostlyclean, realclean,
	  install): Changed targets so that they descend all
	  subdirectories in $(SUBDIRS).
	  (*-all, *-clean, *-install): Removed targets.

	* configure.in: Don't bother with target makefile fragments, they
	  are no longer needed.
	* configure: regenerated.

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

Wed May 24 14:48:46 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* Makefile.in: Support ARM.
	* configure.in: Ditto.

Sun Jan 15 16:53:47 1995  Steve Chamberlain  <sac@splat>

	* Makefile.in: Support W65.
	* configure.in: Ditto.

Sun Mar 13 09:27:50 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add TAGS target.

Mon Sep 13 12:47:15 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* Makefile.in (all-z8k, install-z8k, clean-z8k, all-h8300,
	  install-h8300, clean-h8300, all-h8500, install-h8500,
	  clean-h8500, all-sh, install-sh, clean-sh): do not echo
	  recursion lines.

Wed Jun 30 14:12:05 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: remove endian.h trace from h8500

Sun Jun 13 13:08:58 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in: Add distclean, realclean, and mostlyclean targets.

Fri May 21 11:21:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: make all of the all-* target (except all-nothing)
	depend on endian.h, so that if we're not building a simulator, we
	don't built endian

Fri May 21 10:55:06 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (check, installcheck): Added dummy targets.

Mon May  3 21:39:43 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (endian): Find endian.c in $(srcdir), and also
	explicitly make it, since some makes apparently don't work with
	VPATH and .c to executable rules (SunOS make for example).

Mon May  3 08:29:01 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in (endian): Add explicit rule for broken makes.

Mon Mar 15 15:47:53 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (info, install-info): New targets.
	(DO_INSTALL): Renamed from INSTALL, which is overridden by the top
	level Makefile.

Wed Feb 10 20:12:27 1993  K. Richard Pixley  (rich@ok.cygnus.com)

	* Makefile.in (endian.h): build endian.h via a temporary file so
	  that we don't leave an incomplete file lying around on
	  interrupted builds.
	  (clean): remove endian, e.h, and endian.h.

Mon Feb  8 11:46:06 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in, configure.in: if target isn't supported, build a
	harmless makefile.


