| #!/bin/sh |
| # |
| # CDDL HEADER START |
| # |
| # The contents of this file are subject to the terms of the |
| # Common Development and Distribution License, Version 1.0 only |
| # (the "License"). You may not use this file except in compliance |
| # with the License. |
| # |
| # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
| # or http://www.opensolaris.org/os/licensing. |
| # See the License for the specific language governing permissions |
| # and limitations under the License. |
| # |
| # When distributing Covered Code, include this CDDL HEADER in each |
| # file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
| # If applicable, add the following below this CDDL HEADER, with the |
| # fields enclosed by brackets "[]" replaced with your own identifying |
| # information: Portions Copyright [yyyy] [name of copyright owner] |
| # |
| # CDDL HEADER END |
| # |
| # |
| # Copyright 1993-2003 Sun Microsystems, Inc. All rights reserved. |
| # Use is subject to license terms. |
| # |
| #pragma ident "%Z%%M% %I% %E% SMI" |
| # |
| # mksysent - generate the sysent table from the list of system calls |
| # |
| nawk ' |
| BEGIN { |
| print "#include <sys/asm_linkage.h>" |
| print "#include <sys/syscall.h>" |
| print "" |
| print "! This file is automatically generated from syscalls.list." |
| print "! Do not edit by hand or your changes will be lost." |
| print "! See mksysent and syscalls.list for details." |
| print "" |
| print " .section \".text\"" |
| print " .align 4" |
| print "sysent:" |
| } |
| /^#/ { next; } # ignore comment lines |
| { |
| f = $1; |
| if ($2 == "TRAP") { |
| printf "! %s\n", f; |
| printf "\trestore\t%%g0, SYS_%s, %%g1\n", f; |
| printf "\tta\t8\n"; |
| printf "\tjmp\t%%g6\n"; |
| printf "\tnop\n"; |
| } else if ($2 == "SIMPLE") { |
| printf "! %s\n", f; |
| printf "\t.global\t%s\n", f; |
| printf "\tcall\t%s\n", f; |
| printf "\tnop\n"; |
| printf "\tb,a\ttrap0rtn\n"; |
| printf "\tnop\n"; |
| } else { |
| printf "! %s\n", f; |
| printf "\tb,a\tnosys\n"; |
| printf "\tnop\n"; |
| printf "\tnop\n"; |
| printf "\tnop\n"; |
| } |
| } |
| ' <syscalls.list |