Annotation of sys/arch/m88k/include/profile.h, Revision 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