# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
# Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu 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 of the License, or
# (at your option) any later version.
#
# DejaGnu 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 DejaGnu; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# This is a list of toolchains that are supported on this board.
set_board_info target_install {frv-elf}

# Load the generic configuration for this board. This will define a
# set of generic routines used by the tool to communicate with the
# board.
load_generic_config "cygmon"

# -mcpu=tomcat is needed for the board.
process_multilib_options ""

set_board_info compiler  "[find_gcc]"
set_board_info cflags  "[newlib_include_flags] [libgloss_include_flags]"
set_board_info ldflags  "[libgloss_link_flags] [newlib_link_flags] [board_info $board addl_link_flags]"

# CygMON linker script.
set_board_info ldscript "-specs=tiger.specs"

# Standard remote protocol.
set_board_info gdb_protocol "remote"
# We can't do input in GDB (yet! HA!). It *will* do output, hurrah.
set_board_info gdb,noinferiorio 1
# Or pass arguments.
set_board_info gdb,noargs  1
set_board_info noargs 1
# Or do signals.
set_board_info gdb,nosignals 1

set_board_info shell_prompt "cygmon>"

set_board_info use_gdb_stub 1
set_board_info gdb,do_reload_on_run 1
