cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

syscalltbl.sh (1489B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0-only
      3#
      4# Generate a syscall table header.
      5#
      6# Each line of the syscall table should have the following format:
      7#
      8# NR ABI NAME [NATIVE] [COMPAT]
      9#
     10# NR       syscall number
     11# ABI      ABI name
     12# NAME     syscall name
     13# NATIVE   native entry point (optional)
     14# COMPAT   compat entry point (optional)
     15
     16set -e
     17
     18usage() {
     19	echo >&2 "usage: $0 [--abis ABIS] INFILE OUTFILE" >&2
     20	echo >&2
     21	echo >&2 "  INFILE    input syscall table"
     22	echo >&2 "  OUTFILE   output header file"
     23	echo >&2
     24	echo >&2 "options:"
     25	echo >&2 "  --abis ABIS        ABI(s) to handle (By default, all lines are handled)"
     26	exit 1
     27}
     28
     29# default unless specified by options
     30abis=
     31
     32while [ $# -gt 0 ]
     33do
     34	case $1 in
     35	--abis)
     36		abis=$(echo "($2)" | tr ',' '|')
     37		shift 2;;
     38	-*)
     39		echo "$1: unknown option" >&2
     40		usage;;
     41	*)
     42		break;;
     43	esac
     44done
     45
     46if [ $# -ne 2 ]; then
     47	usage
     48fi
     49
     50infile="$1"
     51outfile="$2"
     52
     53nxt=0
     54
     55grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | {
     56
     57	while read nr abi name native compat ; do
     58
     59		if [ $nxt -gt $nr ]; then
     60			echo "error: $infile: syscall table is not sorted or duplicates the same syscall number" >&2
     61			exit 1
     62		fi
     63
     64		while [ $nxt -lt $nr ]; do
     65			echo "__SYSCALL($nxt, sys_ni_syscall)"
     66			nxt=$((nxt + 1))
     67		done
     68
     69		if [ -n "$compat" ]; then
     70			echo "__SYSCALL_WITH_COMPAT($nr, $native, $compat)"
     71		elif [ -n "$native" ]; then
     72			echo "__SYSCALL($nr, $native)"
     73		else
     74			echo "__SYSCALL($nr, sys_ni_syscall)"
     75		fi
     76		nxt=$((nr + 1))
     77	done
     78} > "$outfile"