can't get_block(NO_DEV) any more
[minix.git] / common / lib / libc / arch / alpha / gmon / _mcount.S
blob53d92e6b3f2e8114c130b45125d8d2062f6172c1
1 /* $NetBSD: _mcount.S,v 1.2 2005/12/21 18:11:11 christos Exp $ */
3 /*
4  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
5  * All rights reserved.
6  *
7  * Author: Chris G. Demetriou
8  * 
9  * Permission to use, copy, modify and distribute this software and
10  * its documentation is hereby granted, provided that both the copyright
11  * notice and this permission notice appear in all copies of the
12  * software, derivative works or modified versions, and any portions
13  * thereof, and that both notices appear in supporting documentation.
14  * 
15  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
16  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 
17  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
18  * 
19  * Carnegie Mellon requests users of this software to return to
20  *
21  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
22  *  School of Computer Science
23  *  Carnegie Mellon University
24  *  Pittsburgh PA 15213-3890
25  *
26  * any improvements or extensions that they make and grant Carnegie the
27  * rights to redistribute these changes.
28  */
30 #if defined(GPROF) && !defined(_STANDALONE)
32 #include <machine/asm.h>
33 #include <machine/profile.h>
35 #define OFFSET_AT       (0 * 8)
36 #define OFFSET_V0       (1 * 8)
37 #define OFFSET_T0       (2 * 8)
38 #define OFFSET_T1       (3 * 8)
39 #define OFFSET_T2       (4 * 8)
40 #define OFFSET_T3       (5 * 8)
41 #define OFFSET_T4       (6 * 8)
42 #define OFFSET_T5       (7 * 8)
43 #define OFFSET_T6       (8 * 8)
44 #define OFFSET_T7       (9 * 8)
45 #define OFFSET_S6       (10 * 8)
46 #define OFFSET_A0       (11 * 8)
47 #define OFFSET_A1       (12 * 8)
48 #define OFFSET_A2       (13 * 8)
49 #define OFFSET_A3       (14 * 8)
50 #define OFFSET_A4       (15 * 8)
51 #define OFFSET_A5       (16 * 8)
52 #define OFFSET_T8       (17 * 8)
53 #define OFFSET_T9       (18 * 8)
54 #define OFFSET_T10      (19 * 8)
55 #define OFFSET_T11      (20 * 8)
56 #define OFFSET_RA       (21 * 8)
57 #define OFFSET_T12      (22 * 8)
58 #define OFFSET_GP       (23 * 8)
59 #define FRAME_SIZE      (24 * 8)
61 LEAF_NOPROFILE(_mcount,0)               /* XXX */
62         .set noat
63         .set noreorder
65         lda     sp, -FRAME_SIZE(sp)
67         stq     at_reg, OFFSET_AT(sp)
68         stq     v0, OFFSET_V0(sp)
69         stq     t0, OFFSET_T0(sp)
70         stq     t1, OFFSET_T1(sp)
71         stq     t2, OFFSET_T2(sp)
72         stq     t3, OFFSET_T3(sp)
73         stq     t4, OFFSET_T4(sp)
74         stq     t5, OFFSET_T5(sp)
75         stq     t6, OFFSET_T6(sp)
76         stq     t7, OFFSET_T7(sp)
77         stq     s6, OFFSET_S6(sp)       /* XXX because run _after_ prologue. */
78         stq     a0, OFFSET_A0(sp)
79         stq     a1, OFFSET_A1(sp)
80         stq     a2, OFFSET_A2(sp)
81         stq     a3, OFFSET_A3(sp)
82         stq     a4, OFFSET_A4(sp)
83         stq     a5, OFFSET_A5(sp)
84         stq     t8, OFFSET_T8(sp)
85         stq     t9, OFFSET_T9(sp)
86         stq     t10, OFFSET_T10(sp)
87         stq     t11, OFFSET_T11(sp)
88         stq     ra, OFFSET_RA(sp)
89         stq     t12, OFFSET_T12(sp)
90         stq     gp, OFFSET_GP(sp)
92         br      pv, 1f
93 1:      LDGP(pv)
94         mov     ra, a0
95         mov     at_reg, a1
96         CALL(_MCOUNT_FUNC)
98         ldq     v0, OFFSET_V0(sp)
99         ldq     t0, OFFSET_T0(sp)
100         ldq     t1, OFFSET_T1(sp)
101         ldq     t2, OFFSET_T2(sp)
102         ldq     t3, OFFSET_T3(sp)
103         ldq     t4, OFFSET_T4(sp)
104         ldq     t5, OFFSET_T5(sp)
105         ldq     t6, OFFSET_T6(sp)
106         ldq     t7, OFFSET_T7(sp)
107         ldq     s6, OFFSET_S6(sp)       /* XXX because run _after_ prologue. */
108         ldq     a0, OFFSET_A0(sp)
109         ldq     a1, OFFSET_A1(sp)
110         ldq     a2, OFFSET_A2(sp)
111         ldq     a3, OFFSET_A3(sp)
112         ldq     a4, OFFSET_A4(sp)
113         ldq     a5, OFFSET_A5(sp)
114         ldq     t8, OFFSET_T8(sp)
115         ldq     t9, OFFSET_T9(sp)
116         ldq     t10, OFFSET_T10(sp)
117         ldq     t11, OFFSET_T11(sp)
118         ldq     ra, OFFSET_RA(sp)
119         ldq     t12, OFFSET_T12(sp)
120         ldq     gp, OFFSET_GP(sp)
122         ldq     at_reg, OFFSET_AT(sp)
124         lda     sp, FRAME_SIZE(sp)
125         ret     zero, (at_reg), 1
127         END(_mcount)
128 #endif