The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/kern/genassym.awk

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #       $NetBSD: genassym.awk,v 1.5 1998/11/25 06:10:19 castor Exp $
    2 
    3 #
    4 # Copyright (c) 1997 The NetBSD Foundation, Inc.
    5 # All rights reserved.
    6 #
    7 # This code is derived from software contributed to The NetBSD Foundation
    8 # by Gordon W. Ross
    9 #
   10 # Redistribution and use in source and binary forms, with or without
   11 # modification, are permitted provided that the following conditions
   12 # are met:
   13 # 1. Redistributions of source code must retain the above copyright
   14 #    notice, this list of conditions and the following disclaimer.
   15 # 2. Redistributions in binary form must reproduce the above copyright
   16 #    notice, this list of conditions and the following disclaimer in the
   17 #    documentation and/or other materials provided with the distribution.
   18 # 3. All advertising materials mentioning features or use of this software
   19 #    must display the following acknowledgement:
   20 #        This product includes software developed by the NetBSD
   21 #        Foundation, Inc. and its contributors.
   22 # 4. Neither the name of The NetBSD Foundation nor the names of its
   23 #    contributors may be used to endorse or promote products derived
   24 #    from this software without specific prior written permission.
   25 #
   26 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36 # POSSIBILITY OF SUCH DAMAGE.
   37 #
   38 
   39 # This parses the assembly file genassym.s and translates each
   40 # element of the assyms[] array into a cpp define.  The assembly
   41 # file genassym.s is simply compiled from plain old C code.  See
   42 # src/sys/arch/sun3/sun3/genassym.c for an example of the C code,
   43 # and see src/sys/arch/sun3/conf/Makefile.sun3 for an example of
   44 # the make rules that build assym.h using this program.
   45 #
   46 # Using actual C code for this (instead of genassym.cf)
   47 # has the advantage that "make depend" automatically
   48 # tracks dependencies of this C code on the (many)
   49 # header files used here.  Also, this awk script is
   50 # much smaller and simpler than sys/kern/genassym.sh.
   51 #
   52 # Both this method and the genassym.cf method have the
   53 # disadvantage that they depend on gcc-specific features.
   54 # This method depends on the format of assembly output for
   55 # data, and the genassym.cf method depends on features of
   56 # the gcc asm() statement (inline assembly).
   57 #
   58 # Matthias Pfaller deserves credit for the basic idea of
   59 # translating cc output (assembly) into an assym.h file.
   60 # This variant of the method was developed by Gordon Ross.
   61 
   62 BEGIN {
   63         len = 0;
   64         val = 0;
   65         str = "";
   66         translate = 0;
   67 }
   68 
   69 # This marks the beginning of the part we should translate.
   70 # Note: leading _ is absent on some platforms (e.g. alpha).
   71 /^_?assyms:/ {
   72         translate = 1;
   73 }
   74 
   75 /^\t\.ascii/ {
   76         if (!translate)
   77                 next;
   78         # Get NAME from '"NAME\*"'
   79         len = index($2, "\\");
   80         str = substr($2,2,len-2);
   81         printf("#define\t%s\t", str);
   82         next;
   83 }
   84 
   85 /^\t\.(skip|zero)/ {
   86         next;
   87 }
   88 
   89 /^\t\.(long|quad|word)/ {
   90         if (!translate)
   91                 next;
   92         printf("%s\n", $2);
   93         next;
   94 }
   95 
   96 # This marks the end of the part we should translate.
   97 # Note: leading _ is absent on some platforms (e.g. alpha).
   98 /^_?nassyms:/ {
   99         exit;
  100 }

Cache object: 717c781205a623cc22689ecc1c6ccf1e


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.