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

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

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

# It's a little-endian board.
process_multilib_options "little-endian"

# We only support newlib on this target. We assume that all multilib
# options have been specified before we get here.
set_board_info compiler "[find_gcc]"
set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
# IDT linker script.
set_board_info ldscript "-Wl,-Tidt.ld"

# GDB doesn't return exit statuses and we need to indicate this;
# the standard GCC wrapper will work with this target.
set_board_info needs_status_wrapper 1

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

# This board is unreliable. If a test times out, the board should be
# rebooted and the test re-run.
set_board_info unreliable 1

# Can't pass arguments to the program.
set_board_info noargs 1

# No support for signals.
set_board_info gdb,nosignals 1

# We need to clear the floating-point status register before running.
# This command will be sent after connecting to the board.
set_board_info gdb_init_command "print/x \$fsr = 0x0"
