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

# Don't use anything by default.
process_multilib_options ""

# The default compiler for this target.
set_board_info compiler "[find_gcc]"

# We only support newlib on this target. We assume that all multilib
# options have been specified before we get here.
set_board_info cflags "[newlib_include_flags]"
set_board_info ldflags "[newlib_link_flags]"

# The GDB protocol used with this board.
set_board_info gdb_protocol "remote"
# It's running a GDB stub in ROM.
set_board_info use_gdb_stub 1;

# There's no support for argument-passing.
set_board_info noargs 1
# Nor does it have real signals.
set_board_info gdb,nosignals 1
# And it can't do I/O.
set_board_info gdb,noinferiorio 1
# Nor can it return results.
set_board_info gdb,noresults 1

# Limit the stack size to something real tiny.
set_board_info gcc,stack_size 4096

# The board can get wedged in amusing and interesting ways.
set_board_info unreliable 1

# There's no long long support on this target
set_board_info no_long_long  1

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

# Pick the right linker script if -mh/-ms is specified.

set linker_script "h8300.ld"

foreach x $board_variant_list {
    regsub -all "^\[ \t\]*" "$x" "" x;
    regsub -all "\[ \t\]*$" "$x" "" x;

    case $x in {
	{ h -mh } {
	    set linker_script "h8300h.ld"
	}
	{ s -ms } {
	    set linker_script "h8300s.ld"
	}
    }
}

# Whee, magic linker scripts hidden away.
#
# This one's dependent on the multilib options in use, sadly. And we
# *need* a linker script. Really. Otherwise the code gets linked at
# the wrong address and it won't run on the board.
set_board_info ldscript "-Wl,-T${prefix_dir}/h8300-hms/${linker_script}"

unset linker_script
