mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 05:54:08 +00:00
Merge pull request #1717 from satheesbalya-arm/sb1/sb1_2629_romlib_ifc
romlib: Add platform specific jump table list
This commit is contained in:
commit
85686f1842
7 changed files with 103 additions and 42 deletions
2
Makefile
2
Makefile
|
@ -880,7 +880,7 @@ ${SPTOOL}:
|
||||||
|
|
||||||
.PHONY: libraries
|
.PHONY: libraries
|
||||||
romlib.bin: libraries
|
romlib.bin: libraries
|
||||||
${Q}${MAKE} BUILD_PLAT=${BUILD_PLAT} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all
|
${Q}${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all
|
||||||
|
|
||||||
cscope:
|
cscope:
|
||||||
@echo " CSCOPE"
|
@echo " CSCOPE"
|
||||||
|
|
|
@ -60,11 +60,16 @@ $(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf
|
||||||
|
|
||||||
$(LIB_DIR)/libwrappers.a: jmptbl.i $(WRAPPER_DIR)/jmpvar.o
|
$(LIB_DIR)/libwrappers.a: jmptbl.i $(WRAPPER_DIR)/jmpvar.o
|
||||||
@echo " AR $@"
|
@echo " AR $@"
|
||||||
$(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ jmptbl.i
|
$(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ $(BUILD_DIR)/jmptbl.i
|
||||||
|
|
||||||
$(BUILD_DIR)/jmptbl.s: jmptbl.i
|
$(BUILD_DIR)/jmptbl.s: jmptbl.i
|
||||||
@echo " TBL $@"
|
@echo " TBL $@"
|
||||||
$(Q)./gentbl.sh -o $@ jmptbl.i
|
if [ -e "../../$(PLAT_DIR)/jmptbl.i" ] ; \
|
||||||
|
then \
|
||||||
|
$(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) ../../$(PLAT_DIR)/jmptbl.i; \
|
||||||
|
else \
|
||||||
|
@echo "USE_ROMLIB=1 requires jump table list file: jmptbl.i in platform directory"; \
|
||||||
|
fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -f $(BUILD_DIR)/*
|
@rm -f $(BUILD_DIR)/*
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
output=jmptbl.s
|
output=jmptbl.s
|
||||||
|
build=.
|
||||||
|
|
||||||
for i
|
for i
|
||||||
do
|
do
|
||||||
|
@ -14,27 +15,45 @@ do
|
||||||
output=$2
|
output=$2
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-b)
|
||||||
|
build=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--)
|
--)
|
||||||
shift
|
shift
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-*)
|
-*)
|
||||||
echo usage: gentbl.sh [-o output] file ... >&2
|
echo usage: gentbl.sh [-o output] [-b dir] file ... >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
tmp=`mktemp`
|
tmp=`mktemp`
|
||||||
trap "rm -f $tmp" EXIT INT QUIT
|
trap "rm -f $$.tmp" EXIT INT QUIT
|
||||||
|
|
||||||
rm -f $output
|
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" '
|
awk -v OFS="\n" '
|
||||||
BEGIN {print "\t.text",
|
BEGIN {print "\t.text",
|
||||||
"\t.globl\tjmptbl",
|
"\t.globl\tjmptbl",
|
||||||
"jmptbl:"}
|
"jmptbl:"}
|
||||||
{sub(/[:blank:]*#.*/,"")}
|
{sub(/[:blank:]*#.*/,"")}
|
||||||
!/^$/ {print "\tb\t" $3}' "$@" > $tmp
|
!/^$/ {if ($3 == "reserved")
|
||||||
|
print "\t.word\t0x0"
|
||||||
mv $tmp $output
|
else
|
||||||
|
print "\tb\t" $3}' > $$.tmp &&
|
||||||
|
mv $$.tmp $output
|
||||||
|
|
|
@ -31,7 +31,7 @@ do
|
||||||
done
|
done
|
||||||
|
|
||||||
awk '{sub(/[:blank:]*#.*/,"")}
|
awk '{sub(/[:blank:]*#.*/,"")}
|
||||||
!/^$/ && !/\\tpatch$/ {print $1*4, $2, $3}' "$@" |
|
!/^$/ && !/\\tpatch$/ !/\\treserved$/ {print $1*4, $2, $3}' "$@" |
|
||||||
while read idx lib sym
|
while read idx lib sym
|
||||||
do
|
do
|
||||||
file=$build/${lib}_$sym
|
file=$build/${lib}_$sym
|
||||||
|
|
|
@ -4,37 +4,40 @@
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
#
|
#
|
||||||
# Format:
|
# Format:
|
||||||
# index lib function [patch]
|
# lib function [patch]
|
||||||
# Add "patch" at the end of the line to patch a function. For example:
|
# Add "patch" at the end of the line to patch a function. For example:
|
||||||
# 14 mbedtls mbedtls_memory_buffer_alloc_init patch
|
# mbedtls mbedtls_memory_buffer_alloc_init patch
|
||||||
|
# Holes can be introduced in the table by using a special keyword "reserved".
|
||||||
|
# Example:
|
||||||
|
# reserved reserved
|
||||||
|
# The jump table will contain an invalid instruction instead of branch
|
||||||
|
|
||||||
0 rom rom_lib_init
|
rom rom_lib_init
|
||||||
1 fdt fdt_getprop_namelen
|
fdt fdt_getprop_namelen
|
||||||
2 fdt fdt_setprop_inplace
|
fdt fdt_setprop_inplace
|
||||||
3 fdt fdt_check_header
|
fdt fdt_check_header
|
||||||
4 fdt fdt_node_offset_by_compatible
|
fdt fdt_node_offset_by_compatible
|
||||||
5 mbedtls mbedtls_asn1_get_alg
|
mbedtls mbedtls_asn1_get_alg
|
||||||
6 mbedtls mbedtls_asn1_get_alg_null
|
mbedtls mbedtls_asn1_get_alg_null
|
||||||
7 mbedtls mbedtls_asn1_get_bitstring_null
|
mbedtls mbedtls_asn1_get_bitstring_null
|
||||||
8 mbedtls mbedtls_asn1_get_bool
|
mbedtls mbedtls_asn1_get_bool
|
||||||
9 mbedtls mbedtls_asn1_get_int
|
mbedtls mbedtls_asn1_get_int
|
||||||
10 mbedtls mbedtls_asn1_get_tag
|
mbedtls mbedtls_asn1_get_tag
|
||||||
11 mbedtls mbedtls_free
|
mbedtls mbedtls_free
|
||||||
12 mbedtls mbedtls_md
|
mbedtls mbedtls_md
|
||||||
13 mbedtls mbedtls_md_get_size
|
mbedtls mbedtls_md_get_size
|
||||||
14 mbedtls mbedtls_memory_buffer_alloc_init
|
mbedtls mbedtls_memory_buffer_alloc_init
|
||||||
15 mbedtls mbedtls_oid_get_md_alg
|
mbedtls mbedtls_oid_get_md_alg
|
||||||
16 mbedtls mbedtls_oid_get_numeric_string
|
mbedtls mbedtls_oid_get_numeric_string
|
||||||
17 mbedtls mbedtls_oid_get_pk_alg
|
mbedtls mbedtls_oid_get_pk_alg
|
||||||
18 mbedtls mbedtls_oid_get_sig_alg
|
mbedtls mbedtls_oid_get_sig_alg
|
||||||
19 mbedtls mbedtls_pk_free
|
mbedtls mbedtls_pk_free
|
||||||
20 mbedtls mbedtls_pk_init
|
mbedtls mbedtls_pk_init
|
||||||
21 mbedtls mbedtls_pk_parse_subpubkey
|
mbedtls mbedtls_pk_parse_subpubkey
|
||||||
22 mbedtls mbedtls_pk_verify_ext
|
mbedtls mbedtls_pk_verify_ext
|
||||||
23 mbedtls mbedtls_platform_set_calloc_free
|
mbedtls mbedtls_platform_set_snprintf
|
||||||
24 mbedtls mbedtls_platform_set_snprintf
|
mbedtls mbedtls_x509_get_rsassa_pss_params
|
||||||
25 mbedtls mbedtls_x509_get_rsassa_pss_params
|
mbedtls mbedtls_x509_get_sig_alg
|
||||||
26 mbedtls mbedtls_x509_get_sig_alg
|
mbedtls mbedtls_md_info_from_type
|
||||||
27 mbedtls mbedtls_md_info_from_type
|
c exit
|
||||||
28 c exit
|
c atexit
|
||||||
29 c atexit
|
|
||||||
|
|
17
plat/arm/board/fvp/jmptbl.i
Normal file
17
plat/arm/board/fvp/jmptbl.i
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#
|
||||||
|
# Platform specific romlib functions can be added or included here.
|
||||||
|
# The index in the output file will be generated cumulatively in the same
|
||||||
|
# order as it is given in this file.
|
||||||
|
# Output file can be found at: $BUILD_DIR/jmptbl.i
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# lib function [patch]
|
||||||
|
# Example:
|
||||||
|
# rom rom_lib_init
|
||||||
|
# fdt fdt_getprop_namelen patch
|
||||||
|
|
||||||
|
include ../../lib/romlib/jmptbl.i
|
17
plat/arm/board/juno/jmptbl.i
Normal file
17
plat/arm/board/juno/jmptbl.i
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#
|
||||||
|
# Platform specific romlib functions can be added or included here.
|
||||||
|
# The index in the output file will be generated cumulatively in the same
|
||||||
|
# order as it is given in this file.
|
||||||
|
# Output file can be found at: $BUILD_DIR/jmptbl.i
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# lib function [patch]
|
||||||
|
# Example:
|
||||||
|
# rom rom_lib_init
|
||||||
|
# fdt fdt_getprop_namelen patch
|
||||||
|
|
||||||
|
include ../../lib/romlib/jmptbl.i
|
Loading…
Add table
Reference in a new issue