aboutsummaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2012-08-07 09:48:05 -0700
committerRichard Henderson <rth@twiddle.net>2012-08-08 07:44:19 -0700
commit6ee732b7cd8c29e4c1c903ae69d6f57c73afc0a3 (patch)
tree934a65859e39bc2a9371c292a98414e7b3d2d95d /ports
parent6360984bc3ee9534437f5f62d65ad31b47c33b35 (diff)
downloadglibc-6ee732b7cd8c29e4c1c903ae69d6f57c73afc0a3.zip
glibc-6ee732b7cd8c29e4c1c903ae69d6f57c73afc0a3.tar.gz
glibc-6ee732b7cd8c29e4c1c903ae69d6f57c73afc0a3.tar.bz2
alpha: Tidy up ieee_get/set_fp_control syscalls
Diffstat (limited to 'ports')
-rw-r--r--ports/ChangeLog.alpha5
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S38
-rw-r--r--ports/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S38
3 files changed, 31 insertions, 50 deletions
diff --git a/ports/ChangeLog.alpha b/ports/ChangeLog.alpha
index 282900a..719fc6a 100644
--- a/ports/ChangeLog.alpha
+++ b/ports/ChangeLog.alpha
@@ -1,5 +1,10 @@
2012-08-08 Richard Henderson <rth@redhat.com>
+ * 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 ec24297..74ad499 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 <davidm@azstarnet.com>, 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 1d42524..f022b42 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 <davidm@azstarnet.com>, 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)