xref: /OK3568_Linux_fs/kernel/arch/x86/entry/syscalls/syscalltbl.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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