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