# 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 {mn10300-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 "mn10300-eval"

# It needs no multilib flags by default.
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 "-Teval.ld"

if {[string compare [board_info $board boardtype] "asb2303"] == 0} {
    set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags] [board_info $board addl_link_flags] -mno-crt0 -mam33-2"
    set_board_info ldscript "-mam33-2 -Tasb2303.ld"
}


# 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
