| /* This file is part of the program psim. |
| |
| Copyright (C) 1994-1996, 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 _HW_TRACE_C_ |
| #define _HW_TRACE_C_ |
| |
| #include "device_table.h" |
| #include <stdarg.h> |
| |
| /* DEVICE |
| |
| trace - the properties of this dummy device specify trace options |
| |
| DESCRIPTION |
| |
| The properties of this device are used, during initialization, to |
| specify the value various simulation trace options. The |
| initialization can occure implicitly (during device tree init) or |
| explicitly using this devices ioctl method. |
| |
| The actual options and their default values (for a given target) |
| are defined in the file debug. |
| |
| This device is normally a child of the /openprom node. |
| |
| EXAMPLE |
| |
| The trace option dump-device-tree can be enabled by specifying the |
| option: |
| |
| | -o '/openprom/trace/dump-device-tree 0x1' |
| |
| Alternativly the shorthand version: |
| |
| | -t dump-device-tree |
| |
| can be used. */ |
| |
| |
| /* Hook to allow the initialization of the trace options at any time */ |
| |
| static int |
| hw_trace_ioctl(device *me, |
| cpu *processor, |
| unsigned_word cia, |
| device_ioctl_request request, |
| va_list ap) |
| { |
| switch (request) { |
| case device_ioctl_set_trace: |
| { |
| const device_property *prop = device_find_property(me, NULL); |
| while (prop != NULL) { |
| const char *name = prop->name; |
| unsigned32 value = device_find_integer_property(me, name); |
| trace_option(name, value); |
| prop = device_next_property(prop); |
| } |
| } |
| break; |
| default: |
| device_error(me, "insupported ioctl request"); |
| break; |
| } |
| return 0; |
| } |
| |
| |
| static device_callbacks const hw_trace_callbacks = { |
| { NULL, }, /* init */ |
| { NULL, }, /* address */ |
| { NULL, }, /* IO */ |
| { NULL, }, /* DMA */ |
| { NULL, }, /* interrupt */ |
| { NULL, }, /* unit */ |
| NULL, /* instance-create */ |
| hw_trace_ioctl, |
| }; |
| |
| const device_descriptor hw_trace_device_descriptor[] = { |
| { "trace", NULL, &hw_trace_callbacks }, |
| { NULL }, |
| }; |
| |
| #endif /* _HW_TRACE_C_ */ |