mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 01:24:27 +00:00

Romlib is a new image that is stored in ROM and contains the code of several libraries that can be shared between different images. All the functions within in the library are accessed using a jump table which allows to update the romlib image whithout changing the binary compatibility. This jump table can be also stored in RAM and it can allow to patch a romlib with potential bugs fixes.. Change-Id: If980ccdaca24b7aaca900e32acc68baf6f94ab35 Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
52 lines
681 B
Bash
Executable file
52 lines
681 B
Bash
Executable file
#!/bin/sh
|
|
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
set -e
|
|
|
|
build=.
|
|
out=output.a
|
|
|
|
for i
|
|
do
|
|
case $i in
|
|
-o)
|
|
out=$2
|
|
shift 2
|
|
;;
|
|
-b)
|
|
build=$2
|
|
shift 2
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
-*)
|
|
echo usage: genwrappers.sh [-o output] [-b dir] file ... >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
awk '{sub(/[:blank:]*#.*/,"")}
|
|
!/^$/ {print $1*4, $2, $3}' "$@" |
|
|
while read idx lib sym
|
|
do
|
|
file=$build/${lib}_$sym
|
|
|
|
cat <<EOF > $file.s
|
|
.globl $sym
|
|
$sym:
|
|
ldr x17, =jmptbl
|
|
ldr x17, [x17]
|
|
mov x16, $idx
|
|
add x16, x16, x17
|
|
br x16
|
|
EOF
|
|
|
|
${CROSS_COMPILE}as -o $file.o $file.s
|
|
done
|
|
|
|
${CROSS_COMPILE}ar -rc $out $build/*.o
|