arm-trusted-firmware/lib/romlib/gentbl.sh
Sathees Balya 8b9a0de440 romlib: Add platform specific jump table list
This patch allows platforms to define their
own jump table list for library at ROM. The
file has the list of functions to be used
from library at ROM. It can also include
other list files.

Change-Id: I721c35d7dad3dcadbb3a7f3277bfd5d3e1f6e00a
Signed-off-by: Sathees Balya <sathees.balya@arm.com>
2018-12-18 13:55:47 +00:00

59 lines
990 B
Bash
Executable file

#!/bin/sh
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
set -e
output=jmptbl.s
build=.
for i
do
case $i in
-o)
output=$2
shift 2
;;
-b)
build=$2
shift 2
;;
--)
shift
break
;;
-*)
echo usage: gentbl.sh [-o output] [-b dir] file ... >&2
exit 1
;;
esac
done
tmp=`mktemp`
trap "rm -f $$.tmp" EXIT INT QUIT
rm -f $output
# Pre-process include files
awk '!/^$/ && !/[:blank:]*#.*/{
if (NF == 2 && $1 == "include") {
while ((getline line < $2) > 0)
if (line !~ /^$/ && line !~ /[:blank:]*#.*/)
print line
close($2)
} else
print
}' "$@" |
awk -v OFS="\t" '
BEGIN{print "#index\tlib\tfunction\t[patch]"}
{print NR-1, $0}' | tee $build/jmptbl.i |
awk -v OFS="\n" '
BEGIN {print "\t.text",
"\t.globl\tjmptbl",
"jmptbl:"}
{sub(/[:blank:]*#.*/,"")}
!/^$/ {if ($3 == "reserved")
print "\t.word\t0x0"
else
print "\tb\t" $3}' > $$.tmp &&
mv $$.tmp $output