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

# This is a list of toolchains that are supported on this board.
set_board_info target_install {sparclite-coff}

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

# It needs no multilib flags by default.
process_multilib_options ""

set_board_info compiler  "[find_gcc]"
set_board_info cflags  "[newlib_include_flags] [libgloss_include_flags]"
set_board_info ldflags  "-nostdlib [libgloss_link_flags] [newlib_link_flags] -Wl,-Ttext,0x40005000 -N"

# ex930 linker script.
set_board_info ldscript "-Tex930.ld"

# The address at which the stub needs to be linked.
set_board_info gdb_stub_offset "0x40000000"

# The board doesn't return exit statuses and we need to indicate this.
# However, the standard GCC wrapper won't work with this target because
# it doesn't return stuff from printf ().
set_board_info needs_status_wrapper 1

# We use a GDB stub to talk to the board.
set_board_info use_gdb_stub 1
# For GDB, we need to use a real stub (not the separate loader scheme
# we use for Sparclet).
set_board_info gdb_stub  ""
# And the protocol is "sparclite serial".
set_board_info gdb_protocol "sparclite serial"
# No mathlib.
set_board_info mathlib  ""
# We can't do I/O in GDB.
set_board_info gdb,noinferiorio 1
# Or pass arguments.
set_board_info noargs 1
# Or do signals.
set_board_info gdb,nosignals 1
