aboutsummaryrefslogtreecommitdiff
path: root/sim/common/cgen-trace.h
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>1998-12-05 07:56:13 +0000
committerDoug Evans <dje@google.com>1998-12-05 07:56:13 +0000
commitb61e2e146a85a1d93d1ad78f923005c8e4e2d7e4 (patch)
treeed328bc946a1dcc9e96bbb97e0449ec591066e21 /sim/common/cgen-trace.h
parente8116eca81418b425f8a9e668b309fc4d594f8b1 (diff)
downloadgdb-b61e2e146a85a1d93d1ad78f923005c8e4e2d7e4.zip
gdb-b61e2e146a85a1d93d1ad78f923005c8e4e2d7e4.tar.gz
gdb-b61e2e146a85a1d93d1ad78f923005c8e4e2d7e4.tar.bz2
* cgen-defs.h: New file, old cgen-sim.h.
* cgen-sim.h: Simple header that includes others. * sim-arange.c: New file. * sim-arange.h: New file. * sim-basics.h: Include it. * Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-arange.o. (sim-arange.o): Add rule for. * sim-cpu.h (sim_cpu_msg_prefix): Add prototype. (sim_io_eprintf_cpu): Add prototype. * sim-inline.h (HAVE_INLINE): Define if GNUC. (INLINE2): New macro. (EXTERN_INLINE): New macro. * sim-module.c (sim_post_argv_init): Initialize cpu backlink before calling module init fns. * sim-profile.h (OPTION_PROFILE_*): Move into enum. (profile_init): New function. (profile_options): New option --profile-range. (profile_option_handler): Handle --profile-range. (profile_print_insn): Qualify address range specific section titles. (profile_print_addr_ranges): New function. (profile_info): Print address ranges if specified. (profile_install): Set profile_init init fn. * sim-profile.h (PROFILE_DATA): New member `range'. * sim-trace.c (trace_init): New function. (trace_options): New option --trace-range. (trace_option_handler): Handle --trace-range. (trace_install): Set trace_init init fn. * sim-trace.h (TRACE_DATA): New member `range'. * sim-utils.c (sim_cpu_msg_prefix): New function. (sim_io_eprintf_cpu): New function. * cgen-engine.h (PC_IN_TRACE_RANGE_P): New macro. (PC_IN_PROFILE_RANGE_P): New macro. * cgen-trace.c (trace_insn_init): Set current_insn to NULL. (trace_insn_fini): New arg abuf. All callers updated. Exit early if trace_insn not called. Check ARGBUF_PROFILE_P before printing cycle counts. * cgen-trace.h (trace_insn_fini): Update prototype. (TRACE_RESULT_P): New macro. (TRACE_INSN_INIT,TRACE_INSN_FINI): New arg abuf. All callers updated. (TRACE_INSN): Check ARGBUF_TRACE_P. (TRACE_EXTRACT,TRACE_RESULT): New arg abuf. All callers updated. * cgen-types.h (SIM_INLINE): Delete. (SIM_HAVE_MODEL,SIM_HAVE_ADDR_RANGE): Define. * cgen-utils.c: Don't include cgen-engine.h * genmloop.sh (@cpu@_fill_argbuf): New function. (@cpu@_fill_argbuf_tp): New function. (@cpu@_emit_before,@cpu@_emit_after): New functions. (@cpu@_pbb_begin): Prefix cti_sc,insn_count with '_'. (SET_CTI_VPC,SET_INSN_COUNT): Update. (@cpu@_pbb_before): Check ARGBUF_PROFILE_P before calling doing profiling. Update call to TRACE_INSN_INIT,TRACE_INSN_FINI. (@cpu@_pbb_after): Check ARGBUF_PROFILE_P before calling doing profiling. Update call to TRACE_INSN_FINI.
Diffstat (limited to 'sim/common/cgen-trace.h')
-rw-r--r--sim/common/cgen-trace.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/sim/common/cgen-trace.h b/sim/common/cgen-trace.h
new file mode 100644
index 0000000..cde7d0c
--- /dev/null
+++ b/sim/common/cgen-trace.h
@@ -0,0 +1,66 @@
+/* Simulator tracing support for Cpu tools GENerated simulators.
+ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Contributed by Cygnus Support.
+
+This file is part of GDB, the GNU debugger.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef CGEN_TRACE_H
+#define CGEN_TRACE_H
+
+void trace_insn_init (SIM_CPU *, int);
+void trace_insn_fini (SIM_CPU *, const struct argbuf *, int);
+void trace_insn (SIM_CPU *, const struct cgen_insn *,
+ const struct argbuf *, PCADDR);
+void trace_extract (SIM_CPU *, PCADDR, char *, ...);
+void trace_result (SIM_CPU *, char *, int, ...);
+void cgen_trace_printf (SIM_CPU *, char *fmt, ...);
+
+/* Trace instruction results. */
+#define TRACE_RESULT_P(cpu, abuf) (TRACE_INSN_P (cpu) && ARGBUF_TRACE_P (abuf))
+
+#define TRACE_INSN_INIT(cpu, abuf, first_p) \
+do { \
+ if (TRACE_INSN_P (cpu)) \
+ trace_insn_init ((cpu), (first_p)); \
+} while (0)
+#define TRACE_INSN_FINI(cpu, abuf, last_p) \
+do { \
+ if (TRACE_INSN_P (cpu)) \
+ trace_insn_fini ((cpu), (abuf), (last_p)); \
+} while (0)
+#define TRACE_PRINTF(cpu, what, args) \
+do { \
+ if (TRACE_P ((cpu), (what))) \
+ cgen_trace_printf args ; \
+} while (0)
+#define TRACE_INSN(cpu, opcode, abuf, pc) \
+do { \
+ if (TRACE_INSN_P (cpu) && ARGBUF_TRACE_P (abuf)) \
+ trace_insn ((cpu), (opcode), (abuf), (pc)) ; \
+} while (0)
+#define TRACE_EXTRACT(cpu, abuf, args) \
+do { \
+ if (TRACE_EXTRACT_P (cpu)) \
+ trace_extract args ; \
+} while (0)
+#define TRACE_RESULT(cpu, abuf, name, type, val) \
+do { \
+ if (TRACE_RESULT_P ((cpu), (abuf))) \
+ trace_result ((cpu), (name), (type), (val)) ; \
+} while (0)
+
+#endif /* CGEN_TRACE_H */