| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| in="$1" |
| out="$2" |
| |
| syscall_macro() { |
| local abi="$1" |
| local nr="$2" |
| local entry="$3" |
| |
| echo "__SYSCALL_${abi}($nr, $entry)" |
| } |
| |
| emit() { |
| local abi="$1" |
| local nr="$2" |
| local entry="$3" |
| local compat="$4" |
| |
| if [ "$abi" != "I386" -a -n "$compat" ]; then |
| echo "a compat entry ($abi: $compat) for a 64-bit syscall makes no sense" >&2 |
| exit 1 |
| fi |
| |
| if [ -z "$compat" ]; then |
| if [ -n "$entry" ]; then |
| syscall_macro "$abi" "$nr" "$entry" |
| fi |
| else |
| echo "#ifdef CONFIG_X86_32" |
| if [ -n "$entry" ]; then |
| syscall_macro "$abi" "$nr" "$entry" |
| fi |
| echo "#else" |
| syscall_macro "$abi" "$nr" "$compat" |
| echo "#endif" |
| fi |
| } |
| |
| grep '^[0-9]' "$in" | sort -n | ( |
| while read nr abi name entry compat; do |
| abi=`echo "$abi" | tr '[a-z]' '[A-Z]'` |
| emit "$abi" "$nr" "$entry" "$compat" |
| done |
| ) > "$out" |