aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/ia64/sysdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64/sysdep.h')
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep.h35
1 files changed, 14 insertions, 21 deletions
diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep.h b/sysdeps/unix/sysv/linux/ia64/sysdep.h
index 5f7f3fe3eb..8e7f74d58d 100644
--- a/sysdeps/unix/sysv/linux/ia64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/ia64/sysdep.h
@@ -36,16 +36,20 @@
#undef CALL_MCOUNT
#ifdef PROF
-# define CALL_MCOUNT \
- .data; \
-1: data8 0; \
- .previous; \
- alloc out0 = ar.pfs, 8, 0, 4, 0; \
- mov out1 = gp; \
- mov out2 = rp; \
- ;; \
- addl out3 = @ltoff(1b), gp; \
- br.call.sptk.many rp = _mcount \
+# define CALL_MCOUNT \
+ .data; \
+1: data8 0; /* XXX fixme: use .xdata8 once labels work */ \
+ .previous; \
+ .prologue; \
+ .save ar.pfs, r40; \
+ alloc out0 = ar.pfs, 8, 0, 4, 0; \
+ mov out1 = gp; \
+ .save rp, out2; \
+ mov out2 = rp; \
+ .body; \
+ ;; \
+ addl out3 = @ltoff(1b), gp; \
+ br.call.sptk.many rp = _mcount \
;;
#else
# define CALL_MCOUNT /* Do nothing. */
@@ -72,17 +76,6 @@
cmp.eq p6,p0=-1,r10;; \
(p6) br.cond.spnt.few __syscall_error;
-#define ENTRY(name) \
- .psr abi64; \
- .psr lsb; \
- .lsb; \
- .text; \
- .align 32; \
- .proc C_SYMBOL_NAME(name); \
- .global C_SYMBOL_NAME(name); \
- C_LABEL(name) \
- CALL_MCOUNT
-
#define DO_CALL(num) \
mov r15=num; \
break __BREAK_SYSCALL;