|  | #!/bin/sh | 
|  | # SPDX-License-Identifier: GPL-2.0 | 
|  | in="$1" | 
|  | out="$2" | 
|  | my_abis=`echo "($3)" | tr ',' '|'` | 
|  | align=1 | 
|  |  | 
|  | fileguard=_ASM_ARM_`basename "$out" | sed \ | 
|  | -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ | 
|  | -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'` | 
|  |  | 
|  | grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | tail -n1 | ( | 
|  | echo "#ifndef ${fileguard} | 
|  | #define ${fileguard} 1 | 
|  |  | 
|  | /* | 
|  | * This needs to be greater than __NR_last_syscall+1 in order to account | 
|  | * for the padding in the syscall table. | 
|  | */ | 
|  | " | 
|  |  | 
|  | while read nr abi name entry; do | 
|  | nr=$(($nr + 1)) | 
|  | while [ "$(($nr / (256 * $align) ))" -gt 0 ]; do | 
|  | align=$(( $align * 4 )) | 
|  | done | 
|  | nr=$(( ($nr + $align - 1) & ~($align - 1) )) | 
|  | echo "/* aligned to $align */" | 
|  | echo "#define __NR_syscalls $nr" | 
|  | done | 
|  |  | 
|  | echo "" | 
|  | echo "#endif /* ${fileguard} */" | 
|  | ) > "$out" |