aboutsummaryrefslogtreecommitdiff
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