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

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

# No multilib options are needed by default for this board.
process_multilib_options ""

# We only support newlib on this target. We assume that all multilib
# options have been specified before we get here.
set_board_info compiler "[find_gcc]"
set_board_info cflags "[newlib_include_flags]"
set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
# No linker script needed.
set_board_info ldscript ""

# The board can't really return exit statuses and we need to indicate this;
# however, the standard GCC wrapper won't work with this target because
# it can't do I/O.
#set_board_info needs_status_wrapper  1

# It uses the remote stub protocol to talk to the board.
set_board_info gdb_protocol  "remote"
set_board_info use_gdb_stub  1

# Both the EVA and TS3 boards currently deal badly with X packets.
set_board_info disable_x_packet 1

# Both the EVA and TS3 boards currently deal badly with Z packets.
set_board_info disable_z_packet 1

# Used by gdb-comm.
set_board_info gdb_run_command  "jump *_start"
set_board_info gdb,start_symbol  "_start"

# Can't pass arguments to programs on this target.
set_board_info noargs  1
# And there's no support for signals.
set_board_info gdb,nosignals  1
# And it can't do I/O.
set_board_info gdb,noinferiorio  1

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

# Used by a few gcc.c-torture testcases when trampolines are used.
set_board_info gcc,no_trampolines  1

# Used by a few gcc.c-torture testcases when labels as values are used.
set_board_info gcc,no_label_values  1

# sizeof int != sizeof long.
set_board_info gdb,short_int 1

# Some d10v:ts3 boards are in ts2-board compatibility mode after a reset.
# Force it into d10v:ts3 internal mode
set_board_info gdb_init_command "set \$dmap2 = 0x2000"
