# $Header$
# hush bootscript for PPCBOOT on L1
# note: all #s are in hex, do _NOT_ prefix it with 0x

flash_rfs=ffc00000
flash_krl=fff00000
tftp_addr=100000
tftp2_addr=1000000

if printenv booted
then
	echo already booted before
else
	echo first boot in environment, create and save settings
	setenv booted OK
	saveenv
fi

setenv autoload no
# clear out stale env stuff, so we get fresh from dhcp.
for setting in initrd fromflash kernel rootfs rootpath
do
setenv $setting
done

dhcp

# if host provides us with a different bootscript, us it.
if printenv bootscript
	then
	tftp $tftp_addr $bootcript
	if imi $tftp_addr
	then
		autoscript $tftp_addr
	fi
fi

# default base kernel arguments.
setenv bootargs $xbootargs devfs=mount ip=$ipaddr:$serverip:$gatewayip:$netmask:L1:eth0:off wdt=120

# Have a kernel in flash?
if imi $flash_krl
then
	echo ok kernel to boot from $flash_krl
	setenv kernel $flash_krl
else
	echo no kernel to boot from $flash_krl, need tftp
fi

# Have a rootfs in flash? 
echo test for SQUASHfs at $flash_rfs

if imi $flash_rfs
then
	echo appears to be a good initrd image at base of flash OK
	setenv rootfs $flash_rfs
else
	echo no image at base of flash, need nfsroot or initrd
fi

# I boot from flash if told to and I can.
if printenv fromflash && printenv kernel && printenv rootfs
then
	echo booting entirely from flash
	setenv bootargs root=/dev/ram0 rw $bootargs
	bootm $kernel $rootfs
	echo oh no failed so I try some other stuff
fi

# TFTP down a kernel
if printenv bootfile
then 
	tftp $tftp_addr $bootfile
	setenv kernel $tftp_addr
	echo I will boot the TFTP kernel
else
	if printenv kernel
	then
		echo no bootfile specified, will use one from flash
	else
		setenv bootfile /opt/crayx1/craymcu/l1/flash/linux.image
		echo OH NO! we have no bootfile,nor flash kernel! try default: $bootfile
		tftp $tftp_addr $bootfile
		setenv kernel $tftp_addr
	fi
fi

# the rootfs.
if printenv rootpath
then
	echo rootpath is $rootpath
	if printenv initrd
	then 
		echo initrd is also specified, so use $initrd
		tftp $tftp2_addr $initrd
		setenv bootargs root=/dev/ram0 rw cwsroot=$serverip:$rootpath $bootargs
		bootm $kernel $tftp2_addr
	else
		echo initrd is not specified, so use NFSROOT $rootpat
		setenv bootargs root=/dev/nfs ro nfsroot=$serverip:$rootpath $bootargs
		bootm $kernel
	fi
else
	echo we have no rootpath check for one in flash
	if printenv rootfs
	then
		echo I will use the one in flash
		setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
		bootm $kernel
	else
		setenv rootpath /export/crayl1
		echo OH NO! we have no rootpath,nor flash kernel! try default: $rootpath
		setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
		bootm $kernel
	fi
fi
reset