##
## This file is part of the coreboot project.
##
## Copyright (C) 2007 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program 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.
##
## This program 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 this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
##

target tyan_s2912_fam10
mainboard tyan/s2912_fam10

option CC="CROSSCC"
option CONFIG_CROSS_COMPILE="CROSS_PREFIX"
option HOSTCC="CROSS_HOSTCC"

__COMPRESSION__
__LOGLEVEL__

romimage "normal"
	option CONFIG_USE_FAILOVER_IMAGE=0
	option CONFIG_USE_FALLBACK_IMAGE=0
	option COREBOOT_EXTRA_VERSION=".0-Normal"
	payload __PAYLOAD__
end

romimage "fallback" 
	option CONFIG_USE_FAILOVER_IMAGE=0
	option CONFIG_USE_FALLBACK_IMAGE=1
	option COREBOOT_EXTRA_VERSION=".0-Fallback"
	payload __PAYLOAD__
end

romimage "failover"
	option CONFIG_USE_FAILOVER_IMAGE=1
        option CONFIG_USE_FALLBACK_IMAGE=0
        option CONFIG_ROM_IMAGE_SIZE=CONFIG_FAILOVER_SIZE
        option CONFIG_XIP_ROM_SIZE=CONFIG_FAILOVER_SIZE
        option COREBOOT_EXTRA_VERSION=".0-Failover"
end

buildrom ./coreboot.rom CONFIG_ROM_SIZE "normal" "fallback" "failover"
