Use SHARED instead of PIC.
[kopensolaris-gnu/glibc.git] / sysdeps / mips / machine-gmon.h
1 /* Machine-specific calling sequence for `mcount' profiling function.  MIPS
2    Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public
16    License along with the GNU C Library; see the file COPYING.LIB.  If not,
17    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18    Boston, MA 02111-1307, USA.  */
19
20 #define _MCOUNT_DECL static void __mcount
21
22 /* Call __mcount with our the return PC for our caller,
23    and the return PC our caller will return to.  */
24 #ifdef __PIC__
25 #define CPLOAD ".cpload $25;"
26 #else
27 #define CPLOAD
28 #endif
29
30 #define MCOUNT asm(\
31         ".globl _mcount;" \
32         ".align 2;" \
33         ".type _mcount,@function;" \
34         "_mcount:;" \
35         ".set noreorder;" \
36         ".set noat;" \
37         CPLOAD \
38         "sw $4,8($29);" \
39         "sw $5,12($29);" \
40         "sw $6,16($29);" \
41         "sw $7,20($29);" \
42         "sw $1,0($29);" \
43         "sw $31,4($29);" \
44         "move $5,$31;" \
45         "jal __mcount;" \
46         "move $4,$1;" \
47         "lw $4,8($29);" \
48         "lw $5,12($29);" \
49         "lw $6,16($29);" \
50         "lw $7,20($29);" \
51         "lw $31,4($29);" \
52         "lw $1,0($29);" \
53         "addu $29,$29,8;" \
54         "j $31;" \
55         "move $31,$1;" \
56         ".set reorder;" \
57         ".set at");