patch-1.3.9 linux/arch/alpha/kernel/entry.S

Next file: linux/arch/alpha/kernel/ptrace.c
Previous file: linux/arch/alpha/kernel/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.8/linux/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
@@ -369,6 +369,8 @@
 	jsr $26,($27),alpha_fork
 	br $0,undo_switch_stack
 	ldq $0,0($30)
+	bis $31,2,$19	/* Make sure that the stored user register v0 has */
+	stq $19,0($30)	/* the syscall # for fork */
 	ret $31,($26),1
 .end	sys_fork
 
@@ -406,8 +408,16 @@
 	beq	$1,1f
 	ldq	$27,0($2)
 1:	jsr	$26,($27),do_entSys
+	ldq	$1,0($30)	/* We have to handle ptrace specially */
+	subq	$1,26,$1	/* since it returns a pointer value it will*/
+	bne	$1,3f		/* set up a3 and v0 in the return frame */
+	ldq	$1,72($30)
+	stq	$1,0($30)
+	stq	$0,72($30)
 	bis	$31,$31,$1
-	bge	$0,2f
+	br	$31,ret_from_sys_call
+3:	bis	$31,$31,$1
+	bge	$0,2f		/* the call succeeded */
 	bis	$31,$31,$26	/* tell "ret_from_sys_call" that we can restart */
 	ldq	$19,0($30)	/* .. with this syscall nr */
 	ldq	$20,72($30)	/* .. and this a3 */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this