# 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 {mn10200-elf}

# Load the tool-specific configuration for this board, as well as the
# generic configuration. This will define any 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 is the name of the sim subdir.
setup_sim mn10200

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

# We only support newlib on this target.
set_board_info cflags  "[newlib_include_flags] [libgloss_include_flags]"
set_board_info ldflags  "[libgloss_link_flags] [newlib_link_flags]"

# Simulator linker script.
set_board_info ldscript "-Tsim.ld"

# The simulator doesn't return exit statuses and we need to indicate this.
set_board_info needs_status_wrapper  1

# We can't pass args to the simulator or get exit status back from the
# simulator, nor does the simulator support real signals.
set_board_info noargs  1
set_board_info gdb,nosignals  1
set_board_info gdb,noresults  1
set_board_info gdb,noinferiorio  1

# The mn10200 doesn't support long long data types or double data types.
set_board_info no_long_long  1
set_board_info no_double  1

# Used by a few gcc.c-torture testcases to delimit how large the stack can
# be.
set_board_info gcc,stack_size  4096
