Add Changelog ...
[glibc.git] / sysdeps / unix / sysv / linux / m68k / nptl / vfork.S
blobd8c307d2fb9746535c538c90b47ecb36866a3644
1 /* Copyright (C) 2010 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Maxim Kuvyrkov <maxim@codesourcery.com>, 2010.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library.  If not, see
17    <http://www.gnu.org/licenses/>.  */
19 #include <tcb-offsets.h>
21 #define SAVE_PID \
22         bsrl    __m68k_read_tp@PLTPC    ; /* Get the thread pointer.  */ \
23         movel   %a0, %a1                ; /* Save TP for RESTORE_PID.  */ \
24         movel   PID_OFFSET(%a1), %d0    ; /* Get the PID.  */ \
25         movel   %d0, %d1                ; /* Save PID for RESTORE_PID.  */ \
26         negl    %d0                     ; /* Negate the PID.  */ \
27         bne     1f                      ; /* If it was zero... */ \
28         movel   #0x80000000, %d0        ; /* use 0x80000000 instead.  */ \
29 1:      movel   %d0, PID_OFFSET(%a1)    ; /* Store the temporary PID.  */
31 #define RESTORE_PID \
32         tstl    %d0                     ; \
33         beq     1f                      ; /* If we are the parent... */ \
34         movel   %d1, PID_OFFSET(%a1)    ; /* Restore the PID.  */ \
37 #include <sysdeps/unix/sysv/linux/m68k/vfork.S>