diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-12-10 23:02:33 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-12-10 23:02:33 +0000 |
commit | c776b3d717593ee3fdd2120f80217f0abe0dec74 (patch) | |
tree | 48e533ed0c7fd5ed1064c2872567493eccd5a82e /sysdeps/unix/sysv/linux/ia64/getcontext.S | |
parent | 26b30508e02c05d506295954d453d797e0c23cb5 (diff) | |
download | glibc-c776b3d717593ee3fdd2120f80217f0abe0dec74.tar glibc-c776b3d717593ee3fdd2120f80217f0abe0dec74.tar.gz glibc-c776b3d717593ee3fdd2120f80217f0abe0dec74.tar.bz2 glibc-c776b3d717593ee3fdd2120f80217f0abe0dec74.zip |
Update.
2003-12-02 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/elf/initfini.c: Add unwind info.
* sysdeps/ia64/dl-machine.h (elf_machine_matches_host): Mark with
attribute "unused".
(elf_machine_dynamic): Mark with attributes "unused" and "const".
(elf_machine_runtime_setup): Likewise.
* sysdeps/generic/dl-fptr.c (make_fptr_table): Mark with
attribute "always_inline".
* sysdeps/ia64/dl-machine.h (__ia64_init_bootstrap_fdesc_table):
Likewise.
* configure.in: Check whether compiler has libunwind support.
* config.make.in (have-cc-with-libunwind): New variable.
* config.h.in (HAVE_CC_WITH_LIBUNWIND): New macro.
* Makeconfig (gnulib): If have-cc-withh-libunwind is "yes", also
mention -lunwind.
003-11-12 David Mosberger <davidm@hpl.hp.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Define DO_CALL_VIA_BREAK.
Redefine DO_CALL to use vdso if supported, otherwise DO_CALL_VIA_BREAK.
Likewise for DO_INLINE_SYSCALL. Make INTERNAL_SYSCALL use
DO_INLINE_SYSCALL.
* sysdeps/unix/sysv/linux/ia64/vfork.S: Use DO_CALL_VIA_BREAK()
instead of DO_CALL().
* sysdeps/unix/sysv/linux/ia64/clone2.S: Use break directly instead
of DO_CALL().
* sysdeps/unix/sysv/linux/ia64/brk.S (__curbrk): Restructure it
to take advantage of DO_CALL() macro.
* sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise.
* sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise.
* elf/rtld.c (dl_main): Restrict dl_sysinfo_dso check to first
program header. On ia64, the check failed previously because
there are two program headers.
* sysdeps/generic/s_nexttowardf.c: Likewise.
* math/bug-nexttoward.c: New file.
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64/getcontext.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/getcontext.S | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sysdeps/unix/sysv/linux/ia64/getcontext.S b/sysdeps/unix/sysv/linux/ia64/getcontext.S index 7b613611da..0f9cc5db19 100644 --- a/sysdeps/unix/sysv/linux/ia64/getcontext.S +++ b/sysdeps/unix/sysv/linux/ia64/getcontext.S @@ -35,26 +35,27 @@ ENTRY(__getcontext) .prologue - alloc r16 = ar.pfs, 1, 0, 4, 0 + .body + alloc r11 = ar.pfs, 1, 0, 4, 0 // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask): - mov r2 = SC_MASK - mov r15 = __NR_rt_sigprocmask - ;; + mov r3 = SC_MASK mov out0 = SIG_BLOCK - mov out1 = 0 - add out2 = r2, in0 - mov out3 = 8 // sizeof kernel sigset_t - break __BREAK_SYSCALL flushrs // save dirty partition on rbs + mov out1 = 0 + add out2 = r3, in0 + + mov out3 = 8 // sizeof kernel sigset_t + DO_CALL(__NR_rt_sigprocmask) mov.m rFPSR = ar.fpsr mov.m rRSC = ar.rsc add r2 = SC_GR+1*8, r32 ;; mov.m rBSP = ar.bsp + .prologue .save ar.unat, rUNAT mov.m rUNAT = ar.unat .body @@ -63,7 +64,7 @@ ENTRY(__getcontext) .mem.offset 0,0; st8.spill [r2] = r1, (5*8 - 1*8) .mem.offset 8,0; st8.spill [r3] = r4, 16 - mov.i rPFS = ar.pfs + mov rPFS = r11 ;; .mem.offset 0,0; st8.spill [r2] = r5, 16 .mem.offset 8,0; st8.spill [r3] = r6, 48 |