old-cross-binutils/sim/ppc/ChangeLog
1995-10-31 18:29:37 +00:00

570 lines
21 KiB
Text

Fri Oct 27 19:26:27 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* bits.h (ROTL32, ROTL64): Were functions, made them macros, now
make them functions again. Appears 2.6.3 is confused by just a
macro.
Thu Oct 26 18:31:58 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* ppc-endian.c (SWAP_8): Fix 8 byte swap!
* psim.c (psim_create): Not correctly checking that runtime
configuration of things like ENDIAN, ENVIRONMENT and ALIGNMENT
matched the compiled in ones.
* debug.h (ITRACE), igen.c: Tidy up more tracing flags -
trace_semantics is now different to trace_idecode, the former
checks the cache.
Tue Oct 24 21:54:13 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* ppc-instructions (mtsrin): Missing instruction
* ppc-instructions (mfsrin): Missing instruction
* ppc-instructions (eieio): Missing instruction
Tue Oct 24 20:55:29 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* build-psim: New shell script - see internals for usage,
simplifies the process of building custom simulators.
Mon Oct 23 23:48:59 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* std-config.h (SEMANTICS_INLINE): Tidy up notes on each of the
INLINE macros. Make SEMANTICS_INLINE == 1 if DEFAULT_INLINE == 2.
Don't use DEFAULT_INLINE to define REGISTERS_INLINE DEVICES_INLINE
DEVICE_TREE_INLINE or INTERRUPTS_INLINE as none of these are on
the instruction or data critical paths.
* FIXME: need to set up OS_EMUL_INLINE/EMUL_GENERIC_INLINE but
not on critical path.
* FIXME: devices.c/emul_netbsd.c would benefit (slightly) from
the inclusion of device_tree.c/emul_generic.c.
Mon Oct 23 00:31:50 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* os_emul.[hc], emul_generic.[hc], emul_netbsd.[hc]: replace
system.[hc]. Start of suport for multiple emulations and
emulation state (os_emul object).
* emul_generic.[hc]: Start of code to implement proper system call
tracing (from spy).
Sun Oct 22 21:33:51 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* cpu.h, cpu.c (cpu_init): New function, zero the registers before
the processor is started. Fixes problem of registers being
undefined when restarting from within gdb.
* cpu.h, cpu.c (cpu_flush_icache): New function, flushes the
instruction cache (if present). Fixes problem of cpu caching gdb
breakpoint instructions.
FIXME: PSIM sometimes aborts calling error(), it should instead
call sim_error() say which takes care of housekeeping such as
saving the CIA before calling error.
* NOTE: cpu_flush_cache() instead of cpu_synchronize_context() is
used when restarting a simulation because the latter has the
unwanted side effect (well I as a kernel hacker think it is) of
performing an isync when the instruction stream doesn't contain
one.
Sun Oct 22 19:27:48 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* mon.h (new), mon.c (new), std-config.h (WITH_MON): Performance
monitoring module. Counts both instructions issued and
load/stores.
* NOTE: mon does not contain to count instruction loads as this
information is already available from the mon_issue() hook.
* FIXME: mon doesn't have access to register usage information.
This is needed if the user wants to monitor things like register
stalls.
* igen.c (lf_print_c_semantic), vm_n.h: Add counting code.
* psim.h, psim.c (psim_create), cpu.h, cpu.c (cpu_create): Attach
a common monitor to each of the cpus. Delete
cpu_increment_number_of_insns() and cpu_get_number_of_insns()
replaced by copied code in mon.[hc].
Sun Oct 22 18:42:45 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* sim_calls.c, main.c, psim.c (psim_create): always create
`WITH_SMP' cpus. The actual number of CPU's active in a
simulation run is taken from the device node: /init/smp (an
integer). WITH_SMP changed to 2 (remember to put it back to 0).
Fri Oct 20 17:26:54 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* system.c: More system call emulation. If code appears NetBSD
specific, make conditional to being compiled on a NetBSD system
(sigh).
Wed Oct 18 23:02:20 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* Makefile.in, gen.c(delete), igen.c(new), dgen.c(new),
lf.[ch](new), table.[ch](new): Split into two generators - igen
that outputs the instruction tables and dgen that outputs the spr
tables. Add -f (filter out) flag to igen to filter out certain
instructions (ex 64 bit ones) from the created tables. Include
$(LIBIBERTY_LIB) in link options in case host lacks some libc
functions.
* NOTE: igen, since it was originally written for the
PowerPC/RS6000, things the MSB is 0 and the LSB is 63{31}.
* Makefile.in, std-config.h, ppc-cache-rules(new),
ppc-opcode-complex(new), ppc-opcode-simple(new): (for igen) Create
cache-rule and opcode-rule tables from macros found std-config.h.
Delete corresponding macro's from std-config.h.
* FIXME: under this new igen scheme, when playing around with igen
options, you'll find that depenencies don't work very well.
* igen.c (gen_itable_c, gen_itable_h), Makefile.in: code to output
an table of all the instructions. Code to output a type
enumerating all the instructin names.
* igen.c(lf_print_c_semantic): Move call to increment instruction
counter so that it occures _after_ the instruction has been fully
validated, was double counting illegal/invalid instructions. Add
conditional so only compiled in when WITH_PROFILE enabled (enabled
by default).
* igen.c, cpu.h, cpu.c(cpu_increment_number_of_insns): Include
itable.h, count individual instruction types not just total,
adjust reporting functions to output this.
* ppc-instructions (64 bit Load Doubleword with Update Indexed):
Had 32./ instead of 31./
* ppc-instructions (64 bit Store Double Word Conditional Indexed):
bitrot - updated to use newer CR register operators.
* ppc-instructions (64bit Floating Convert from Integer
Doubleword): Correct call to Round_Float().
Mon Oct 16 00:31:20 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* basics.h: #include "sim_callbacks.h" earlier so that its
prototypes are declared in all other header files.
* bits.h, bits.c, idecode_expression.h (ROTL32, ROTL64): Update
doc in bits.h, remove dead code in bits.c, move ROTL32/ROTL64 into
bits.h.
* FIXME: the bits.h/bits.c macro's should be replaced with
(inline) c functions.
* cpu.c(cpu_add_commas), device_tree.h, device_tree.c(scand_*):
Add size of buffer argument to functions writing a string into a
buffer. Check for buffer overflow.
Sun Oct 15 22:16:11 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* devices.h, devices.c, debug.h, debug.c: add macro's for tracing
of each device. Make parameter names consistent so macros work.
Use macro's in device functions.
* device_tree.c, devices.h, devices.c: include path to device in a
devices node when creating it.
* device_tree.c, debug.h, debug.c: Add tracing of `device-tree'.
* core.c: add tracing of core-device, adjust parameter names in
core functions to be consistent with those in devices*.
Sun Oct 15 20:33:20 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* debug.h, debug.c (trace_option): New function. Parses the trace
option, updating the trace array.
* debug.h, debug.c (trace_usage): New function. Outputs the list
of all possible trace options.
* sim_calls.c (sim_open), main.c (main): Use new trace_option() to
parse trace options specified with the simpler -t flag. Adjust
usage.
* FIXME: basic parsing of command line options is still duplicated
by main.c and sim_calls.c
Thu Oct 26 10:42:28 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* Makefile.in (clean): Delete *.i and *.out files.
* ppc-endian.c (SWAP_n): Add SET argument to allow use of SWAP
macros for either assignment or return. Fix SWAP_8 to use a
union, and two SWAP_4's. Delete SWAP_N, since nobody uses it now.
(ENDIAN_N): Add SET argument to SWAP_n calls. Delete macro defs
that hardwired swapping on/off, let optimizer delete dead code.
* main.c (main): Add printf that we caught a signal and print out
the failing address.
Thu Oct 19 21:43:39 1995 Fred Fish <fnf@fishfood.amigalib.com>
* Makefile.in: Remove tabs from otherwise empty line.
Confuses many non-GNU versions of "make".
Wed Oct 18 08:51:25 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* Makefile.in (clean): Delete files produced by gen.
Mon Oct 16 17:34:24 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* 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 <cagney@highland.com.au>
* 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 <meissner@tiktok.cygnus.com>
* 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 <meissner@tiktok.cygnus.com>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* ppc-instructions (fmul, fmuls): correct instruction format - had
FRB instead of FRC.
Wed Oct 4 17:31:12 1995 Andrew Cagney <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <meissner@tiktok.cygnus.com>
* sim_calls.c (sim_set_callbacks): Define new function.
Fri Oct 6 17:23:10 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* psim.c (psim_print_info): Print exit status or signal number.
Mon Oct 2 11:46:37 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* 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 <meissner@tiktok.cygnus.com>
* main.c (printf_filtered): Correct to match new prototype.
Sat Sep 30 20:47:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* sim_callbacks.h (printf_filtered): Correct prototype.
Thu Sep 21 16:26:49 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* 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 <ian@cygnus.com>
* Makefile.in (maintainer-clean): New synonym for realclean.
Sun Sep 10 10:23:56 1995 Michael Tiemann <tiemann@axon.cygnus.com>
* registers.c (register_description): Add gdb synonyms for cr
(cnd) and msr (ps).
Fri Sep 8 13:16:10 1995 Ian Lance Taylor <ian@cygnus.com>
* 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 <meissner@tiktok.cygnus.com>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <meissner@tiktok.cygnus.com>
* Makefile.in (install): Fix install rule.
Tue Aug 22 09:31:18 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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 <cagney@cagney@highland.com.au>
* 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.