162306a36Sopenharmony_ci#!/bin/sh
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# Generate system call table for perf. Derived from
562306a36Sopenharmony_ci# s390 script.
662306a36Sopenharmony_ci#
762306a36Sopenharmony_ci# Copyright IBM Corp. 2017
862306a36Sopenharmony_ci# Author(s):  Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
962306a36Sopenharmony_ci# Changed by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciwordsize=$1
1262306a36Sopenharmony_ciSYSCALL_TBL=$2
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciif ! test -r $SYSCALL_TBL; then
1562306a36Sopenharmony_ci	echo "Could not read input file" >&2
1662306a36Sopenharmony_ci	exit 1
1762306a36Sopenharmony_cifi
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cicreate_table()
2062306a36Sopenharmony_ci{
2162306a36Sopenharmony_ci	local wordsize=$1
2262306a36Sopenharmony_ci	local max_nr nr abi sc discard
2362306a36Sopenharmony_ci	max_nr=-1
2462306a36Sopenharmony_ci	nr=0
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	echo "static const char *const syscalltbl_powerpc_${wordsize}[] = {"
2762306a36Sopenharmony_ci	while read nr abi sc discard; do
2862306a36Sopenharmony_ci		if [ "$max_nr" -lt "$nr" ]; then
2962306a36Sopenharmony_ci			printf '\t[%d] = "%s",\n' $nr $sc
3062306a36Sopenharmony_ci			max_nr=$nr
3162306a36Sopenharmony_ci		fi
3262306a36Sopenharmony_ci	done
3362306a36Sopenharmony_ci	echo '};'
3462306a36Sopenharmony_ci	echo "#define SYSCALLTBL_POWERPC_${wordsize}_MAX_ID $max_nr"
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cigrep -E "^[[:digit:]]+[[:space:]]+(common|spu|nospu|${wordsize})" $SYSCALL_TBL \
3862306a36Sopenharmony_ci	|sort -k1 -n                                                           \
3962306a36Sopenharmony_ci	|create_table ${wordsize}
40