# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009, 2010 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 3 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

# 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 "sim"

# basic-sim.exp is a basic description for the standard Cygnus simulator.
load_base_board_description "basic-sim"

# This tells it which directory to look in for the simulator.
setup_sim mips

# No multilib flags are set by default.
process_multilib_options ""

# The compiler used to build for this board. This has *nothing* to do
# with what compiler is tested if we're testing gcc.
set_board_info compiler "[find_gcc]"
#set_board_info needs_status_wrapper 1

set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"

# Use idt.
if { [board_info $board obj_format] == "ecoff" } {
    set_board_info ldscript "-Tidtecoff.ld"
} else {
    set_board_info ldscript "-Tidt32.ld"
}

# And, it can't do arguments, and doesn't have real signals.
set_board_info noargs 1
set_board_info gdb,nosignals 1

# Tell gdb to assume no fpu for -msoft-float compilation
if {[string match "*soft-float*" $current_target_name]} {
    set_board_info gdb_init_command "set mipsfpu none"
}
