+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