xref: /openbmc/linux/tools/perf/arch/loongarch/entry/syscalls/mksyscalltbl (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1*2fa5ebe3SHuacai Chen#!/bin/sh
2*2fa5ebe3SHuacai Chen# SPDX-License-Identifier: GPL-2.0
3*2fa5ebe3SHuacai Chen#
4*2fa5ebe3SHuacai Chen# Generate system call table for perf. Derived from
5*2fa5ebe3SHuacai Chen# powerpc script.
6*2fa5ebe3SHuacai Chen#
7*2fa5ebe3SHuacai Chen# Author(s):  Ming Wang <wangming01@loongson.cn>
8*2fa5ebe3SHuacai Chen# Author(s):  Huacai Chen <chenhuacai@loongson.cn>
9*2fa5ebe3SHuacai Chen# Copyright (C) 2020-2023 Loongson Technology Corporation Limited
10*2fa5ebe3SHuacai Chen
11*2fa5ebe3SHuacai Chengcc=$1
12*2fa5ebe3SHuacai Chenhostcc=$2
13*2fa5ebe3SHuacai Chenincpath=$3
14*2fa5ebe3SHuacai Cheninput=$4
15*2fa5ebe3SHuacai Chen
16*2fa5ebe3SHuacai Chenif ! test -r $input; then
17*2fa5ebe3SHuacai Chen	echo "Could not read input file" >&2
18*2fa5ebe3SHuacai Chen	exit 1
19*2fa5ebe3SHuacai Chenfi
20*2fa5ebe3SHuacai Chen
21*2fa5ebe3SHuacai Chencreate_sc_table()
22*2fa5ebe3SHuacai Chen{
23*2fa5ebe3SHuacai Chen	local sc nr max_nr
24*2fa5ebe3SHuacai Chen
25*2fa5ebe3SHuacai Chen	while read sc nr; do
26*2fa5ebe3SHuacai Chen		printf "%s\n" "	[$nr] = \"$sc\","
27*2fa5ebe3SHuacai Chen		max_nr=$nr
28*2fa5ebe3SHuacai Chen	done
29*2fa5ebe3SHuacai Chen
30*2fa5ebe3SHuacai Chen	echo "#define SYSCALLTBL_LOONGARCH_MAX_ID $max_nr"
31*2fa5ebe3SHuacai Chen}
32*2fa5ebe3SHuacai Chen
33*2fa5ebe3SHuacai Chencreate_table()
34*2fa5ebe3SHuacai Chen{
35*2fa5ebe3SHuacai Chen	echo "#include \"$input\""
36*2fa5ebe3SHuacai Chen	echo "static const char *const syscalltbl_loongarch[] = {"
37*2fa5ebe3SHuacai Chen	create_sc_table
38*2fa5ebe3SHuacai Chen	echo "};"
39*2fa5ebe3SHuacai Chen}
40*2fa5ebe3SHuacai Chen
41*2fa5ebe3SHuacai Chen$gcc -E -dM -x c -I $incpath/include/uapi $input \
42*2fa5ebe3SHuacai Chen	|awk '$2 ~ "__NR" && $3 !~ "__NR3264_" {
43*2fa5ebe3SHuacai Chen		sub("^#define __NR(3264)?_", "");
44*2fa5ebe3SHuacai Chen		print | "sort -k2 -n"}' \
45*2fa5ebe3SHuacai Chen	|create_table
46*2fa5ebe3SHuacai Chen