Sun Jul 21 21:18:05 1996 Andrew Cagney * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makefile.in (BUILD_CFLAGS): Include WARNING_CFLAGS. Wed Jun 19 21:45:28 1996 Andrew Cagney * 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 specifed (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 * sim_calls.c (sim_close): If simulator not created, skip printing of run information. Mon Jun 17 20:08:03 1996 Andrew Cagney * 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 * 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 * 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 * 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 * 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 * 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 * 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 * hw_disk.c (SEEK_SET): If SEEK_SET is not defined, define as 0. Wed Jun 5 11:46:52 1996 Andrew Cagney * hw_disk.c: Include if available. Under SunOS, that is the source of SEEK_SET. Wed Jun 5 01:39:07 1996 Andrew Cagney * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * configure.in (AC_STRUCT_ST_{BLKSIZE,BLOCKS,RDEV}): Use these macros to determine whether or not the appropriate st_ 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 * emul_netbsd.c (write_stat): Don't convert st_blocks unless the host is netbsd. Thu May 16 10:56:45 1996 Michael Meissner * 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 * 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 * 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 * Makefile.in: Correctly build simulator for build machine != host machine. Tue Apr 30 18:46:05 1996 Michael Meissner * 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 * 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 * 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 * 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 * 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 * 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 * 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 * emul_bugapi.c (emul_bugapi_create): More strict check of OEA address. Thu Apr 4 20:58:05 1996 Andrew Cagney * 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 * 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 * 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 * 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 * 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 * 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 * configure: Regenerate with autoconf 2.9. Thu Mar 21 00:14:26 1996 Andrew Cagney * device_table.h: Always include string headers. Thu Mar 21 00:06:09 1996 Andrew Cagney * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makefile.in (corefile.o): missing dependency on device_table.h etc. Tue Feb 27 23:59:35 1996 Andrew Cagney - aka Noid * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makefile.in (maintainer-clean): Remove .log, core and *.core (From NetBSD) files. Wed May 29 22:57:40 1996 Andrew Cagney * ChangeLog.00, ChangeLog: ChangeLog from gdb-4.16 becomes ChangeLog.00