about summary refs log tree commit diff
path: root/src/thread/i386/syscall_cp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/i386/syscall_cp.s')
-rw-r--r--src/thread/i386/syscall_cp.s36
1 files changed, 15 insertions, 21 deletions
diff --git a/src/thread/i386/syscall_cp.s b/src/thread/i386/syscall_cp.s
index 05e867a1..3bf52c1f 100644
--- a/src/thread/i386/syscall_cp.s
+++ b/src/thread/i386/syscall_cp.s
@@ -2,34 +2,28 @@
 .global __syscall_cp_asm
 .type   __syscall_cp_asm,@function
 __syscall_cp_asm:
+	mov 4(%esp),%ecx
 	pushl %ebx
 	pushl %esi
 	pushl %edi
 	pushl %ebp
-	leal 20(%esp),%ebp
-	call 1f
-1:	popl %eax
-	movl (%ebp),%ecx
-	addl $[1f-1b],%eax
-	movl %eax,4(%ecx)
-	movl %esp,(%ecx)
-	movl 8(%ecx),%eax
+.global __cp_begin
+__cp_begin:
+	movl (%ecx),%eax
 	testl %eax,%eax
-	jnz 2f
-	movl 4(%ebp),%eax
-	movl 8(%ebp),%ebx
-	movl 12(%ebp),%ecx
-	movl 16(%ebp),%edx
-	movl 20(%ebp),%esi
-	movl 24(%ebp),%edi
-	movl 28(%ebp),%ebp
-1:	int $128
+	jnz __cancel
+	movl 24(%esp),%eax
+	movl 28(%esp),%ebx
+	movl 32(%esp),%ecx
+	movl 36(%esp),%edx
+	movl 40(%esp),%esi
+	movl 44(%esp),%edi
+	movl 48(%esp),%ebp
+	int $128
+.global __cp_end
+__cp_end:
 	popl %ebp
 	popl %edi
 	popl %esi
 	popl %ebx
-	xorl %edx,%edx
-	movl 4(%esp),%ecx
-	movl %edx,(%ecx)
 	ret
-2:	call __cancel