Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
alpha: Tidy up ieee_get/set_fp_control syscalls
  • Loading branch information
Richard Henderson committed Aug 8, 2012
1 parent 6360984 commit 6ee732b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 50 deletions.
5 changes: 5 additions & 0 deletions 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
Expand Down
38 changes: 14 additions & 24 deletions 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.

Expand All @@ -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)
38 changes: 12 additions & 26 deletions 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.

Expand All @@ -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)

0 comments on commit 6ee732b

Please sign in to comment.