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