diff options
Diffstat (limited to 'sysdeps/unix/alpha/sysdep.h')
-rw-r--r-- | sysdeps/unix/alpha/sysdep.h | 78 |
1 files changed, 38 insertions, 40 deletions
diff --git a/sysdeps/unix/alpha/sysdep.h b/sysdeps/unix/alpha/sysdep.h index 72d84047c2..e27909ad9b 100644 --- a/sysdeps/unix/alpha/sysdep.h +++ b/sysdeps/unix/alpha/sysdep.h @@ -1,20 +1,21 @@ /* Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. Contributed by Brendan Kehoe (brendan@zen.org). -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. */ #include <sysdeps/unix/sysdep.h> @@ -27,36 +28,24 @@ Cambridge, MA 02139, USA. */ #endif #ifdef __STDC__ -#define LEAF(name, framesize) \ - .globl name; \ - .align 3; \ - .ent name, 0; \ - name##: \ - .frame sp, framesize, ra +#define __LABEL(x) x##: #else +#define __LABEL(x) x/**/: +#endif + #define LEAF(name, framesize) \ .globl name; \ .align 3; \ .ent name, 0; \ - name/**/: \ + __LABEL(name) \ .frame sp, framesize, ra -#endif -#ifdef __STDC__ -#define ENTRY(name) \ - .globl name; \ - .align 3; \ - .ent name, 0; \ - name##: \ - .frame sp, 0, ra -#else #define ENTRY(name) \ .globl name; \ .align 3; \ .ent name, 0; \ - name/**/: \ + __LABEL(name) \ .frame sp, 0, ra -#endif /* Mark the end of function SYM. */ #undef END @@ -64,16 +53,20 @@ Cambridge, MA 02139, USA. */ /* Note that PSEUDO/PSEUDO_END use label number 1996---do not use a label of that number between those two macros! */ - -#ifdef __STDC__ + +#ifdef PROF #define PSEUDO(name, syscall_name, args) \ .globl name; \ .align 3; \ .ent name,0; \ - \ -name##: \ - .frame sp, 0, ra \ - .prologue 1; /* yes, we do use gp */ \ +__LABEL(name) \ + .frame sp, 0, ra; \ + ldgp gp,0(pv); \ + .set noat; \ + lda AT,_mcount; \ + jsr AT,(AT),_mcount; \ + .set at; \ + .prologue 1; \ ldiq v0, SYS_ify(syscall_name); \ .set noat; \ call_pal PAL_callsys; \ @@ -85,10 +78,9 @@ name##: \ .globl name; \ .align 3; \ .ent name,0; \ - \ -name/**/: \ +__LABEL(name) \ .frame sp, 0, ra \ - .prologue 1; /* yes, we do use gp */ \ + .prologue 0; \ ldiq v0, SYS_ify(syscall_name); \ .set noat; \ call_pal PAL_callsys; \ @@ -98,13 +90,19 @@ name/**/: \ #endif #undef PSEUDO_END - +#ifdef PROF +#define PSEUDO_END(sym) \ +1996: \ + jmp zero, __syscall_error; \ + END(sym) +#else #define PSEUDO_END(sym) \ 1996: \ br gp, 2f; \ 2: ldgp gp, 0(gp); \ jmp zero, __syscall_error; \ END(sym) +#endif #define r0 v0 #define r1 a4 |