# 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.

# Danger, Will Robinson!  Settings in this file do not override
# previous settings for the board being defined.

# DDB linker script.
if { [board_info $board obj_format] == "ecoff" } {
    set_board_info ldscript "-Wl,-Tddbecoff.ld"
} else {
    set_board_info ldscript "-Wl,-Tddb.ld"
}

# This is needed for compiling nullstone.
set_board_info nullstone,lib "mips-clock.c"
set_board_info nullstone,ticks_per_sec 3782018

# The GDB protocol used with this board.
set_board_info gdb_protocol "ddb"

# Otherwise, we're the same as a generic vr4300 board.
load_base_board_description "vr4300"
