diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-02-13 11:46:38 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-02-22 04:30:38 -0800 |
commit | ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 (patch) | |
tree | 2119453ba4c6feff51602daf3a7eebd289b28467 /sysdeps/unix/sysv/linux/x86_64/clone.S | |
parent | f8ff5a3cc2e401c586244bbdc27ea236229b7cb7 (diff) | |
download | glibc-ebbb8c9f64c3486603ef4ccee4dd2a5574e41039.tar glibc-ebbb8c9f64c3486603ef4ccee4dd2a5574e41039.tar.gz glibc-ebbb8c9f64c3486603ef4ccee4dd2a5574e41039.tar.bz2 glibc-ebbb8c9f64c3486603ef4ccee4dd2a5574e41039.zip |
x86_64/clone.S: Upate comments
Diffstat (limited to 'sysdeps/unix/sysv/linux/x86_64/clone.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/clone.S | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S index 51638d897b..31ac12da0c 100644 --- a/sysdeps/unix/sysv/linux/x86_64/clone.S +++ b/sysdeps/unix/sysv/linux/x86_64/clone.S @@ -24,18 +24,20 @@ #include <asm-syntax.h> /* The userland implementation is: - int clone (int (*fn)(void *arg), void *child_stack, int flags, void *arg), + int clone (int (*fn)(void *arg), void *child_stack, int flags, + void *arg, pid_t *parent_tid, void *tls, pid_t *child_tid); the kernel entry is: - int clone (long flags, void *child_stack). + int clone (long flags, void *child_stack, pid_t *parent_tid, + pid_t *child_tid, void *tls); The parameters are passed in register and on the stack from userland: rdi: fn rsi: child_stack rdx: flags rcx: arg - r8d: TID field in parent - r9d: thread pointer -%esp+8: TID field in child + r8: TID field in parent + r9: thread pointer +%rsp+8: TID field in child The kernel expects: rax: system call number @@ -60,7 +62,7 @@ ENTRY (__clone) movq %rcx,8(%rsi) /* Save the function pointer. It will be popped off in the - child in the ebx frobbing below. */ + child. */ movq %rdi,0(%rsi) /* Do the system call. */ |