63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | |
| incpath=$3
 | |
| input=$4
 | |
| 
 | |
| 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 ${TMPDIR:-/tmp}/create-table-XXXXXX`
 | |
| 
 | |
| 	{
 | |
| 
 | |
| 	cat <<-_EoHEADER
 | |
| 		#include <stdio.h>
 | |
| 		#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 -I $incpath/include/uapi -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 -I $incpath/include/uapi $input \
 | |
| 	|sed -ne 's/^#define __NR_//p' \
 | |
| 	|sort -t' ' -k2 -nu	       \
 | |
| 	|create_table
 |