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