162306a36Sopenharmony_ci#!/bin/sh
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciin="$1"
562306a36Sopenharmony_ciarch="$2"
662306a36Sopenharmony_ci
762306a36Sopenharmony_cisyscall_macro() {
862306a36Sopenharmony_ci    nr="$1"
962306a36Sopenharmony_ci    name="$2"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci    echo "	[$nr] = \"$name\","
1262306a36Sopenharmony_ci}
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciemit() {
1562306a36Sopenharmony_ci    nr="$1"
1662306a36Sopenharmony_ci    entry="$2"
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci    syscall_macro "$nr" "$entry"
1962306a36Sopenharmony_ci}
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciecho "static const char *const syscalltbl_${arch}[] = {"
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cisorted_table=$(mktemp /tmp/syscalltbl.XXXXXX)
2462306a36Sopenharmony_cigrep '^[0-9]' "$in" | sort -n > $sorted_table
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cimax_nr=0
2762306a36Sopenharmony_ciwhile read nr _abi name entry _compat; do
2862306a36Sopenharmony_ci    if [ $nr -ge 512 ] ; then # discard compat sycalls
2962306a36Sopenharmony_ci        break
3062306a36Sopenharmony_ci    fi
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci    emit "$nr" "$name"
3362306a36Sopenharmony_ci    max_nr=$nr
3462306a36Sopenharmony_cidone < $sorted_table
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cirm -f $sorted_table
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciecho "};"
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciecho "#define SYSCALLTBL_${arch}_MAX_ID ${max_nr}"
41