OSDN Git Service

Replace FSF snail mail address with URLs
[uclinux-h8/uClibc.git] / libpthread / nptl / sysdeps / unix / sysv / linux / x86_64 / vfork.S
1 /* Copyright (C) 2004 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <http://www.gnu.org/licenses/>.  */
17
18 /* We want an #include_next, but we are the main source file.
19    So, #include ourselves and in that incarnation we can use #include_next.  */
20 #ifndef INCLUDED_SELF
21 # define INCLUDED_SELF
22 # include <vfork.S>
23 #else
24
25 # include <tcb-offsets.h>
26
27 # define SAVE_PID \
28         movl    %fs:PID, %esi;                                                \
29         movl    $0x80000000, %ecx;                                            \
30         movl    %esi, %edx;                                                   \
31         negl    %edx;                                                         \
32         cmove   %ecx, %edx;                                                   \
33         movl    %edx, %fs:PID
34
35 # define RESTORE_PID \
36         testq   %rax, %rax;                                                   \
37         je      1f;                                                           \
38         movl    %esi, %fs:PID;                                                \
39 1:
40
41 # include_next <vfork.S>
42 #endif