18c2ecf20Sopenharmony_ci#!/bin/sh
28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
38c2ecf20Sopenharmony_ci#
48c2ecf20Sopenharmony_ci# Generate system call table for perf. Derived from
58c2ecf20Sopenharmony_ci# powerpc script.
68c2ecf20Sopenharmony_ci#
78c2ecf20Sopenharmony_ci# Copyright IBM Corp. 2017
88c2ecf20Sopenharmony_ci# Author(s):  Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
98c2ecf20Sopenharmony_ci# Changed by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
108c2ecf20Sopenharmony_ci# Changed by: Kim Phillips <kim.phillips@arm.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cigcc=$1
138c2ecf20Sopenharmony_cihostcc=$2
148c2ecf20Sopenharmony_ciincpath=$3
158c2ecf20Sopenharmony_ciinput=$4
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciif ! test -r $input; then
188c2ecf20Sopenharmony_ci	echo "Could not read input file" >&2
198c2ecf20Sopenharmony_ci	exit 1
208c2ecf20Sopenharmony_cifi
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cicreate_table_from_c()
238c2ecf20Sopenharmony_ci{
248c2ecf20Sopenharmony_ci	local sc nr last_sc
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	create_table_exe=`mktemp ${TMPDIR:-/tmp}/create-table-XXXXXX`
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	{
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci	cat <<-_EoHEADER
318c2ecf20Sopenharmony_ci		#include <stdio.h>
328c2ecf20Sopenharmony_ci		#include "$input"
338c2ecf20Sopenharmony_ci		int main(int argc, char *argv[])
348c2ecf20Sopenharmony_ci		{
358c2ecf20Sopenharmony_ci	_EoHEADER
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci	while read sc nr; do
388c2ecf20Sopenharmony_ci		printf "%s\n" "	printf(\"\\t[%d] = \\\"$sc\\\",\\n\", __NR_$sc);"
398c2ecf20Sopenharmony_ci		last_sc=$sc
408c2ecf20Sopenharmony_ci	done
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci	printf "%s\n" "	printf(\"#define SYSCALLTBL_ARM64_MAX_ID %d\\n\", __NR_$last_sc);"
438c2ecf20Sopenharmony_ci	printf "}\n"
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci	} | $hostcc -I $incpath/include/uapi -o $create_table_exe -x c -
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	$create_table_exe
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	rm -f $create_table_exe
508c2ecf20Sopenharmony_ci}
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cicreate_table()
538c2ecf20Sopenharmony_ci{
548c2ecf20Sopenharmony_ci	echo "static const char *syscalltbl_arm64[] = {"
558c2ecf20Sopenharmony_ci	create_table_from_c
568c2ecf20Sopenharmony_ci	echo "};"
578c2ecf20Sopenharmony_ci}
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci$gcc -E -dM -x c -I $incpath/include/uapi $input \
608c2ecf20Sopenharmony_ci	|sed -ne 's/^#define __NR_//p' \
618c2ecf20Sopenharmony_ci	|sort -t' ' -k2 -nu	       \
628c2ecf20Sopenharmony_ci	|create_table
63