Home | History | Annotate | Download | only in head
      1  0  stevel /*
      2  0  stevel  * CDDL HEADER START
      3  0  stevel  *
      4  0  stevel  * The contents of this file are subject to the terms of the
      5  0  stevel  * Common Development and Distribution License, Version 1.0 only
      6  0  stevel  * (the "License").  You may not use this file except in compliance
      7  0  stevel  * with the License.
      8  0  stevel  *
      9  0  stevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  0  stevel  * or http://www.opensolaris.org/os/licensing.
     11  0  stevel  * See the License for the specific language governing permissions
     12  0  stevel  * and limitations under the License.
     13  0  stevel  *
     14  0  stevel  * When distributing Covered Code, include this CDDL HEADER in each
     15  0  stevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  0  stevel  * If applicable, add the following below this CDDL HEADER, with the
     17  0  stevel  * fields enclosed by brackets "[]" replaced with your own identifying
     18  0  stevel  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  0  stevel  *
     20  0  stevel  * CDDL HEADER END
     21  0  stevel  */
     22  0  stevel /*
     23  0  stevel  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
     24  0  stevel  * Use is subject to license terms.
     25  0  stevel  */
     26  0  stevel 
     27  0  stevel #ifndef	_ALLOCA_H
     28  0  stevel #define	_ALLOCA_H
     29  0  stevel 
     30  0  stevel #pragma ident	"%Z%%M%	%I%	%E% SMI"
     31  0  stevel 
     32  0  stevel #include <sys/types.h>
     33  0  stevel 
     34  0  stevel #ifdef __cplusplus
     35  0  stevel extern "C" {
     36  0  stevel #endif
     37  0  stevel 
     38  0  stevel /*
     39  0  stevel  * Many compilation systems depend upon the use of special functions
     40  0  stevel  * built into the the compilation system to handle variable argument
     41  0  stevel  * lists and stack allocations.  The method to obtain this in SunOS
     42  0  stevel  * is to define the feature test macro "__BUILTIN_VA_ARG_INCR" which
     43  0  stevel  * enables the following special built-in functions:
     44  0  stevel  *	__builtin_alloca
     45  0  stevel  *	__builtin_va_alist
     46  0  stevel  *	__builtin_va_arg_incr
     47  0  stevel  * It is intended that the compilation system define this feature test
     48  0  stevel  * macro, not the user of the system.
     49  0  stevel  *
     50  0  stevel  * The tests on the processor type are to provide a transitional period
     51  0  stevel  * for existing compilation systems, and may be removed in a future
     52  0  stevel  * release.
     53  0  stevel  */
     54  0  stevel 
     55  0  stevel #if defined(__BUILTIN_VA_ARG_INCR) || \
     56  0  stevel 	defined(__sparc) || defined(__i386) || defined(__amd64)
     57  0  stevel #define	alloca(x)	__builtin_alloca(x)
     58  0  stevel 
     59  0  stevel #ifdef	__STDC__
     60  0  stevel extern void *__builtin_alloca(size_t);
     61  0  stevel #else
     62  0  stevel extern void *__builtin_alloca();
     63  0  stevel #endif
     64  0  stevel 
     65  0  stevel #else
     66  0  stevel 
     67  0  stevel #ifdef	__STDC__
     68  0  stevel extern void *alloca(size_t);
     69  0  stevel #else
     70  0  stevel extern void *alloca();
     71  0  stevel #endif
     72  0  stevel 
     73  0  stevel #endif	/* defined(__BUILTIN_VA_ARG_INCR) || defined(__sparc) ... */
     74  0  stevel 
     75  0  stevel #ifdef __cplusplus
     76  0  stevel }
     77  0  stevel #endif
     78  0  stevel 
     79  0  stevel #endif	/* _ALLOCA_H */
     80