xref: /illumos-gate/usr/src/head/prof.h (revision b86a7875d3e3bc7f4290f20ab631f1fe3f9261b1)
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 2014 Garrett D'Amore <garrett@damore.org>
28   *
29   * Copyright (c) 1996-1999 by Sun Microsystems, Inc.
30   * All rights reserved.
31   */
32  
33  #ifndef	_PROF_H
34  #define	_PROF_H
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(__i386)
46  #define	MARK(K)	{\
47  		asm("	.data"); \
48  		asm("	.align 4"); \
49  		asm("."#K".:"); \
50  		asm("	.long 0"); \
51  		asm("	.text"); \
52  		asm("M."#K":"); \
53  		asm("	movl	$."#K"., %edx"); \
54  		asm("	call _mcount"); \
55  		}
56  #endif
57  
58  #if defined(__sparc)
59  #define	MARK(K)	{\
60  		asm("	.reserve	."#K"., 4, \".bss\", 4"); \
61  		asm("M."#K":"); \
62  		asm("	sethi	%hi(."#K".), %o0"); \
63  		asm("	call	_mcount"); \
64  		asm("	or	%o0, %lo(."#K".), %o0"); \
65  		}
66  #endif
67  
68  #endif	/* MARK */
69  
70  #ifdef	__cplusplus
71  }
72  #endif
73  
74  #endif	/* _PROF_H */
75