Annotation of sys/arch/m88k/include/profile.h, Revision 1.1.1.1
1.1 nbrk 1: #ifndef __M88K_PROFILE_H__
2: #define __M88K_PROFILE_H__
3: /* $OpenBSD: profile.h,v 1.3 2005/04/30 16:42:36 miod Exp $ */
4: /*
5: * Copyright (c) 2004, Miodrag Vallat.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26: * POSSIBILITY OF SUCH DAMAGE.
27: */
28:
29: #define _MCOUNT_DECL static inline void _mcount
30:
31: /*
32: * On OpenBSD, calls to the function profiler save r2-r9 on stack. The
33: * monitor point is found in r1. The function's return address is taken
34: * from the stack frame pointed to by r30.
35: */
36: #define MCOUNT \
37: extern void mcount(void) __asm__ ("mcount"); \
38: void \
39: mcount() \
40: { \
41: int returnaddress, monpoint; \
42: __asm__ __volatile__ ("or %0, r1, r0" : "=r"(returnaddress)); \
43: __asm__ __volatile__ ("ld %0, r30, 4" : "=r"(monpoint)); \
44: _mcount(monpoint, returnaddress); \
45: }
46:
47: #ifdef _KERNEL
48: #define MCOUNT_ENTER disable_interrupt(s)
49: #define MCOUNT_EXIT set_psr(s)
50: #endif /* _KERNEL */
51:
52: #endif /* __M88K_PROFILE_H__ */
CVSweb