X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fcommon%2Fsim-hw.c;h=06f14e1a1dc938950b90f4ca00af4903e44bfba3;hb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;hp=fa3ca8fa9447a2c589b6adb8158cc242800c4c88;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/sim-hw.c b/sim/common/sim-hw.c index fa3ca8fa94..06f14e1a1d 100644 --- a/sim/common/sim-hw.c +++ b/sim/common/sim-hw.c @@ -1,22 +1,21 @@ /* Simulator hardware option handling. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 2007, 2008 Free Software Foundation, Inc. Contributed by Cygnus Support and Andrew Cagney. 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. +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, write to the Free Software Foundation, Inc., -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +You should have received a copy of the GNU General Public License +along with this program. If not, see . */ #include "sim-main.h" #include "sim-assert.h" @@ -26,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "hw-tree.h" #include "hw-device.h" +#include "hw-main.h" #include "hw-base.h" @@ -40,7 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #endif #include -#include +#include struct sim_hw { @@ -53,15 +53,17 @@ struct sim_hw { }; -void +struct hw * sim_hw_parse (struct sim_state *sd, const char *fmt, ...) { + struct hw *current; va_list ap; va_start (ap, fmt); - hw_tree_vparse (STATE_HW (sd)->tree, fmt, ap); + current = hw_tree_vparse (STATE_HW (sd)->tree, fmt, ap); va_end (ap); + return current; } struct printer { @@ -98,6 +100,7 @@ enum { OPTION_HW_INFO = OPTION_START, OPTION_HW_TRACE, OPTION_HW_DEVICE, + OPTION_HW_LIST, OPTION_HW_FILE, }; @@ -123,6 +126,10 @@ static const OPTION hw_options[] = '\0', "DEVICE", "Add the specified device", hw_option_handler }, + { {"hw-list", no_argument, NULL, OPTION_HW_LIST }, + '\0', NULL, "List the device tree", + hw_option_handler }, + { {"hw-file", required_argument, NULL, OPTION_HW_FILE }, '\0', "FILE", "Add the devices listed in the file", hw_option_handler }, @@ -254,6 +261,12 @@ hw_option_handler (struct sim_state *sd, sim_cpu *cpu, int opt, return SIM_RC_OK; } + case OPTION_HW_LIST: + { + sim_hw_print (sd, sim_io_vprintf); + return SIM_RC_OK; + } + case OPTION_HW_FILE: { return merge_device_file (sd, arg);