Mon Oct 16 17:34:24 1995 Michael Meissner * gen.c (lf_print_c_semantic_function): Move counting # of instructions here so it works with caching. (gen_idecode_c): Move from here. Wed Oct 11 17:13:15 1995 Andrew Cagney * gen.c, ppc-instructions, psim.c: Fix code for generating cracking instruction cache. Delete the code that cached just the result from doing an instruction lookup - this ran slower than no cache at all. Fri Oct 13 09:58:43 1995 Michael Meissner * Makefile.in (gen.o): Include $(INLINE_CFLAGS). * debug.h (ppc_trace): Rename from trace, to avoid a conflict with TCL when gdb is linked with the simulator. * debug.c (ppc_trace): Ditto. * sim_calls.c (sim_open): Change trace -> ppc_trace. * main.c (main): Ditto. * cpu.c (cpu_add_commas): Remove extra static. Thu Oct 12 11:35:53 1995 Michael Meissner * Makefile.in (psim.o): Now that inlines are turned on, make psim.o depend on all sources. * cpu.c (cpu_add_commas): New function to format a long with commas. (cpu_print_info): Use it to print number_of_insns. * ppc-endian.c (SWAP_n): New macros to speed up byte swapping for 2, 4, and 8 bytes. (ENDIAN_N): If both target and host byte orders are known, don't bother testing CURRENT_{TARGET,HOST}_BYTE_ORDER. * ppc-endian.h (target specific H2T_n/T2H_n macros): Remove #if 0 to allow target specific H2T_n/T2H_n macros to be used. (htonl, ntohl): If compiled on a 486 by GCC and WITH_BSWAP is non-zero, redefine the htonl/ntohl macros to use the BSWAP instead of the 3 instruction sequence that runs on 386s. * std-config.h (WITH_{HOST,TARGET}_BYTE_ORDER): Don't override if specified on the compile line. (WITH_BSWAP): If not defined, define as 0. * Makefile.in (INLINE_CFLAGS): Add -DDEFAULT_INLINE=2 to add default inline support. Pass INLINE_CFLAGS when compiling. * devices.{h,c} (unimp_device_ioctl): Use STATIC_DEVICES, not INLINE_DEVICES since GCC doesn't like inline functions that accept variable arguments. (stack_ioctl_callback): Make function just static because GCC doesn't like inline functions that accept variable arguments. * devices.h (STATIC_DEVICES): Define as empty if not defined. * inline.c: Correct pathnames of included C files to match current implementation. * inline.h (STATIC_DEVICES): If DEVICES_INLINE is defined to be non-zero, define STATIC_DEVICES to be static. * std-config.h (INLINE): If GNU C and optimizing, define this as __inline__. (DEFAULT_INLINE): If not defined, define as 0. (ENDIAN_INLINE): If not defined, define as DEFAULT_INLINE. ({CORE,VM,CPU,EVENTS,REGISTERS,INTERRUPTS}_INLINE): Ditto. ({SPREG,IDECODE}_INLINE): Ditto. Wed Oct 11 17:13:15 1995 Andrew Cagney * ppc-instructions: Initial cut of floating point suport added. Of note include - use of host IEEE floating point instructions, use of PowerPC manual pseudo code to handle the FPSCR. It is not currently a pretty sight. * memory_map.h, memory_map.c, memory_map_n.h, core.h, core.c: merge into core.h, core.c, core_n.h. The type memory_map replaced with core_map. This removes a level of pointer indirection when translating an address. * memory_map.h, memory_map.c, memory_map_n.h: delete. * Makefile.in et.al (sorry): tweek to use new core, core_map and core.h. Wed Oct 11 12:10:26 1995 Andrew Cagney * sim_calls.c, main.c: Add -g (trace_gdb) option, add tracing to most of the other functions in sim_calls.c. * basics.h (CONCAT3), memory_map.c, memory_map_n.h, Makefile.in: Add macros to better cover up `generic' code. Makes it possible to step through the generic code! * vm.c, vm_n.h, Makefile.in: ditto Tue Oct 10 15:42:59 1995 Andrew Cagney * devices.h, devices.c, memory_map.h, memory_map.c: Changed callback interface so that there is a read/write buffer but no read/write_word. VEA default memory read/write handler sometimes couldn't resolve an access and of those some were for a memory fault and some were because gdb was making a bogus request. * devices.h, devices.c, memory_map.h, memory_map.c, vm.h, vm.c: eliminate transfer_mode (raw or cooked) parameter from read/write buffer. Fri Oct 6 20:23:56 1995 Andrew Cagney * ppc-instructions (fmul, fmuls): correct instruction format - had FRB instead of FRC. Wed Oct 4 17:31:12 1995 Andrew Cagney * psim.c, device_tree.h, device_tree.c, devices.c (printd_*, scand_*): new functions to parse/print fields in device names while hiding any machine dependency. * devices.c, psim.c: Change the stack init code so that it is handled by a device. Arguments passed across using a device ioctl (hack). * devices.h, devices.c: device ioctl callback changed to allow a variable number of arguments. This gives greater flexability and greater chance of bugs. Tue Oct 3 22:01:56 1995 Andrew Cagney - aka Noid * main.c (printf_filtered, error): Missing va_end() to close off variable argument use. * Makefile.in (tmp-gencode): comment out hack to get around some versions of make not handling files being created as side-effects. * gen.c (lf_open): Add -n (real_file_name) option. Specifies an alternative file name to use in output files for things like #line macros. Makefile.in (tmp-gencode): Use gen -n so that debug info is correct. * Makefile.in (TARGETLIB): Use this instead of libsim.a in the Makefile. Sat Oct 7 22:40:59 1995 Michael Meissner * sim_calls.c (sim_set_callbacks): Define new function. Fri Oct 6 17:23:10 1995 Michael Meissner * psim.c (psim_print_info): Print exit status or signal number. Mon Oct 2 11:46:37 1995 Michael Meissner * cpu.c (struct _cpu): Add number_of_insns field to trace how many instructions are executed. (cpu_increment_number_of_insns): New function to increment the number of instructions issued. (cpu_get_number_of_insns): New function to return the number of instructions issued. (cpu_print_info): New function to print cpu related information. At present, print the number of instructions executed. * gen_idecode_c: Emit call to cpu_increment_number_of_insns within idecode_issue. * psim.c (psim_print_info): New function to iterate over each of the CPU's calling cpu_print_info. * psim.h,cpu.h: Add new declarations. * sim_calls.c (sim_open): Add argument processing to add the same switches main.c accepts for the standalone processor. (sim_close): Call psim_print_info if -I. * main.c (main): Add comment saying to update sim_calls.c when adding switches. Add -I to call psim_print_info when done. (usage): Update usage message. Sun Oct 1 13:52:59 1995 Michael Meissner * main.c (printf_filtered): Correct to match new prototype. Sat Sep 30 20:47:05 1995 Michael Meissner * sim_callbacks.h (printf_filtered): Correct prototype. Thu Sep 21 16:26:49 1995 Michael Meissner * device_tree.c (OEA_MEMORY_SIZE): Define if not defined to 0x100000. (clayton_memory_size): Define as OEA_MEMORY_SIZE. * std-config.h (WITH_TRACE): Default to 1 now. * psim.c (write_stack_arguments): Don't write any stack arguments if OEA. * main.c (main): Switch to using getopt. Make -p also set trace_semantics. Make -a turn on all trace flags. Make -C turn on console tracing. * device_tree.c (create_option_device_node): Assume a program is OEA if the start address is < 4096, not just == 0. Wed Sep 20 13:36:06 1995 Ian Lance Taylor * Makefile.in (maintainer-clean): New synonym for realclean. Sun Sep 10 10:23:56 1995 Michael Tiemann * registers.c (register_description): Add gdb synonyms for cr (cnd) and msr (ps). Fri Sep 8 13:16:10 1995 Ian Lance Taylor * Makefile.in (install): Don't install in $(tooldir). * configure.in: Call AC_CONFIG_HEADER. Don't try to use bfd/hosts/*.h file or bfd/config/*.mh file. Call AC_PROG_CC and AC_PROG_RANLIB. Substitute in values for CFLAGS, HDEFINES, AR, and CC_FOR_BUILD. Call AC_CHECK_HEADERS for various header files. Touch stamp.h if creating config.h. * configure: Rebuild. * config.in: New file, created by autoheader. * Makefile.in (AR): Define as @AR@. (CC): New variable, defined as @CC@. (CFLAGS): Define as @CFLAGS@. (CC_FOR_BUILD): New variable, defined as @CC_FOR_BUILD@. (RANLIB): Define as @RANLIB@. (HDEFINES, TDEFINES): New variables. (@host_makefile_frag@): Remove. (mostlyclean): Make the same as clean, not distclean. (clean): Remove config.log. (distclean): Remove config.h and stamp-h. (Makefile): Don't depend upon @frags@. Just rebuild Makefile when invoking config.status. (config.h, stamp-h): New targets. (gen, gen.o): Build with CC_FOR_BUILD, not CC. (ppc-config.h): Rename from old config.h build. * (basics.h,gen.c,ppc-endian.c,psim.c): Include ppc-config.h. Fri Sep 8 09:51:03 1995 Michael Meissner * configure{,.in}: Don't include sysdep.h from bfd, since bfd no longer provides it. * basics.h (sysdep.h): Don't include it. * Makefile.in (BASICS_H): Remove sysdep.h. Wed Sep 6 13:25:42 1995 Andrew Cagney - aka Noid * core.c (core_add_data): First growth of bss was being put at wrong address (0) instead of &end. * core.c (core_add_stack, core_add_data): Was not handling case where bss/stack is grown across the current end-of-{bss,stack}. Wed Sep 6 00:46:10 1995 Andrew Cagney - aka Noid * system.c (system_call): Fix SYS_break - was aligning bss to a page boundary instead of just an 8 byte one; On first call sbrk(0) != sbrk(0). Thu Aug 24 14:48:54 1995 Michael Meissner * Makefile.in (install): Fix install rule. Tue Aug 22 09:31:18 1995 Michael Meissner * system.c (system_call): Add read support. * main.c (main): -t sets trace_device_tree. Correct usage message to current reality. * device_tree.c (update_memory_node_for_section): Make tracing output line up. If not code or readonly, assume that the section is a data section and has read/write permissions. Add readonly support. * core.c (create_core_from_addresses): Print end address in traces and make tracing output line up. * Makefile.in: Rewrite from Makefile to work with the Cygnus environment, and support compiling in a different directory than the sources reside in. * ppc-endian.h: Rename from endian.h so that it doesn't get confused with /usr/include/sys/endian.h on Linux. Add Linux endian support. * ppc-endian.c: Rename to be consistant with ppc-endian.h. Include ppc-endian.h, not endian.h. * basics.h (sysdep.h): Include sysdep.h that configure makes. Include ppc-endian.h, not endian.h. * std-config.h: Rename from ppc-config. Put #ifndefs around most configuration macros, so they can be overridden via CFLAGS. By default, turn off tracing. * configure.in: Clone from other simulator targets. * configure: Generate via autoconf from configure.in. Sat Aug 19 09:05:32 1995 Andrew Cagney - aka Noid * ppc-instructions: fix srawi (was geting XER[CA] real wrong). * interrupts.c (data_storage_interrupt): allow stack to grow by upto one MB per increment. * ppc-instructions: divw was computing rA / rA not rA / rB * main.c (main): really stupid. Wasn't exiting with correct status Fri Aug 18 00:38:01 1995 Andrew Cagney - aka Noid * system.c (system_call): add system calls kill(2) and getpid(2). * main.c (main): Check/return exit status when simulation finishes. Thu Aug 17 14:29:18 1995 Andrew Cagney * device_tree.c (create_option_device_node): Alignment rules (at least for the moment) now are for strict alignment only for LE OEA mode. (Because of compiler problems). * system.c (system_call) SYS_exit: Wasn't exiting with correct status. Thu Aug 17 01:16:38 1995 Andrew Cagney - aka Noid * vm.c (DEFINE_VM_DATA_MAP_WRITE_N): For miss aligned transfer forgot to return. * system.c (system_call): didn't page align break argument before determining increment break increment. * psim/ppc: Re-arange entire directory structure so that everything lives in the one directory. While a pain for cleaning, makes building across multiple architectures much simpler. * devices.c, device_tree.c: Added code that provides a simple illustration of how an interrupt control device could be implemented. * devices.c: Added code so that the dumb console device can read (from stdin) as well as write to stdout.