diff --git a/linux/kernel/system_call.s b/linux/kernel/system_call.s index fe13e1d..d26f913 100644 --- a/linux/kernel/system_call.s +++ b/linux/kernel/system_call.s @@ -64,7 +64,7 @@ nr_system_calls = 95 /* 72 */ * Ok, I get parallel printer interrupts while using the floppy for some * strange reason. Urgel. Now I just ignore them. */ -.globl system_call,sys_fork,timer_interrupt,sys_execve,sys_execve2 +.globl system_call,sys_fork,timer_interrupt,sys_execve,sys_execve2,sys_clone .globl hd_interrupt,floppy_interrupt,parallel_interrupt .globl device_not_available, coprocessor_error @@ -227,8 +227,27 @@ sys_fork: pushl %edi pushl %ebp pushl %eax + pushl $0x0 #for flag call copy_process - addl $20,%esp + addl $24,%esp #for flag +1: ret + +.align 4 +sys_clone: + call find_empty_process + testl %eax,%eax + js 1f + pushl %eax + push %gs + pushl %esi + pushl %edi + pushl %ebp + pushl %eax + pushl $0x1 #for flag + call copy_process + addl $24,%esp #for flag + call do_clone + addl $4,%esp 1: ret hd_interrupt: