profile.h revision 209617
1193323Sed/*-
2193323Sed * Copyright (c) 2004 Marcel Moolenaar
3193323Sed * All rights reserved.
4193323Sed *
5193323Sed * Redistribution and use in source and binary forms, with or without
6193323Sed * modification, are permitted provided that the following conditions
7193323Sed * are met:
8193323Sed *
9193323Sed * 1. Redistributions of source code must retain the above copyright
10193323Sed *    notice, this list of conditions and the following disclaimer.
11193323Sed * 2. Redistributions in binary form must reproduce the above copyright
12193323Sed *    notice, this list of conditions and the following disclaimer in the
13193323Sed *    documentation and/or other materials provided with the distribution.
14193323Sed *
15193323Sed * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16193323Sed * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17193323Sed * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18193323Sed * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19193323Sed * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20193323Sed * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21193323Sed * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22193323Sed * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23193323Sed * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24193323Sed * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25218893Sdim *
26218893Sdim * $FreeBSD: head/sys/ia64/include/profile.h 209617 2010-06-30 22:29:02Z marcel $
27198090Srdivacky */
28193323Sed
29193323Sed#ifndef _MACHINE_PROFILE_H_
30193323Sed#define	_MACHINE_PROFILE_H_
31193323Sed
32193323Sed#define	_MCOUNT_DECL	void __mcount
33205218Srdivacky#define	MCOUNT
34193323Sed
35193323Sed#define	FUNCTION_ALIGNMENT	16
36218893Sdim
37193323Sedtypedef unsigned long	fptrdiff_t;
38193323Sed
39212904Sdim#ifdef _KERNEL
40193323Sed/*
41193323Sed * The following two macros do splhigh and splx respectively.
42193323Sed */
43198090Srdivacky#define	MCOUNT_ENTER(s)	s = intr_disable()
44205218Srdivacky#define	MCOUNT_EXIT(s)	intr_restore(s)
45218893Sdim#define	MCOUNT_DECL(s)	register_t s;
46193323Sed
47193323Sedvoid bintr(void);
48193323Sedvoid btrap(void);
49218893Sdimvoid eintr(void);
50218893Sdimvoid user(void);
51218893Sdim
52218893Sdim#define	MCOUNT_FROMPC_USER(pc)		\
53218893Sdim	((pc < (uintfptr_t)VM_MAXUSER_ADDRESS) ? ~0UL : pc)
54218893Sdim
55218893Sdim#define	MCOUNT_FROMPC_INTR(pc)		(~0UL)
56218893Sdim
57218893Sdim_MCOUNT_DECL(uintfptr_t, uintfptr_t);
58218893Sdim
59218893Sdim#else /* !_KERNEL */
60218893Sdim
61212904Sdimtypedef unsigned long	uintfptr_t;
62212904Sdim
63212904Sdim#endif
64218893Sdim
65212904Sdim#endif /* _MACHINE_PROFILE_H_ */
66193323Sed