diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-03-16 21:07:22 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-03-16 21:07:22 +0000 |
commit | aeba9785a6e2e8dca120bb0b62b74ea1eda0a4a8 (patch) | |
tree | 8438c4d6081766a1ede6c89328dfbcd389dbff82 /sysdeps/unix/sysv/linux/ia64/__start_context.S | |
parent | b8a8413c6f7970bc4d5659791c3b3670cc037578 (diff) | |
download | glibc-aeba9785a6e2e8dca120bb0b62b74ea1eda0a4a8.tar glibc-aeba9785a6e2e8dca120bb0b62b74ea1eda0a4a8.tar.gz glibc-aeba9785a6e2e8dca120bb0b62b74ea1eda0a4a8.tar.bz2 glibc-aeba9785a6e2e8dca120bb0b62b74ea1eda0a4a8.zip |
Update.
2001-03-16 David Mosberger <davidm@hpl.hp.com>
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
Drop hack that was needed for 2.1.1 kernel headers.
* sysdeps/unix/sysv/linux/ia64/ucontext_i.h: New file.
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Rewrite to make it
overlay with kernel's "struct sigcontext".
* sysdeps/unix/sysv/linux/ia64/Makefile (sysdep_headers): Add
sys/rse.h for "misc" subdir.
(sysdep_routines): Add __start_context for "stdlib" subdir.
* sysdeps/unix/sysv/linux/ia64/sys/rse.h: New file (based on
kernel file of the same name).
* stdlib/Makefile (tests): Add tst-setcontext.
* stdlib/tst-setcontext.c: New file (based on a sample program by
Uli Drepper).
* sysdeps/unix/sysv/linux/ia64/setcontext.S: New file.
* sysdeps/unix/sysv/linux/ia64/getcontext.S: New file.
* sysdeps/unix/sysv/linux/ia64/__start_context.S: New file.
* sysdeps/unix/sysv/linux/ia64/makecontext.c: New file.
* sysdeps/unix/sysv/linux/ia64/__longjmp.S (__longjmp): Use extr.u
instead of shift & and.
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64/__start_context.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/__start_context.S | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/ia64/__start_context.S b/sysdeps/unix/sysv/linux/ia64/__start_context.S new file mode 100644 index 0000000000..c21b4cf33a --- /dev/null +++ b/sysdeps/unix/sysv/linux/ia64/__start_context.S @@ -0,0 +1,51 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by David Mosberger-Tang <davidm@hpl.hp.com>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include <sysdep.h> +#include <features.h> + +/* When a context set up by __makecontext() is activated, control + transfers to __start_context. When we get here: + + b1 = entry point of function to call + in0 = address of UCP to resume after function returns + in1 = global pointer for __start_context + out0 .. outN = arguments for function */ + +ENTRY(__start_context) + .prologue + alloc r2 = ar.pfs, 2, 0, 8, 0 + + .save rp, r4 // terminate call chain with a NULL rp + mov r4 = r0 + ;; + + .body + br.call.sptk rp = b1 +1: + mov gp = in1 // restore gp + cmp.ne p6,p0 = in0, r0 // uc_link != 0 ? + ;; +(p6) mov out0 = in0 +(p6) br.call.sptk rp = __setcontext +.Lexit: + mov out0 = 0 + br.call.sptk rp = exit + +1: br.cond.sptk .Lexit +END(__start_context) |