about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/ia64/setcontext.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-04-06 21:58:34 +0000
committerUlrich Drepper <drepper@redhat.com>2001-04-06 21:58:34 +0000
commit1a51bde7717d8f0458b682576029576225cf874f (patch)
tree3fd6670fdd151f6b463039b2121caaee06496bf3 /sysdeps/unix/sysv/linux/ia64/setcontext.S
parent99ee59707bafccd24e6dd38190cb3501ffa5c70a (diff)
downloadglibc-1a51bde7717d8f0458b682576029576225cf874f.tar.gz
glibc-1a51bde7717d8f0458b682576029576225cf874f.tar.xz
glibc-1a51bde7717d8f0458b682576029576225cf874f.zip
Update.
2001-04-06  David Mosberger  <davidm@hpl.hp.com>

	* stdlib/tst-setcontext.c: Move st2[] to global scope.
	(f2): Verify that stack pointer is inside st2[].

	* sysdeps/unix/sysv/linux/ia64/getcontext.S: It helps to save r12.
	* sysdeps/unix/sysv/linux/ia64/setcontext.S: It helps to restore r12.
Diffstat (limited to 'sysdeps/unix/sysv/linux/ia64/setcontext.S')
-rw-r--r--sysdeps/unix/sysv/linux/ia64/setcontext.S11
1 files changed, 6 insertions, 5 deletions
diff --git a/sysdeps/unix/sysv/linux/ia64/setcontext.S b/sysdeps/unix/sysv/linux/ia64/setcontext.S
index 0d6e9a0bce..3964ed397a 100644
--- a/sysdeps/unix/sysv/linux/ia64/setcontext.S
+++ b/sysdeps/unix/sysv/linux/ia64/setcontext.S
@@ -87,9 +87,12 @@ ENTRY(__setcontext)
 	ld8.fill r5 = [r3], 16
 	mov b0 = rB0
 	;;
-	ld8.fill r6 = [r2]
+	ld8.fill r6 = [r2], 48
 	ld8.fill r7 = [r3], (SC_FR+2*16-(SC_GR+7*8))
-	adds r2 = (SC_FR+3*16-(SC_GR+6*8)), r2
+	;;
+	ld8.fill sp = [r2], (SC_FR+3*16-(SC_GR+12*8))
+	mov.m ar.fpsr = rFPSR
+	mov.i ar.pfs = rPFS
 	;;
 	ldf.fill f3 = [r2], 16
 	ldf.fill f2 = [r3], 48
@@ -132,10 +135,8 @@ ENTRY(__setcontext)
 	mov pr = rPR, -1
 	;;
 	mov.m ar.rsc = rTMP		// put RSE into enforced lazy mode
-	mov.m ar.fpsr = rFPSR
-	mov.i ar.pfs = rPFS
 	;;
-	loadrs				// drop dirty partition is empty
+	loadrs				// drop dirty partition
 	;;
 	mov.m ar.bspstore = rBSP
 	mov.m ar.unat = rUNAT