Home | History | Annotate | Line # | Download | only in compile
walnut-mkimg.sh revision 1.1
      1 #!/bin/sh
      2 # $NetBSD: walnut-mkimg.sh,v 1.1 2002/12/09 12:15:50 scw Exp $
      3 
      4 # Convert a kernel to an tftp image loadable by the walnut IBM openbios.
      5 
      6 if [ $# -ne 2 ] ; then
      7 	echo usage: $0 kernel image 1>&2
      8 	exit 1
      9 fi
     10 
     11 kernel=$1; shift
     12 output=$1; shift
     13 
     14 : ${OBJDUMP=objdump}
     15 : ${OBJCOPY=objcopy}
     16 
     17 start=`${OBJDUMP} -f ${kernel} | awk '/start address/ { print $NF }'`
     18 start=`printf "%d" $start`
     19 ${OBJCOPY} -O binary ${kernel} ${kernel}.bin.$$
     20 size=`/bin/ls -l ${kernel}.bin.$$ | awk '{ printf "%d", ( $5 + 511 ) / 512 }'`
     21 
     22 printf "%d\n%d\n0\n%d\n0\n0\n0\n" $start $size $start |
     23     awk 'BEGIN { printf "\x00\x52\x50\x4f" }
     24 	{
     25 		printf "%c", $0 / 256 / 256 / 256 ;
     26 		printf "%c", $0 / 256 / 256 ;
     27 		printf "%c", $0 / 256 ;
     28 		printf "%c", $0 ;
     29 	}
     30     ' > ${output}
     31 
     32 cat ${kernel}.bin.$$ >> ${output}
     33 
     34 rm -f ${kernel}.bin.$$
     35 exit
     36