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.

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

