xref: /titanic_50/usr/src/ucbcmd/sbcp/mksysent (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate#!/bin/sh
2*7c478bd9Sstevel@tonic-gate#
3*7c478bd9Sstevel@tonic-gate# CDDL HEADER START
4*7c478bd9Sstevel@tonic-gate#
5*7c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the
6*7c478bd9Sstevel@tonic-gate# Common Development and Distribution License, Version 1.0 only
7*7c478bd9Sstevel@tonic-gate# (the "License").  You may not use this file except in compliance
8*7c478bd9Sstevel@tonic-gate# with the License.
9*7c478bd9Sstevel@tonic-gate#
10*7c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11*7c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
12*7c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions
13*7c478bd9Sstevel@tonic-gate# and limitations under the License.
14*7c478bd9Sstevel@tonic-gate#
15*7c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
16*7c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17*7c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
18*7c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
19*7c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
20*7c478bd9Sstevel@tonic-gate#
21*7c478bd9Sstevel@tonic-gate# CDDL HEADER END
22*7c478bd9Sstevel@tonic-gate#
23*7c478bd9Sstevel@tonic-gate#
24*7c478bd9Sstevel@tonic-gate# Copyright 1993-2003 Sun Microsystems, Inc.  All rights reserved.
25*7c478bd9Sstevel@tonic-gate# Use is subject to license terms.
26*7c478bd9Sstevel@tonic-gate#
27*7c478bd9Sstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
28*7c478bd9Sstevel@tonic-gate#
29*7c478bd9Sstevel@tonic-gate#	mksysent - generate the sysent table from the list of system calls
30*7c478bd9Sstevel@tonic-gate#
31*7c478bd9Sstevel@tonic-gatenawk '
32*7c478bd9Sstevel@tonic-gateBEGIN {
33*7c478bd9Sstevel@tonic-gate	print "#include <sys/asm_linkage.h>"
34*7c478bd9Sstevel@tonic-gate	print "#include <sys/syscall.h>"
35*7c478bd9Sstevel@tonic-gate	print ""
36*7c478bd9Sstevel@tonic-gate	print "! This file is automatically generated from syscalls.list."
37*7c478bd9Sstevel@tonic-gate	print "! Do not edit by hand or your changes will be lost."
38*7c478bd9Sstevel@tonic-gate	print "! See mksysent and syscalls.list for details."
39*7c478bd9Sstevel@tonic-gate	print ""
40*7c478bd9Sstevel@tonic-gate	print "	.section	\".text\""
41*7c478bd9Sstevel@tonic-gate	print "	.align	4"
42*7c478bd9Sstevel@tonic-gate	print "sysent:"
43*7c478bd9Sstevel@tonic-gate}
44*7c478bd9Sstevel@tonic-gate/^#/	{ next; }		# ignore comment lines
45*7c478bd9Sstevel@tonic-gate{
46*7c478bd9Sstevel@tonic-gate	f = $1;
47*7c478bd9Sstevel@tonic-gate	if ($2 == "TRAP") {
48*7c478bd9Sstevel@tonic-gate		printf "! %s\n", f;
49*7c478bd9Sstevel@tonic-gate		printf "\trestore\t%%g0, SYS_%s, %%g1\n", f;
50*7c478bd9Sstevel@tonic-gate		printf "\tta\t8\n";
51*7c478bd9Sstevel@tonic-gate		printf "\tjmp\t%%g6\n";
52*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
53*7c478bd9Sstevel@tonic-gate	} else if ($2 == "SIMPLE") {
54*7c478bd9Sstevel@tonic-gate		printf "! %s\n", f;
55*7c478bd9Sstevel@tonic-gate		printf "\t.global\t%s\n", f;
56*7c478bd9Sstevel@tonic-gate		printf "\tcall\t%s\n", f;
57*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
58*7c478bd9Sstevel@tonic-gate		printf "\tb,a\ttrap0rtn\n";
59*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
60*7c478bd9Sstevel@tonic-gate	} else {
61*7c478bd9Sstevel@tonic-gate		printf "! %s\n", f;
62*7c478bd9Sstevel@tonic-gate		printf "\tb,a\tnosys\n";
63*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
64*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
65*7c478bd9Sstevel@tonic-gate		printf "\tnop\n";
66*7c478bd9Sstevel@tonic-gate	}
67*7c478bd9Sstevel@tonic-gate}
68*7c478bd9Sstevel@tonic-gate' <syscalls.list
69