1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# Generate system call table for perf. Derived from 5*4882a593Smuzhiyun# powerpc script. 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun# Copyright IBM Corp. 2017 8*4882a593Smuzhiyun# Author(s): Hendrik Brueckner <brueckner@linux.vnet.ibm.com> 9*4882a593Smuzhiyun# Changed by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> 10*4882a593Smuzhiyun# Changed by: Kim Phillips <kim.phillips@arm.com> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyungcc=$1 13*4882a593Smuzhiyunhostcc=$2 14*4882a593Smuzhiyunincpath=$3 15*4882a593Smuzhiyuninput=$4 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunif ! test -r $input; then 18*4882a593Smuzhiyun echo "Could not read input file" >&2 19*4882a593Smuzhiyun exit 1 20*4882a593Smuzhiyunfi 21*4882a593Smuzhiyun 22*4882a593Smuzhiyuncreate_table_from_c() 23*4882a593Smuzhiyun{ 24*4882a593Smuzhiyun local sc nr last_sc 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun create_table_exe=`mktemp ${TMPDIR:-/tmp}/create-table-XXXXXX` 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun cat <<-_EoHEADER 31*4882a593Smuzhiyun #include <stdio.h> 32*4882a593Smuzhiyun #include "$input" 33*4882a593Smuzhiyun int main(int argc, char *argv[]) 34*4882a593Smuzhiyun { 35*4882a593Smuzhiyun _EoHEADER 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun while read sc nr; do 38*4882a593Smuzhiyun printf "%s\n" " printf(\"\\t[%d] = \\\"$sc\\\",\\n\", __NR_$sc);" 39*4882a593Smuzhiyun last_sc=$sc 40*4882a593Smuzhiyun done 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun printf "%s\n" " printf(\"#define SYSCALLTBL_ARM64_MAX_ID %d\\n\", __NR_$last_sc);" 43*4882a593Smuzhiyun printf "}\n" 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun } | $hostcc -I $incpath/include/uapi -o $create_table_exe -x c - 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun $create_table_exe 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun rm -f $create_table_exe 50*4882a593Smuzhiyun} 51*4882a593Smuzhiyun 52*4882a593Smuzhiyuncreate_table() 53*4882a593Smuzhiyun{ 54*4882a593Smuzhiyun echo "static const char *syscalltbl_arm64[] = {" 55*4882a593Smuzhiyun create_table_from_c 56*4882a593Smuzhiyun echo "};" 57*4882a593Smuzhiyun} 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun$gcc -E -dM -x c -I $incpath/include/uapi $input \ 60*4882a593Smuzhiyun |sed -ne 's/^#define __NR_//p' \ 61*4882a593Smuzhiyun |sort -t' ' -k2 -nu \ 62*4882a593Smuzhiyun |create_table 63