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. 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. 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 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. 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. 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. 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 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.