[BACK]Return to profile.h CVS log [TXT][DIR] Up to [local] / sys / arch / alpha / include

Annotation of sys/arch/alpha/include/profile.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: profile.h,v 1.5 1997/01/24 19:57:17 niklas Exp $      */
        !             2: /*     $NetBSD: profile.h,v 1.7 1996/11/13 22:21:01 cgd Exp $  */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Author: Chris G. Demetriou
        !             9:  *
        !            10:  * Permission to use, copy, modify and distribute this software and
        !            11:  * its documentation is hereby granted, provided that both the copyright
        !            12:  * notice and this permission notice appear in all copies of the
        !            13:  * software, derivative works or modified versions, and any portions
        !            14:  * thereof, and that both notices appear in supporting documentation.
        !            15:  *
        !            16:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            17:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
        !            18:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            19:  *
        !            20:  * Carnegie Mellon requests users of this software to return to
        !            21:  *
        !            22:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
        !            23:  *  School of Computer Science
        !            24:  *  Carnegie Mellon University
        !            25:  *  Pittsburgh PA 15213-3890
        !            26:  *
        !            27:  * any improvements or extensions that they make and grant Carnegie the
        !            28:  * rights to redistribute these changes.
        !            29:  */
        !            30:
        !            31: #define        _MCOUNT_DECL    void mcount
        !            32:
        !            33: #if 0
        !            34: /*
        !            35:  * XXX The definition of MCOUNT below is really the following code, run
        !            36:  * XXX through cpp, since the inline assembly isn't preprocessed.
        !            37:  */
        !            38: #define        OFFSET_AT       0
        !            39: #define OFFSET_V0      8
        !            40: #define OFFSET_T0      16
        !            41: #define OFFSET_T1      24
        !            42: #define OFFSET_T2      32
        !            43: #define OFFSET_T3      40
        !            44: #define OFFSET_T4      48
        !            45: #define OFFSET_T5      56
        !            46: #define OFFSET_T6      64
        !            47: #define OFFSET_T7      72
        !            48: #define OFFSET_S6      80
        !            49: #define OFFSET_A0      88
        !            50: #define OFFSET_A1      96
        !            51: #define OFFSET_A2      104
        !            52: #define OFFSET_A3      112
        !            53: #define OFFSET_A4      120
        !            54: #define OFFSET_A5      128
        !            55: #define OFFSET_T8      136
        !            56: #define OFFSET_T9      144
        !            57: #define OFFSET_T10     152
        !            58: #define OFFSET_T11     160
        !            59: #define OFFSET_RA      168
        !            60: #define OFFSET_T12     176
        !            61: #define OFFSET_GP      184
        !            62: #define        FRAME_SIZE      192
        !            63:
        !            64: LEAF(_mcount,0)                        /* XXX */
        !            65:        .set noat
        !            66:        .set noreorder
        !            67:
        !            68:        lda     sp, -FRAME_SIZE(sp)
        !            69:
        !            70:        stq     at_reg, OFFSET_AT(sp)
        !            71:        stq     v0, OFFSET_V0(sp)
        !            72:        stq     t0, OFFSET_T0(sp)
        !            73:        stq     t1, OFFSET_T1(sp)
        !            74:        stq     t2, OFFSET_T2(sp)
        !            75:        stq     t3, OFFSET_T3(sp)
        !            76:        stq     t4, OFFSET_T4(sp)
        !            77:        stq     t5, OFFSET_T5(sp)
        !            78:        stq     t6, OFFSET_T6(sp)
        !            79:        stq     t7, OFFSET_T7(sp)
        !            80:        stq     s6, OFFSET_S6(sp)       /* XXX because run _after_ prologue. */
        !            81:        stq     a0, OFFSET_A0(sp)
        !            82:        stq     a1, OFFSET_A1(sp)
        !            83:        stq     a2, OFFSET_A2(sp)
        !            84:        stq     a3, OFFSET_A3(sp)
        !            85:        stq     a4, OFFSET_A4(sp)
        !            86:        stq     a5, OFFSET_A5(sp)
        !            87:        stq     t8, OFFSET_T8(sp)
        !            88:        stq     t9, OFFSET_T9(sp)
        !            89:        stq     t10, OFFSET_T10(sp)
        !            90:        stq     t11, OFFSET_T11(sp)
        !            91:        stq     ra, OFFSET_RA(sp)
        !            92:        stq     t12, OFFSET_T12(sp)
        !            93:        stq     gp, OFFSET_GP(sp)
        !            94:
        !            95:        br      pv, LX99
        !            96: LX99:  SETGP(pv)
        !            97:        mov     ra, a0
        !            98:        mov     at_reg, a1
        !            99:        CALL(mcount)
        !           100:
        !           101:        ldq     v0, OFFSET_V0(sp)
        !           102:        ldq     t0, OFFSET_T0(sp)
        !           103:        ldq     t1, OFFSET_T1(sp)
        !           104:        ldq     t2, OFFSET_T2(sp)
        !           105:        ldq     t3, OFFSET_T3(sp)
        !           106:        ldq     t4, OFFSET_T4(sp)
        !           107:        ldq     t5, OFFSET_T5(sp)
        !           108:        ldq     t6, OFFSET_T6(sp)
        !           109:        ldq     t7, OFFSET_T7(sp)
        !           110:        ldq     s6, OFFSET_S6(sp)       /* XXX because run _after_ prologue. */
        !           111:        ldq     a0, OFFSET_A0(sp)
        !           112:        ldq     a1, OFFSET_A1(sp)
        !           113:        ldq     a2, OFFSET_A2(sp)
        !           114:        ldq     a3, OFFSET_A3(sp)
        !           115:        ldq     a4, OFFSET_A4(sp)
        !           116:        ldq     a5, OFFSET_A5(sp)
        !           117:        ldq     t8, OFFSET_T8(sp)
        !           118:        ldq     t9, OFFSET_T9(sp)
        !           119:        ldq     t10, OFFSET_T10(sp)
        !           120:        ldq     t11, OFFSET_T11(sp)
        !           121:        ldq     ra, OFFSET_RA(sp)
        !           122:        stq     t12, OFFSET_T12(sp)
        !           123:        ldq     gp, OFFSET_GP(sp)
        !           124:
        !           125:        ldq     at_reg, OFFSET_AT(sp)
        !           126:
        !           127:        lda     sp, FRAME_SIZE(sp)
        !           128:        ret     zero, (at_reg), 1
        !           129:
        !           130:        END(_mcount)
        !           131: #endif /* 0 */
        !           132:
        !           133: #define MCOUNT asm("           \
        !           134:        .globl  _mcount;        \
        !           135:        .ent    _mcount 0;      \
        !           136: _mcount:;                      \
        !           137:        .frame  $30,0,$26;      \
        !           138:        .set noat;              \
        !           139:        .set noreorder;         \
        !           140:                                \
        !           141:        lda     $30, -192($30); \
        !           142:                                \
        !           143:        stq     $28, 0($30);    \
        !           144:        stq     $0, 8($30);     \
        !           145:        stq     $1, 16($30);    \
        !           146:        stq     $2, 24($30);    \
        !           147:        stq     $3, 32($30);    \
        !           148:        stq     $4, 40($30);    \
        !           149:        stq     $5, 48($30);    \
        !           150:        stq     $6, 56($30);    \
        !           151:        stq     $7, 64($30);    \
        !           152:        stq     $8, 72($30);    \
        !           153:        stq     $15, 80($30);   \
        !           154:        stq     $16, 88($30);   \
        !           155:        stq     $17, 96($30);   \
        !           156:        stq     $18, 104($30);  \
        !           157:        stq     $19, 112($30);  \
        !           158:        stq     $20, 120($30);  \
        !           159:        stq     $21, 128($30);  \
        !           160:        stq     $22, 136($30);  \
        !           161:        stq     $23, 144($30);  \
        !           162:        stq     $24, 152($30);  \
        !           163:        stq     $25, 160($30);  \
        !           164:        stq     $26, 168($30);  \
        !           165:        stq     $27, 176($30);  \
        !           166:        stq     $29, 184($30);  \
        !           167:                                \
        !           168:        br      $27, LX98;      \
        !           169: LX98:  ldgp    $29,0($27);     \
        !           170:        mov     $26, $16;       \
        !           171:        mov     $28, $17;       \
        !           172:        jsr     $26,mcount;     \
        !           173:        ldgp    $29,0($26);     \
        !           174:                                \
        !           175:        ldq     $0, 8($30);     \
        !           176:        ldq     $1, 16($30);    \
        !           177:        ldq     $2, 24($30);    \
        !           178:        ldq     $3, 32($30);    \
        !           179:        ldq     $4, 40($30);    \
        !           180:        ldq     $5, 48($30);    \
        !           181:        ldq     $6, 56($30);    \
        !           182:        ldq     $7, 64($30);    \
        !           183:        ldq     $8, 72($30);    \
        !           184:        ldq     $15, 80($30);   \
        !           185:        ldq     $16, 88($30);   \
        !           186:        ldq     $17, 96($30);   \
        !           187:        ldq     $18, 104($30);  \
        !           188:        ldq     $19, 112($30);  \
        !           189:        ldq     $20, 120($30);  \
        !           190:        ldq     $21, 128($30);  \
        !           191:        ldq     $22, 136($30);  \
        !           192:        ldq     $23, 144($30);  \
        !           193:        ldq     $24, 152($30);  \
        !           194:        ldq     $25, 160($30);  \
        !           195:        ldq     $25, 160($30);  \
        !           196:        ldq     $26, 168($30);  \
        !           197:        ldq     $27, 176($30);  \
        !           198:        ldq     $29, 184($30);  \
        !           199:                                \
        !           200:        lda     $30, 192($30);  \
        !           201:        ret     $31, ($28), 1;  \
        !           202:                                \
        !           203:        .end    _mcount");
        !           204:
        !           205: #ifdef _KERNEL
        !           206: /*
        !           207:  * The following two macros do splhigh and splx respectively.
        !           208:  * _alpha_pal_swpipl is a special version of alpha_pal_swpipl which
        !           209:  * doesn't include profiling support.
        !           210:  *
        !           211:  * XXX These macros should probably use inline assembly.
        !           212:  */
        !           213: #define MCOUNT_ENTER \
        !           214:        s = _alpha_pal_swpipl(ALPHA_PSL_IPL_HIGH)
        !           215: #define MCOUNT_EXIT \
        !           216:        (void)_alpha_pal_swpipl(s);
        !           217: #endif

CVSweb