makesyscalls.sh revision 83366
11541Srgrimes#! /bin/sh -
21541Srgrimes#	@(#)makesyscalls.sh	8.1 (Berkeley) 6/10/93
350477Speter# $FreeBSD: head/sys/kern/makesyscalls.sh 83366 2001-09-12 08:38:13Z julian $
41541Srgrimes
51541Srgrimesset -e
61541Srgrimes
71541Srgrimes# name of compat option:
81541Srgrimescompat=COMPAT_43
91541Srgrimes
101541Srgrimes# output files:
111541Srgrimessysnames="syscalls.c"
1210905Sbdesysproto="../sys/sysproto.h"
1310905Sbdesysproto_h=_SYS_SYSPROTO_H_
141541Srgrimessyshdr="../sys/syscall.h"
1534354Sjbsysmk="../sys/syscall.mk"
161541Srgrimessyssw="init_sysent.c"
172700Swollmansyshide="../sys/syscall-hide.h"
1811294Sswallacesyscallprefix="SYS_"
1911294Sswallaceswitchname="sysent"
2011294Sswallacenamesname="syscallnames"
211541Srgrimes
221541Srgrimes# tmp files:
2331627Sjmgsysdcl="sysent.dcl.$$"
2431627Sjmgsyscompat="sysent.compat.$$"
2531627Sjmgsyscompatdcl="sysent.compatdcl.$$"
2631627Sjmgsysent="sysent.switch.$$"
2731627Sjmgsysinc="sysinc.switch.$$"
2831627Sjmgsysarg="sysarg.switch.$$"
291541Srgrimes
3011294Sswallacetrap "rm $sysdcl $syscompat $syscompatdcl $sysent $sysinc $sysarg" 0
311541Srgrimes
3224373Spetertouch $sysdcl $syscompat $syscompatdcl $sysent $sysinc $sysarg
3324373Speter
341541Srgrimescase $# in
3511294Sswallace    0)	echo "Usage: $0 input-file <config-file>" 1>&2
361541Srgrimes	exit 1
371541Srgrimes	;;
381541Srgrimesesac
391541Srgrimes
4036735Sdfrif [ -n "$2" -a -f "$2" ]; then
4111294Sswallace	. $2
4211294Sswallacefi
4311294Sswallace
4411294Sswallacesed -e '
4511294Sswallaces/\$//g
4611294Sswallace:join
4711294Sswallace	/\\$/{a\
4811294Sswallace
4911294Sswallace	N
5011294Sswallace	s/\\\n//
5111294Sswallace	b join
5211294Sswallace	}
5311294Sswallace2,${
5411294Sswallace	/^#/!s/\([{}()*,]\)/ \1 /g
5511294Sswallace}
5611294Sswallace' < $1 | awk "
571541Srgrimes	BEGIN {
581541Srgrimes		sysdcl = \"$sysdcl\"
5910905Sbde		sysproto = \"$sysproto\"
6010905Sbde		sysproto_h = \"$sysproto_h\"
611541Srgrimes		syscompat = \"$syscompat\"
6211294Sswallace		syscompatdcl = \"$syscompatdcl\"
631541Srgrimes		sysent = \"$sysent\"
6436782Sbde		syssw = \"$syssw\"
6511294Sswallace		sysinc = \"$sysinc\"
6611294Sswallace		sysarg = \"$sysarg\"
671541Srgrimes		sysnames = \"$sysnames\"
681541Srgrimes		syshdr = \"$syshdr\"
6934354Sjb		sysmk = \"$sysmk\"
701541Srgrimes		compat = \"$compat\"
712700Swollman		syshide = \"$syshide\"
7211294Sswallace		syscallprefix = \"$syscallprefix\"
7311294Sswallace		switchname = \"$switchname\"
7411294Sswallace		namesname = \"$namesname\"
751541Srgrimes		infile = \"$1\"
761541Srgrimes		"'
771541Srgrimes
7836782Sbde		printf "/*\n * System call switch table.\n *\n" > syssw
7936782Sbde		printf " * DO NOT EDIT-- this file is automatically generated.\n" > syssw
8051135Speter		printf " * \$\FreeBSD\$\n" > syssw
8110905Sbde
8211294Sswallace		printf "/*\n * System call prototypes.\n *\n" > sysarg
8311294Sswallace		printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysarg
8451135Speter		printf " * \$\FreeBSD\$\n" > sysarg
851541Srgrimes
8631785Seivind		printf "\n#ifdef %s\n\n", compat > syscompat
871541Srgrimes
881541Srgrimes		printf "/*\n * System call names.\n *\n" > sysnames
891541Srgrimes		printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysnames
9051135Speter		printf " * \$\FreeBSD\$\n" > sysnames
911541Srgrimes
921541Srgrimes		printf "/*\n * System call numbers.\n *\n" > syshdr
931541Srgrimes		printf " * DO NOT EDIT-- this file is automatically generated.\n" > syshdr
9451135Speter		printf " * \$\FreeBSD\$\n" > syshdr
9534354Sjb		printf "# FreeBSD system call names.\n" > sysmk
9634354Sjb		printf "# DO NOT EDIT-- this file is automatically generated.\n" > sysmk
9751135Speter		printf "# \$\FreeBSD\$\n" > sysmk
982700Swollman		printf "/*\n * System call hiders.\n *\n" > syshide
992700Swollman		printf " * DO NOT EDIT-- this file is automatically generated.\n" > syshide
10051135Speter		printf " * \$\FreeBSD\$\n" > syshide
1011541Srgrimes	}
1021541Srgrimes	NR == 1 {
10350478Speter		gsub("[$]FreeBSD: ", "", $0)
10410906Sbde		gsub(" [$]", "", $0)
10511294Sswallace
10636782Sbde		printf " * created from%s\n */\n\n", $0 > syssw
10711294Sswallace
10836782Sbde		printf "\n/* The casts are bogus but will do for now. */\n" > sysent
10911294Sswallace		printf "struct sysent %s[] = {\n",switchname > sysent
11010905Sbde
11111294Sswallace		printf " * created from%s\n */\n\n", $0 > sysarg
11233039Sbde		printf "#ifndef %s\n", sysproto_h > sysarg
11333039Sbde		printf "#define\t%s\n\n", sysproto_h > sysarg
11433039Sbde		printf "#include <sys/signal.h>\n\n" > sysarg
11554803Srwatson		printf "#include <sys/acl.h>\n\n" > sysarg
11633039Sbde		printf "struct proc;\n\n" > sysarg
11783366Sjulian		printf "struct thread;\n\n" > sysarg
11836770Sbde		printf "#define\tPAD_(t)\t(sizeof(register_t) <= sizeof(t) ? \\\n" > sysarg
11936770Sbde		printf "\t\t0 : sizeof(register_t) - sizeof(t))\n\n" > sysarg
12082149Stmm		printf "#if BYTE_ORDER == LITTLE_ENDIAN\n"> sysarg
12182149Stmm		printf "#define\tPADL_(t)\t0\n" > sysarg
12282149Stmm		printf "#define\tPADR_(t)\tPAD_(t)\n" > sysarg
12382149Stmm		printf "#else\n" > sysarg
12482149Stmm		printf "#define\tPADL_(t)\tPAD_(t)\n" > sysarg
12582149Stmm		printf "#define\tPADR_(t)\t0\n" > sysarg
12682149Stmm		printf "#endif\n\n" > sysarg
1271541Srgrimes
1281541Srgrimes		printf " * created from%s\n */\n\n", $0 > sysnames
12911294Sswallace		printf "char *%s[] = {\n", namesname > sysnames
1301541Srgrimes
1311541Srgrimes		printf " * created from%s\n */\n\n", $0 > syshdr
1322700Swollman
13334354Sjb		printf "# created from%s\nMIASM = ", $0 > sysmk
13434354Sjb
1352700Swollman		printf " * created from%s\n */\n\n", $0 > syshide
1361541Srgrimes		next
1371541Srgrimes	}
1381541Srgrimes	NF == 0 || $1 ~ /^;/ {
1391541Srgrimes		next
1401541Srgrimes	}
14111294Sswallace	$1 ~ /^#[ 	]*include/ {
14211294Sswallace		print > sysinc
14311294Sswallace		next
14411294Sswallace	}
1451541Srgrimes	$1 ~ /^#[ 	]*if/ {
1461541Srgrimes		print > sysent
1471541Srgrimes		print > sysdcl
14811294Sswallace		print > sysarg
1491541Srgrimes		print > syscompat
1501541Srgrimes		print > sysnames
1512700Swollman		print > syshide
1521541Srgrimes		savesyscall = syscall
1531541Srgrimes		next
1541541Srgrimes	}
1551541Srgrimes	$1 ~ /^#[ 	]*else/ {
1561541Srgrimes		print > sysent
1571541Srgrimes		print > sysdcl
15811294Sswallace		print > sysarg
1591541Srgrimes		print > syscompat
1601541Srgrimes		print > sysnames
1612700Swollman		print > syshide
1621541Srgrimes		syscall = savesyscall
1631541Srgrimes		next
1641541Srgrimes	}
1651541Srgrimes	$1 ~ /^#/ {
1661541Srgrimes		print > sysent
1671541Srgrimes		print > sysdcl
16811294Sswallace		print > sysarg
1691541Srgrimes		print > syscompat
1701541Srgrimes		print > sysnames
1712700Swollman		print > syshide
1721541Srgrimes		next
1731541Srgrimes	}
1741541Srgrimes	syscall != $1 {
17536770Sbde		printf "%s: line %d: syscall number out of sync at %d\n",
17636770Sbde		    infile, NR, syscall
1771541Srgrimes		printf "line is:\n"
1781541Srgrimes		print
1791541Srgrimes		exit 1
1801541Srgrimes	}
18160287Sbde	function align_sysent_comment(column) {
18260287Sbde		printf("\t") > sysent
18360287Sbde		column = column + 8 - column % 8
18460287Sbde		while (column < 56) {
18560287Sbde			printf("\t") > sysent
18660287Sbde			column = column + 8
18760287Sbde		}
18860287Sbde	}
18911294Sswallace	function parserr(was, wanted) {
19036770Sbde		printf "%s: line %d: unexpected %s (expected %s)\n",
19111294Sswallace		    infile, NR, was, wanted
19211294Sswallace		exit 1
19311294Sswallace	}
19411294Sswallace	function parseline() {
19511294Sswallace		f=4			# toss number and type
19611294Sswallace		argc= 0;
19760287Sbde		argssize = "0"
19811294Sswallace		if ($NF != "}") {
19911294Sswallace			funcalias=$(NF-2)
20011294Sswallace			argalias=$(NF-1)
20111294Sswallace			rettype=$NF
20211294Sswallace			end=NF-3
20311294Sswallace		} else {
20411294Sswallace			funcalias=""
20511294Sswallace			argalias=""
20611294Sswallace			rettype="int"
20711294Sswallace			end=NF
20810905Sbde		}
20911294Sswallace		if ($2 == "NODEF") {
21011294Sswallace			funcname=$4
21111294Sswallace			return
21211294Sswallace		}
21311294Sswallace		if ($f != "{")
21411294Sswallace			parserr($f, "{")
21511294Sswallace		f++
21611294Sswallace		if ($end != "}")
21711294Sswallace			parserr($end, "}")
21811294Sswallace		end--
21911294Sswallace		if ($end != ";")
22011294Sswallace			parserr($end, ";")
22111294Sswallace		end--
22211294Sswallace		if ($end != ")")
22311294Sswallace			parserr($end, ")")
22411294Sswallace		end--
22511294Sswallace
22611294Sswallace		f++	#function return type
22711294Sswallace
22811294Sswallace		funcname=$f
22911294Sswallace		if (funcalias == "")
23011294Sswallace			funcalias = funcname
23111294Sswallace		if (argalias == "") {
23211294Sswallace			argalias = funcname "_args"
23311330Sswallace			if ($2 == "COMPAT")
23411330Sswallace				argalias = "o" argalias
23511294Sswallace		}
23611294Sswallace		f++
23711294Sswallace
23811294Sswallace		if ($f != "(")
23911294Sswallace			parserr($f, ")")
24011294Sswallace		f++
24111294Sswallace
24211294Sswallace		if (f == end) {
24311294Sswallace			if ($f != "void")
24411294Sswallace				parserr($f, "argument definition")
24511294Sswallace			return
24611294Sswallace		}
24711294Sswallace
24811294Sswallace		while (f <= end) {
24911294Sswallace			argc++
25011294Sswallace			argtype[argc]=""
25111294Sswallace			oldf=""
25211294Sswallace			while (f < end && $(f+1) != ",") {
25311294Sswallace				if (argtype[argc] != "" && oldf != "*")
25411294Sswallace					argtype[argc] = argtype[argc]" ";
25511294Sswallace				argtype[argc] = argtype[argc]$f;
25611294Sswallace				oldf = $f;
25711294Sswallace				f++
25811294Sswallace			}
25911294Sswallace			if (argtype[argc] == "")
26011294Sswallace				parserr($f, "argument definition")
26111294Sswallace			argname[argc]=$f;
26211294Sswallace			f += 2;			# skip name, and any comma
26311294Sswallace		}
26460287Sbde		if (argc != 0)
26560287Sbde			argssize = "AS(" argalias ")"
2661541Srgrimes	}
26711294Sswallace	{	comment = $4
26811294Sswallace		if (NF < 7)
26911294Sswallace			for (i = 5; i <= NF; i++)
27011294Sswallace				comment = comment " " $i
27111294Sswallace	}
27282585Sdillon
27382585Sdillon	# The 'M' type prefix
27482585Sdillon	#
27582585Sdillon	{
27682585Sdillon		mpsafe = "SYF_MPSAFE | ";
27782585Sdillon		if ($2 == "MSTD") {
27882585Sdillon			$2 = "STD";
27982585Sdillon		} else if ($2 == "MNODEF") {
28082585Sdillon			$2 = "NODEF";
28182585Sdillon		} else if ($2 == "MNOARGS") {
28282585Sdillon			$2 = "NOARGS";
28382585Sdillon		} else if ($2 == "MNOPROTO") {
28482585Sdillon			$2 = "NOPROTO";
28582585Sdillon		} else if ($2 == "MNOIMPL") {
28682585Sdillon			$2 = "NOIMPL";
28782585Sdillon		} else if ($2 == "MNOSTD") {
28882585Sdillon			$2 = "NOSTD";
28982585Sdillon		} else if ($2 == "MCOMPAT") {
29082585Sdillon			$2 = "COMPAT";
29182585Sdillon		} else if ($2 == "MCPT_NOA") {
29282585Sdillon			$2 = "CPT_NOA";
29382585Sdillon		} else if ($2 == "MLIBCOMPAT") {
29482585Sdillon			$2 = "LIBCOMPAT";
29582585Sdillon		} else if ($2 == "MOBSOL") {
29682585Sdillon			$2 = "OBSOL";
29782585Sdillon		} else if ($2 == "MUNIMPL") {
29882585Sdillon			$2 = "UNIMPL";
29982585Sdillon		} else {
30082585Sdillon			mpsafe = "";
30182585Sdillon		}
30258963Salfred	}
30330740Sphk	$2 == "STD" || $2 == "NODEF" || $2 == "NOARGS"  || $2 == "NOPROTO" \
30469445Salfred	    || $2 == "NOIMPL" || $2 == "NOSTD" {
30511294Sswallace		parseline()
30611330Sswallace		if ((!nosys || funcname != "nosys") && \
30769448Salfred		    (funcname != "lkmnosys") && (funcname != "lkmressys")) {
30811294Sswallace			if (argc != 0 && $2 != "NOARGS" && $2 != "NOPROTO") {
30983046Sobrien				printf("struct %s {\n", argalias) > sysarg
31011294Sswallace				for (i = 1; i <= argc; i++)
31182149Stmm					printf("\tchar %s_l_[PADL_(%s)]; " \
31282149Stmm					    "%s %s; char %s_r_[PADR_(%s)];\n",
31382149Stmm					    argname[i], argtype[i],
31436735Sdfr					    argtype[i], argname[i],
31536735Sdfr					    argname[i], argtype[i]) > sysarg
31611294Sswallace				printf("};\n") > sysarg
31711294Sswallace			}
31811330Sswallace			else if($2 != "NOARGS" && $2 != "NOPROTO")
31983046Sobrien				printf("struct %s {\n\tregister_t dummy;\n};\n",
32036770Sbde				    argalias) > sysarg
32110905Sbde		}
32211330Sswallace		if ($2 != "NOPROTO" && (!nosys || funcname != "nosys") && \
32311330Sswallace		    (!lkmnosys || funcname != "lkmnosys")) {
32483366Sjulian			printf("%s\t%s __P((struct thread *, struct %s *))",
32518277Sbde			    rettype, funcname, argalias) > sysdcl
32618277Sbde			printf(";\n") > sysdcl
32711330Sswallace		}
32811294Sswallace		if (funcname == "nosys")
3292671Sats			nosys = 1
33011294Sswallace		if (funcname == "lkmnosys")
3314216Sats			lkmnosys = 1
33260287Sbde		printf("\t{ %s%s, (sy_call_t *)", mpsafe, argssize) > sysent
33360287Sbde		column = 8 + 2 + length(mpsafe) + length(argssize) + 15
33469445Salfred		if ($2 == "NOIMPL") {
33569445Salfred			printf("%s },", "nosys") > sysent
33669445Salfred			column = column + length("nosys") + 3
33769445Salfred		} else if ($2 == "NOSTD") {
33869448Salfred			printf("%s },", "lkmressys") > sysent
33969445Salfred			column = column + length("lkmnosys") + 3
34069445Salfred		} else {
34160287Sbde			printf("%s },", funcname) > sysent
34260287Sbde			column = column + length(funcname) + 3
34369445Salfred		} 
34460287Sbde		align_sysent_comment(column)
34558963Salfred		printf("/* %d = %s */\n", syscall, funcalias) > sysent
34636770Sbde		printf("\t\"%s\",\t\t\t/* %d = %s */\n",
34711294Sswallace		    funcalias, syscall, funcalias) > sysnames
34834354Sjb		if ($2 != "NODEF") {
34936770Sbde			printf("#define\t%s%s\t%d\n", syscallprefix,
35011294Sswallace		    	    funcalias, syscall) > syshdr
35134354Sjb			printf(" \\\n\t%s.o", funcalias) > sysmk
35234354Sjb		}
35311294Sswallace		if ($3 != "NOHIDE")
35411294Sswallace			printf("HIDE_%s(%s)\n", $3, funcname) > syshide
3551541Srgrimes		syscall++
3561541Srgrimes		next
3571541Srgrimes	}
35811330Sswallace	$2 == "COMPAT" || $2 == "CPT_NOA" {
35936782Sbde		ncompat++
36011294Sswallace		parseline()
36111330Sswallace		if (argc != 0 && $2 != "CPT_NOA") {
36283046Sobrien			printf("struct %s {\n", argalias) > syscompat
36311294Sswallace			for (i = 1; i <= argc; i++)
36482149Stmm				printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \
36582149Stmm				    "char %s_r_[PADR_(%s)];\n",
36682149Stmm				    argname[i], argtype[i],
36736735Sdfr				    argtype[i], argname[i],
36836735Sdfr				    argname[i], argtype[i]) > syscompat
36911294Sswallace			printf("};\n") > syscompat
37011294Sswallace		}
37111330Sswallace		else if($2 != "CPT_NOA")
37283046Sobrien			printf("struct %s {\n\tregister_t dummy;\n};\n",
37336770Sbde			    argalias) > sysarg
37483366Sjulian		printf("%s\to%s __P((struct thread *, struct %s *));\n",
37511294Sswallace		    rettype, funcname, argalias) > syscompatdcl
37660287Sbde		printf("\t{ compat(%s%s,%s) },",
37760287Sbde		    mpsafe, argssize, funcname) > sysent
37860287Sbde		align_sysent_comment(8 + 9 + length(mpsafe) + \
37960287Sbde		    length(argssize) + 1 + length(funcname) + 4)
38060287Sbde		printf("/* %d = old %s */\n", syscall, funcalias) > sysent
38136770Sbde		printf("\t\"old.%s\",\t\t/* %d = old %s */\n",
38211294Sswallace		    funcalias, syscall, funcalias) > sysnames
38336770Sbde		printf("\t\t\t\t/* %d is old %s */\n",
38411294Sswallace		    syscall, funcalias) > syshdr
38511294Sswallace		if ($3 != "NOHIDE")
38611294Sswallace			printf("HIDE_%s(%s)\n", $3, funcname) > syshide
3871541Srgrimes		syscall++
3881541Srgrimes		next
3891541Srgrimes	}
3901541Srgrimes	$2 == "LIBCOMPAT" {
39136782Sbde		ncompat++
39211294Sswallace		parseline()
39311294Sswallace		printf("%s\to%s();\n", rettype, funcname) > syscompatdcl
39460287Sbde		printf("\t{ compat(%s%s,%s) },",
39560287Sbde		    mpsafe, argssize, funcname) > sysent
39660287Sbde		align_sysent_comment(8 + 9 + length(mpsafe) + \
39760287Sbde		    length(argssize) + 1 + length(funcname) + 4)
39860287Sbde		printf("/* %d = old %s */\n", syscall, funcalias) > sysent
39936770Sbde		printf("\t\"old.%s\",\t\t/* %d = old %s */\n",
40011294Sswallace		    funcalias, syscall, funcalias) > sysnames
40136770Sbde		printf("#define\t%s%s\t%d\t/* compatibility; still used by libc */\n",
40211294Sswallace		    syscallprefix, funcalias, syscall) > syshdr
40334354Sjb		printf(" \\\n\t%s.o", funcalias) > sysmk
40411294Sswallace		if ($3 != "NOHIDE")
40511294Sswallace			printf("HIDE_%s(%s)\n", $3, funcname) > syshide
4061541Srgrimes		syscall++
4071541Srgrimes		next
4081541Srgrimes	}
4091541Srgrimes	$2 == "OBSOL" {
41060287Sbde		printf("\t{ 0, (sy_call_t *)nosys },") > sysent
41160287Sbde		align_sysent_comment(34)
41260287Sbde		printf("/* %d = obsolete %s */\n", syscall, comment) > sysent
41336770Sbde		printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n",
41411294Sswallace		    $4, syscall, comment) > sysnames
41536770Sbde		printf("\t\t\t\t/* %d is obsolete %s */\n",
4161541Srgrimes		    syscall, comment) > syshdr
41711294Sswallace		if ($3 != "NOHIDE")
41811294Sswallace			printf("HIDE_%s(%s)\n", $3, $4) > syshide
4191541Srgrimes		syscall++
4201541Srgrimes		next
4211541Srgrimes	}
4221541Srgrimes	$2 == "UNIMPL" {
42336770Sbde		printf("\t{ 0, (sy_call_t *)nosys },\t\t\t/* %d = %s */\n",
4241541Srgrimes		    syscall, comment) > sysent
42536770Sbde		printf("\t\"#%d\",\t\t\t/* %d = %s */\n",
4261541Srgrimes		    syscall, syscall, comment) > sysnames
42711294Sswallace		if ($3 != "NOHIDE")
42811294Sswallace			printf("HIDE_%s(%s)\n", $3, $4) > syshide
4291541Srgrimes		syscall++
4301541Srgrimes		next
4311541Srgrimes	}
4321541Srgrimes	{
4331541Srgrimes		printf "%s: line %d: unrecognized keyword %s\n", infile, NR, $2
4341541Srgrimes		exit 1
4351541Srgrimes	}
4361541Srgrimes	END {
43760287Sbde		printf "\n#define AS(name) (sizeof(struct name) / sizeof(register_t))\n" > sysinc
43836782Sbde		if (ncompat != 0) {
43936782Sbde			printf "#include \"opt_compat.h\"\n\n" > syssw
44036782Sbde			printf "\n#ifdef %s\n", compat > sysinc
44136782Sbde			printf "#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)\n" > sysinc
44236782Sbde			printf "#else\n" > sysinc
44336782Sbde			printf "#define compat(n, name) 0, (sy_call_t *)nosys\n" > sysinc
44436782Sbde			printf "#endif\n" > sysinc
44536782Sbde		}
44636782Sbde
44736735Sdfr		printf("\n#endif /* %s */\n\n", compat) > syscompatdcl
44836735Sdfr		printf("#undef PAD_\n") > syscompatdcl
44982149Stmm		printf("#undef PADL_\n") > syscompatdcl
45082149Stmm		printf("#undef PADR_\n") > syscompatdcl
45111294Sswallace		printf("\n#endif /* !%s */\n", sysproto_h) > syscompatdcl
4521541Srgrimes
45337227Sphk		printf("\n") > sysmk
45414331Speter		printf("};\n") > sysent
4551541Srgrimes		printf("};\n") > sysnames
45611294Sswallace		printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \
45736770Sbde		    > syshdr
4581541Srgrimes	} '
4591541Srgrimes
46036782Sbdecat $sysinc $sysent >> $syssw
46111294Sswallacecat $sysarg $sysdcl $syscompat $syscompatdcl > $sysproto
462