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

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