summaryrefslogtreecommitdiff
path: root/package/etrax-tools/src/e100boot/cbl/free_size
blob: 73e1365e4b1c5d00c9d5bab82cdd547b8f96c37c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
#
# Calculates the size left in ETRAX cache when bootloader is loaded.
#

BOOT_FILE=`dirname $0`/net/net.out
HEADER_FILE=`dirname $0`/src/e100boot.h

for FILE in $BOOT_FILE $HEADER_FILE; do
	if [ ! -f $FILE ]; then
		echo "Could not find the file \"$FILE\"!"
		exit 1
	fi
done

# The cache size is given in hex
CACHE_SIZE=2000

BSS_SIZE=`nm-cris $BOOT_FILE | grep Ebss | cut -d ' ' -f 1 | tr a-f A-F`

TEXT_SIZE=`nm-cris $BOOT_FILE | grep Stext | cut -d ' ' -f 1 | tr a-f A-F`

IO_BUF_END=`grep IO_BUF_END $HEADER_FILE | awk '{ print $3 }' | \
	    cut -d x -f 2 | tr a-f A-F`

IO_BUF_START=`grep IO_BUF_START $HEADER_FILE | awk '{ print $3 }' | \
	      cut -d x -f 2 | tr a-f A-F`

FREE_SIZE=`echo "ibase=16 ; \
		 $CACHE_SIZE - \
		 ($BSS_SIZE - $TEXT_SIZE + $IO_BUF_END - $IO_BUF_START)" | \
	   bc`

echo "Free cache size when cbl is loaded will be:"
echo -e "\t$FREE_SIZE bytes - size of stack"

if [ $FREE_SIZE -lt 0 ]; then
	echo "Bootloader is too large! You will have to do some optimizing..."
	exit 1
fi

exit 0