X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=sysdeps%2Falpha%2F_mcount.S;h=615f43938d92dd3396309586859f3e5bd7a7fc8a;hp=2d6e2ed5325aaa667deebcfb6c3cf9545a127622;hb=0bcaf0104a9fb1337be498a3b91808eaa0ff3d21;hpb=3570301602a10028ab124392208a3d2e7c732c1a diff --git a/sysdeps/alpha/_mcount.S b/sysdeps/alpha/_mcount.S index 2d6e2ed532..615f43938d 100644 --- a/sysdeps/alpha/_mcount.S +++ b/sysdeps/alpha/_mcount.S @@ -1,51 +1,46 @@ /* Machine-specific calling sequence for `mcount' profiling function. alpha -Copyright (C) 1995 Free Software Foundation, Inc. -Contributed by David Mosberger (davidm@cs.arizona.edu). -This file is part of the GNU C Library. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Contributed by David Mosberger (davidm@cs.arizona.edu). + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* Assembly stub to invoke _mcount(). Compiler generated code calls -this stub after executing a function's prologue and without saving any -registers. It is therefore necessary to preserve a0..a5 as they may -contain function arguments. To work correctly with frame- less -functions, it is also necessary to preserve ra. Finally, division -routines are invoked with a special calling convention and the -compiler treats those calls as if they were instructions. In -particular, it doesn't save any of the temporary registers (caller -saved registers). It is therefore necessary to preserve all -caller-saved registers as well - -Upon entering _mcount, register $at holds the return address and ra -holds the return address of the function's caller (selfpc and frompc, -respectively in gmon.c language...). */ + this stub after executing a function's prologue and without saving any + registers. It is therefore necessary to preserve a0..a5 as they may + contain function arguments. To work correctly with frame- less + functions, it is also necessary to preserve ra. Finally, division + routines are invoked with a special calling convention and the + compiler treats those calls as if they were instructions. In + particular, it doesn't save any of the temporary registers (caller + saved registers). It is therefore necessary to preserve all + caller-saved registers as well. + + Upon entering _mcount, register $at holds the return address and ra + holds the return address of the function's caller (selfpc and frompc, + respectively in gmon.c language...). */ #include -#ifdef __linux__ -# include -#else -# include -#endif - -#undef ret /* discard `ret' as defined in sysdep.h */ .set noat .set noreorder -ENTRY(_mcount) +LEAF(_mcount, 0xb0) + .prologue 0 + subq sp, 0xb0, sp stq a0, 0x00(sp) mov ra, a0 # a0 = caller-pc @@ -71,8 +66,6 @@ ENTRY(_mcount) stq t5, 0x70(sp) stq t6, 0x78(sp) - lda pv, __mcount - stq t7, 0x80(sp) stq t8, 0x88(sp) stq t9, 0x90(sp) @@ -80,7 +73,7 @@ ENTRY(_mcount) stq t11, 0xa0(sp) stq v0, 0xa8(sp) - jsr ra, (pv), __mcount + jsr ra, __mcount ldq a0, 0x00(sp) ldq a1, 0x08(sp) @@ -109,4 +102,6 @@ ENTRY(_mcount) addq sp, 0xb0, sp ret zero,($at),1 - .end _mcount + END(_mcount) + +weak_alias (_mcount, mcount)