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