xref: /openbmc/linux/arch/arm/tools/syscallnr.sh (revision 762f99f4f3cb41a775b5157dd761217beba65873)
196a8fae0SRussell King#!/bin/sh
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
396a8fae0SRussell Kingin="$1"
496a8fae0SRussell Kingout="$2"
596a8fae0SRussell Kingalign=1
696a8fae0SRussell King
796a8fae0SRussell Kingfileguard=_ASM_ARM_`basename "$out" | sed \
896a8fae0SRussell King    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
996a8fae0SRussell King    -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
1096a8fae0SRussell King
11*b34b9820SMasahiro Yamadagrep -E "^[0-9A-Fa-fXx]+[[:space:]]+" "$in" | sort -n | tail -n1 | (
1296a8fae0SRussell King    echo "#ifndef ${fileguard}
1396a8fae0SRussell King#define ${fileguard} 1
1496a8fae0SRussell King
1596a8fae0SRussell King/*
1696a8fae0SRussell King * This needs to be greater than __NR_last_syscall+1 in order to account
1796a8fae0SRussell King * for the padding in the syscall table.
1896a8fae0SRussell King */
1996a8fae0SRussell King"
2096a8fae0SRussell King
2196a8fae0SRussell King    while read nr abi name entry; do
2296a8fae0SRussell King        nr=$(($nr + 1))
2396a8fae0SRussell King        while [ "$(($nr / (256 * $align) ))" -gt 0 ]; do
2496a8fae0SRussell King            align=$(( $align * 4 ))
2596a8fae0SRussell King        done
2696a8fae0SRussell King        nr=$(( ($nr + $align - 1) & ~($align - 1) ))
2796a8fae0SRussell King        echo "/* aligned to $align */"
2896a8fae0SRussell King        echo "#define __NR_syscalls $nr"
2996a8fae0SRussell King    done
3096a8fae0SRussell King
3196a8fae0SRussell King    echo ""
3296a8fae0SRussell King    echo "#endif /* ${fileguard} */"
3396a8fae0SRussell King) > "$out"
34