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