2012-12-19  Joel Brobecker  <brobecker@adacore.com>

	* COPYING: Update to GPL version 3.

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

	* configure: Regenerate.

2012-05-24  Pedro Alves  <palves@redhat.com>

	PR gdb/7205

        Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.

2012-03-14  Michael Haubenwallner  <michael.haubenwallner@salomon.at>

	* emul_unix.c (st_pad1, st_pad2, st_pad3): Undefine.

2012-01-02  Joel Brobecker  <brobecker@adacore.com>

	* dp-bit.c: Reformat copyright header.

2011-02-11  Ben Golding  <ben_golding@yahoo.co.uk>

	* events.c: add #include <stdlib.h> for free(). Fix PR build/13372.

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-06-09  Joel Brobecker  <brobecker@adacore.com>

	* psim.c (psim_options): Fix length of comparison when checking
	for --sysroot= option.

2011-06-08  Joel Brobecker  <brobecker@adacore.com>

	* psim.c (psim_options): Add option that cause the error
	in invalid-option error messages. Print the usage when
	detecting an invalid long-name option.

2011-06-08  Joel Brobecker  <brobecker@adacore.com>

	* psim.c (psim_options): Accept and ignore `--sysroot=...'.

2011-06-03  Joel Brobecker  <brobecker@adacore.com>  (obvious fix)

	From Stephen Kitt  <steve@sk2.org>
	* vm.c (vm_synchronize_context): Spelling fix in function
	documentation.

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

	* sim_calls.c (sim_complete_command): New stub function.

2011-02-14  Mike Frysinger  <vapier@gentoo.org>

	* cap.c (cap_remove): Change zfree to free.
	* corefile.c (core_init): Likewise.
	* device.c (detach_device_interrupt_edge): Likewise.
	(clean_device_interrupt_edges): Likewise.
	(device_instance_delete): Likewise.
	(device_set_property): Likewise.
	(clean_device_properties): Likewise.
	(device_add_range_array_property): Likewise.
	(device_add_reg_array_property): Likewise.
	* emul_bugapi.c (emul_bugapi_do_read): Likewise.
	(emul_bugapi_do_write)
	* emul_netbsd.c (write_direntries): Likewise.
	(do_read): Likewise.
	(do_write): Likewise.
	(do_getdirentries): Likewise.
	* emul_unix.c (do_unix_read): Likewise.
	(do_unix_write): Likewise.
	* events.c (event_queue_init): Likewise.
	(event_queue_deschedule): Likewise.
	(event_queue_process): Likewise.
	* hw_disk.c (open_disk_image): Likewise.
	(hw_disk_instance_delete): Likewise.
	* hw_eeprom.c (hw_eeprom_instance_delete): Likewise.
	* hw_htab.c (htab_dma_binary): Likewise.
	* hw_init.c (update_for_binary_section): Likewise.
	* hw_memory.c (hw_memory_set_available): Likewise.
	(hw_memory_init_address): Likewise.
	(hw_memory_instance_release): Likewise.
	* pk_disklabel.c (disklabel_delete): Likewise.
	* table.c (table_push): Likewise.
	* tree.c (parse_reg_property): Likewise.
	(parse_ranges_property): Likewise.
	(parse_string_property): Likewise.
	* main.c (zfree): Delete.
	* sim_calls.c (zfree): Likewise.
	* sim_callbacks.h (zfree): Likewise.

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

	* gdb-sim.c (sim_store_register): Update return value to
	match new API.

2011-01-05  Joel Brobecker  <brobecker@adacore.com>

	* psim.texinfo: Copyright year update.

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

	* sim_calls.c (sim_write): Add const to buf arg.

2010-02-14  Andreas Schwab  <schwab@linux-m68k.org>

	* ppc-instructions: Fix missing assignment in last change.

2010-02-05  Andreas Schwab  <schwab@linux-m68k.org>

	* ppc-instructions: Fix aliasing bugs when calling
	invalid_arithemetic_operation.

2009-11-13  Nathan Froyd  <froydnj@codesourcery.com>

	* configure.ac: If build != host, create a separate build-config.h
	file desecribing the build machine.
	* configure: Regenerate.
	* lf.c: Include build-config.h instead of config.h.
	* dgen.c: Likewise.
	* igen.c: Likewise.
	* misc.c: Likewise.
	* misc.h: Likewise.
	* filter.c: Likewise.
	* table.c: Likewise.

2009-10-15  Joel Sherrill <joel.sherrill@oarcorp.com>

	* std-config.h: Fix spelling error.

2009-09-22  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* main.c: Fix spelling error.

2009-09-15  Andreas Tobler <andreast-list@fgznet.ch>
	    Doug Evans  <dje@google.com>

	* configure.ac (sim_hwflags): Use AC_DEFINE to define HAVE_UNION_SEMUN.
	* configure: Regenerate.
	* config.in: Regenerate.
	* hw_sem.c: (HAVE_UNION_SEMUN): Renamed from HAS_UNION_SEMUN.

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

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

	* configure: Regenerate.

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

	* Makefile.in (datarootdir): New variable.

2009-01-12  Nathan Froyd  <froydnj@codesourcery.com>

	* ppc-instructions (sync): Add L field.

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

	* ppc-instructions, ppc-spr-table: Add ability
	to read tbrl and tbru special registers.

2008-11-18  Joel Sherrill <joel.sherrill@oarcorp.com>

	* configure: Regenerated.
	* configure.ac: Add test for System V shared memory and semaphore.
	* debug.c, debug.h: Add trace support for new devices.
	* hw_sem.c, hw_shm.c: New files.
	* Makefile.in: Add hw_sem.c and hw_shm.c.

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

	* configure.ac: Add test for libz and zlib.h.
	* Makefile.in (LIBS): Set from @LIBS@.
	* configure: Regenerate.
	* config.in: Ditto.

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

	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerated.
	* Makefile.in (LIB_OBJ): Add version.o.
	(version.c, version.o): New rules.
	* psim.c (psim_usage): Add help parameter.  Print the bug URL.
	Exit with code 0 for help.
	(psim_options): Update calls to psim_usage.  Handle --help and
	--version.
	* psim.h (psim_usage): Update prototype.
	* main.c (main): Update psim_usage call.

2008-03-14  Nick Hudson  <nick.hudson@dsl.pipex.com

        * configure.ac: Pass ../../intl to ZW_GNU_GETTEXT_SISTER_DIR.
        * configure: Regenerate.

2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb-sim.c (regnum2spr): Rename to...
	(sim_spr_register_name): ... this.  Make global.

2007-09-04  Jerome Guitton  <guitton@adacore.com>

	* sim/ppc/emul_bugapi.c (emul_bugapi_create): quote the file
	name property before parsing it.

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

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

2006-11-22  Tom Marn <tom.marn@telargo.com>

	Committed by Andrew Cagney.
	* ppc-instructions: Implement optional PowerPC stfiwx instruction.
	
2006-07-12  Fred Fish  <fnf@specifix.com>

	* sim-endian.h (asm/byteorder.h): Don't include private kernel
	header.

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

	* configure: Regenerated.

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

	* Makefile.in: Replace INTLLIBS and INTLDEPS with LIBINTL
	and LIBINTL_DEP everywhere.
	(INTL_DIR, INTL_SRC): Remove.
	(INTL_CFLAGS): Use INCINTL.
	* configure.ac: Use ZW_GNU_GETTEXT_SISTER_DIR.
	* 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.
	(BUILD_CFLAGS): Use it instead of hardcoding "-g -O".
	(gentmap): Fix typo BUILD_FLAGS -> BUILD_CFLAGS.

2006-04-23  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (tmp-ld-decode): Fix dependencies.
	(tmp-ld-cache): Likewise.
	(tmp-ld-insn): Likewise.

2006-02-01  Mark Mitchell  <mark@codesourcery.com>

	* emul_netbsd.c (emul_netbsd_create): Quote file-name property.
	* emul_unix.c (emul_unix_create): Likewise.
	* tree.c (libiberty.h): Include it.
	(tree_quote_property): New function.
	* tree.h (tree_quote_property): Declare.

2006-01-25  Mark Mitchell  <mark@codesourcery.com>

	* words.h (natural32): Define as "int".

2006-01-23  Mark Mitchell  <mark@codesourcery.com>

	* words.h (signed32): Define as "int".
	(unsigned32): Define as "unsigned int".

2005-11-28 Mark Mitchell  <mark@codesourcery.com>

	* configure.ac (USE_WIN32API): Define it.
	* configure.in: Regenerate.
	* config.in: Likewise.
	* emul_netbsd.c (write_timezone): Guard with HAVE_GETTIMEOFDAY.
	* emul_unix.c (do_unix_mkdir): Handle Win32 1-argument mkdir.

2005-11-28  Mark Mitchell  <mark@codesourcery.com>

	* psim.c: Include gdb/signals.h.
	
	* sim_calls.c (gdb/signals.h): Include it.
	(sim_stop_reason): Use TARGET_SIGNAL_*.
	* psim.c (cntrl_c_simulation): Use TARGET_SIGNAL_*.

2005-07-15  Ben Elliston  <bje@au.ibm.com>

	* hw_htab.c (bfd_get_section_lma): Remove macro; use BFD's.

2005-07-15  Ben Elliston  <bje@au.ibm.com>

	* hw_init.c: Comment out tokens after #endif directive.
	* hw_register.c: Likewise.
	* hw_trace.c: Likewise.
	* hw_vm.c: Likewise.

2005-04-20  Manoj Iyer  <manjo@austin.ibm.com>

	* psim.c: Added libiberty.h header file.

2005-04-18  Manoj Iyer  <manjo@austin.ibm.com>

	* configure.ac: Added check for long long.
	* config.in: Regenerated.
	* configure: Regenerated.
	* words.h: Modified logic to check for HAVE_LONG_LONG instead of
	__GNUC__, added config.h header file.

2005-03-25  Anthony Green  <green@redhat.com>

	* tree.c (parse_reg_property): Fix memset usage.

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

	* configure: Regenerate.

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

	* configure.ac: Delete AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

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

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

2005-01-03  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (hw_com.o, hw_eeprom.o): Depend on
	$(DEVICE_TABLE_H).

2004-11-16  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (defines.h): Depend on tmp-defines.
	(hw.c hw.h): Depend on tmp-hw.
	(pk.h): Depend on tmp-pk.

2004-11-11  Andreas Schwab  <schwab@suse.de>

	* sim_calls.c: Include "libiberty.h".

2004-09-24  Ian Lance Taylor <ian@wasabisystems.com>

	Committed by Andrew Cagney.
	* configure.in: Check for sys/mount.h, sys/vfs.h, sys/statfs.h.
	Check for struct statfs.
	* emul_netbsd.c: If not HAVE_STRUCT_STATFS, #undef HAVE_FSTATFS.
	* configure, config.in: Regenerate.

2004-08-05  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in (GDB_INCLUDES): Remove bogus reference to mmalloc.

2004-08-04  Andrew Cagney  <cagney@gnu.org>
	    Jim Blandy <jimb@redhat.com>

	* sim_callbacks.h (simulator): Declare.
	* Makefile.in (gdb-sim.o): New rule.
	(MAIN_SRC, GDB_OBJ): Add gdb-sim.o, gdb-sim.c.
	(DEFS_H): Delete.
	(GDB_SIM_PPC_H): Define.
	* gdb-sim.c: New file.
	* sim_calls.c: Do not include "defs.h".
	(simulator): Drop static.
	(sim_store_register, sim_fetch_register): Delete.

2004-08-04  Andrew Cagney  <cagney@gnu.org>

	* Back out accidently committed change.

2004-08-04  Jim Blandy  <jimb@redhat.com>

	Use a fixed register numbering when communicating with the PowerPC
	simulator.
	* sim_calls.c: #include "registers.h" and "gdb/sim-ppc.h"; do not
	include GDB's "defs.h".
	(gdb_register_name_table): New variable.
	(gdb_register_name_table_size): New enum constant.
	(gdb_register_name): New function.
	(sim_fetch_register, sim_store_register): Use gdb_register_name,
	instead of calling gdbarch_register_name.
	* Makefile.in (GDB_SIM_PPC_H): New variable.
	(DEFS_H): Delete variable.
	(sim_calls.o): Update dependencies.

2004-07-26  Andrew Cagney  <cagney@gnu.org>

	Problem from Olaf Hering <olh@suse.de>.
	* Makefile.in (install, installdirs): Add DESTDIR.

2004-07-10  Ben Elliston  <bje@au.ibm.com>

	* tree.c (parse_integer_property): Comment typo fix.

2004-07-06  Jim Blandy  <jimb@redhat.com>

	* Makefile.in: Update all dependency information.
	(BASICS_H, CPU_H, IDECODE_H, PSIM_H, REGISTERS_H, DEVICE_TABLE_H)
	(EMUL_GENERIC_H): Values updated.
	(ACCONFIG_H, ALTIVEC_EXPRESSION_H, ALTIVEC_REGISTERS_H)
	(ANSIDECL_H, BFD_H, BITS_H, CAP_H, COMMON_SIM_BASE_H)
	(COMMON_SIM_BASICS_H, COMMON_SIM_FPU_H, COMMON_SIM_INLINE_H)
	(COMMON_SIM_SIGNAL_H, CONFIG_H, COREFILE_H, COREFILE_N_H, DEBUG_H)
	(DEFINES_H, DEFS_H, DEVICE_H, E500_EXPRESSION_H, E500_REGISTERS_H)
	(EMUL_BUGAPI_H, EMUL_CHIRP_H, EMUL_NETBSD_H, EMUL_UNIX_H, EVENTS_H)
	(FILTER_FILENAME_H, FILTER_H, GDB_CALLBACK_H, GDB_REMOTE_SIM_H)
	(GEN_ICACHE_H, GEN_IDECODE_H, GEN_ITABLE_H, GEN_MODEL_H)
	(GEN_SEMANTICS_H, GEN_SUPPORT_H, HW_CPU_H, HW_H, HW_PHB_H)
	(ICACHE_H, IDECODE_BRANCH_H, IDECODE_EXPRESSION_H)
	(IDECODE_FIELDS_H, IGEN_H, INLINE_H, INTERRUPTS_H, ITABLE_H)
	(LD_CACHE_H, LD_DECODE_H, LD_INSN_H, LF_H, MISC_H, MODEL_H, MON_H)
	(OPTIONS_H, OS_EMUL_H, PK_H, PPC_CONFIG_H, SEMANTICS_H)
	(SIM_CALLBACKS_H, SIM_ENDIAN_H, SIM_ENDIAN_N_H, SIM_MAIN_H)
	(SPREG_H, STD_CONFIG_H, SUPPORT_H, TABLE_H, TARG_VALS_H, TCONFIG_H)
	(TREE_H, VM_H, VM_N_H, WORDS_H): New variables.
	(callback.o, cap.o, corefile.o, debug.o, device.o, device_table.o)
	(dgen.o, emul_bugapi.o, emul_chirp.o, emul_netbsd.o, emul_unix.o)
	(events.o, filter.o, filter_filename.o, filter_host.o)
	(gen-icache.o, gen-idecode.o, gen-itable.o, gen-model.o)
	(gen-semantics.o, gen-support.o, hw_core.o, hw_cpu.o, hw_disk.o)
	(hw_htab.o, hw_init.o, hw_phb.o, hw_register.o, icache.o)
	(idecode.o, igen.o, interrupts.o, itable.o, ld-cache.o)
	(ld-decode.o, ld-insn.o, lf.o, main.o, misc.o, model.o, mon.o)
	(options.o, os_emul.o, pk_disklabel.o, psim.o, registers.o)
	(semantics.o, sim-endian.o, sim-fpu.o, sim_calls.o, spreg.o)
	(support.o, table.o, targ-map.o, tree.o, vm.o): Update dependencies.

2004-06-28  Jim Blandy  <jimb@redhat.com>

	* e500_registers.h (EVR): Cast the 32-bit value of the GPR to an
	unsigned type before or-ing it with a 64-bit value.

2004-06-15  Alan Modra  <amodra@bigpond.net.au>

	* hw_htab.c (htab_sum_binary(bfd): Use bfd_get_section_size
	instead of bfd_get_section_size_before_reloc.
	(htab_dma_binary(bfd): Likewise.
	* hw_init.c (update_for_binary_section(bfd): Likewise.

2004-05-10  Daniel Jacobowitz  <dan@debian.org>

	* configure.in (sim_fpu_cflags): Add -I../common.
	* configure: Regenerated.

2004-01-27  Andrew Cagney  <cagney@redhat.com>

	* ppc-instructions: Update copyright.
	(convert_to_integer): Add trailing ";" to label.

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

	* emul_netbsd.c: Only a comment may follow an #endif.

2003-10-15  Michael Snyder  <msnyder@redhat.com>

	* Makefile.in (sim_calls.o): No longer depends on gdb/tm.h.

2003-06-22  Andrew Cagney  <cagney@redhat.com>

	Written by matthew green <mrg@redhat.com>, with fixes from Aldy
	Hernandez <aldyh@redhat.com>, Jim Wilson <wilson@redhat.com>, and
	Nick Clifton <nickc@redhat.com>.
	
	* ppc-instructions: Include altivec.igen and e500.igen.
	(model_busy, model_data): Add vr_busy and vscr_busy.
	(model_trace_release): Trace vr_busy and vscr_busy.
	(model_new_cycle): Update vr_busy and vscr_busy.
	(model_make_busy): Update vr_busy and vscr_busy.
	* registers.c (register_description): Add Altivec and e500
	registers.
	* psim.c (psim_read_register, psim_read_register): Handle Altivec
	and e500 registers.
	* ppc-spr-table (SPEFSCR): Add VRSAVE and SPEFSCR registers.
	* configure.in (sim_filter): When *altivec* add "av".  When *spe*
	or *simd* add e500.
	(sim_float): When *altivec* define WITH_ALTIVEC.  When *spe* add
	WITH_E500.
	* configure: Re-generate.
	* e500.igen, altivec.igen: New files.
	* e500_expression.h, altivec_expression.h: New files.
	* idecode_expression.h: Update copyright.  Include
	"e500_expression.h" and "altivec_expression.h".
	* e500_registers.h, altivec_registers.h: New files.
	* registers.h: Update copyright.  Include "e500_registers.h" and
	"altivec_registers.h".
	(registers): Add Altivec and e500 specific registers.
	* Makefile.in (IDECODE_H): Add "idecode_e500.h" and
	"idecode_altivec.h".
	(REGISTERS_H): Add "e500_registers.h" and "altivec_registers.h".
	(tmp-igen): Add dependencies on altivec.igen and e500.igen .

2003-06-22  Andrew Cagney  <cagney@redhat.com>

	Problems reported by Joshua LeVasseur.
	* emul_chirp.c: Update copyright.
	(chirp_emul_nextprop): Return the first property.
	* hw_htab.c: Update copyright.
	(htab_decode_hash_table): Fix check for htab size.

2003-06-21  Andrew Cagney  <cagney@redhat.com>

	* interrupts.c: Update copyright.
	(external_interrupt): Fix test for already pending interrupt.
	Problem found by Joshua LeVasseur.

	* ppc-instructions: Add missing +8 line.  Found by blofeldus at
	yahoo.com.
	
2003-06-21  Andrew Cagney  <cagney@redhat.com>

	From Ian Lance Taylor <ian@airs.com>: * hw_nvram.c
	(hw_nvram_init_address): Correct call to memset--swap second and
	third arguments.

2003-06-21  Andrew Cagney  <cagney@redhat.com>

	* hw_com.c (hw_com_device_init_data): Check that the output, and
	not input file opened.  Pointed out by masahino tky3.3web.ne.jp.

2003-06-20  Andrew Cagney  <cagney@redhat.com>

	* sim_calls.c (sim_create_inferior): Assert that
	psim_write_register succeeded.
	(sim_fetch_register, sim_store_register): Make "regname" constant.
	Delete Altivec hack.  Return result from psim_read_register /
	psim_write_register.
	* psim.h (psim_read_register, psim_write_register): Change return
	type to int.  Update comments.
	* psim.c: Update copyright.
	(psim_stack): Assert that the psim_read_register worked.
	(psim_read_register, psim_read_register): Return the register's
	size.  Allocate the cooked buffer dynamically.
	* hw_register.c: Update copyright.
	(do_register_init): Check that psim_write_register succeeded.
	* hw_init.c: Update copyright.
	(create_ppc_elf_stack_frame, create_ppc_aix_stack_frame): Assert
	that the register transfer worked.

2003-06-19  Andrew Cagney  <cagney@redhat.com>

	* ld-insn.h: Update copyright.
	(cache_fields): Define.
	(insn_table_fields): Add insn_field_6 and insn_field_7.
	(load_insn_table): Pass in the "cache_rules".
	* ld-insn.c: Update copyright.
	(load_insn_table): Add parameter "cache_rules".  Handle "cache",
	"computed" and "scratch" fields.
	(main): Pass "cache_rules" to load_insn_table.
	* ld-cache.h: Update copyright.
	(append_cache_table): Declare.
	* ld-cache.c: Update copyright.
	(append_cache_table): New function.
	(load_cache_table): Call.
	* gen-model.c: Include "ld-cache.h".
	* gen-itable.c: Include "ld-cache.h".
	* igen.c: Move #include "ld-cache.h" to earlier.  Update
	copyright.
	(main): Permit a NULL "cache_rules".  Pass address of
	"cache_rules" to load_insn_table.
	* Makefile.in (tmp-ld-insn): Add "ld-cache.o".
	(tmp-igen): Do not include ppc-cache-rules.
	(gen-itable.o, gen-model.o): Add "ld-cache.h".
	* ppc-cache-rules: Delete file.
	* ppc-instructions: Add cache rules.

2003-06-19  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (ICACHE_CFLAGS, SEMANTICS_CFLAGS): Delete.
	(SIM_FPU_FLAGS): Define.
	(icache.o): Delete explicit compile command.
	(semantics.o, idecode.o): Delete explicit compile command.
	(NOWARN_CFLAGS, STD_CFLAGS): Append SIM_FPU_CFLAGS.
	* gen-support.c (gen_support_c): Generate #include of
	"sim-inline.h" and "sim-fpu.h", but conditional on
	HAVE_COMMON_FPU.
	* gen-idecode.c (gen_idecode_c): Ditto.
	* igen.c (gen_icache_c, gen_semantics_c): Wrap #include of
	"sim-inline.h" and "sim-fpu.h" in HAVE_COMMON_FPU conditional.
	Move to before "support.h".
	* Makefile.in, gen-support.c, gen-idecode.c, igen.c: Update
	copyright.
	
2003-05-16  Ian Lance Taylor  <ian@airs.com>

	* Makefile.in (various): Use $(SHELL) whenever we invoke
	move-if-change.

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

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

2002-09-27  Andrew Cagney  <ac131313@redhat.com>

	* hw_disk.c (hw_disk_init_address): Set device type to "block",
	not "disk".

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

	* Makefile.in (INTL_SRC): Define.
	(INTL_CFLAGS): Define.
	(INTL_DIR): Define.
	(STD_CFLAGS): Add INTL_CFLAGS.

2002-06-17  Elena Zannoni  <ezannoni@redhat.com>

	* psim.c (psim_options): Don't choke when gdb invokes us with
	the --architecture option, just ignore it.

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

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

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

	* main.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* sim_calls.c: Ditto.

2002-05-30  DJ Delorie  <dj@redhat.com>

	* lf.c (lf_print__gnu_copyleft): Convert multiline strings to
	compatible format.
	* gen-idecode.c (print_run_until_stop_body): Likewise.
	* gen-model.c (gen_model_c): Likewise.

2002-04-15  Elena Zannoni  <ezannoni@redhat.com>

        * sim_calls.c (sim_fetch_register, sim_store_register): Return -1 for
        AltiVec registers as a temporary stopgap.

2002-03-24  David O'Brien  <obrien@FreeBSD.org>

	* ppc/hw_disk.c: Export a disk device property.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	From 2001-12-09 Julien Ducourthial <jducourt@noos.fr>:
	* ppc-instructions (lswx): Do the register control with the
	register count.  Initialize the right register in the loop.
	(mtfsfi) : Correct prefix for the instruction.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	From wiz at danbala:
	* std-config.h: Fix grammar and typos.  Update copyright.
	Fix PR gdb/287.

2002-01-12  matthew green  <mrg@redhat.com>

	* Makefile.in (tmp-igen): Pass -I $(srcdir) to igen.
	* igen.c (main): Change -I to add include paths for :include:
	files.
	Implement -G as per sim/igen, with just gen-icache=N support.
	Call load_insn_table() with the built include path.

	* ld-insn.c (parse_include_entry): New. Load an :include: file.
	(load_insn_table): New `includes' argument.  Look for :include:
	entries and call parse_include_entry() for them.
	(main): Adjust load_insn_table() call.
	* ld-insn.h (model_include_fields): New enum.
	(load_insn_table): Update prototype.
	* table.c (struct _open_table, struct _table): Rework
	structures to handle included files.
	(table_push): Move the guts of table_open() here.

	* table.c (struct _open table, struct table): Make table object an
	indirect ptr to the current table file.
	(current_line, new_table_entry, next_line): Make file arg type
	open_table.
	(table_open): Use table_push.
	(table_entry_read): Point variable file at current table, at eof, pop
	last open table.

	* misc.h (NZALLOC): New macro. From sim/igen.

	* table.h, table.c (table_push): New function.

2002-01-04  matthew green  <mrg@redhat.com>

	* bits.c (LSMASKED64): New inline function.
	(LSEXTRACTED64): Likewise.
	* bits.h (_LSB_POS, _LSMASKn, LSMASK64): New macros from
	sim/common/sim-bits.h
	(LSMASKED64, LSEXTRACTED64): New functions definitions.
	* Makefile.in (sim-bits.o): Remove target.

	* main.c (zalloc): Fix typo in error message.

2001-12-16  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (sim_fpu): Don't add sim-bits.o.
	* configure: Re-generate.

2001-12-15  matthew green  <mrg@redhat.com>

	* main.c: Include "defs.h", "bfd.h", "callback.h" and "remote-sim.h".
	(sim_io_error): New function.
	* sim_calls.c: (sim_io_error): New function.

2001-12-14  matthew green  <mrg@redhat.com>

	* Makefile.in (LIB_OBJ): Add @sim_fpu@.
	(ICACHE_CFLAGS, SEMANTICS_CFLAGS): New variables.
	(icache.o, semantics.o): Add new ICACHE_FLAGS & SEMANTICS_FLAGS.
	(sim-fpu.o, sim-bits.o, tconfig.h): New targets.
	* configure.in: Rename INLINE_LOCALS to PSIM_INLINE_LOCALS.  Add a
	check for sim/common/sim-fpu.c.  Output sim_fpu and sim_fpu_cflags.
	* configure: Regenerate.
	* device.h (device_find_integer_array_property): Match function definition.
	* gen-icache.c (print_icache_internal_function_declaration): Rename
	INLINE_ICACHE to PSIM_INLINE_ICACHE.
	* gen-idecode.c (print_idecode_run_function_header): Rename INLINE_IDECODE
	to PSIM_INLINE_IDECODE.
	* gen-semantics.c (print_semantic_function_header): Rename
	EXTERN_SEMANTICS to PSIM_EXTERN_SEMANTICS.
	* gen-support.c (print_support_function_name): Rename INLINE_SUPPORT to
	PSIM_INLINE_SUPPORT.
	* igen.c (print_function_name): Also escape `(' and `)'.
	(gen_semantics_h): Rename EXTERN_SEMANTICS to PSIM_EXTERN_SEMANTICS.
	(gen_semantics_c): Likewise.  Also output includes for "sim-fpu.h"
	* inline.h (INLINE_SIM_ENDIAN): Renamed INLINE_PSIM_ENDIAN.
	(EXTERN_SIM_ENDIAN): Renamed EXTERN_PSIM_ENDIAN.
	(STATIC_INLINE_SIM_ENDIAN): Renamed STATIC_INLINE_PSIM_ENDIAN.
	(INLINE_LOCALS): Renamed PSIM_INLINE_LOCALS.
	(EXTERN_SUPPORT): Renamed PSIM_EXTERN_SUPPORT.
	(INLINE_SUPPORT): Renamed PSIM_INLINE_SUPPORT.
	(EXTERN_SEMANTICS): Renamed PSIM_EXTERN_SEMANTICS.
	(INLINE_SEMANTICS): Renamed PSIM_INLINE_SEMANTICS.
	(EXTERN_IDECODE): Renamed PSIM_EXTERN_IDECODE.
	(INLINE_IDECODE): Renamed PSIM_INLINE_IDECODE.
	(EXTERN_ICACHE): Renamed PSIM_EXTERN_ICACHE.
	(INLINE_ICACHE): Renamed PSIM_INLINE_ICACHE.
	* options.c (options_inline): Fix names.
	* sim-endian-n.h: Change INLINE_SIM_ENDIAN to INLINE_PSIM_ENDIAN.
	* sim-endian.h: Likewise.
	* sim-main.h: New file.
	* std-config.h: Rename INLINE_LOCALS to PSIM_INLINE_LOCALS.

2001-12-01  Andrew Cagney  <ac131313@redhat.com>

	From Mark Peek.
	* ppc-spr-table: Add SDA and PIR.

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

	* tree.c (parse_size): Assert #size-cells > 0.
	(parse_address): Ditto for #address-cells.
	(parse_reg_property): Only parse the size when #size-cells is
	non-zero.

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

	* emul_generic.c (OEA_MEMORY_SIZE): Increase to 4mb.
	* hw_htab.c (htab_map_binary): Don't try to map the text section
	when it is empty.
	* emul_chirp.c (map_over_chirp_note): Default load-base to -1 not
	CHIRP_LOAD_BASE.
	(emul_chirp_create): Map in the interrupt table.

2001-07-16  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in: Add dependencies on $(CPU_H).

Wed Mar  7 10:45:12 HST 2001  Glen Nakamura  <gen@lava.net>

	* hw_init.c (dma_file): Fixed problem with loading last 1KB of
	file.
	
2001-03-04  Andrew Cagney  <ac131313@redhat.com>

	* emul_netbsd.c [WITH_NetBSD_HOST]: Include <sys/mount.h> and
	<errno.h>.
	(do_stat): Only do SYS test when SYS_stat defined.
	(do_sigprocmask): Ditto for SYS_sigprocmask.
	(do_fstat): Ditto for SYS_fstat.
	(do_getdirentries): Ditto for SYS_getdirentries.
	(do_lstat): Ditto for SYS_lstat.

2001-01-15  Geoffrey Keating  <geoffk@redhat.com>

	* emul_netbsd.c (do_open): Translate the flag parameter to the
	open syscall to the numbers supported by the host.

2000-12-12  Geoffrey Keating  <geoffk@redhat.com>

	* sim-endian.h: Don't have parameters on macro definitions which
	are simply renaming functions, to permit use of XCONCAT2 in both
	the macro name and the arguments in a use of such a definition.

2000-11-15  Jim Blandy  <jimb@redhat.com>

	* sim_calls.c: Doc fix.
	(sim_fetch_register, sim_store_register): Call
	gdbarch_register_name directly, instead of going through
	REGISTER_NAME macro.

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

	* ppc-instructions (lfsux): Correct XO field of lfsux instruction.

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

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

Fri Apr 28 15:59:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* events.c (event_queue_process): Call update_time_from_event
 	every time an event is removed from the queue.
	(update_time_from_event): Delete assertion that a negative
 	time_from_event implies an empty event queue.

Fri Apr 28 15:53:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* interrupts.c (deliver_hardware_interrupt): Print time trace in
 	decimal.
	* events.c (event_queue_process): Cleanup trace message.
	(update_time_from_event): Trace full event queue.

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

	* ppc-instructions (Disabled_Exponent_Underflow): Increment
	the exponent when denormalizing.

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.in: Use AC_EXEEXT instead of AM_EXEEXT.
	* configure: Regenerated to track ../common/aclocal.m4 changes.
	
1999-04-02  Keith Seitz  <keiths@cygnus.com>

	* sim_calls.c (POLL_QUIT_INTERVAL): Define. Used to tweak
	the frequency at which the poll_quit callback is called.
	(poll_quit_count): New global.
	(sim_io_poll_quit): Only call the poll_quit callback
	after the specified POLL_QUIT_INTERVAL.

1999-02-22  Jim Lemke  <jlemke@cygnus.com>

	* dc-complex: Force expansion on all bits of field BO.
	Previously, the least-significant (prediction) bit was ignored.
	* ppc-instructions (conditional branches): Implement mpc860c0 option.
	* igen.c (gen_semantics_[ch]): Setup for mpc860c0 option.
	* psim.c (is_num, psim_options): Added parsing for mpc860c0 option.
	* interrupts.h: Added "mpc860c0_instruction_program_interrupt".
	* interrupts.c (program_interrupt): Added handling for above interrupt.

1999-02-01  Jim Blandy  <jimb@zwingli.cygnus.com>

	Make the simulator compatible with the MPC750.  It would be nicer
	to make this a real multi-sim, but that's more work than we have
	time for.
	* emul_generic.c (emul_add_tree_options): Only require strict
	alignment if it was explicitly requested at configuration time.
	Don't make it the default for little-endian machines.
	* ppc-spr-table (UMMCR0, UMMCR1, UPMC1, UPMC2, USIA, UPMC3, UPMC4,
 	MMCR0, PMC1, PMC2, SIA, MMCR1, PMC3, PMC4, L2CR, ICTC, THRM1,
 	THRM2, THRM3): Plop in the MPC750 SPR registers.
	(DABR): This is weird.  This was HID5, but the PPC spec says this
 	should be DABR; why did some random processor use it for something
 	else?  The HID5 entry dates back to the original checkin of the
	simulator code in 1995, so remove it.
	* sim_calls.c (register_names): Delete this; since the user can
	now change GDB's list of register names dynamically, we can't
	pretend there's a static mapping here.
	(sim_fetch_register, sim_store_register): Call GDB's REGISTER_NAME
 	function to get the register name.  That ought to be accurate.
  	However, we're changing a compile-time dependency (using the
 	REGISTER_NAMES macro) into a link- and run-time dependency
	(calling REGISTER_NAME, which happens to be a function call on the
	PPC).

1999-01-22  Jim Lemke <jlemke@cygnus.com>

	* igen.c(gen_semantics_[ch]): setup/use of new option
	(-o mpc860c0[=n]).
	interrupts.[ch](mpc860c0_instruction_program_interrupt): added.
	ppc-instructions(the four branch insn groups): detect problematic br's.
	psim.c(is_num - added, psim_options): Parse and init new option.
	These changes are currently under #ifdef WITH_OPTION_MPC860C0.

1998-12-01  Ken Raeburn  <raeburn@cygnus.com>

	* hw_nvram.c (hw_nvram_bcd): Force value to fit in 0..99.

Fri Nov 20 12:17:28 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* main.c (sim_io_poll_quit): Stub function.

	* events.c (SIM_EVENTS_POLL_RATE): Define.
	(sim_events_poll): Copy function from common/sim-events.c.
	(event_queue_init): Copy scheduling of sim_events_poll from same.

	* sim_callbacks.h, sim_calls.c (sim_io_poll_quit): New function,
 	poll the external environment.

1998-11-19  Michael Meissner  <meissner@cygnus.com>

	* ppc-instructions (is_{NaN,inf}): Use unsigned64 to get the
	fractional type, so that quiet NaN's aren't treated like
	Infinities.

Mon Sep 28 09:42:45 1998  Drew Moseley  <dmoseley@cygnus.com>

	* table.c (table_open): For cygwin hosts, we need to use the
 	return value from the read routine as the number of bytes to
 	process.  This apparently is due to text-mode vs binary-mode.  If
 	the mounts are done text-mode, then the size returnedby fstat()
 	may be different than the number of bytes "read" in text mode.

Sun Oct  4 00:50:47 1998  Felix Lee  <flee@cygnus.com>

	* emul_netbsd.c (do_open): fix order-of-evaluation problem.
	(do_close): ditto.
	(do_fstat): ditto.
	(do_lstat): ditto.

1998-09-03  Michael Meissner  <meissner@cygnus.com>

	* emul_{netbsd,unix}.c: Update copyright year.

Mon Jun 29 10:57:36 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* sim_calls.c (sim_fetch_register, sim_store_register):
	return zero when nothing to do.

1998-06-26  Michael Meissner  <meissner@cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Don't check for sys/mount.h.
	* configure: Regenerate.
	* emul_{netbsd,unix}.c (toplevel): No longer try to include
	sys/mount.h. It conflicts on Linux when gnu libc2 is used.

Tue May 12 12:10:33 PDT 1998  James Ingham  <jingham@leda.cygnus.com>

	* Makefile.in: The run target depended on a target psim$(EXEEXT),
	but there was no such target, only plain psim.  So I changed the
	run target to depend on psim.

Sat May  2 01:10:12 1998  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* aclocal.m4:  Remove defs of AM_EXEEXT and AM_CYGWIN32.  These are
	now defined in ../common/aclocal.m4, and the double definition causes
	problems with AC_SUBST of EXEEXT.
	* configure:  Regenerate.
	
Wed Apr 29 15:44:52 1998  Geoffrey Noer  <noer@cygnus.com>

	* aclocal.m4: new file for AM_EXEEXT macro
	* configure.in: call AM_EXEEXT
	* configure: regenerate with autoconf 2.12.1.
	* Makefile.in: add EXEEXT support

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:19:51 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.
	Don't call AC_C_CROSS.

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

	* Makefile.in (top_builddir): New macro.
	(INTLLIBS): New macro.
	(INTLDEPS): Likewise.
	(psim): Depend on INTLDEPS; link against INTLLIBS.
	* configure.in: Call CY_GNU_GETTEXT.

Wed Apr 22 14:28:48 1998  Michael Meissner  <meissner@cygnus.com>

	* configure: Regenerate with autoconf 2.12.1.

Fri Mar 13 09:25:58 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* psim.c (psim_read_register, psim_write_register): Handle updates
 	for FPSCR.

	* registers.c (register_description): Reconize "FPSCR".

	* emul_netbsd.c (emul_netbsd_create): When FP available, enable
 	MSR FP exception mode. Do not enable FPSCR bits.
	* emul_unix.c (emul_unix_create): Ditto.

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

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

Mon Feb  9 14:13:14 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ppc-instructions (fdiv, fdivs): Check for divide by zero.
	(is_invalid_zero_divide, invalid_zero_divide_operation): New
 	functions.
	
Wed Dec 10 17:38:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim_calls.c (sim_load): Do not parse PROG using buildargv, use
 	raw value instead.

1997-11-05  Felix Lee  <flee@cygnus.com>

	* emul_chirp.c: #ifdef HAVE_UNISTD_H

Wed Oct 15 08:50:54 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* corefile.c (core_attach): Pad out allocated memory regions so
 	that they are always correctly aligned.
	(struct _core_mapping, core_map_attach, core_init,
 	new_core_mapping): Change free_buffer to type void*.

Mon Oct  6 18:09:26 1997  Michael Meissner  <meissner@cygnus.com>

	* sim_calls.c (zfree): Call free correctly.

Mon Sep 29 10:05:01 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim_calls.c (zfree): Use free, not mfree.
	(sim_io_flush_stdoutput): Replace gdb_flush with callback ->
 	flush_stdout.

Fri Sep 26 09:50:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ppc-instructions (sraw, slw, srw): From Charles Lefurgy, Fix
 	mask extracting shift amount. Correctly condition for setting XER
 	in sraw.
 	(ldhau): From Johannes Reisinger, update rA after load.

Tue Sep  9 22:13:23 1997  Felix Lee  <flee@cygnus.com>

	* basics.h (CONCAT*): token-pasting macros, if ALMOST_STDC,
 	for MSVC.
	* words.h: __int64 instead of long long for MSVC.

Wed Aug 27 10:24:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim_calls.c (sim_create_inferior): Check the simulator was
 	initialized before creating inferior.

	* idecode_expression.h (ALU_END): From Charles Lefurgy - Extract
 	sign bit using 64 bit and not a 32 bit mask.

Wed Aug 27 10:15:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim_calls.c (sim_load): From Ian Lance Taylor - free argv after
 	it has been used, not before.
	
Tue Aug 26 10:41:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* sim_calls.c (sim_kill): Delete.
	(sim_create_inferior): Add ABFD argument.
	(entry_point): Delete variable.
	(sim_load): Move setting of PC from here.
	(sim_create_inferior): To here.

Mon Aug 25 16:17:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Thu Jul  3 10:18:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ppc-instructions (PPC_INSN_INT): From Michael Thies - Monitoring
 	CR register updates dependant on RC value had logic backwards.

	* ppc-instructions (Load String Word Immediate): From Brad Parker
 	- sense of wrap test in check for overwriting RA wrong.
	(Load String Word Indexed): Ditto.
	
	* configure.in: From Erik Landry - set sim_default_model not
 	sim_model for sim-default-model option.
	* configure: Regenerate.
	
	* interrupts.c (check_masked_interrupts): Schedule a hardware
 	interrupt delivery when FP interrupts get enabled.
	(program_interrupt): Generate FP exceptions instead of aborting.
	(deliver_hardware_interrupt): Deliver a FP exception if so
 	enabled.

	* registers.h: Add definition of fpscr_vx_bits.

	* idecode_expression.h (FPSCR_END): Always update FEX and VX bits
 	in FPSCR.
	(FPSCR_END): Explicitly check for possible floating point
 	exception conditions.
	(FPSCR_BEGIN): Simplify.
	
	* ppc-instructions (Move From FPSCR): Enable.
	(Move To FPSCR Bit 1): Ditto.
	(Move To FPSCR Bit 0): Ditto.
	(Move To FPSCR Field Immediate): Ditto.
	(Move to Condition Register from FPSCR): Simplify.
	(invalid_arithemetic_operation): Generate a QNaN when invalid
 	operation exception disabled.
	
Tue May 20 10:22:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Apr 22 22:36:57 1997  Mike Meissner  <meissner@cygnus.com>

	* sim_callbacks.h (error): Make declaration match gdb's.
	* main.c (error): Ditto.

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

	* sim_calls.c (sim_stop_reason): Simplify.  Was running implies
 	stopped/SIGINT. Exit implies a status code.

	* psim.c (cntrl_c_simulation): From main.c.  Event function that
 	halts the simulator.
	(psim_stop): New. Asynchronously schedule a stop simulator event.
	(psim_run_until_stop): Delete. Made redundant by psim_stop.

	* main.c (cntrl_c): Update.
	(cntrl_c_simulation): Moved to psim.c.

	* sim_calls.c (sim_stop): New function. Use psim_stop which
 	schedules a stop event.
	(sim_resume): Drop SIGINT handler, now in gdb/main.c.
	(sim_resume): Use psim_run as stop variable no longer needed.

Fri Apr 18 17:03:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* psim.c (psim_options): Handle -E option correctly.
	(psim_usage): Document.

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

	* psim.c (psim_options): Ignore -E option (sets endianness).
	* sim_calls.c: #include bfd.h.
	(entry_point): New static local.
	(sim_load): Return SIM_RC.  New arg abfd.  Set start address from bfd.
	(sim_create_inferior): Return SIM_RC.  Delete arg start_address.

Tue Apr 15 14:57:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(install): Depend upon installdirs.  Use $(program_transform_name)
	directly, rather than using $(INSTALL_XFORM).
	(installdirs): New target.

Fri Apr  4 17:54:36 1997  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (tmp-hw, tmp-pk): Use for loop to eliminate duplicates
	rather than the non-portable cat -n.

Mon Apr 14 16:29:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

Tue Apr  1 18:15:14 1997  Jim Wilson  <wilson@cygnus.com>

	* ppc-instructions: Change milhwu to mulhwu.

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

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

Wed Apr  2 14:51:17 1997  Ian Lance Taylor  <ian@cygnus.com>

	* COPYING: Update FSF address.

Tue Mar 25 16:17:59 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* main.c (sim_io_read_stdin): Only compile unbuffered IO code if
 	all the required features are supported by the host OS.

Tue Mar 25 12:13:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* emul_bugapi.c (emul_bugapi_create): Guard against NULL images.

	* configure.in (enable-sim-endain): Correct typo in usage (from
 	Erik Landry <landry@ENGR.ORST.EDU>).
	* configure: Re-generate.

Fri Mar 14 18:23:02 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (targ-vals.def): Re-do rule so that it works with
 	FreeBSD's make.  Didn't like $<.

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

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

Thu Feb 13 10:35:14 1997  Andrew Cagney  <cagney@phydeaux.cygnus.com>

	* ppc-opcode-simple-array, ppc-opcode-simple-goto,
 	ppc-opcode-simple-switch, ppc-opcode-complex-array,
 	ppc-opcode-complex-goto, ppc-opcode-complex-switch,
 	ppc-opcode-jump, ppc-opcode-goto, ppc-opcode-flat: Delete,
 	superseeded by --sim-decode-mechanism option.

	* ppc-opcode-simple, dc-simple: Rename to be 8.3
	* ppc-opcode-complex, dc-complex: Ditto.
	* ppc-opcode-stupid, dc-stupid: Ditto.
	* ppc-opcode-test-1, dc-test.01: Ditto.
	* ppc-opcode-test-2, dc-test.02: Ditto.

	* configure.in (--enable-sim-opcode): Change prefix to dc- instead
 	of ppc-opcode-.

Wed Feb 12 19:33:45 1997  Andrew Cagney  <cagney@phydeaux.cygnus.com>

	* Many of the ppc-opcode-* files are identical baring the type of
 	lookup table.  Instead of having multiple tables, igen can do this
	via an additional option.
	
	* ld-decode.h, ld-decode.c (force_decode_gen_type): New function,
 	allow the type of generated table specified in the decode file to
 	be overridden.

	* ld-decode.c (load_decode_table): Allow the table type to be
 	overridden.

	* igen.c (main): Add -T <mechanism> option so that an overriding
 	instruction decode mechanism can be specified.

	* configure.in: New option --sim-decode-mechanism to control
 	igen's new -T <mechanism> flag.
	* Makefile.in (IGEN_FLAGS): Add IGEN_IDECODE_MECHANISM set by the
 	configure script.
	* configure: Regenerate.
	
Tue Feb 11 13:49:10 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* events.c (event_queue_create): Don't use NULL to initialize an
	integer field.
	(even_queue_{init,schedule_after_signal,tick}): Conditionalize use
	of sigprocmask to appropriate autoconf test.

	* main.c ({cntrl_c,main}): Use RETSIGTYPE for signal return type,
	don't assume void.
	* sim_calls.c (sim_{ctrl_c,resume}): Ditto.

	* Makefile.in (callback.o): Define HAVE_CONFIG_H, so callback.c
	includes our config.h.

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

	* configure.in: Fix typo in test for callback.c.
	* configure: Regenerated.

Fri Feb  7 10:04:25 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* emul_chirp.c (emul_chirp_create): Handle a virtbase of -1 being
 	found in the device tree.

Wed Feb  5 10:56:27 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* Property create/initialization still wasn't correctly ordered.
  	Should be delaying everything related to ihandle creation until
 	after the rest of the tree has been established.
	
	* device.c (device_find_ihandle_runtime_property): Update.
	(device_add_ihandle_runtime_property): Update.

	* tree.c (parse_ihandle_property): Delay lookup of the device to
 	be opened until the ihandle initialization phase.
	* tree.c (print_properties): Update.

Wed Feb  5 10:56:27 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>
	
	* gen-icache.c (print_icache_extraction): Add a reason parameter.
  	Augment each extracted field with a comment citing the codes
 	origin.  Should simplify tracking down incorrect cache
 	extractions.

Tue Feb  4 17:44:51 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* gen-icache.c: Generalize code handling XXX_is_NNN so that it
 	works for normal and boolean table entries.

	* psim.c (psim_write_memory): last_cpu == -1 or nr_cpus is now
 	valid.  Handle this just like *_{read,write}_register now handles
 	it.

Mon Feb  3 17:18:16 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* events.c (insert_event_entry): Correct loop termination
 	assertions.

Fri Jan 31 16:20:26 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* psim.c (psim_options): Add new option -c for max-iterations or
 	count.
	(psim_usage): Document.
	(psim_max_iterations_exceeded): New function, abort simulation if
 	max iterations exceeded.

	* gen-idecode.c: Re-work the table lookup code so that it assumes
 	that the entry is a leaf by default.  Simplify the boolean table
 	entry code so that it involves a mask + test instead of shift +
 	shift + mask + test.

	* gen-idecode.c: Correct generated igen body so that it no drops
 	or doubles clock interrupts.

	
Thu Jan 30 11:23:20 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* Makefile.in (BUILT_SRC_WO_CONFIG): Change targ-vals.* to
 	@sim_targ_vals@

	* configure.in (sim_callback, sim_targ_vals): Set sim_targ_valls
 	if common callback is present.

Wed Jan 29 12:32:41 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (sim_callback): If the gdb is post 4.16, configure
	callback support from the common directory.
	* configure: Regenerate.

	* Makefile.in (BUILT_SRC_WO_CONFIG): Add targ-vals.{h,def} and
	targ-map.c.
	(GDB_OBJ): Add callback support configured in.
	(gentmap,targ-vals.def): Build from common directory.
	(targ-vals.h,targ-map.c): Build by running gentmap.
	(callback.o): Build from source in common directory.
	(targ-map.o): Add dependency.
	(clean): Remove gentmap.

Wed Jan 29 12:14:19 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* igen wasn't aborting if the opcode table contained no valid
 	fields.
	
	* misc.c (name2i): Possibly abort if an invalid name is
 	encountered.
	* ld-decode.c: Abort if the table type isn't found.

Wed Jan 29 12:14:19 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* When performance monitoring is disabled, it is still possible to
 	determine the simulation speed by looking at the number of elapsed
 	ticks recorded by the event queue.
	
	* psim.c (psim_write_register, psim_read_register): Force the cpu
 	to zero when it is either of `-1' or `nr_cpus'.  In both cases the
 	next cpu would be zero any way.

	* mon.c (mon_print_info): If possible, print the system cycle
 	performance.  This is an indication of the number of instructions
 	per second.

Wed Jan 29 12:14:19 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* The code to allow an event queue to be updated during a signal
 	was missing.  For main.c, a cntrl-c simulation termination wasn't
 	handled cleanly.
	
	* The simulation would not correctly restart if an event requested
 	that the simulation be halted.
	
	* psim.c (psim_options): Add hack to -i option to optionally
 	include a level vis -i2.
	(psim_usage): Document.

	* main.c (cntrl_c, cntrl_c_simulation): New functions.  When a
 	cntrl-c occures schedule an event to halt the simulation.
	(main): Catch CNTRL-C signals with the function cntrl_c.

	* events.c (event_queue_process): Mask interrupts while
 	manipulating the async event queue.
	(event_queue_init): Ditto.
	(event_queue_schedule_after_signal): Ditto.

	* events.c (event_queue_process): Mark the event queue as being in
 	the processing state when processing has started.  Adjust code
	so that it is tolerant of halts.
	(event_queue_init): Start the event queue out with processing
 	false.
	(event_queue_tick): Check that processing isn't still being
 	performed.
	
	* gen-idecode.c (print_run_until_stop_body): Call
 	event_queue_process_events to clear possibly pending events before
 	starting a simulation run.  Re-arange main loop so that simulator
 	is correctly restarted when an event halts the simulation.

	* psim.c (psim_halt): Handle an event halting the simulation.
	* psim.c (psim_init): Adjust initial cpu - == -1 - to match
 	reworked idecode.

Wed Jan 29 12:14:19 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* ppc-opcode-complex: Correct typo - was expanding ORA instead of
 	RA.  Based on instruction frequency stats, expand additional
 	instructions.
	* ppc-instructions: Change all `RA == 0' to RA_is_0.
	
	* ppc-opcode-stupid: Move all but the basic table in -complex into
 	here.  Update to new format.
	
	* Makefile.in (tmp-defines): New target. Force defines.h to always
 	be built.  Hence get ppc-opcode-goto to build.

Tue Jan 28 13:00:19 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* hw_com.c (hw_com_instance_read, hw_com_instance_write):
 	Implement.
	
Thu Jan 23 09:07:26 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* hw_trace.c (hw_trace_init_data): Delete.  The trace options need
 	to be initialized independant of the rest of the simulation
 	initalization.  Otherwize a trace option explictly set from gdb
 	could be overridden by hw_trace.

	* psim.c (psim_options): Clarify reason why the trace ioctl occures.

	* FIXME: The trace code is too scattered - hw_trace.c, psim.c,
 	debug.c.  It could be much simpler.

Thu Jan 23 09:07:26 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>
	
	* Some devices support removable media.  Add hooks to the disk
 	device so that it supports this.
	
	* device.c (device_add_string_array_property,
 	device_find_string_array_property): New functions, manipulate
 	properties containing an array of strings.
	(device_find_string_property): Allow a string array.
	(device_init_static_properties): Update.
	(device_init_runtime_properties): Update.

	* hw_disk.c (hw_disk_ioctl): Add ioctl for changing the disk
 	media.  If no file image is specified, use the next one in the
 	image property list.
	(hw_disk_init_address): Change the file property so that it is a
 	string array - use the first entry for the initial file image.

	* tree.c (print_string_aray_property): New function - print a
 	string array.
	(print_properties): Adjust.
	(print_string): Write a string, handling double quotes.

	* device.h: Define an ioctl to `change-media' with an optional new
 	media image.
	
	* hw_disk.c: Allow floppy disk devices to be specified.

	* psim.c (psim_command): New function, parse more complex psim
 	commands such as "change-media" and "trace".
	* sim_calls.c (sim_do_command): Use.

Wed Jan 22 09:38:33 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* For expressions like (RA == 0) that are entered in to the cache
 	as RA_is_0. If possible generate the result of the expression so
 	that the compiler gets a better chance of eliminating dead
 	branches.

	* gen-icache.c (print_icache_extraction): For a cache entry of
 	the form <name>_is_<const> where it is a boolean field, generate
 	the result of the expression instead of the expression its self.
	(print_icache_body): Remove code that was looking for *_is_0 and
 	then generating corresponding definitions.

	* gen-icache.c (print_icache_struct): If there is no cache, do not
 	output expressions in idecode.h file.
	
	* gen-icache.c (print_icache_body): Output them here.
	
	* ppc-opcode-complex: Clarify constant values for SPR==LR register
 	expansion.

	* ppc-cache-rules (RA_is_0, SPR_is_256): Two new cache entries.

Wed Jan 22 12:24:52 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* The code that put values in and extracted values from the cache
 	was too compilicated.  The cache table did not allow values to be
 	computed from cache entries.  #defines could only be used when a
 	cache was present, remove the restriction.

	* ld-cache.h, ld-cache.c: Add a new cache entry type - SCRATCH.  A
 	scratch variable is defined when a cache entry is beinf
 	filled. Change the definition of a COMPUTE variable to be defined
 	when the cache entry is being used.
	* gen-icache.c: Update.
	
	* ld-cache.h, ld-cache.c: Change field names so that their meaning
 	is more obvious.  old_name->field_name, new_name->derived_name.
	* gen-icache.c: Update
	
	* gen-icache.h, gen-icache.c (print_icache_body): Make the three
 	different types of cache code - put into cache, extract from
 	cache, no cache - an explicit argument to print_icache_body.
	* gen-icache.c (print_icache_extraction): Ditto.
	
	* gen-semantics.c (print_c_semantic): Update use.
	* gen-idecode.c (print_jump_insn): Update use.
	* gen-icache.c (print_icache_function): Update use.

	* igen.c (main): Change 'R' option so that it does not force the
 	cache.

	* configure.in (enable-sim-icache): Clarify description.  Make
 	#define one of the defaults regardless of the cache.  Probably
 	should revamp and add a separate option.

Tue Jan 21 13:26:10 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* pk_disklabel.c (block_is_fdisk): Tidy up traces - use dos
 	partition numbering.
	(pk_disklabel_create_instance): Partition 1..4 are valid - not
 	1..3.
	(is_iso9660): New function, verify a CD9660 File system.
	(pk_disklabel_create_instance): Start expanding so that active
 	partition selection is supported.

Mon Jan 20 11:20:15 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* The cap object was retaining a reference to the instance of a
 	device after it was deleted. Instead add and remove cap's from the
 	cap db as they are created and deleted.  This ensuring that a
 	capibility is only used during the lifetime of the corresponding
 	object.
	
	* cap.h, cap.c: Correct cap type - was signed32 should be
 	signed_cell.
	
	* cap.c (cap_add, cap_remove): New methods for cap object that
 	allow the explicit addition and removal of internal objects that
 	the cap knows about.
	
	* cap.c (cap_init): Rewrite.  Verify that the only objects
 	remaining in the cap data base are those that were entered first.
  	Thse objects will be the permenant ones.
	* device.c (device_init_address): Remember to initialize the cap
 	database.
	
	* device.c (device_create_instance_from): Explicitly add device
 	instances to the cap database.  Simplify create code.
	(device_instance_delete): Explicitly remove device instances from
 	the cap database.
	
	* device.c (device_create_from): Explicitly add a device to the
 	cap data base.
	
	* device.c (device_create_from): Always set the cap members.

	* hw_disk.c: Output the instance when tracing.
	
Sun Jan 19 16:44:29 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* tree.c (split_device_specifier): Add support for aliases when
 	looking up a device. Now needs a device as an argument.
	(split_property_specifier): Ditto.

Sun Jan 19 15:28:23 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* The memory "claim" and "release" methods take an address and
 	size as arguments.  These may be multi cell values. Initially fix
 	the memory code so that they check/detect this.  Leave the
 	adjustment of any clients to later.
	
	* hw_memory.c (hw_memory_instance_claim,
 	hw_memory_instance_release): Handle multi-cell memory devices.
	
	* hw_memory.c (hw_memory_instance_claim): Be tolerant towards the
 	release of memory regions that were not claimed.

Fri Jan 17 12:01:07 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* device.h, device.c (device_instance_call_method): Correct return
 	type - can return either 0 or -1, hence should be a signed type.
	* device_table.h: Ditto.
	
	* hw_memory.c (hw_memory_instance_claim,
 	hw_memory_instance_release): Update.
	* hw_disk.c (hw_disk_max_transfer, hw_disk_block_size,
 	hw_disk_nr_blocks): Ditto.
	
Fri Jan 17 11:50:13 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* emul_chirp.c (chirp_emul_claim): Implement using the "claim"
 	method belonging to "/chosen/memory".
	(chirm_emul_release): Ditto.
	
	* Makefile.in (LIB_INLINE_SRC): Remove emul_* from list of files
 	that are inlined.  These modules are called via a table and are
 	not made inline.

	* hw_init.c (update_for_binary_section): Fix failure to allocate
 	memory used by the binary in real-mode executions. If "claim"
 	property is present, allocate memory from the "/chosen/memory"
 	device.

	* emul_chirp.c (emul_chirp_create): Specify that memory should be
 	claimed when loading a real image.

	* hw_memory.c (hw_memory_instance_claim): Don't page align memory
 	allocations.

	* hw_memory.c (hw_memory_instance_release): Avoid infinite loop
 	when merging adjacent memory chunks.

Thu Jan 16 08:51:25 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* vm.h (vm_data_map_read_buffer, vm_data_map_write_buffer): Add
 	optional PROCESSOR & CIA args so that this routine also abort an
 	access.

	* vm_n.h (vm_data_map_read_N, vm_data_map_write_N): For a
 	miss-aligned access when a transfer fails abort.
	
	* emul_bugapi.c (emul_bugapi_do_write): Use emul_read_buffer
 	instead of the vm_read_buffer.
	* emul_netbsd.c (do_write): Ditto.
	* emul_unix.c (do_unix_write): Ditto.

Wed Jan 15 14:38:25 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* configure.in (--enable-sim-jump): Default is NULL and not -E.
	* configure: Regenerate.
	
	* basics.h (__attribute__): Enable attributes if GCC >= 2.6.
	(UNUSED): Only enable UNUSED if GCC >= 2.7.
	
	* gen-icache.c (print_icache_extraction): Print UNUSED macro
 	instead of explicit __unused__ attribute.
	(print_icache_body): Ditto.
	* idecode_expression.h (FPSCR_BEGIN): Use UNUSED.

Wed Jan 15 13:54:50 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* cpu.h, cpu.c (cpu_synchronize_context): Add CIA argument as
 	reference point.

	* vm.c (vm_synchronize_context): Add PROCESSOR and CIA as
 	arguments so that there is a reference point for recovery.
	(vm_synchronize_context): Pass processor+cia for errors.
	(om_unpack_sr): Ditto.
	(om_unpack_srs): Ditto.
	* vm.c (vm_create): Review error messages.

	* vm.c: Include "cpu.h" so that cpu_error is visible.

	* ppc-instructions (Return From Interrupt): Pass CIA.
	(Instruction Synchronize): Ditto.
	* psim.c (psim_init): Ditto.

Wed Jan 15 12:25:11 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* cpu.h, cpu.c (cpu_error): Aborts simulation with error message,
 	but also saves current processor state.
	
	* basics.h: Move #include <stdarg.h> to here from device_table.h.

	* interrupts.c (perform_oea_interrupt): Use.  No longer loose CIA
 	when simulation aborted.
	(program_interrupt): Ditto.
	(floating_point_unavailable_interrupt): Ditto.
	(alignment_interrupt): Ditto.
	(floating_point_assist_interrupt): Ditto.
	(perform_oea_interrupt): Ditto.
	(machine_check_interrupt): Ditto.

Tue Jan 14 12:19:10 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* ppc-instructions (Move from Special Purpose Register): Support
 	move from DEC.

Mon Jan 13 16:58:12 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* debug.h, debug.c: Add "interrupts" trace option.

	* interrupts.c (data_storage_interrupt): Add tracing.
	(machine_check_interrupt): Ditto.
	(instruction_storage_interrupt): Ditto.
	(alignment_interrupt): Ditto.
	(program_interrupt): Ditto.
	(floating_point_unavailable_interrupt): Ditto.
	(system_call_interrupt): Ditto.
	(floating_point_assist_interrupt): Ditto.
	(deliver_hardware_interrupt): Ditto.
	
	* interrupts.c (program_interrupt): For UEA mode, halt the
 	processor - so that the current state is saved - instead of
 	aborting.
	(floating_point_unavailable_interrupt): Ditto.
	(floating_point_assist_interrupt): Ditto.

Thu Jan  2 09:10:41 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* interrupts.c (perform_oea_interrupt): Halt rather than abort on
 	a double interrupt.

Wed Jan  1 22:54:52 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* ppc-instructions (Store Multiple Word, Load Multiple Word):
 	Enable.

	* tree.c (print_properties): For an array consider printing it out
 	as an integer array.

	* hw_memory.c (hw_memory_init_address): If an "available" property
 	is present, use that to initialize the available memory instead of
 	using the reg property.

	* emul_generic.c (emul_add_tree_hardware): Add "available"
 	property to memory device.

Fri Dec 20 13:19:07 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* ppc-instructions (Rotate Left Word then AND with Mask): Enable.

	* device.c (device_instance_call_method): Was only looking at the
 	first method.

	* hw_disk.c (hw_disk_nr_blocks): Implement #blocks method.
	(hw_disk_block_size): Implement block-size method.
	(hw_disk_max_transfer): Implement max-transfer method.

	* hw_phb.c (hw_phb_init_address): Reinit the rest of the PHB.

	* emul_chirp.c (chirp_emul_instance_to_path): Recover from an
 	invalid ihandle.
	(chirp_emul_instance_to_package): Ditto.
	(chirp_emul_method): Ditto.
	(chirp_emul_read): Ditto.
	(chirp_emul_write): Ditto.
	(chirp_emul_close): Ditto.
	(chirp_emul_seek): Ditto.
	(chirp_emul_package_to_path): Ditto (for phandle).
	(chirp_emul_package_to_path): Return the length.

	* psim.c (psim_merge_device_file): Allow continuation lines.

Thu Dec 19 11:09:43 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* emul_chirp.c (chirp_emul_boot): Implement. Well report the new
 	string and exit.
	
	* emul_chirp.c (chirp_emul_exit): Correct type of args struct
 	members - *_cell not host dependant int.

Wed Dec 18 17:49:59 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* interrupts.c (perform_oea_interrupt): Print additional
 	information if a double interrupt is encountered.

Wed Dec 18 17:49:59 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>
	
	* psim.c (psim_merge_device_file): Tolerate an incorrect file-name
 	being specified with the -f option.
	(psim_merge_device_file): Correct check for end of string.

Wed Dec 18 17:49:59 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>
	
	* emul_chirp.c (chirp_emul_peer): Was falling off the end of the
 	list of devices. Return zero to the client instead.
	* emul_chirp.c (chirp_emul_child): Ditto
	* emul_chirp.c (chirp_emul_parent): Ditto

	* device.c (device_root): Assert assumption about the device being
 	valid.

Tue Dec 17 15:12:38 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* emul_chirp.c (emul_chirp_create): Add description property to
 	each significant node in the device tree.
	* emul_bugapi.c (emul_bugapi_create): Ditto.

Fri Dec 13 14:30:31 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* main.c (sim_io_read_stdin): For a single byte STDIO read, use a
 	tempoary two byte buffer.  Single byte read with fgets will not
 	work.
	* main.c: Include errno.h.
	(sim_io_read_stdin): For non-STDIO, make it work.

	* emul_chirp.c (chirp_emul_read): Return the correct error status.

Fri Dec 13 14:30:31 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* std-config.h (WITH_STDIO): Don't hard-wire the STDIO mechanism.
  	Instead have each emulation default it to DO_USE_STDIO.

	* emul_generic.c (emul_add_tree_options): Select the STDIO I/O
 	mechanism as the default if enabled or if nothing selected.

	* sim_calls.c (sim_io_read_stdin): Passify GCC's desire for a
 	return value.
	(sim_io_write_stdout): Ditto.
	(sim_io_write_stderr): Ditto.
	* main.c (sim_io_write_stdout): Ditto.
	(sim_io_write_stderr): Ditto.
	(sim_io_read_stdin): Ditto.

Tue Dec 10 10:31:48 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* emul_chirp.c (emul_chirp_instruction_call): Make *printf calls
	type correct.
	* vm.c (om_effective_to_virtual): Ditto.
	* events.c (event_queue_schedule{,_after_signal}): Ditto.
	(event_queue_{deschedule,process}): Ditto.
	* hw_htab.c (htab_decode_hash_table): Ditto.
	(htab_map_{page,binary}): Ditto.
	* hw_opic.c (hw_opic_init_data): Ditto.
	(handle_interrupt): Ditto.
	(do_processor_init_register_{read,write}): Ditto.
	(write_vector_priority_register): Ditto.
	({read,write}_destination_register): Ditto.
	(do_suprious_vector_register_{read,write}): Ditto.
	(do_current_task_priority_register_N_{read,write}): Ditto.
	(do_timer_frequency_reporting_register_{read,write}): Ditto.
	(do_timer_N_{current,base}_count_register_{read,write}): Ditto.
	(do_ipi_N_dispatch_register_write): Ditto.
	(do_vendor_identification_register_read): Ditto.
	(do_feature_reporting_register_N_read): Ditto.
	(do_global_configuration_register_N_{read,write}): Ditto.
	* hw_phb.c (hw_phb_attach_address): Ditto.
	(hw_phb_unit_decode): Ditto.
	(hw_phb_address_to_attach_address): Ditto.
	(hw_phb_io_{read,write}_buffer): Ditto.
	* hw_ide.c (setup_fifo): Ditto.

	* sim_calls.c ({defs,callback,remote-sim}.h): Find gdb include
	files via -I<dir> instead of using "../../gdb/" prefixes.

Tue Dec 10 10:12:44 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* debug.h: Add tracing for the pal device.
	* hw_pal.c: Update.

	* emul_chirp.c (chirp_emul_getprop): More tracing.

Tue Dec 10 10:12:44 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* device.h, device.c (device_find_ihandle_runtime_property): New
 	function. Reverse of add_ihandle_runtime property.
	(device_init_runtime_properties): Use it.
	
	* device.c (find_property_entry): New function returns the
 	internal property spec.
	(device_set_property): Use.
	(device_find_property): Use.

Tue Dec 10 10:12:44 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* psim.c (psim_merge_device_file): Strip newline from device
 	specs.
	
Tue Dec 10 10:12:44 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* hw_htab.c (htab_map_binary): For overlapping text / data maps
 	merge the two.  Also check that the merge is safe.

	* emul_chirp.c (emul_chirp_create): Add a description property to
 	the pte's so that they are easier to identify.
	
	(emul_chirp_create): Don't specify a load address for the CHRP
 	image.  Always use the values specified by the executable.

	* hw_htab.c (htab_map_page): Abort if a duplicate map is
 	encountered.

Mon Dec  9 12:08:46 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* hw_htab.c (htab_map_page): Formatting.

	* emul_chirp.c (emul_chirp_instruction_call): Check for a NULL
 	method name when handling the client call. Also check for other
 	bad call arguments.
	
	* emul_chirp.c (emul_chirp_create): Allow real-mode?, real-base,
 	etc to be overriden.

Mon Dec  9 12:08:46 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* os_emul.c (os_emul_create): Use tree find property instead of
 	device find property - sigh.

Thu Dec  5 10:46:42 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* 961205: Release snapshot 961205.
	
Thu Dec  5 10:46:42 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* configure.in (hostbitsize, bitsize): Fix typo in error message -
 	cannot contain a comma.
	(sim-warnings): Check for more potential errors.

	* psim.c (psim_usage): Add -f <file> option.  Specifies a file
 	containing device tree specifications that should be merged into
 	the device tree.

	* configure.in: Sort options.
	* configure: Rebuild
	
Wed Dec  4 13:57:31 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* psim.c (psim_usage): Add -n option - specify number of
 	processors.

	* emul_chirp.c: Add description.
	* emul_bugapi.c: Ditto.
	* emul_unix.c: Ditto.
	* emul_netbsd.c: Ditto.

Fri Nov 29 11:12:22 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* hw_pal.c (hw_pal_attach_address): New function, if an attach is
 	encountered, assume that it is the single disk.
	* hw_pal.c: Add generic device/size decode methods.
	
	* hw_nvram.c (hw_nvram_init_address): Use the first nonzero reg
 	property entry when determining the nvram size.

	* hw_core.c: Add generic address/size decode methods.

	* emul_chirp.c (emul_chirp_instruction_call): Return and trace
 	nonzero status from client functions.

	* main.c (error): Always include a cariage return when writing out
	errors.

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

	* sim_calls.c (sim_resume): Reset sim_should_run if single
 	stepping.

Thu Nov 28 13:19:46 1996  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* emul_bugapi.c (emul_bugapi_do_diskio): Add support for multiple
 	optional disks.

	* emul_generic.c (emul_add_tree_hardware): Drop the dummy eeprom.
  	Attach the pal - for I/O - as a pseudo device haning from the
 	firmware sub tree.

	* emul_bugapi.c (emul_bugapi_create): Add a small memory device to
 	the device tree at the address of the hi-mem interrupt vector
 	addreses.  Used by bugapi to establish its trap instructions.
	
	* debug.h: Add a new macro DITRACE for tracing device instances.
	
	* debug.h: Extend the DTRACE macro so that it can also tests for
 	device specific tracint.
	
	* device.h, device.c (device_trace): Add method to determine
 	device specific tracing.
	(device_init_address): Set the devices tracing level.
	
Thu Nov 21 12:05:32 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* tree.h, tree.c (tree_device): New files - separate out the
 	device parser and other tree operations from the device.
	
	* inline.h, inline.c (INLINE_TREE): Add.
	* device.h, device.c (device_tree_add_parsed): Delete.
	* Makefile.in (tree.c): Add rules for new file.
	* Makefile.in: Better order the emul_* files.
	
	* emul_generic.c (emul_add_tree_hardware): Update.
	* emul_netbsd.c (emul_netbsd_create): Update.
	* emul_unix.c (emul_unix_create): Ditto.
	* emul_chirp.c (emul_chirp_create): Ditto.
	* emul_bugapi.c (emul_bugapi_create): Ditto.
	* psim.c (psim_tree): Ditto.
	* hw_init.c: Ditto.
	
	* emul_generic.h: Include tree.h
	* Makefile.in: Add to EMUL_GENERIC_H dependencies.
	
	* device.h, device.c (device_root): New function - returns the
 	root of the tree.
	* corefile.c: Use.
	
	* device.h, device.c (device_clean): New function, clean up device
 	ready for next simulation run. This includes things like deleting
 	interrupt edges and properties created during the simulation and
 	also scrubbing any pre-defined properties.
	* tree.c (tree_init): Use.
	
	* device.h, device.c (device_init_static_properties): New
 	function.  Initialize any static predefined properties.  By static
 	we mean those that have values that can be determined before the
 	device tree initialization has started.
	* tree.c (tree_init): Use.

	* device.h, device.c (device_init_address): Add code to
 	check/verify the devices #address-cells and #size-cells.
	(device_add_integer_property): Delete corresponding code.
	(device_nr_address_cells, device_nr_data_cells): Check for
	property when returning value.
	
	* device.h, device.c (device_init_runtime_properties): New
 	function.  Initialize those properties that are not `static'.  At
 	present the only such property is the ihandle.
	* tree.c (tree_init): Use.
	
	* device.h, device.c (reg, ranges): Rework these so that they use
 	an array of the fundamental type - single reg or single range
 	entry.
	
	* device.h, device.c (device_add_ihandle_runtime_property):
 	Re-implement the adding of an ihandle during tree construction so
 	that it better fits in with device initialization.
	
Thu Nov 21 12:05:32 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h, device.c (device_ioctl): Add additional argument -
 	request - so that the caller must always specify the type of
 	the ioctl request.

	* device_table.h: Update.
	* hw_trace.c (hw_trace_ioctl): Ditto.
	* hw_vm.c (hw_vm_ioctl_callback): Ditto.
	* hw_init.c (hw_stack_ioctl_callback): Ditto.
	* psim.c (psim_options): Ditto.
	
Thu Nov 21 12:05:32 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>
	
	* BUGS: Updated a bit.

Wed Nov 20 14:06:37 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_opic.c: Finish - third round.

Wed Nov 20 12:02:08 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_glue.c (hw_glue_io_read_buffer_callback): Fix miscalc of glue
 	reg index.
	(hw_glue_io_write_buffer_callback): Ditto.

Tue Nov 19 21:17:08 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* events.c (event_queue_process): Was incorrectly consuming future
 	events on the queue when they should be left alone.

	* debug.h, debug.c (events): Add support for event queue tracing.
	* events.c: Add event tracing.
	
	* debug.h, debug.c: Order device trace options.
	
Fri Nov 15 15:23:39 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* pk_disklabel.c (pk_disklabel_create_instance): Fix up some
	warnings generated by GCC.

Sun Nov 17 17:59:14 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* sim-endian.h: Add LE versions of byte swap macros.  Needed for
 	PCI devices which are little-endian.
	
	* sim-endian-n.h (endian_le2h_N, endian_h2le_N): Ditto

Sun Nov 17 17:59:14 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_iobus.c (hw_iobus_attach_address_callback): Change the iobus
 	so that it is implementing a 1-1 address map.
	
	* emul_generic.c (emul_add_tree_hardware): Adjust.

	* emul_generic.c (emul_add_tree_hardware): Don't add the nvram as
 	a default.

Sun Nov 17 17:59:14 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>
	
	* device.c (split_find_device): Be tolerant of missing unit
 	addresses.

Fri Nov 15 16:49:49 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* basics.h (port_direction): New type, specify the direction of
 	any `port'.
	
	* device.h, device.c (device_interrupt_decode): Include
 	specification of port direction in operations.
 	(device_interrupt_encode): Ditto.
	
	* device_table.h: Add a direction field to the interrupt port
 	table.

	* device.c (device_tree_add_parsed): Specify port direction.
	
Thu Nov 14 21:38:13 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_opic.c: Finish - second round.

Thu Nov  7 00:18:59 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_htab.c (htab_init_data_callback): Allow the virtual-address
 	to be specified as an array which allows 64bit addresses.

	* device.c (device_find_integer_array_property): New function.
  	Simplify the querying of elements of an integer array.
	(device_add_integer_property, device_find_integer_property):
 	Update to correctly use the cell type.

	* vm.c (om_unpack_sr): Clarify shifting comment.
	(om_pte_0_masked_vsid): Ditto. Add 64bit version.

	* emul_chirp.c (emul_chirp_create): Initialize the segment
 	registers.

	* vm.c (om_effective_to_virtual): Trace segment register use.

	* hw_htab.c (htab_map_page): Print out the pteg base address to
 	simplify cross checking between vm and the htab.
	(htab_decode_hash_table): Use device_error instead of error.
	(htab_map_page): Ditto.
	(htab_dma_binary): Ditto.
	(htab_map_binary): Ditto.
	(htab_init_data_callback): Ditto.

Wed Nov  6 20:20:58 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* interrupts.h: Clarify what the optional instruction program
 	interrupt is - a subset of illegal instruction program interrupt.

	* interrupts.c (program_interrupt): For UEA mode, clarify what an
 	optional instruction program interrupt is.
	(program_interrupt): For OEA mode, as per spec, generate an
 	illegal instruction program interrupt when an optional instruction
 	is encountered.
	
	* gen-semantics.c (print_semantic_body): Delete code
 	differentiating between an unimplemented floating point and normal
 	instruction.  Instead, such a case can be handled explicitly.

	* ppc-instructions (store floating-point as integer word indexed):
 	Mark as optional.
	(Floating Convert to Integer Doubleword): Make the floating point
 	assist interrupt explicit.
	(Floating Convert To Integer Doubleword with round towards Zero):
 	Ditto.
	(Floating Convert To Integer Word): Ditto
	(Move From FPSCR): Ditto.
	(Move to Condition Register from FPSCR): Ditto.
	(Move To FPSCR Fields): Ditto.
	(Move To FPSCR Field Immediate): Ditto.
	(Move To FPSCR Bit 0): Ditto.
	(Move To FPSCR Bit 1): Ditto.
	
Mon Nov  4 12:49:13 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* corefile.c (core_map_read_buffer, core_map_write_buffer): Avoid
 	breaking up transfers.

	* corefile.c: Adjust arguments so that the client server
	relationship is clarified.
	
	* hw_glue.c (hw_glue_init_address): Update so it can be attached
 	to a PCI bus.

	* hw_disk.c (hw_disk_instance_write): Add more checks to disk IO -
 	looking for things like overflow/underflow.

Sun Nov  3 18:45:20 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_generic.c (emul_add_tree_hardware): Hang the disk off the
 	PAL device instead of the IOBUS.  The disk must be attached to a
 	logical bus.

	* hw_disk.c (hw_disk_init_address): Just use the unit address
 	directly in the attach - the rest isn't relevant.

Sat Nov  2 21:48:57 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure.in (sim-hardware, sim-packages): Allow additional
 	hardware and packages to be prefixed as well as appended.

	* Makefile.in (tmp-hw, tmp-pk): Retain the user specified order of
 	packages when building them.  Consequently, a user can override a
 	standard device by prefixing their own version.
	
	* Makefile.in (hw_opic.o, hw_pci.o, hw_ide.o): Add dependencies.

Fri Nov  1 14:42:57 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* mon.c (_cpu_mon): Add fields for counting 1, 2, 4, and 8 byte
	reads and writes.
	(mon_{read,write}): Count 1, 2, 4, and 8 byte reads/writes.
	(mon_print_info): Correct typo regarding # of unaligned reads and
	writes.  Print out how many 1, 2, 4, and 8 byte reads/writes there
	are.

Tue Oct 29 17:55:43 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (AC_CHECK_FUNCS): Add access.
	* config{.in,ure}: Regenerate.

	* emul_unix.c (do_unix_nop): System call that always succeeds.
	(do_unix_access): Support access system call.
	(solaris_descriptors): Make sigaltstack and sigaction nops.
	({solaris,linux}_descriptors): Add support for access.

Tue, 8 Oct 18:42:26 1996  Jason Molenda <crash@cygnus.co.jp>
        
	* Makefile.in (clean): Move config.log to distclean.

Fri Nov  1 16:44:28 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* corefile-n.h (core_map_write_N): Improve abort messages.

	* device.h, device.c (device_attach_address): Remove unused name
 	parameter.
 	(device_detach_address): Ditto.
	* device_table.h, device_table.c: Update.
	* hw_iobus.c (hw_iobus_attach_address_callback): Ditto.
	* hw_nvram.c (hw_nvram_init_address): Ditto.
	* hw_memory.c (hw_memory_init_address): Ditto.
	* hw_vm.c (hw_vm_init_address_callback): Ditto.
	(hw_vm_attach_address): Ditto.
	(hw_vm_add_space): Ditto.
	* hw_init.c (update_for_binary_section): Ditto.
	* hw_core.c (hw_core_attach_address_callback): Ditto.

	* hw_iobus.c (hw_iobus_attach_address_callback): Rewrite to handle
 	configurable parent busses.

Wed Oct 30 18:46:32 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.c (generic_device_size_to_attach_size): Provide
 	limited support for multi-cell sizes.
	(generic_device_address_to_attach_address): Ditto for addresses.

Tue Oct 29 02:01:29 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_add_integer_property): Check for setting of
 	#address-cells and #size-cells properties.  For these, update the
 	corresponding device values.
	(device_nr_address_cells, device_nr_size_cells): Use the value
 	from the device instead of the property.

	* hw_core.c: Use generic address and size conversions for the top
 	bus.

	* hw_memory.c (hw_memory_init_address): Tolerate case where
 	#address and #size cells is greater than 1.

	* device.c (device_tree_print_device): Clean out printing of
 	properties.
	
	* device.c (split_device_specifier): Don't detect comments here -
 	"#" can be a valid prefix - eg #size-cells.

	* psim.c (psim_merge_device_file): Suppress comments and blank
 	lines here.

	* emul_generic.c (emul_add_tree_hardware): Fix typo of incorrect
 	pal unit address.  Add the property /#address-cells to the root of
 	the tree.

	* device.c (device_template_create_device): Check that the unit
 	address was successfully parsed.

	* device_table.c (generic_device_unit_decode): Rewrite to better
 	handle multi-cell addresses.
	(generic_device_unit_encode): Ditto.

	* emul_generic.c (emul_add_tree_hardware): "reg" properties no
 	longer need the explicit array type - the parser takes care of it.

	* pk_disklabel.c (pk_disklabel_create_instance): Add NULL return
 	to keep GCC happy.

Mon Oct 28 22:55:48 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_ide.c: New file.  Model of a basic IDE interface attached to
 	a PCI bus.
	
	* configure.in (hardware): Add the ide device to the default
 	configuration.
	* configure: Regenerate.
	
	* debug.h, debug.c: Add tracing option for the IDE device.
	
Fri Oct 25 21:28:25 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_phb.c, hw_phb.h: New files - implement a PHB.

	* configure.in (hardware): Add the phb to the list of devices to
 	build by default.

Fri Oct 25 21:28:25 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_com.c: Review description.
	* hw_disk.c: Ditto.
	* hw_htab.c: Ditto.
	* hw_eeprom.c: Ditto.
	* hw_init.c: Ditto.
	* hw_cpu.c: Ditto.
	
	* hw_com.c: Update event handling.

	* hw_disk.c: Implement tracing.
	
Fri Oct 25 21:28:25 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.c (generic_device_init_address): Use
 	assigned-addresses property in preference to any other reg
 	property.

Fri Oct 25 21:28:25 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h, device.c (device_find_ranges_property): New function.
  	Simplify the manipulation of "ranges" properties.
	
	* device.c (device_add_parsed): Extend to include support for the
 	ranges property.

	* device.c (device_add_parsed): Add assigned-addresses to the list
 	of reg type properties.
	
	* device.c (device_tree_print_device): Add code to format and
 	print a ranges property.
	
	* device.h, device.c (device_nr_address_cells,
 	device_nr_size_cells): New functions. Determine the values of the
 	standard properties #address-cells and #size-cells.  Both of which
 	are optional and have default values of two and one respectfuly.
  	Previously, code that determined #address-cells was incorrectly
 	using a value of one.

Fri Oct 25 21:28:25 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* debug.h, debug.c: Sort debug options, Add entries for the
 	comming PHB device.
	
Fri Oct 18 12:12:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppc-instructions (Floating Select): Add support for fsel unless
	model is 601.  Allow user to filter out instruction unless -Fs is
	passed to igen.
	(Store Floating-Point as Integer Word Indexed): Raise optional
	instruction program abort.  Allow user to filter out instruction
	unless -Fs is passed to igen.
	(Floating Square Root{, Single}): Ditto.
	(Floating Reciprocal Estimate Single): Ditto.
	(Floating Reciprocal Square Root Estimate): Ditto.

	* configure.in (--enable-sim-filter): If not passed, pass 32,f,s
	to igen.
	* configure: Regenerate.

	* interrupts.h (program_interrupt_reasons): Add
	optional_instruction_program_interrupt.

	* interrupts.c (program_interrupt): Call error with more detailed
	information on program interrupts, particularly in user mode.  Add
	support for optional_instruction_program_interrupt.

Wed Sep 25 10:20:29 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_glue.c: New device.  Hooks for manipulating interrupt ports.

	* debug.h, debug.c (trace_glue_device): Add tracing support for
        the interrupt glue logic device.

	* configure.in (hardware): Add glue device.
	* configure: Regenerate.

Tue Sep 24 20:55:38 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_tree_parse_integer_property): New function,
        parse a list of integers as an array property.
	(device_tree_add_parsed): Call it.

	* device.c (device_tree_parse_string_property): New function,
        parse a list of strings as a string property (with embeded
        null's).  For moment, don't try to implement a complext string
        parser.
	(device_tree_add_parsed): Call it.

Tue Sep 24 16:30:48 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_opic.c: New file.  OpenPIC interrupt controller.

	* configure.in (hardware): Add opic device.
	* configure: re-generate.

	* hw_pic.c: Delete, replaced with hw_opic.c.

	* debug.h, debug.c: Add debug option for OpenPIC device. -
        opic-device.

Tue Sep 24 16:30:48 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* Makefile.in (psim.o, idecode.o): Since idecode and not psim is
        now the file that does all the inlining.

	* Makefile.in (LIB_SRC, LIB_INLINE_SRC, idecode.o): Break out the
        library source code that could be involved in an inlining.  Make
        idecode.o only dependant on the inlined library source code.

	* Makefile.in (LIB_OBJ): Put options last on the list so that it
        is compiled last.

	* std-config.h (DEVICE_INLINE): Only inline locals when the
        default is to inline.

Mon Sep 23 00:37:49 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_htab.c (htab_sum_binary): Determine the real-base for the
        binary.

	* hw_htab.c (htab_map_binary): Depending on the value of the
        load-base, either map the program in as a contiguous section or as
        separate sections controled by th binaries lma values.
	(htab_init_data_callback): Ditto.

Sun Sep 22 15:56:22 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_generic.c (emul_add_tree_options): Remove load-base option.

	* emul_chirp.c (map_over_chirp_note): Add load_base field to note
        struct.  Don't require the load_base field to be present - just
        issue warning - it is a recent addition.
	(emul_chirp_create): Support both virtual and physical modes.

	* emul_chirp.c (emul_chirp_create): Add a stack initialization
        property so that any arguments specified on the command line can
        be passed on to user programs.

	* hw_init.c (create_ppc_chirp_bootargs): Add support for chirp
        argument passing to the pseudo device stack.

Sat Sep 21 19:39:56 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_error): Make it more tolerant to incomplete
        devices.

	* hw_init.c (hw_data_init_data_callback): Extend the data device
        so that it can perform initialization operations either dma or a
        more complex instance open, seek, write operation.
	* hw_init.c: Update the description of the data device to reflect
        this.

Sat Sep 21 00:13:02 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_event_queue_schedule,
        device_event_queue_deschedule, device_event_queue_time): Have the
        device object export the event operations.  Making these available
        from the device object should hopefully simplify writing device
        models.

Fri Sep 20 14:04:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure.in (sim-hardware): Add eeprom device to default build.

	* hw_eeprom.c: Rewrite so it works.

	* debug.h, debug.c: Add tracing support for the eeprom and com
        devices.

Thu Sep 19 14:40:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* debug.h: Add disklabel-package and disk-device trace options.
	debug.h (PTRACE): Add macro to simplify tracing in packages.

Thu Sep 19 14:40:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_create_instance_from): Tighten up loop
        searching for device instances.
	(device_instance_delete): Ditto.
	(device_instance_delete): Only leaf instances need to be removed
        from a devices list of active instances.

Thu Sep 19 14:40:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_disk.c: Add the cdrom as an alias.

	* pk_disklabel.c (disklabel_delete): Implement, remembering to
        delete the raw disk instance while we're at it.

	* pk_disklabel.c (pk_disklabel_create_instance): Implement a
        little bit more - still a long way to go.

	* pk_disklabel.c (disklabel_write, disklabel_read): Remember the
        new head position after a read or write.

Thu Sep 19 13:05:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_chirp.c (chirp_emul_read): Allow reads to be longer then
        the internal buffer.

Thu Sep 19 13:05:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_chirp.c (chirp_read_t2h_args): Call memset-0 with the args
        in the correct order.

	* emul_chirp.c (chirp_emul_call_method): Correct computation for
        the address of the first stack argument passed in from the client
        program.

Wed Sep 18 19:33:54 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* words.h: Add new types signed_cell and unsigned_cell which
        correspond to the signed and unsigned IEEE 1275 memory locations.
	* device.h, device.c, emul_chirp.c: Where refering to an IEEE 1275
        memory cell, replace uses of unsigned32 with unsigned_cell.
	* device_table.h: Ditto.

	* sim-endian.h: Add new macros H2BE_cell and BE2H_cell which
        convert cell sized values to from big endian.
	* device.c, emul_chirp.c: Where refering to IEEE 1275 memory cells
        use these new macros.

Tue Sep 17 15:57:44 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_tree_add_parsed): Detect and report an
        interrupt being attached to an invalid device. Was dumping core.

Mon Sep 16 23:09:12 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h, device.c (device_address_to_attach_address,
        device_size_to_attach_size): New functions.  Convert a devices
        unit address or unit size structure into a form suitable for
        passing on to the attach and detach functions.
	* device_table.h: Add extra methods to device table.

	* device.h, device.c (device_find_reg_property): New function.
        For a reg type property, return the selected address + size
        tupple, along with a positive success status.  Add a reg_property
        to the list of property types.
	* (device_tree_add_parsed): Make array properties with the name
        reg or alternate-reg of type reg_property.

	* hw_memory.c (hw_memory_init_address): Rewrite to use new
        find_reg_property method.
	* hw_nvram.c (hw_nvram_init_address): Ditto.

	* device.c (device_tree_print_device): Add code to print out a reg
        property.

	* device_table.c (generic_device_address_to_attach_address,
        generic_device_size_to_attach_size ): New functions.  Generic
        functions for converting between unit and attach address or size.

	* device_table.c (generic_device_init_address): Rewrite to use the
        new find_reg and address convert functions.  Look for both reg and
        alternate-reg properties.

Mon Sep 16 23:09:12 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_com.c: New file.  A '550 serial device that can quickly be
        attached to any bus.
	* configure.in (enable-sim-hardware): Add the com device.
	* configure: re-generate.

Thu Sep 12 17:30:56 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_tree_verify_reg_unit_address): New
        function. Check that the unit address as specified by the reg
        property correctly corresponds to any unit address previously
        specified by the devices name.
	(device_tree_add_parsed): When adding a reg property, verify
	that the unit-address - first value of property - correctly
	matches any previous value specified when creating the device
	node.

Thu Sep 12 17:30:56 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* mon.c (mon_event): Remove assertion that an unsigned is >= 0.

Fri Aug 16 12:05:24 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* device.c (device_full_name): Cast strdup to char *, since AIX
	3.2.5 mistakenly declares the function to be const char *.
	(device_create_from): Ditto.
	(device_create_instance_from): Ditto.
	(device_add_property): Ditto.

Tue Aug 13 11:40:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* debug.c (trace_option): For -t all, do not set the
	trace_dump_device_tree flag, so that the simulator is run.

Tue Aug 13 11:40:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (options.o): Depend on defines.h.
	(defines.h): New rule, go through config.h and make strings of all
	of the #define HAVE_xxx macros.
	(distclean): Remove defines.h.

	* options.c (print_options): Print whether many of the
	configuration macros are defined.

	* main.c (main): If -t options and no filename, just print the
	options, and don't print the usage message.

Mon Aug 12 18:42:37 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in: Test whether /dev/zero works on the system, and if
	it does, define HAVE_DEVZERO.
	* configure: Regenerate.

	* emul_generic.c (emul_add_tree_hardware): Do not add /iobus/disk
	if we don't have a working /dev/zero on the system.

	* emul_bugapi.c (emul_bugapi_init): If HAVE_DEVZERO is not
	defined, don't add disk support.
	(emul_bugapi_do_diskio): Ditto.
	(emul_bugapi_instruction_call): Ditto.

Wed Aug  7 14:34:20 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* emul_unix.c (HAVE_TCGETATTR): If HAVE_TERMIOS_STRUCTURE is not
	defined, make sure HAVE_TCGETATTR is #undef'ed

Wed Aug  7 14:34:20 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* std-config.h (REGPARM): Only define REGPARM attributes if using
	GNU C.  Test for __i686__ in case GCC ever defines it.  If not on
	a x86 platform, define REGPARM as nothing.

	* sim-endian.h (WITH_HOST_BYTE_ORDER): Test for i686 and __i686__
	also.

Wed Aug  7 20:19:55 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* ld-decode.h, ld-decode.c: Rename goto_gen to the more correct
 	goto_switch_gen.
	* gen-idecode.c: Ditto.

	* gen-idecode.c (print_idecode_table): Comment out check for
 	switch/table combination until a bug with it is fixed.

	* ppc-opcode-goto: New file.  Like complex and flat but uses
 	goto-switch instead of padded-switch for the tables.

	* gen-idecode.c (print_goto_switch_name): New function.
	(print_goto_switch_table_leaf): New function.
	(print_goto_switch_break): New function.
	(print_goto_switch_table): New function. Prints a jump table
	that can be jumped into instead of a switch statement.

	* gen-idecode.c (*switch_*): As an option output a switch that is
 	implemented using a jump table but only if the switch is not
 	boolean.
	
Tue Aug  6 09:28:22 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (--enable-sim-{hardware,packages}): Fix typos.
	* configure: Regenerate.

	* device.c (device_instance_call_method): Fixup format message in
	error case.  Return 0 in case of error to shut up compiler
	warnings.

Wed Aug  7 00:17:37 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.c (generic_device_unit_decode): Require a comma
        between elements of a unit address.

	* device.c (device_tree_print_device): For reg, alternate-reg and
        ranges properties use special print functions.
	(device_print_ranges_property): Print formatted ranges property.
	(device_print_reg_property): Print formatted reg property.

Tue Aug  6 21:35:18 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_tree_add_parsed): For reg, ranges and
        alternate-reg properties use a special parser.
	(device_tree_parse_reg_property): New function to parse a reg
	property.
	(device_tree_parse_ranges_property): New function to parse a
	ranges property.
	(device_encode_unit): Wrapper for encode_unit callback.
	(device_decoce_unit): Wrapper for decode_unit callback.

Wed Jul 31 00:02:30 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.h (device_instance_callbacks): Relace the claim and
        release methods with a more general table mapping from method-name
        to method-function.

	* device.c (device_instance_call_method): New function.  Implement
        the OpenBoot call-method client interface.  Attempts to locate the
        instances method in the callback table.
	(device_instance_claim, device_instance_release): Delete.
        Replaced with call-method and a lookup table.

	* emul_chirp.c (chirp_emul_call_method): Use the new device
        instance call method and let that handle a client claim call.

	* hw_htab.c (claim_memory): Wrapper function to call the memory
        devices "claim" method using the new device-instance call-method
        interface.  Replaces the previous direct calls to claim.
	(htab_map_region): Use claim_memory.
	(htab_init_data_callback): Ditto.

	* hw_memory.c (hw_memory_instance_claim): Update function
        interface so that it is compatible with call-method.
	(hw_memory_instance_release): Ditto.
	(hw_memory_instance_methods): New table of memory specific
        methods claim and release.  Add to the hw_memory_callback
	table.

Tue Jul 30 21:26:14 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* psim.c (psim_init): Back out of change to initial value of
        system->last_cpu.

Tue Jul 30 21:12:24 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* sim_callbacks.h (sim_io_printf_filtered): Replace
	printf_filtered with a local simulator specific version.  Add
	#define printf_filtered to simplify updating of existing code.

	* sim_callbacks.h (sim_io_write_stdout, sim_io_read_stdin,
        sim_io_write_stderr): New functions.  Read / write to the
        simulations stdin and stdout and stderr interfaces.  Merge in code
        from hw_pal that previously handled async I/O.
	(sim_io_flush_stdoutput): Rename flush_stdoutput.  Add #define
	flush_stdoutput to simplify updating of existing code.

	* hw_pal.c (scan_hw_pal, write_hw_pal,
        hw_pal_instance_write_callback): Use the new sim_io functions.

	* main.c: Implement standalone versions of the new sim_io
        functions.  Include support for async I/O.
	* sim_calls.c: Ditto.  This time using the gdb callback table.

	* std-config.h (CURRENT_STDIO, current_stdio): New macro. Set up
        stdio configuration so that it works in the same way as the rest
        of the simulation.
	* psim.c (psim_create): Initialize current_stdio from the device
        tree.
	* emul_generic.c (emul_add_tree_options): Enter a default value
        for use-stdio in the device tree.

Fri Jul 26 19:43:03 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-idecode.c (print_jump): Was always generating a jump back to
 	idecode.  Only necessary at tail of semantic code.
	(print_jump): Was always setting the processor's cia, even during
 	startup when the processor was still undefined.
	(print_jump): For safety, restart smp loop when cpu_nr >= nr_cpus,
 	not just equal.
	
	* options.c (print_options): Add printing of WITH_REGPARM and
 	WITH_STDCALL.

	* std-config.h (WITH_REGPARM, WITH_STDCALL): Provide default
 	(disabled) values if not defined.

Fri Jul 26 00:36:35 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* ppc-cache-rules (cache): Change RS and RB to cache instead of
        compute.  The block move instructions use them.

	* idecode_expression.h (FPSCR_SET): New macro, set specific FPSCR
        register.
	(CR_FIELD): New macro, extract specific CR register.
	(FPSCR_FIELD): New macro, extract specific FPSCR register.

	* registers.h (GPR): New macro, simplify accesses to GPR[i].

	* bits.c (INSERTED): Covert INSERTED macro into a function.
	(EXTRACTED): Conditionally compile on correct bit size macro.

	* bits.h (BIT8): New macro, set a single bit in an 8 bit byte.

	* ppc-instructions: With hints from Paul Martin, type in missing
	some instruction semantics.  Leave disabled for the moment.
	(Load Multiple Word): Ditto.
	(Store Multiple Word): Ditto.
	(Load String Word Immediate): Ditto.
	(Load String Word Indexed): Ditto.
	(Store String Word Immedate): Ditto.
	(Store String Word Indexed): Ditto.
	(Move to Condition Register from XER): Ditto.
	(Move From Condition Register): Ditto.
	(Move From FPSCR): Ditto.
	(Move to Condition Register from FPSCR): Ditto.
	(Move To FPSCR Field Immediate): Ditto.
	(Move To FPSCR Fields): Ditto.
	(Move To FPSCR Bit 0): Ditto.
	(Move To FPSCR Bit 1): Ditto.

Thu Jul 25 22:10:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* std-config.h (SEMANTICS_INLINE): By default, mask out the
        inlining of semantic functions from DEFAULT_INLINE.  Almost all
        configurations call the semantic code via a pointer so there is
        little benefit.

	* std-config.h (ICACHE_INLINE): Ditto.

Thu Jul 25 20:07:30 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure.in (sim_regparm): Add configuration option for
        enabling GCC's regparm attribute.
	* (sim_stdcall): Add configuration option for enabling GCC's
        stdcall attribute.

	* Makefile.in (REGPARM_CFLAGS): Pass regparam configuration onto
        compilations.
	* (STDCALL_CFLAGS): Pass stdcall configuration onto compilations.

	* std-config.h (REGPARM): Extend construction of REGPARM macro so
        that it can include __stdcall__ function attribute.

Wed Jul 24 19:04:20 1996  Andrew Cagney  <cagney@sawnoff>

	* options.c (print_options): Include SUPPORT_INLINE in information
 	dump.

	* gen-idecode.c (print_run_until_stop_body): Only generate loop
 	termination test if creating idecode_run_until_stop.  Push the
 	loop termination test back into each alternative branch.

Wed Jul 24 15:47:09 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-icache.c (print_icache_function): Have the cache function
 	always update the cache_entries semantic and address fields.

	* gen-idecode.c (print_idecode_switch_illegal): Include a break
 	when generating illegal instructions.  This was commented out
 	which is a hangover from looking a at switch statements generated
 	using indirect jumps.

Tue Jul 23 20:57:01 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* igen.c (print_my_defines): Replaces print_define_my_index.
        Print both a definition for MY_INDEX and MY_PREFIX.
	* gen-icache.c (print_icache_function): Adjust.
	* gen-idecode.c (print_jump_insn): Adjust.
	* gen-semantics.c (print_c_semantic): Adjust.

	* gen-support.c (gen_support_h): Add optional include to created
        support.h so that, like cpu, it is optionally inlined for all
        modules that include it.
	* inline.h, inline.c: Adjust so that support.[hc] is handled the
        same as cpu.[hc].

	* idecode_fields.h (LABEL, GOTO): Macro's that create a unique
        name for a lable and then branch to it.

	* ppc-instructions (convert_to_integer, Floating Round to
        Single-Precision, Floating Convert from Integer Doubleword): Use
        LABEL and GOTO instead of the recently added switch statements.

Wed Jul 24 14:02:42 1996  Andrew Cagney  <cagney@sawnoff.highland.com.au>

	* gen-idecode.c (print_run_until_stop_body): Too many rparen in
 	generated code.

Tue Jul 23 20:57:01 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure.in (--enable-sim-line-nr): Typo - sim_line-nr.
	* (--enable-sim-inline): Reorder patern matching of arguments so
        that SUPPORT=ALL_INLINE is reconized as *=* and not *_INLINE.

	* configure: rebuild.

Mon Jul 22 23:25:08 1996  Andrew Cagney  <cagney@highland.com.au>

	* configure.in (--enable-sim-hardware, --enable-sim-packages): New
        configuration options.  Let the user specify the packages or
        hardware devices that are to be included in the build.  Makes it
        possible for user packages to be specified.

	* Makefile.in (tmp-pk, tmp-hw): Just use the list of packages and
	hardware instead of checking it using ls.  configure.in should
	have taken care of any problems.
	(HW_SRC, HW_OBJ, PACKAGE_SRC, PACKAGE_OBJ): Set by configure.

Mon Jul 22 22:38:59 1996  Andrew Cagney  <cagney@highland.com.au>

	* psim.c (psim_options): Enter the argument to the memory size
        option directly into the device tree.  Was using atol() which is
        dangerously non portable.

Mon Jul 22 22:17:08 1996  Andrew Cagney  <cagney@highland.com.au>

	* configure.in (icache): Extend icache flag to include an insn
        option.  If specifyed the insn - aka instruction - is included in
        the instruction cache.  Make this the default.
	* configure: re-generate.

	* igen.c (main), igen.h: Add option -S - inSn - for specifying
        that the instruction should be included in the icache.

	* gen-icache.c (print_icache_body): If enabled, output code to put
        the instruction into the icache.
	(print_icache_struct): If enabled, add insn to the icache struct.

Mon Jul 22 20:46:12 1996  Andrew Cagney  <cagney@highland.com.au>

	* Makefile.in (BUILD_CFLAGS): Include -g when building the
        generators.

Mon Jul 22 20:00:25 1996  Andrew Cagney  <cagney@highland.com.au>

	* emul_generic.c (emul_add_tree_options): Was incorrectly setting
        the strict-alignment option when hardwired for non-strict
        alignment.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-semantics.c: Make the my_index variable a macro MY_INDEX.

	* ppc-instructions: Adjust so that references are to MY_INDEX and
        not my_index.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-idecode.c: Output the complete run_until_stop function
        instead of just the code to handle a single instruction issue.
	* : Have the generated idecode.c include inline.c (instead of psim.c).

	* std-config.h: Change psim.c so that it isn't inlined (as this is
        no longer needed).

	* psim.c (run_until_stop): Delete the old run_until_stop function
        instead calling the idecode_run and idecode_run_until_stop
        functions that gen-idecode.c is now creating.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* dgen.c: Maintenance - update to use new features found in lf.c.

	* filter_filename.c (filter_filename): Maintenance - make the
        string constant.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* debug.c (TRACE, ITRACE, DTRACE): Have GCC instead of CPP
        eliminate trace statements.

	* debug.c: Change trace format so that it is consistent
        (file:line-nr) with CC's error output.

	* gen-itable.c (itable_c_insn): Add the source file name and
        source line number to the instruction's informational entry.

	* debug.c (ITRACE): Use the itable (and my_index) to get the
        current instructions name and source line number.

	* gen-semantics.c, gen-icache.c: Adjust generated ITRACE calls to
        match new interface.

	* emul_bugapi.c (emul_bugapi_instruction_call): Adjust
        corresponding call to ITRACE so that it still matches.

	* idecode_expression.h (ALU_END, CR0_COMPARE): Use TRACE instead
        of ITRACE.  The CPP line directives would have previously set the
        line-nr and file name so ITRACE isn't needed.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-idecode.c (print_jump_until_stop_body): New function and
        idecode generation option.  Instead of generating and calling
        separate functions containing the semantic and icache code
        generate a single monolythic function and use goto's (and GCC's
        indirect jump) to move between code blocks.

	* Makefile.in: Add sim_jump flag to those passed to igen.

	* configure.in: New option --enable-sim-jump (default disabled)

	* ppc-instructions: Eliminate any uses of labels and goto's.
        These result in duplicate declarations when a single flat function
        is being create.

	* ppc-opcode-jump: New file.  Set of opcode rules useful when
        testing jumping idecodes.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* gen-idecode.c: Optionally include the semantic code for an
        instruction in the function that is doing the decoding.

	* igen.c: Add option (-C) to generate semantics in the instruction
        decode functions.

	* configure.in (--enable-sim-icache): Accept an option list such
        as 1024,define.  Add a new choice to the list - semantic - which
        will cause igen to generate instruction decode functions that
        include the corresponding semantic code.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure.in: New option --enable-sim-line-nr (default enabled).
        Enable/disable the inclusion of CPP line directives in the
        generated files.  Such directives refer back to the source files
        used when generating the simulator code.

	* Makefile.in (sim_line_nr): Pass to igen.

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* igen.c (main): Revamp the options so that more letters are
        available.

	* configure.in: Adjust to match igen's revamped options

Sun Jul 21 21:18:05 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* Makefile.in (pk.h, hw.h): Rewrite depenencies for hw.h (etc) so
        that they use the same technique as igen (ie a dummy targets
        tmp-pk and tmp-hw are created).

Mon Jun 24 22:28:00 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* Makefile.in (BUILD_CFLAGS): Include WARNING_CFLAGS.

Wed Jun 19 21:45:28 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* ld-cache.[hc], ld-decode.[hc], ld-insn.[hc]: New files. Separate
        out the loading of each of the tables from the rest of igen.
	* Makefile.in: Adjust.
	* igen.c: Adjust.

	* gen-icache.[hc], gen-idecode.[hc], gen-itable.[hc],
        gen-model.[hc], gen-semantics.[hc]: New files. Separate out the
        code creating each separate set of generated files.
	* Makefile.in: Adjust.
	* igen.c: Adjust.

	* gen-support.[ch]: New files. Output the support functions (found
        in the ppc-instructions file) into a separate file.
	* Makefile.in: Add.
	* inline.h, inline.c: Add.
	* std-config.h: Add.

	* ld-cache.c: Re-design the cache table format.
	* ppc-cache-rules: Update to new format.

	* ld-decode.c: Re-design the decode table format.
	* ppc-opcode-simple: Update to new format
	* ppc-opcode-complex: Ditto
	* ppc-opcode-flat: Ditto

	* filter.h, filter.c: New files. Separate the opcode filter table
        reading code from the rest of igen.c.  Re-design the filter so that
	it works inclusivly not exclusivly.
	* igen.c: Remove the opcode filter table loading code.
	* Makefile.in (filter.o): Adjust
	* configure.in: Adjust filter flag so that default includes 32bit
	and floating point.
	* ppc-instructions: Clean up filter fields so that only in use
        entries are specified (ie delete `be').

	* misc.c (name2i, i2name): New function.  Map between a string and
        an integer value.

Mon Jun 17 20:08:03 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* sim_calls.c (sim_close): If simulator not created, skip printing
        of run information.

Mon Jun 17 20:08:03 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* registers.c (register_description): Typo, insns not insn.

	* ppc-instructions (model_get_number_of_stalls): New model function,
	returns number of stalls for the specified processor.
	* psim.c (psim_read_register): Add call to new function
	model_get_number_of_stalls().

	* ppc-instructions (model_get_number_of_cycles): New model function,
	returns number of stalls for the specified processor.
	* psim.c (psim_read_register): Add call to new function
	model_get_number_of_cycles().

Fri Jun 14 00:11:56 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.h: Don't pass the parent device into a devices
        create function.  This makes the create function consistent with
        the documentation.
	* device.c (device_template_create_device): Ditto
	* hw_pal.c (hw_pal_create): Ditto
	* hw_core.c (hw_core_create): Ditto
	* hw_vm.c (hw_vm_create): Ditto
	* hw_disk.c (hw_disk_create): Ditto
	* hw_nvram.c (hw_nvram_create): Ditto
	* hw_memory.c (hw_memory_create): Ditto
	* hw_cpu.c (hw_cpu_create): Ditto.

	* device.c (split_find_device): Allow a null initial parent device.
	(device_template_create_device): Ditto.

	* device.c (device_create_from): Make local (static) only used
        within device.c.
	* device_table.h: typedef device_callbacks moved here (from
        device.h) where it belongs.

	* hw_core.c: New file. Implements just the core device using the
        core object.

	* corefile.c: Moved all core device functions into the new
        hw_core.c file. core_device_create() disapears.

	* psim.c (psim_tree): Use device_tree_add_parsed() to create the
        core device.

Thu Jun 13 00:09:29 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_init.c: Correct typo in comment.

	* corefile.c (core_init): Remove any remaining references to a
        default map.
	(core_map_find_mapping): Ditto.

Wed Jun 12 22:30:32 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* corefile.c (core_init): Make function global so that other
        devices are able to use the full core object.

	* corefile.c (core_create, core_from_device): Break core_create
        into two functions.  The first creates a core object, the second
        returns the core object associated with a core device.

	* corefile.c (core_device_create): Use core_create to make the
        core object.

	* psim.c (psim_create): Use core_from_device() instead of
        core_create().

	* device.c (device_template_create_device): Make static as only
        needed by functions internal to device.c.

Fri Jun  7 23:47:18 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* ppc-opcode-test-2: Remove description of fields.
	* ppc-opcode-complex: Ditto
	* ppc-opcode-flat: Ditto
	* ppc-opcode-simple: Ditto
	* ppc-opcode-stupid: Ditto
	* ppc-opcode-test-1: Ditto
	* ppc-cache-rules: Ditto

	* igen.c: Add description of files as a comment at the front.

Wed Jun 26 12:50:33 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in: Check for whether the termios and termio
	structures are really defined, and whether or not, they define the
	c_line field.
	* configure: Regenerate.

	* Makefile.in ({,TERMIO_}CFLAGS): Add TERMIO_CFLAGS options set by
	configure.

	* emul_unix.c: Various changes to allow for building on systems
	with different termio and termios structures.  If host has both
	termio and termios, just use termios.  No longer include
	sys/ioctl.h.

Wed Jun 26 12:26:55 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 Jun  5 23:53:42 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* corefile.h: Rewrite documentation so that it can be extracted and
        converted into texinfo (and hence ready for translation into html,
        tex or nroff).
	* device.h: Ditto

Thu Jun  6 09:52:37 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* hw_disk.c (SEEK_SET): If SEEK_SET is not defined, define as 0.

Wed Jun  5 11:46:52 1996  Andrew Cagney  <cagney@puddin>

	* hw_disk.c: Include <unistd.h> if available.  Under SunOS, that
 	is the source of SEEK_SET.

Wed Jun  5 01:39:07 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* psim.c (psim_options): Correct type of dummy arguments being
        passed to a device_ioctl call.

	* hw_init.c (hw_data_init_data_callback): Adjust printf arguments.
	(write_stack_arguments): Ditto.
	* hw_trace.c: Instance callback entry no longer a table.

Wed Jun  5 01:39:07 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_unix.c (do_unix_umask): Cast printf argument.
	(convert_to_linux_termios): Use LINUX_VSWTC not LINUX_VSWCH

Mon Jun  3 15:02:04 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* hw_init.c (update_for_binary_section): Abort if we find an
	.interp section, which indicates the need for shared libraries to
	be loaded.

Mon Jun  3 15:02:04 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* emul_unix.c (do_unix_{time,gettimeofday,getrusage}): Add support
	for time, gettimeofday, and getrusage system calls.
	({solaris,linux}_descriptors): Add new system calls.
	(do_get{,e}{uid,gid}): Use gid_t/uid_t types.
	(do_get{,p}pid): Use pic_t types.

	* configure.in (AC_TYPE_{GETGROUPS,SIGNAL}): Define.
	(AC_TYPE_{MODE,OFF,PID,SIZE,UID}_T): Define.
	* config{.in,ure}: Regenerate.

Mon Jun  3 23:19:57 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_netbsd.c (emul_netbsd_create): Use the more specific names
        `ppc-elf' and `ppc-xcoff' for the stack-type.
	* emul_unix.c (emul_unix_create): Ditto.
	* emul_bugapi.c (emul_bugapi_create): Ditto.
	* hw_init.c: Reconize the new names.

	* emul_unix.c (do_unix_break): Adjust so that the updated ioctl
	call is used (no system parameter).

Sun Jun  2 11:21:17 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* emul_unix.{h,c}: New files to provide Solaris and Linux system
	call emulations.

	* Makefile.in (LIB_{SRC,OBJ}): Add emul_unix.{c,o}.
	(os_emul.o): Depend on emul_unix.h.
	(emul_unix.o): New dependency.

	* configure.in (--enable-sim-alignment): Add 0|default to mean set
	alignment to 0, which means use appropriate alignment for mode.
	(AC_CHECK_FUNCS): Add new functions needed by emul_unix.c.
	(AC_CHECK_HEADERS): Add new include files needed by emul_unix.c.
	* config.in: Regenerate.
	* configure: Regenerate.

	* emul_generic.c (emul_write2_status): New function to return
	results in r3 and r4 for Solaris system calls.
	(emul_do_system_call): If the system call is not support, but
	there is a string for the system call name, print out the string
	instead of the system call number.

	* emul_generic.h (emul_write2_status): Declare it.

	* emul_netbsd.c: Use /* */ around comment on #endif.

	* os_emul.c: Include emul_unix.h.
	(os_emulations): Add emulations for Solaris, and Linux.

	* psim.c (psim_usage): Add message about solaris, linux
	emulations.

Thu May 30 00:00:10 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_iobus.c: Tidy up notes so that they can be auto-extracted.

	* README: Correct PSIM's title

Wed May 29 23:50:26 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* basics.h: New global type object_disposition, used to indicate
        the status of objects when things are restarted.

Fri May 17 17:28:52 1996  Andrew Cagney  <cagney@benjimen.highland.com.au>

	* device_table.h: Change the interrupt descriptor structure so
        that it includes an additional member - an upper bound on the
        interrupts by that name.

	* device.c (device_interrupt_decode): Allow a range of interrupt
        ports (eg rst0 .. rst6) if the port descriptors bound is non zero.

	* device.c (device_tree_print_device): Include a list of valid
        interrupt ports when listing supported devices.

	* device.h, device.c (device_child_interrupt_*): Delete. Not used.

	* emul_generic.c (emul_add_tree_hardware): Modify the creation of
        the interrupt net so that it uses int0 .. intN.

Tue May 14 23:03:53 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h, device.c (device_ioctl): Drop the system argument.
        Devices can not obtain this using the device_system() call.
	* device_table.h: Adjust accordingly.
	* hw_*.c: Adjust accordingly.
	* emul_netbsd.c (do_break): Adjust call to vm device accordingly.
	* psim.c (psim_options): Use a device_ioctl call to force the
        hw_trace device to update the trace options.
	* hw_trace.c: Replace the init function with an ioctl call.  Adjust
	doc accordingly.

	* psim.c (psim_init): Re-order initialization so that the
        os-emulation is initialized after the device tree.  Without this,
        os-emul's are not able to create instances or access properties
        that contain an instance handle.

	* device.h, device.c (device_add_*_property): Make these functions
        internal to device.c.  The user has access to the more generic
        device_tree_add_parsed function.  Differentiate between the initial
	and current value for each property.
	* (clean_device_properties): New function that deletes any
	properties created after the start of a simulation and restores
	the initial value of any others (ignoring ihandles).
	* (init_device_properties): (Re)Initialize any properties that
	contain ihandles. create

	* (device_tree_init): Include calls to clean the device tree's
        properties and then initialize them.  Document this in the device.h
	file.

Mon May  6 17:36:15 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* interrupts.c (decrementer_interrupt): Always pend a decrementer
        interrupt even if it is not yet possible to deliver it.

Wed May  1 12:26:51 1996  Andrew Cagney  <cagney@benjimen>

	* mon.h, mon.c (mon_get_number_of_insns): Make this externally
 	visable adjusting the arguments so that the interface is correct.
	(mon_print_info): Adjust calls.
	
	* registers.h, registers.c (register_description): Add phony
 	cycle, insn and stall registers.

	* psim.c (psim_read_register): Return nr of instructions for given
 	processor.

Tue Apr 30 22:09:09 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_htab.c: New file. Extract contents from disk_table.c.
        Contains a device that, during initialization will create a
        PowerPC htab in memory.
	* hw_register.c: New file. Extract contents from disk_table.c.
        Contains a device that, during initialization, will parse its
        property list and use that to initialize various processor
        registers (not target specific).
	* hw_vm.c: New file. Extract contents from disk_table.c.  Contains
        a device that handles accesses to invalid virtual memory addresses
        (in user mode).
	* hw_init.c: New file. Extract contents from disk_table.c.  Misc
        devices that can initialize memory from a file.
	* hw_trace.c: New file. Extract contents from disk_table.c.
        Configure trace options from property values.

	* Makefile.in (hw_htab.o, hw_register.o, hw_vm.o, hw_init.o,
        hw_trace.c): Add new device files.

	* device_table.c: Remove above code, now in separate independant
        files.

Fri Apr 26 00:00:07 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_disk.c: New file.  Disk and CDROM device.

	* Makefile.in (hw_disk.o): Add device hw_disk.c.

	* pk_disklabel.c: New file.  Implement the miss-named disk-label
        package.

	* Makefile.in (pk.h): Create the file pk.h that contains a list of all
	the packages.

	* Makefile.in (hw.h, hw.c): Add dependancy on Makefile so that
        they are re-created when the makefile is updated.

	* emul_generic.c (emul_add_tree_hardware): Add a disk device
        (below the iobus) to the device tree.  Include an ihandle of
	the disk as /chosen/disk.

	* emul_bugapi.c (emul_bugapi_create): Don't initialize the input,
        output and (new) disk handles yet.
	* (emul_bugapi_init): Initialize the input, output (and just added)
	disk ihandles here.
	* (emul_bugapi_do_diskio): New.  Performs disk i/o (well at least
	what I think the behavour is).
	* emul_bugapi.c (emul_bugapi_instruction_call): Add hook to disk
	i/o bug call.  For RETURN call, exit using gpr[3]'s status even
	though this isn't part of the spec - makes it possible for machine
	code to signal the aporting of a simulation run.

	* emul_chirp.c (chirp_emul_call_method): Add support for the
	claim/release methods.
	* (chirp_emul_exit): Add an optional exit status argument to
	the exit method.  Makes it possible for chirp emul simulations
	to abort upon an error.
	* device.h, device.c (device_instance_claim,
        device_instance_release): New methods for claiming and releasing
	memory.
	* hw_memory.c: add claim and release memory methods.
	* hw_*: Use the claim memory method when allocating physical
	memory.

Thu Apr 18 23:38:10 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_nvram.c (hw_nvram_update_clock): Use the current not previous
        time when updating the clock.

	* hw_nvram.c: Tidy up documentation

Fri May 24 10:08:10 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (AC_STRUCT_ST_{BLKSIZE,BLOCKS,RDEV}): Use these
	macros to determine whether or not the appropriate st_<xxx> fields
	exist in the stat structure.
	(AC_CHECK_FUNCS): Check for all unix system calls used, except for
	the real basic ones like open, read, write, etc.
	* config{.in,ure}: Regenerate.

	* emul_netbsd.c: Add support for missing system calls, and/or
	missing stat fields.
	(MAXPATHLEN): Undefine if including unistd.h, since sys/param.h
	might define it.

	* hw_pal.c (WITH_STDIO): Redefine if O_NDELAY, F_GETFL, or F_SETFL
	are not defined.
	(scan_hw_pal): Do not cause syntax error if O_NDELAY, F_GETFL, or
	F_SETFL not defined.

Tue May 21 17:24:45 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* emul_netbsd.c (write_stat): Don't convert st_blocks unless the
	host is netbsd.

Thu May 16 10:56:45 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Add sys/ioctl.h.
	* config{.in,ure}: Regenerate.
	* emul_netbsd.c: If HAVE_SYS_IOCTL_H is not defined, don't include
	sys/ioctl.h.

Tue May  7 17:28:12 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* hw_pal.c (hw_pal_instance_read_callback): Remove unused
	variable.

	* misc.c ({,target_}a2i): Rewrite to not use strtoul.

	* Makefile.in ({spreg,misc}.o): Add dependency on .c file.
	({i,d}gen): Don't link in liberity.  Use BUILD_LIBS instead of
	LIBS.

Mon May  6 11:31:43 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* hw_pal.c (hw_pal_instance_read_callback): If using stdio, use
	fgets to read line.  If not using stdio, do a simple blocking read
	of len bytes.

Fri May  3 15:07:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in: Correctly build simulator for build machine != host
	machine.

Tue Apr 30 18:46:05 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (--enable-hostendian): Rework so the default uses
	the AC_C_BIGENDIAN results.  Only run AC_C_BIGENDIAN if not cross
	compiling.
	* configure: Regenerate.
	
	* sim-endian.h: Add more tests for host endian to support more
	platforms in a cross compilation environment.

Wed Apr 17 14:38:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* hw_pal.c ({scan,write}_hw_pal): If WITH_STDIO == DO_USE_STDIO,
	use stdio, instead of unpended read/printf_filtered.
	(hw_pal_instance_write_callback): If WITH_STDIO == DO_USE_STDIO,
	flush stdout after writing the characters.

	* options.c (print_options): Print out WITH_STDIO.

	* Makefile.in (STDIO_CFLAGS): Pass on result of @sim_stdio@
	configuration variable.
	(CONFIG_CFLAGS): Include STDIO_CFLAGS.
	(hw.{c,h}): Allow for source dir != build dir, and for HW_SRC
	files to contain directory pieces.

	* std-config.h (DO{,NT}_USE_STDIO): New flags for whether we
	should use stdio for console input.
	(WITH_STDIO): If not defined, define as DONT_USE_STDIO.

	* configure.in (--enable-sim-stdio): Add new switch to control
	whether stdio is used for console I/O.
	* configure: Regenerate.

	* interrupts.c (external_interrupt): Declare it to be
	INLINE_INTERRUPTS, not INLINE_CPU.

Mon Apr 15 23:30:56 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* events.c (insert_event_entry): Allow events to be scheduled
        *NOW* (at delta time 0).  Add assertions to clarify behavour of
        event queue.

	* events.c (update_time_from_event): New function. Calculates the
        number of ticks from the next event.  Use this.

Sun Apr 14 21:39:45 1996  Andrew Cagney  <cagney@highland.com.au>

	* emul_netbsd.c (do_break): Return 0 if success (instead of
        adjusted break).

	* device_table.c (vm_ioctl_callback): Don't return adjusted break
        (isn't needed).

Sun Apr 14 21:32:41 1996  Andrew Cagney  <cagney@highland.com.au>

	* device_table.h: Change type of the device ioctl so that it
	returns an int (status).
	* device.h (device_ioctl): Ditto.
	* device.c (device_ioctl): Ditto.

	* device_table.c (stack_ioctl_callback): Return 0 status.
	(vm_ioctl_callback): Ditto

Sat Apr 13 00:00:24 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_netbsd.c (do_read): Correctly set the return value.
	(do_getpid): Ditto.
	(do_getuid): Ditto.
	(do_geteuid): Ditto.
	(do_dup): Ditto.
	(do_getegid): Ditto.
	(do_getgid): Ditto.
	(do_sigprocmask): Ditto.
	(do_umask): Ditto.
	(do_dup2): Ditto.
	(do_gettimeofday): Ditto.
	(do_getrusage): Ditto.
	(do_fstat): Ditto.
	(do_stat): Ditto.
	(do_lseek): Ditto.
	(do___sysctl): Ditto.

Fri Apr 12 20:56:47 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device_table.c (vm_ioctl_callback): Don't access the processor
        registers directly, instead leave it to the caller to handle this.

	* emul_netbsd.c (do_break): Which calls vm_ioctl_callback to
        perform a break.  Pass in the new break value and set the
        registers according to the result.

	* emul_generic.c (emul_write_status): Change so that r3 contains
        either status or errno and failure is indicated by SO.

Thu Apr  4 23:03:38 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_bugapi.c (emul_bugapi_create): More strict check of OEA
        address.

Thu Apr  4 20:58:05 1996  Andrew Cagney  <cagney@highland.com.au>

	* interrupts.h (interrupts): New structure contains state of
        pending interrupts.

	* cpu.c (cpu_interrupts): New function.  Pending interrupt status
        in the cpu and grant access to it.  Add interrupts to cpu
        structure.

Fri Mar 29 22:09:25 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (device_tree_add_parsed): Check that the creation of a
        device instance worked before using it.

	* psim.c (psim_halt): Remove cia argument from psim_halt.  This
        function does not save the CIA so do not pass it in.

Fri Mar 29 21:30:56 1996  Andrew Cagney  <cagney@highland.com.au>

	* hw_pal.c (hw_pal): Merge the halt and icu and console devices
        found in device_table.c into a single hack pal.

	* device_table.c (halt, icu, console): Delete.

	* Makefile.in (hw_pal.o): New dependency.

	* emul_generic.c (emul_add_tree_hardware): Re-arange device tree
        so that it uses the pal instead of the icu/halt/console devices.
        Wire the pal's interrupt ports up to the cpu nodes.

Fri Mar 29 20:17:17 1996  Andrew Cagney  <cagney@highland.com.au>

	* hw_iobus.c (hw_iobus_attach_address_callback): Move from
        device_table.c to here.

	* Makefile.in (hw_iobus.o): New dependency.

Fri Mar 29 12:17:58 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* emul_bugapi.c (_os_emul_data): Add fields for output, input.
        (emul_bugapi_create): Create input, output from /chosen/stdin and
        /chosen/stdout.
        (emul_bugapi_do_{read,write}): Switch to use device_instance
        interface.
        (emul_bugapi_instruction_call): Change calls to
        emul_bugapi_do_{read,write} to pass device instance argument.

Tue Mar 26 14:57:58 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* igen.c (idecode_switch_end): Fix 2/26 change so that an extra
        default is not written out if a default was already written.

	* psim.c (psim_{read,write}_register): Use sizeof unsigned_8 to
        size cooked_buf, not sizeof natural_word, since floating point
        registers are 8 bytes.

Mon Mar 25 22:07:13 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure: Regenerate with autoconf 2.9.

Thu Mar 21 00:14:26 1996  Andrew Cagney  <cagney@highland.com.au>

	* device_table.h: Always include string headers.

Thu Mar 21 00:06:09 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* main.c (error): Be careful to not try to print out statistics
        when the simulation was never created.

Sun Mar 17 22:40:57 1996  Andrew Cagney  <cagney@highland.com.au>

	* basics.h: Move the event queue's definition to here so that it
        can be refered to globally with out importing all of events.h.

	* psim.h, psim.c (psim_event_queue): New function.  Grant access
        to the simulation event queue.  Will make this the single point of
        access (there is after all only one event queue in the
        simulation).

	* cpu.c (cpu_create): Use psim_event_queue to obtain the event
        queue instead of it being passed in.  No longer allow access to
        the cpu's copy of the event queue.

Sun Mar 17 22:40:57 1996  Andrew Cagney  <cagney@highland.com.au>

	* events.h, events.c (event_handler): Remove event_queue from
        arguments passed to an event handler.  That argument is redundant
        - the `data' should refer to a data structure that contains the
        event queue if queing is needed.

	* cpu.c (cpu_decrement_event): adjust

	* events.c (event_queue_process): adjust

Sun Mar 17 22:40:57 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.h, device.c (device_system): New, returns a handle for
        the system given the device.

	* device.c (device_address_init): Store a pointer back to the
        system in each devices node.

	* device_table.h: Don't pass `system' into each device when it is
        being initialized, this is now available using device_system(me).

	* device.c (device_address_init, device_data_init): Adjust.

	* hw_cpu.c, hw_nvram.c, hw_memory.c, hw_eeprom.c, device_table.c:
        Adjust.

Sun Mar 17 22:40:57 1996  Andrew Cagney  <cagney@highland.com.au>

	* interrupts.c (decrementer_interrupt, external_interrupt):
        Remember that an interrupt wasn't delivered so that it can be
        tried again later.

	* interrupts.c (check_masked_interrupt): New function.  (re)
        checks for the posibility that a recent change to the MSR may have
        made it possible to deliver an interrupt that was previously
        masked be the EE bit.

	* ppc-instructions (mtmsr, mfmsr, rfi): Check for posibility of
	a pending interrupt being delivered using check_masked_interrupt().

	* cpu.c (cpu_decrement_event): Just call decrementer_interrupt()
        leaving it to that module to handle both interrupt synchronization
        and masking.

	* cpu.c (struct _cpu): remove variables that were going to record
        pending decrementer and external interrupts.

Sun Mar 17 22:40:57 1996  Andrew Cagney  <cagney@highland.com.au>

	* hw_cpu.c, hw_cpu.h: New files.  Implement a device that sits
        between the interrupt controller and the simulators internal
        processor model.  Maps device interrupts onto the processor
	interrupt function calls.

Mon Mar  4 06:06:54 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* hw_nvram.c: NVRAM device that includes a real-time clock that is
        updated each second.

Mon Mar  4 04:18:50 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h (attach_type): Remove attach_default type address
        spaces.  Will replace with levels of callback memory.

	* corefile.h, corefile.c (new_core_mapping), corefile.c
        (core_map_attach): Replace default attach with a layerd callback
        approach.

Sun Mar  3 03:58:46 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (split_property_specifier): ensure that only a single
        property is found.
	(split_value): New function, parses the value part of a device
	spec.

	* device.c (device_tree_add_parsed): Use the interrupt conversion
        functions to determine the interrupt port numbers.

	* device_table.h: Add table that maps between an interrupts
        symbolic name and its port number.

	* device.h, device.c (device_interrupt_decode,
        device_interrupt_encode): new functions use the recently added
        interrupt port name/number tables to perform conversion.

Sun Mar  3 03:23:59 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.h, device.c (device_set_array_property,
        device_set_boolean_property, device_set_ihandle_property,
        device_set_integer_property, device_set_string_property): New
        functions - allow the value of a given property to be changed.

	* device.h, device.c: Re-order declaration and definition of
        property functions.

Sun Mar  3 03:10:22 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* device.c (device_tree_print_device, device_tree_add_parsed):
        Remove references to phandle properties.

Wed Feb 28 00:43:07 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* Makefile.in (corefile.o): missing dependency on device_table.h
        etc.

Tue Feb 27 23:59:35 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* device_table.h: Revamp device init callbacks so that they are a
        sub structure.
	* device.c (device_init_data, device_init_address): If an init
        callback is NULL assume it should do nothing.
	* device_table.c (ignore_device_init, unimp_device_init): delete
        as redundant.
	* device_table.c, hw_memory.c: adjust.

	* (io): ditto.
	* (dma): ditto.
	* (device_instance): ditto.
	* (ioctl): ditto.
	* (address nee config_address): ditto.
	* (interrupt): ditto.

Mon Feb 26 21:11:20 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* igen.c (idecode_switch_end): Output a default entry when the
        switch statement is perfect.  Firstly stops GCC complaining about
        an incomplete switch and secondly it will be eliminated by a good
        compiler any way.

Mon Feb 26 22:47:15 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* Makefile.in (hw.h, hw.c): New targets. Create from the list of
        hw_*.c files. hw.h declares a device descriptor table for each hw
        device while hw.c lists those tables in a form suitable for the
        construction of a top leveltable in device_table.c.

	* Makefile.in (device_table.o): now depends on hw.c a generated
        table of hw.

	* device_table.c (device_table): Re-arange the table of devices so
        that two levels are possible.  Make use of hw.c.
	* device_table.h: ditto.

	* device.c (device_template_create_device): Handle new two level
        device lookup table.
	* device.c (device_usage): ditto.

Mon Feb 26 22:24:00 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* device_table.c: Delete the memory device (moved to hw_memory.c).

	* hw_memory.c: New file.  Just an OpenBoot memory device.

Wed Jan 17 21:47:34 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (device_init_address): New.  Split initialization into
        two stages, address and address spaces
	* device.c (device_init_data): New. ... and data or other work.
        With out this, devices try to modify memory before it as been
        attached.

	* device.c (device_tree_init): Update to perform staged
        initialization.

	* device.c (device_init): Delete.

Wed Jan 17 21:43:09 1996  Andrew Cagney  <cagney@highland.com.au>

	* device_table.c (data_*): Rewrite to make heaver use of property
        nodes. Allow initialization by different data types.
	* device_table.c (htab_* pte_*): Rewrite to use properties.

	* emul_chirp.c (emul_chirp_create): Use
	* emul_bugapi.c (emul_bugapi_create): Ditto
	* emul_netbsd.c (emul_netbsd_create): Ditto

Wed Jan 17 21:24:50 1996  Andrew Cagney  <cagney@highland.com.au>

	* emul_generic.c (emul_add_tree_options): Annotate existing tree
        with options that haven't yet been specified.
	* emul_generic.c (emul_add_tree_hardware): Annotate existing tree
        with demo devices and properties.

	* emul_chirp.c (emul_chirp_create): Update to use new
        device_tree_add_parsed call and additional information now
        included in the device tree.  Use emul_add_tree* functions to add
        any missing details.
	* emul_bugapi.c (emul_bugapi_create): Ditto
	* emul_netbsd.c (emul_netbsd_create): Ditto

Wed Jan 17 21:18:27 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (device_instance_create): New. Create/delete and
        operate on instances of a device.
	* device.c (device_instance_delete): Ditto
	* device.c (device_instance_read): Ditto
	* device.c (device_instance_write): Ditto
	* device.c (device_instance_seek): Ditto
	* device.c (device_instance_data): Ditto
	* device.c (device_instance_name): Ditto
	* device.c (device_instance_path): Ditto

	* emul_chirp.c (chirp_emul_open): Implement using device_instance.
	* emul_chirp.c (chirp_emul_close): Ditto
	* emul_chirp.c (chirp_emul_read): Ditto
	* emul_chirp.c (chirp_emul_write): Ditto
	* emul_chirp.c (chirp_emul_seek): Ditto

	* emul_chirp.c (chirp_read_t2h_args): Read arguments from device.
        Being careful to convert all from target to host byte order.
	* emul_chirp.c (chirp_write_h2t_args): Converse.

Wed Jan 17 20:07:15 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (device_tree_add_parsed): New.  Rewrite code to add
        devices to the device tree so that a single printf style function
        is used.

	* device.c (device_tree_add_*): Delete. Replaced by above.

	* device.c (split_device_specifier): Functions to manipulate a
        device specifier (path) breaking it into its components
	* device.c (split_property_specifier): Ditto
	* device.c (split_device_name): Ditto
	* device.c (split_find_device): Ditto

	* device.c (scan_*): Delete

	* device.c (device_tree_find_device): Rewrite to use above.
	* device.c (device_add_property): Ditto

Wed Jan 17 19:51:56 1996  Andrew Cagney  <cagney@highland.com.au>

	* psim.c(psim_options): Parse the psim options, installing their
        value in the device tree.  Options are now first entered into a
        device tree and then extracted out again when needed.  This allows
        greater flexability in configuration.

	* psim.c (psim_tree): Returns a basic device tree ready for
        parsing by psim_options.
	* psim.c (psim_usage): New.  Give usage to varing levels of detail
        according to the verbosity.  In turn output device and trace
        usage.

	* main.c (main): Update to use new system
	* sim_calls.c (sim_open, sim_do_command): Ditto

	* psim.c (psim_options): Add `r' option - ram size.
	* psim.c (psim_options): Add `o' option - openboot tree entry.
	* psim.c (psim_options): Add `h'/`H' options - more help.

	* debug.c (trace_usage): Add more detailed help.
	* device.c (device_usage): New. Output help including a list of
        the devices currently available in the device table.
	* device_table.c: Add usage operator to each device.

	* corefile.c (core_create, core_device_create): Adjust so that the
        core device is created earlier for psim_tree().  Core can later be
        created from it.

	* psim.c (psim_create): Update to handle above way of creating
        things.  Extract all information from the device tree.

	* device_tree.c (trace_*): New device node, its properties are
        used to set the value of the trace options.  Init this device (in
        psim_options) when ever the options are updated.

Wed Jan 17 19:46:07 1996  Andrew Cagney  <cagney@highland.com.au>

	* debug.h: Add trace_print_info, trace_print_device_tree and
        trace_dump_device_tree.  The first is a replacement for the
        variable `print_info' found in main.c and sim_calls.c.  The latter
        two enable the dumping of the entire device tree.

	* debug.c: Add to trace_description table.

	* main.c (main): Use above trace instead of local variable
	* sim_calls.c (sim_close): Ditto

	* device.c (device_tree_print_device): New.  Prints the device
        tree in a format that is consistent with what can be parsed by the
        device tree load from file code.

	* psim.c (psim_create): Dump device tree if enabled. If nump
        selected, exit psim immediatly.

Wed Jan 17 19:36:52 1996  Andrew Cagney  <cagney@highland.com.au>

	* corefile-n.h (core_map_read_N): When mapping from an address to
        a device, do not subtract the devices base.  The device its self
        can do this.  Brings the behavour into line with OpenBoot.
	* corefile-n.h (core_map_write_N): Ditto
	* corefile.c (core_map_read_buffer): Ditto
	* corefile.c (core_map_write_buffer): Ditto

	* device_table.c (console_io_read_buffer_callback): Adjust to
        handle biased address.
	* device_table.c (console_io_write_buffer_callback): Ditto

Wed Jan 17 18:36:09 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (attach_device_interrupt_edge): New. Interrupt model
        did not allow interrupts to be wired up as a general net (edges).
        Re-implement so that interrupt events can be passed to multiple
        controllers and interrupt controllers can further propogate
        interrupt events.

	* device.c (attach_device_interrupt_edge) : New, Ditto
	* device.c (detach_device_interrupt_edge) : New, Ditto
	* device.c (clean_device_interrupt_edges) : New, Ditto
	* device.c (device_interrupt_event) : New, Ditto
	* device.c (device_interrupt_attach) : New, Ditto
	* device.c (device_interrupt_detach) : New, Ditto
	* device.c (device_child_interrupt_attach) : New, Ditto
	* device.c (device_child_interrupt_detach) : New, Ditto

	* device.c (device_attach_interrupt) : Delete old
	* device.c (device_detach_interrupt) : Delete old
	* device.c (device_interrupt) : Delete old
	* device.c (device_interrupt_ack) : Delete old

	* device_table.c (unimp_*) : Update to match
	
        * device_table.c (icu_io_write_buffer_callback) : Update to use
        interface.
	* device_table.c (icu_interrupt_event_callback) : Ditto

Wed Jan 17 18:18:40 1996  Andrew Cagney  <cagney@highland.com.au>

	* device.c (external_to_device) : New function that provides a
        standard mapping between a devices internal representation (a
        pointer) and its external (or what is passed to a client)
        representation (a phandle).  Implement using the cap object
        attached to the root node.

	* device.c (device_to_external) : Ditto
	* device.c (external_to_device_instance) : Ditto but for ihandle
        and device instance.
	* device.c (device_instance_to_external) : Ditto

	* Makefile (device.o): Add dependency on cap.

	* emul_chirp.c (struct _emul_chirp_data) : Elimate use of cap. Code
        needing to translate between internal and external representations
        changed to use the external_to_device et.al. device operations.
	* emul_chirp.c (chirp_emul_*) : Ditto

	* Makefile (emul_chirp.o): Remove dependency on cap

Sat Jan  6 10:13:26 1996  Andrew Cagney - aka Noid  <cagney@highland.com.au>

	* emul_chirp.c (map_over_chirp_note): Tighten up (and fix) checks
        on OpenBoot note section.

Fri Jan  5 20:28:53 1996  Andrew Cagney  <cagney@hignland.com.au>

	* emul_generic.c (emul_write_buffer): Use vm faulting byte
 	read/write calls for buffer transfers.  This will cause a fault to
 	occure if the transfer fails.  CHRP catches the fault while the
 	others suffer the consequences.
        (emul_read_buffer): Ditto.
        (emul_write_word): Ditto.
        (emul_read_word): Ditto.
        (emul_read_string): Ditto.

Fri Jan  5 18:55:34 1996  Andrew Cagney  <cagney@highland.com.au>

	* emul_chirp.c (emul_chirp_create, emul_chirp_instruction_call),
 	emul_generic (emul_blr_instruction): Use a real blr instruction to
 	return from a client service call.

	* emul_chirp.c (services): Add all OpenBoot services to table.

	* emul_generic.h, emul_bugapi.c (emul_bugapi_create), emul_chirp.c
 	(emul_chirp_create) : Use names instead of numbers for
 	instructions being stored in memory.

Fri Jan  5 18:52:28 1996  Andrew Cagney  <cagney@highland.com.au>

	* Makefile.in (maintainer-clean): Remove .log, core and *.core
 	(From NetBSD) files.

Wed May 29 22:57:40 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* ChangeLog.00, ChangeLog: ChangeLog from gdb-4.16 becomes
        ChangeLog.00

