blob: 929bde120d6bbf8a7d5773f20b0d88ef03a9d54a [file] [log] [blame]
David Brazdil0f672f62019-12-10 10:32:29 +00001#!/bin/bash
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00002# SPDX-License-Identifier: GPL-2.0
3
4in="$1"
5out="$2"
6
7syscall_macro() {
David Brazdil0f672f62019-12-10 10:32:29 +00008 local abi="$1"
9 local nr="$2"
10 local entry="$3"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000011
Olivier Deprez157378f2022-04-04 15:47:50 +020012 echo "__SYSCALL_${abi}($nr, $entry)"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000013}
14
15emit() {
David Brazdil0f672f62019-12-10 10:32:29 +000016 local abi="$1"
17 local nr="$2"
18 local entry="$3"
19 local compat="$4"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000020
David Brazdil0f672f62019-12-10 10:32:29 +000021 if [ "$abi" != "I386" -a -n "$compat" ]; then
22 echo "a compat entry ($abi: $compat) for a 64-bit syscall makes no sense" >&2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000023 exit 1
24 fi
25
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000026 if [ -z "$compat" ]; then
Olivier Deprez157378f2022-04-04 15:47:50 +020027 if [ -n "$entry" ]; then
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000028 syscall_macro "$abi" "$nr" "$entry"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000029 fi
30 else
31 echo "#ifdef CONFIG_X86_32"
32 if [ -n "$entry" ]; then
33 syscall_macro "$abi" "$nr" "$entry"
34 fi
35 echo "#else"
36 syscall_macro "$abi" "$nr" "$compat"
37 echo "#endif"
38 fi
39}
40
41grep '^[0-9]' "$in" | sort -n | (
42 while read nr abi name entry compat; do
43 abi=`echo "$abi" | tr '[a-z]' '[A-Z]'`
Olivier Deprez157378f2022-04-04 15:47:50 +020044 emit "$abi" "$nr" "$entry" "$compat"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000045 done
46) > "$out"