about summary refs log tree commit diff
path: root/sysdeps/unix/alpha
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/alpha')
-rw-r--r--sysdeps/unix/alpha/sysdep.h78
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