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 (C) 2020 Loongson Technology Co., Ltd.
88c2ecf20Sopenharmony_ci# Author(s):  Ming Wang <wangming01@loongson.cn>
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cigcc=$1
118c2ecf20Sopenharmony_cihostcc=$2
128c2ecf20Sopenharmony_ciincpath=$3
138c2ecf20Sopenharmony_ciinput=$4
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciif ! test -r $input; then
168c2ecf20Sopenharmony_ci	echo "Could not read input file" >&2
178c2ecf20Sopenharmony_ci	exit 1
188c2ecf20Sopenharmony_cifi
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cicreate_table_from_c()
218c2ecf20Sopenharmony_ci{
228c2ecf20Sopenharmony_ci	local sc nr last_sc
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	create_table_exe=`mktemp ${TMPDIR:-/tmp}/create-table-XXXXXX`
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	{
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	cat <<-_EoHEADER
298c2ecf20Sopenharmony_ci		#include <stdio.h>
308c2ecf20Sopenharmony_ci		#include "$input"
318c2ecf20Sopenharmony_ci		int main(int argc, char *argv[])
328c2ecf20Sopenharmony_ci		{
338c2ecf20Sopenharmony_ci	_EoHEADER
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci	while read sc nr; do
368c2ecf20Sopenharmony_ci		printf "%s\n" "	printf(\"\\t[%d] = \\\"$sc\\\",\\n\", $nr);"
378c2ecf20Sopenharmony_ci		last_sc=$nr
388c2ecf20Sopenharmony_ci	done
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci	printf "%s\n" "	printf(\"#define SYSCALLTBL_LOONGARCH_MAX_ID %d\\n\", $last_sc);"
418c2ecf20Sopenharmony_ci	printf "}\n"
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci	} | $hostcc -I $incpath/include/uapi -o $create_table_exe -x c -
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci	$create_table_exe
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	rm -f $create_table_exe
488c2ecf20Sopenharmony_ci}
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_cicreate_table()
518c2ecf20Sopenharmony_ci{
528c2ecf20Sopenharmony_ci	echo "static const char *syscalltbl_loongarch[] = {"
538c2ecf20Sopenharmony_ci	create_table_from_c
548c2ecf20Sopenharmony_ci	echo "};"
558c2ecf20Sopenharmony_ci}
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci$gcc -E -dM -x c  -I $incpath/include/uapi $input	       \
588c2ecf20Sopenharmony_ci	|sed -ne 's/^#define __NR_//p' \
598c2ecf20Sopenharmony_ci	|sort -t' ' -k2 -n \
608c2ecf20Sopenharmony_ci	|create_table
61