123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- /* This file is part of the program psim.
- Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au>
- 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
-
- */
- #ifndef _DEBUG_H_
- #define _DEBUG_H_
- #include "filter_filename.h"
- typedef enum {
- trace_invalid,
- trace_tbd,
- /**/
- trace_gdb,
- trace_os_emul,
- /**/
- trace_events,
- trace_device_tree,
- trace_devices,
- trace_binary_device,
- trace_com_device,
- trace_console_device,
- trace_core_device,
- trace_disk_device,
- trace_eeprom_device,
- trace_file_device,
- trace_glue_device,
- trace_halt_device,
- trace_htab_device,
- trace_icu_device,
- trace_ide_device,
- trace_memory_device,
- trace_opic_device,
- trace_pal_device,
- trace_pass_device,
- trace_phb_device,
- trace_sem_device,
- trace_shm_device,
- trace_stack_device,
- trace_register_device,
- trace_vm_device,
- /**/
- trace_disklabel_package,
- /**/
- trace_semantics,
- trace_idecode,
- trace_alu,
- trace_load_store,
- trace_model,
- /**/
- trace_vm,
- trace_core,
- trace_interrupts,
- trace_psim,
- trace_device_init,
- trace_cpu,
- trace_breakpoint,
- trace_opts,
- trace_print_info,
- trace_print_device_tree,
- trace_dump_device_tree,
- nr_trace_options
- } trace_options;
- extern int ppc_trace[nr_trace_options];
- /* simple */
- #define TRACE(OBJECT, ARGS) \
- do { \
- if (WITH_TRACE) { \
- if (ppc_trace[OBJECT]) { \
- sim_io_printf_filtered("%s:%d: ", filter_filename(__FILE__), __LINE__); \
- sim_io_printf_filtered ARGS; \
- } \
- } \
- } while (0)
- /* issue */
- #define ITRACE(OBJECT, ARGS) \
- do { \
- if (WITH_TRACE) { \
- if (ppc_trace[OBJECT]) { \
- sim_io_printf_filtered("%s:%d:0x%08lx:%s ", itable[MY_INDEX].file, itable[MY_INDEX].line_nr, (long)cia, itable[MY_INDEX].name); \
- sim_io_printf_filtered ARGS; \
- } \
- } \
- } while (0)
- /* device */
- #define DTRACE(OBJECT, ARGS) \
- do { \
- if (WITH_TRACE) { \
- int trace_device = device_trace(me); \
- if (ppc_trace[trace_devices] \
- || ppc_trace[trace_##OBJECT##_device] \
- || trace_device) { \
- sim_io_printf_filtered("%s:%d:%s:%s%s ", \
- filter_filename(__FILE__), __LINE__, #OBJECT, \
- trace_device ? device_path(me) : "", \
- trace_device ? ":" : ""); \
- sim_io_printf_filtered ARGS; \
- } \
- } \
- } while (0)
- /* device instance */
- #define DITRACE(OBJECT, ARGS) \
- do { \
- if (WITH_TRACE) { \
- device *me = device_instance_device(instance); \
- int trace_device = device_trace(me); \
- if (ppc_trace[trace_devices] \
- || ppc_trace[trace_##OBJECT##_device] \
- || trace_device) { \
- sim_io_printf_filtered("%s:%d:%s:%s%s ", \
- filter_filename(__FILE__), __LINE__, #OBJECT, \
- trace_device ? device_path(me) : "", \
- trace_device ? ":" : ""); \
- sim_io_printf_filtered ARGS; \
- } \
- } \
- } while (0)
- /* package */
- #define PTRACE(OBJECT, ARGS) \
- do { \
- if (WITH_TRACE) { \
- if (ppc_trace[trace_##OBJECT##_package]) { \
- sim_io_printf_filtered("%s:%d:%s: ", filter_filename(__FILE__), __LINE__, #OBJECT); \
- sim_io_printf_filtered ARGS; \
- } \
- } \
- } while (0)
- #define ASSERT(EXPRESSION) \
- do { \
- if (WITH_ASSERT) { \
- if (!(EXPRESSION)) { \
- error("%s:%d: assertion failed - %s\n", \
- filter_filename(__FILE__), __LINE__, #EXPRESSION); \
- } \
- } \
- } while (0)
- /* Parse OPTION updating the trace array */
- extern void
- trace_option(const char *option, int setting);
- /* Output the list of trace options */
- extern void trace_usage
- (int verbose);
- /* TODO: These values aren't currently used by the ppc port. They're here to
- glue the common sim compile-time settings in. The ppc_trace settings above
- would need to be overhauled. */
- #define TRACE_insn 1
- #define TRACE_disasm 1
- #define TRACE_decode 1
- #define TRACE_extract 1
- #define TRACE_linenum 1
- #define TRACE_memory 1
- #define TRACE_model 1
- #define TRACE_alu 1
- #define TRACE_core 1
- #define TRACE_events 1
- #define TRACE_fpu 1
- #define TRACE_vpu 1
- #define TRACE_branch 1
- #define TRACE_syscall 1
- #define TRACE_register 1
- #define TRACE_debug 1
- #endif /* _DEBUG_H_ */
|