summaryrefslogtreecommitdiff
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