diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64/sysdep.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/sysdep.h | 35 |
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; |