xref: /illumos-gate/usr/src/head/prof.h (revision b1dd958f54f8bfa984d306bb8ca8264855761d7b)
1  /*
2   * CDDL HEADER START
3   *
4   * The contents of this file are subject to the terms of the
5   * Common Development and Distribution License, Version 1.0 only
6   * (the "License").  You may not use this file except in compliance
7   * with the License.
8   *
9   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10   * or http://www.opensolaris.org/os/licensing.
11   * See the License for the specific language governing permissions
12   * and limitations under the License.
13   *
14   * When distributing Covered Code, include this CDDL HEADER in each
15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16   * If applicable, add the following below this CDDL HEADER, with the
17   * fields enclosed by brackets "[]" replaced with your own identifying
18   * information: Portions Copyright [yyyy] [name of copyright owner]
19   *
20   * CDDL HEADER END
21   */
22  /*	Copyright (c) 1988 AT&T	*/
23  /*	  All Rights Reserved  	*/
24  
25  
26  /*
27   * Copyright (c) 1996-1999 by Sun Microsystems, Inc.
28   * All rights reserved.
29   */
30  
31  #ifndef	_PROF_H
32  #define	_PROF_H
33  
34  #pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.10.1.4 */
35  
36  #ifdef	__cplusplus
37  extern "C" {
38  #endif
39  
40  #ifndef	MARK
41  #define	MARK(K)	{}
42  #else
43  #undef	MARK
44  
45  #if defined(__STDC__)
46  
47  #if defined(__i386)
48  #define	MARK(K)	{\
49  		asm("	.data"); \
50  		asm("	.align 4"); \
51  		asm("."#K".:"); \
52  		asm("	.long 0"); \
53  		asm("	.text"); \
54  		asm("M."#K":"); \
55  		asm("	movl	$."#K"., %edx"); \
56  		asm("	call _mcount"); \
57  		}
58  #endif
59  
60  #if defined(__sparc)
61  #define	MARK(K)	{\
62  		asm("	.reserve	."#K"., 4, \".bss\", 4"); \
63  		asm("M."#K":"); \
64  		asm("	sethi	%hi(."#K".), %o0"); \
65  		asm("	call	_mcount"); \
66  		asm("	or	%o0, %lo(."#K".), %o0"); \
67  		}
68  #endif
69  
70  #else	/* __STDC__ */
71  
72  #if defined(__i386)
73  #define	MARK(K)	{\
74  		asm("	.data"); \
75  		asm("	.align 4"); \
76  		asm(".K.:"); \
77  		asm("	.long 0"); \
78  		asm("	.text"); \
79  		asm("M.K:"); \
80  		asm("	movl	$.K., %edx"); \
81  		asm("	call _mcount"); \
82  		}
83  #endif
84  
85  #if defined(__sparc)
86  #define	MARK(K)	{\
87  		asm("	.reserve	.K., 4, \".bss\", 4"); \
88  		asm("M.K:"); \
89  		asm("	sethi	%hi(.K.), %o0"); \
90  		asm("	call	_mcount"); \
91  		asm("	or	%o0, %lo(.K.), %o0"); \
92  		}
93  #endif
94  
95  #endif	/* __STDC__ */
96  
97  #endif	/* MARK */
98  
99  #ifdef	__cplusplus
100  }
101  #endif
102  
103  #endif	/* _PROF_H */
104