1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun 4*4882a593Smuzhiyunin="$1" 5*4882a593Smuzhiyunout="$2" 6*4882a593Smuzhiyun 7*4882a593Smuzhiyunsyscall_macro() { 8*4882a593Smuzhiyun local abi="$1" 9*4882a593Smuzhiyun local nr="$2" 10*4882a593Smuzhiyun local entry="$3" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun echo "__SYSCALL_${abi}($nr, $entry)" 13*4882a593Smuzhiyun} 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunemit() { 16*4882a593Smuzhiyun local abi="$1" 17*4882a593Smuzhiyun local nr="$2" 18*4882a593Smuzhiyun local entry="$3" 19*4882a593Smuzhiyun local compat="$4" 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun if [ "$abi" != "I386" -a -n "$compat" ]; then 22*4882a593Smuzhiyun echo "a compat entry ($abi: $compat) for a 64-bit syscall makes no sense" >&2 23*4882a593Smuzhiyun exit 1 24*4882a593Smuzhiyun fi 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun if [ -z "$compat" ]; then 27*4882a593Smuzhiyun if [ -n "$entry" ]; then 28*4882a593Smuzhiyun syscall_macro "$abi" "$nr" "$entry" 29*4882a593Smuzhiyun fi 30*4882a593Smuzhiyun else 31*4882a593Smuzhiyun echo "#ifdef CONFIG_X86_32" 32*4882a593Smuzhiyun if [ -n "$entry" ]; then 33*4882a593Smuzhiyun syscall_macro "$abi" "$nr" "$entry" 34*4882a593Smuzhiyun fi 35*4882a593Smuzhiyun echo "#else" 36*4882a593Smuzhiyun syscall_macro "$abi" "$nr" "$compat" 37*4882a593Smuzhiyun echo "#endif" 38*4882a593Smuzhiyun fi 39*4882a593Smuzhiyun} 40*4882a593Smuzhiyun 41*4882a593Smuzhiyungrep '^[0-9]' "$in" | sort -n | ( 42*4882a593Smuzhiyun while read nr abi name entry compat; do 43*4882a593Smuzhiyun abi=`echo "$abi" | tr '[a-z]' '[A-Z]'` 44*4882a593Smuzhiyun emit "$abi" "$nr" "$entry" "$compat" 45*4882a593Smuzhiyun done 46*4882a593Smuzhiyun) > "$out" 47