|
@@ -0,0 +1,62 @@
|
|
|
+#!/bin/sh
|
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
|
+#
|
|
|
+# Generate system call table for perf. Derived from
|
|
|
+# powerpc script.
|
|
|
+#
|
|
|
+# Copyright IBM Corp. 2017
|
|
|
+# Author(s): Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
|
|
+# Changed by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
|
|
|
+# Changed by: Kim Phillips <kim.phillips@arm.com>
|
|
|
+
|
|
|
+gcc=$1
|
|
|
+hostcc=$2
|
|
|
+input=$3
|
|
|
+
|
|
|
+if ! test -r $input; then
|
|
|
+ echo "Could not read input file" >&2
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+create_table_from_c()
|
|
|
+{
|
|
|
+ local sc nr last_sc
|
|
|
+
|
|
|
+ create_table_exe=`mktemp /tmp/create-table-XXXXXX`
|
|
|
+
|
|
|
+ {
|
|
|
+
|
|
|
+ cat <<-_EoHEADER
|
|
|
+ #include <stdio.h>
|
|
|
+ #define __ARCH_WANT_RENAMEAT
|
|
|
+ #include "$input"
|
|
|
+ int main(int argc, char *argv[])
|
|
|
+ {
|
|
|
+ _EoHEADER
|
|
|
+
|
|
|
+ while read sc nr; do
|
|
|
+ printf "%s\n" " printf(\"\\t[%d] = \\\"$sc\\\",\\n\", __NR_$sc);"
|
|
|
+ last_sc=$sc
|
|
|
+ done
|
|
|
+
|
|
|
+ printf "%s\n" " printf(\"#define SYSCALLTBL_ARM64_MAX_ID %d\\n\", __NR_$last_sc);"
|
|
|
+ printf "}\n"
|
|
|
+
|
|
|
+ } | $hostcc -o $create_table_exe -x c -
|
|
|
+
|
|
|
+ $create_table_exe
|
|
|
+
|
|
|
+ rm -f $create_table_exe
|
|
|
+}
|
|
|
+
|
|
|
+create_table()
|
|
|
+{
|
|
|
+ echo "static const char *syscalltbl_arm64[] = {"
|
|
|
+ create_table_from_c
|
|
|
+ echo "};"
|
|
|
+}
|
|
|
+
|
|
|
+$gcc -E -dM -x c $input \
|
|
|
+ |sed -ne 's/^#define __NR_//p' \
|
|
|
+ |sort -t' ' -k2 -nu \
|
|
|
+ |create_table
|