diff --git a/ports/ChangeLog.alpha b/ports/ChangeLog.alpha index 282900aaf9..719fc6a9bf 100644 --- a/ports/ChangeLog.alpha +++ b/ports/ChangeLog.alpha @@ -1,5 +1,10 @@ 2012-08-08 Richard Henderson + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use dwarf2 + cfi markup for unwind. Adjust stack early so that the normal + syscall error path can be used. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_STAT64_SYSCALL): Remove. * sysdeps/unix/sysv/linux/alpha/fxstat.c: Remove test diff --git a/ports/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S b/ports/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S index ec24297b0b..74ad499f6d 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S +++ b/ports/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 1993-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger , 1995. @@ -22,39 +22,29 @@ .text -LEAF(__ieee_get_fp_control, 16) -#ifdef PROF - ldgp gp, 0(pv) - lda sp, -16(sp) - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at - .prologue 1 -#elif defined PIC - lda sp, -16(sp) - .prologue 0 -#else - ldgp gp, 0(pv) +ENTRY(__ieee_get_fp_control) + cfi_startproc + PSEUDO_PROLOGUE + lda sp, -16(sp) - .prologue 1 -#endif + cfi_adjust_cfa_offset(16) mov sp, a1 ldi a0, GSI_IEEE_FP_CONTROL ldi v0, __NR_osf_getsysinfo call_pal PAL_callsys - bne a3, $error - ldq v0, 0(sp) + ldq t0, 0(sp) lda sp, 16(sp) - ret + cfi_adjust_cfa_offset(-16) -$error: - lda sp, 16(sp) - SYSCALL_ERROR_HANDLER + bne a3, SYSCALL_ERROR_LABEL + + mov t0, v0 + ret - END(__ieee_get_fp_control) +PSEUDO_END(__ieee_get_fp_control) + cfi_endproc libc_hidden_def(__ieee_get_fp_control) weak_alias (__ieee_get_fp_control, ieee_get_fp_control) diff --git a/ports/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S b/ports/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S index 1d425249da..f022b42600 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S +++ b/ports/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S @@ -1,5 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 2003, 2004 - Free Software Foundation, Inc. +/* Copyright (C) 1993-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger , 1995. @@ -21,40 +20,27 @@ #include "kernel_sysinfo.h" -LEAF(__ieee_set_fp_control, 16) -#ifdef PROF - ldgp gp, 0(pv) - lda sp, -16(sp) - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at - .prologue 1 -#elif defined PIC - lda sp, -16(sp) - .prologue 0 -#else - ldgp gp, 0(pv) +ENTRY(__ieee_set_fp_control) + cfi_startproc + PSEUDO_PROLOGUE + lda sp, -16(sp) - .prologue 1 -#endif + cfi_adjust_cfa_offset(16) + ldi v0, __NR_osf_setsysinfo stq a0, 0(sp) mov sp, a1 ldi a0, SSI_IEEE_FP_CONTROL - ldi v0, __NR_osf_setsysinfo call_pal PAL_callsys - bne a3, $error - lda sp, 16(sp) - ret + cfi_adjust_cfa_offset(-16) -$error: - lda sp, 16(sp) - SYSCALL_ERROR_HANDLER + bne a3, SYSCALL_ERROR_LABEL + ret - END(__ieee_set_fp_control) +PSEUDO_END(__ieee_set_fp_control) + cfi_endproc libc_hidden_def(__ieee_set_fp_control) weak_alias (__ieee_set_fp_control, ieee_set_fp_control)