about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/x86_64/getcontext.S
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2002-08-31 08:06:48 +0000
committerAndreas Jaeger <aj@suse.de>2002-08-31 08:06:48 +0000
commitc816e074135d0de7dfd9e22e8e2bd4112736ae00 (patch)
tree652cb8d7611be3887b5b66e772e0e435a468650a /sysdeps/unix/sysv/linux/x86_64/getcontext.S
parentba1e2fe668361bd6887f237f70f47def96fa7bef (diff)
downloadglibc-c816e074135d0de7dfd9e22e8e2bd4112736ae00.tar.gz
glibc-c816e074135d0de7dfd9e22e8e2bd4112736ae00.tar.xz
glibc-c816e074135d0de7dfd9e22e8e2bd4112736ae00.zip
Update.
2002-08-31  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/x86_64/Makefile (sysdep_routines): Add
	__start_context.

	* sysdeps/unix/sysv/linux/x86_64/__start_context.S: New file.

	* sysdeps/unix/sysv/linux/x86_64/makecontext.c: New file.

	* sysdeps/unix/sysv/linux/x86_64/ucontext_i.h: Add defines for
	registers used for passing args.

	* sysdeps/unix/sysv/linux/x86_64/swapcontext.S: Save and restore
	all needed registers.

	* sysdeps/unix/sysv/linux/x86_64/setcontext.S: Restore all
	registers.

	* sysdeps/unix/sysv/linux/x86_64/getcontext.S: Save all needed
	registers.
Diffstat (limited to 'sysdeps/unix/sysv/linux/x86_64/getcontext.S')
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/getcontext.S10
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/getcontext.S b/sysdeps/unix/sysv/linux/x86_64/getcontext.S
index e941f5d5fd..2f2c710040 100644
--- a/sysdeps/unix/sysv/linux/x86_64/getcontext.S
+++ b/sysdeps/unix/sysv/linux/x86_64/getcontext.S
@@ -33,7 +33,8 @@
 
 
 ENTRY(__getcontext)
-	/* Save the preserved registers and the return address.  */
+	/* Save the preserved registers, the registers used for passing
+	   args, and the return address.  */
 	movq	%rbx, oRBX(%rdi)
 	movq	%rbp, oRBP(%rdi)
 	movq	%r12, oR12(%rdi)
@@ -41,6 +42,13 @@ ENTRY(__getcontext)
 	movq	%r14, oR14(%rdi)
 	movq	%r15, oR15(%rdi)
 
+	movq	%rdi, oRDI(%rdi)
+	movq	%rsi, oRSI(%rdi)
+	movq	%rdx, oRDX(%rdi)
+	movq	%rcx, oRCX(%rdi)
+	movq	%r8, oR8(%rdi)
+	movq	%r9, oR9(%rdi)
+
 	movq	(%rsp), %rcx
 	movq	%rcx, oRIP(%rdi)
 	leaq	8(%rsp), %rcx		/* Exclude the return address.  */