| /* 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_ */ |