Changeset 3860


Ignore:
Timestamp:
Jun 25, 2014, 10:55:49 PM (11 years ago)
Author:
bird
Message:

some more watcom fun.

Location:
trunk/libc
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/libc/include/386/builtin.h

    r3821 r3860  
    4040# ifdef _MSC_VER
    4141signed char __cxchg (__volatile__ signed char *p, signed char v);
    42 signed char __sxchg (__volatile__ signed char *p, signed char v);
     42signed char __sxchg (__volatile__ signed short *p, signed short v);
    4343# else /* !_MSC_VER */
    4444static __inline__ signed char __cxchg (__volatile__ signed char *p, signed char v)
     
    126126#endif
    127127
    128 #ifndef __WATCOMC__ /** @todo port me later. */
    129 
    130128/**
    131129 * Atomically add a 32-bit unsigned value to another.
     
    134132 * @param   uAdd    The value to add to *pu.
    135133 */
     134#ifdef __WATCOMC__
     135void __atomic_add(__volatile__ unsigned *pu, const unsigned uAdd);
     136# pragma aux __atomic_add = "lock add [edx], eax" parm [edx] [eax]
     137#else
    136138static __inline__ void __atomic_add(__volatile__ unsigned *pu, const unsigned uAdd)
    137139{
     140# ifdef _MSC_VER
     141    _InterlockedAdd((volatile signed int *)pu, uAdd);
     142# else
    138143    __asm__ __volatile__("lock; addl %1, %0"
    139144                         : "=m" (*pu)
    140145                         : "nr" (uAdd),
    141146                           "m"  (*pu));
    142 }
     147# endif
     148}
     149#endif
    143150
    144151/**
     
    148155 * @param   uAdd    The value to subtract from *pu.
    149156 */
     157#ifdef __WATCOMC__
     158void __atomic_sub(__volatile__ unsigned *pu, const unsigned uAdd);
     159# pragma aux __atomic_sub = "lock sub [edx], eax" parm [edx] [eax]
     160#else
    150161static __inline__ void __atomic_sub(__volatile__ unsigned *pu, const unsigned uSub)
    151162{
     163# ifdef _MSC_VER
     164    _InterlockedAdd((volatile signed int *)pu, -(signed int)uAdd);
     165# else
    152166    __asm__ __volatile__("lock; subl %1, %0"
    153167                         : "=m" (*pu)
    154168                         : "nr" (uSub),
    155169                           "m"  (*pu));
    156 }
     170# endif
     171}
     172#endif
    157173
    158174/**
     
    161177 * @param   pu      Pointer to the value to increment.
    162178 */
     179#ifdef __WATCOMC__
     180void __atomic_increment(__volatile__ unsigned *pu);
     181# pragma aux __atomic_increment = "lock inc dword ptr [edx]" parm [edx]
     182#else
    163183static __inline__ void __atomic_increment(__volatile__ unsigned *pu)
    164184{
     185# ifdef _MSC_VER
     186    _InterlockedIncrement((signed int volatile *)pu);
     187# else
    165188    __asm__ __volatile__("lock; incl %0"
    166189                         : "=m" (*pu)
    167190                         : "m"  (*pu));
    168 }
     191# endif
     192}
     193#endif
    169194
    170195/**
     
    174199 * @param   pu32    Pointer to the value to increment.
    175200 */
     201#ifdef __WATCOMC__
     202uint32_t __atomic_increment_u32(uint32_t __volatile__ *pu32);
     203# pragma aux __atomic_increment_u32 = \
     204    "mov eax, 1" \
     205    "lock xadd [edx], eax" \
     206    "inc eax" \
     207    parm [edx]  modify [eax]  value [eax]
     208#else
    176209static __inline__ uint32_t __atomic_increment_u32(uint32_t __volatile__ *pu32)
    177210{
    178211    uint32_t u32;
     212# ifdef _MSC_VER
     213    u32 = _InterlockedIncrement((signed int volatile *)pu32);
     214# else
    179215    __asm__ __volatile__("lock; xadd %0, %1\n\t"
    180216                         "incl %0\n\t"
     
    183219                         : "0" (1)
    184220                         : "memory");
     221# endif
    185222    return u32;
    186223}
     224#endif
    187225
    188226/**
     
    192230 * @param   pi32    Pointer to the value to increment.
    193231 */
     232#ifdef __WATCOMC__
     233int32_t __atomic_increment_s32(int32_t __volatile__ *pi32);
     234# pragma aux __atomic_increment_s32 = \
     235    "mov eax, 1" \
     236    "lock xadd [edx], eax" \
     237    "inc eax" \
     238    parm [edx]  modify [eax]  value [eax]
     239#else
    194240static __inline__ int32_t __atomic_increment_s32(int32_t __volatile__ *pi32)
    195241{
    196242    int32_t i32;
     243# ifdef _MSC_VER
     244    i32 = _InterlockedIncrement((signed int volatile *)pi32);
     245# else
    197246    __asm__ __volatile__("lock; xadd %0, %1\n\t"
    198247                         "incl %0\n\t"
     
    201250                         : "0" (1)
    202251                         : "memory");
     252# endif
    203253    return i32;
    204254}
     255#endif
    205256
    206257/**
     
    209260 * @param   pu16    Pointer to the value to increment.
    210261 */
     262#ifdef __WATCOMC__
     263void __atomic_increment_u16(uint16_t __volatile__ *pu16);
     264# pragma aux __atomic_increment_u16 = "lock inc word ptr [edx]" parm [edx]
     265#else
    211266static __inline__ void __atomic_increment_u16(uint16_t __volatile__ *pu16)
    212267{
     268# ifdef _MSC_VER
     269    _InterlockedIncrement16((signed short volatile *)pu16);
     270# else
    213271    __asm__ __volatile__("lock; incw %0"
    214272                         : "=m" (*pu16)
    215273                         : "m"  (*pu16));
    216 }
     274# endif
     275}
     276#endif
    217277
    218278/**
     
    221281 * @param   pu      Pointer to the value to decrement.
    222282 */
     283#ifdef __WATCOMC__
     284void __atomic_decrement(__volatile__ unsigned *pu);
     285# pragma aux __atomic_decrement = "lock dec dword ptr [edx]" parm [edx]
     286#else
    223287static __inline__ void __atomic_decrement(__volatile__ unsigned *pu)
    224288{
     289# ifdef _MSC_VER
     290    _InterlockedDecrement((signed int volatile *)pu);
     291# else
    225292    __asm__ __volatile__("lock; decl %0"
    226293                         : "=m" (*pu)
    227294                         : "m"  (*pu));
    228 }
     295# endif
     296}
     297#endif
    229298
    230299/**
     
    234303 * @param   pu32      Pointer to the value to decrement.
    235304 */
     305#ifdef __WATCOMC__
     306uint32_t __atomic_decrement_u32(__volatile__ uint32_t *pu32);
     307# pragma aux __atomic_decrement_u32 = \
     308    "mov eax, -1" \
     309    "lock xadd [edx], eax" \
     310    "dec eax" \
     311    parm [edx]  modify [eax]  value [eax]
     312#else
    236313static __inline__ uint32_t __atomic_decrement_u32(__volatile__ uint32_t *pu32)
    237314{
    238315    uint32_t u32;
     316# ifdef _MSC_VER
     317    u32 = _InterlockedDecrement((signed int volatile *)pu32);
     318# else
    239319    __asm__ __volatile__("lock; xadd %0, %1\n\t"
    240320                         "decl %0\n\t"
     
    243323                         : "0" (-1)
    244324                         : "memory");
     325# endif
    245326    return u32;
    246327}
     328#endif
    247329
    248330/**
     
    252334 * @param   pi32    Pointer to the value to decrement.
    253335 */
     336#ifdef __WATCOMC__
     337int32_t __atomic_decrement_s32(__volatile__ int32_t *pi32);
     338# pragma aux __atomic_decrement_s32 = \
     339    "mov eax, -1" \
     340    "lock xadd [edx], eax" \
     341    "dec eax" \
     342    parm [edx]  modify [eax]  value [eax]
     343#else
    254344static __inline__ int32_t __atomic_decrement_s32(__volatile__ int32_t *pi32)
    255345{
    256346    int32_t i32;
     347# ifdef _MSC_VER
     348    i32 = _InterlockedDecrement((signed int volatile *)pi32);
     349# else
    257350    __asm__ __volatile__("lock; xadd %0, %1\n\t"
    258351                         "decl %0\n\t"
     
    261354                         : "0" (-1)
    262355                         : "memory");
     356# endif
    263357    return i32;
    264358}
     359#endif
    265360
    266361/**
     
    270365 * @param   pu16    Pointer to the value to decrement.
    271366 */
     367#ifdef __WATCOMC__
     368void __atomic_decrement_u16(uint16_t __volatile__ *pu16);
     369# pragma aux __atomic_decrement_u16 = "lock dec word ptr [edx]" parm [edx]
     370#else
    272371static __inline__ void __atomic_decrement_u16(uint16_t __volatile__ *pu16)
    273372{
     373# ifdef _MSC_VER
     374    i32 = _InterlockedDecrement16((signed short volatile *)pu16);
     375# else
    274376    __asm__ __volatile__("lock; decw %0"
    275377                         : "=m" (*pu16)
    276378                         : "m"  (*pu16));
    277 }
     379# endif
     380}
     381#endif
    278382
    279383/**
     
    285389 * @param   uMax    *pu must not be above this value.
    286390 */
     391#if !defined(__GNUC__)
     392int __atomic_increment_max(__volatile__ unsigned *pu, const unsigned uMax);
     393#else
    287394static __inline__ int __atomic_increment_max(__volatile__ unsigned *pu, const unsigned uMax)
    288395{
     
    310417    return rc;
    311418}
     419#endif
    312420
    313421
     
    320428 * @param   u16Max  *pu16 must not be above this value after the incrementation.
    321429 */
    322 static inline unsigned __atomic_increment_word_max(volatile uint16_t *pu16, const uint16_t u16Max)
     430#if !defined(__GNUC__)
     431unsigned __atomic_increment_word_max(__volatile__ uint16_t *pu16, const uint16_t u16Max);
     432#else
     433static __inline__ unsigned __atomic_increment_word_max(__volatile__ uint16_t *pu16, const uint16_t u16Max)
    323434{
    324435    unsigned rc = 0;
     
    344455    return rc;
    345456}
     457#endif
    346458
    347459
     
    354466 * @param   uMin    *pu must not be below this value.
    355467 */
     468#if !defined(__GNUC__)
     469int __atomic_decrement_min(__volatile__ unsigned *pu, const unsigned uMin);
     470#else
    356471static __inline__ int __atomic_decrement_min(__volatile__ unsigned *pu, const unsigned uMin)
    357472{
     
    379494    return rc;
    380495}
     496#endif
    381497
    382498
     
    389505 * @param   u16Min  *pu16 must not be below this value after the decrementation.
    390506 */
    391 static inline unsigned __atomic_decrement_word_min(volatile uint16_t *pu16, const uint16_t u16Min)
     507#if !defined(__GNUC__)
     508unsigned __atomic_decrement_word_min(__volatile__ uint16_t *pu16, const uint16_t u16Min);
     509#else
     510static __inline__ unsigned __atomic_decrement_word_min(__volatile__ uint16_t *pu16, const uint16_t u16Min)
    392511{
    393512    unsigned rc = 0;
     
    413532    return rc;
    414533}
    415 
    416 
     534#endif
     535
     536
     537#ifndef __WATCOMC__ /** @todo port me later. */
    417538/**
    418539 * Atomically compare and exchange a 32-bit word.
     
    712833#define _rotr(V,S) _lrotr (V, S)
    713834#define _rotl(V,S) _lrotl (V, S)
    714 
    715 
     835#endif /* #ifndef __WATCOMC__ -  port me later. */
     836
     837
     838#ifdef __WATCOMC__
     839int __fls(int v);
     840# pragma aux __fls = \
     841    "bsr edx, eax" \
     842    "jnz done" \
     843    "mov eax, -1" \
     844    "done:" \
     845    "inc eax" \
     846    parm [edx]  modify [eax]  value [eax]
     847#else
    716848static __inline__ int __fls (int v)
    717849{
    718850  int r;
    719 
    720851  __asm__ __volatile__ ("bsrl %1, %0;"
    721852                        "jnz 1f;"
     
    726857  return r + 1;
    727858}
     859#endif
     860
     861
     862#ifndef __WATCOMC__ /** @todo port me later. */
    728863
    729864/* Quick routines similar to div() and friends, but inline */
  • trunk/libc/include/InnoTekLIBC/fork.h

    r3803 r3860  
    525525 * @param   pfnCallback     Callback function. See __LIBC_PFNFORKCALLBACK for prototype.
    526526 */
    527 #define _FORK_PARENT1(uPriority, pfnCallback) \
    528     static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_parent1_##pfnCallback = { pfnCallback, uPriority + (unsigned)(&__fork_parent1_##pfnCallback - &__fork_parent1_##pfnCallback) }; \
    529     __asm__ (".stabs \"___fork_parent1__\", 23, 0, 0, ___fork_parent1_" #pfnCallback);
     527#ifdef __WATCOMC__
     528# define _FORK_PARENT1(uPriority, pfnCallback) \
     529    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_parent1_##pfnCallback = { pfnCallback, uPriority }; \
     530    const __LIBC_FORKCALLBACK * __based(__segname("forkpar1")) __fork_parent1_ptr_##pfnCallback = &__fork_parent1_##pfnCallback
     531
     532#elif defined(_MSC_VER)
     533# define _FORK_PARENT1(uPriority, pfnCallback) \
     534    __Pragma(section("forkpar1", read, write)); \
     535    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_parent1_##pfnCallback = { pfnCallback, uPriority }; \
     536    const __LIBC_FORKCALLBACK * __declspec(allocate("forkpar1")) __fork_parent1_ptr_##pfnCallback = &__fork_parent1_##pfnCallback
     537
     538#else
     539# define _FORK_PARENT1(uPriority, pfnCallback) \
     540    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_parent1_##pfnCallback = \
     541    { pfnCallback, uPriority + (unsigned)(&__fork_parent1_##pfnCallback - &__fork_parent1_##pfnCallback) }; \
     542    __asm__ (".stabs \"___fork_parent1__\", 23, 0, 0, ___fork_parent1_" #pfnCallback)
     543#endif
    530544
    531545/** @def _FORK_CHILD1
     
    538552 * @param   pfnCallback     Callback function. See __LIBC_PFNFORKCALLBACK for prototype.
    539553 */
    540 #define _FORK_CHILD1(uPriority, pfnCallback) \
     554#ifdef __WATCOMC__
     555# define _FORK_CHILD1(uPriority, pfnCallback) \
     556    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_child1_##pfnCallback = { pfnCallback, uPriority }; \
     557    const __LIBC_FORKCALLBACK * __based(__segname("forkcld1")) __fork_child1_ptr_##pfnCallback = &__fork_child1_##pfnCallback
     558
     559#elif defined(_MSC_VER)
     560# define _FORK_CHILD1(uPriority, pfnCallback) \
     561    __Pragma(section("forkpar1", read, write)); \
     562    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_child1_##pfnCallback = { pfnCallback, uPriority }; \
     563    const __LIBC_FORKCALLBACK * __declspec(allocate("forkcld1")) __fork_child1_ptr_##pfnCallback = &__fork_child1_##pfnCallback
     564
     565#else
     566# define _FORK_CHILD1(uPriority, pfnCallback) \
    541567    static const __LIBC_FORKCALLBACK _FORK_DATA_USED() __fork_child1_##pfnCallback  = { pfnCallback, uPriority + (unsigned)(&__fork_child1_##pfnCallback - &__fork_child1_##pfnCallback) }; \
    542     __asm__ (".stabs \"___fork_child1__\",  23, 0, 0, ___fork_child1_" #pfnCallback );
     568    __asm__ (".stabs \"___fork_child1__\",  23, 0, 0, ___fork_child1_" #pfnCallback )
     569#endif
    543570
    544571
  • trunk/libc/include/os2emx.h

    r3843 r3860  
    159159
    160160/* ------------------------ DISABLE KEYWORDS ------------------------------ */
    161 #if !defined (_System) && !defined (__IBMC__) && !defined (__IBMCPP__)
    162 #define APIENTRY
    163 #define EXPENTRY
     161#if defined (__WATCOMC__)
     162# define APIENTRY __syscall
     163# define EXPENTRY __syscall
     164#elif defined (_System) || defined (__IBMC__) || defined (__IBMCPP__)
     165# define APIENTRY _System
     166# define EXPENTRY _System
    164167#else
    165 #define APIENTRY _System
    166 #define EXPENTRY _System
     168# define APIENTRY
     169# define EXPENTRY
    167170#endif
    168171#define FAR
     
    170173/* ------------------------ CONSTANTS AND TYPES --------------------------- */
    171174
    172 #if defined (__IBMC__) || defined (__IBMCPP__)
    173 #ifndef __const__
    174 #define __const__ const
    175 #endif
    176 #ifndef __attribute__
    177 #define __attribute__(a)
    178 #endif
    179 #ifndef __volatile__
    180 #define __volatile__ volatile
    181 #endif
    182 #if !defined (INCL_LONGLONG_STRUCTS)
    183 #define INCL_LONGLONG_STRUCTS
    184 #endif
     175#if defined (__IBMC__) || defined (__IBMCPP__) || defined (__WATCOMC__)
     176# ifndef __const__
     177#  define __const__ const
     178# endif
     179# ifndef __attribute__
     180#  define __attribute__(a)
     181# endif
     182# ifndef __volatile__
     183#  define __volatile__ volatile
     184# endif
     185# if !defined (INCL_LONGLONG_STRUCTS) && !defined (__WATCOMC__)
     186#  define INCL_LONGLONG_STRUCTS
     187# endif
    185188#endif
    186189
     
    1335313356#ifndef FS_DISABLED
    1335413357# ifdef __GNUC__
    13355 #  define FS_VAR()           volatile unsigned __fs__;
     13358#  define FS_VAR()           volatile unsigned __fs__
    1335613359#  define FS_VAR_SAVE_LOAD() FS_VAR(); FS_SAVE_LOAD()
    1335713360#  define FS_SAVE()       __asm__ __volatile__ ("movl %%fs, %%eax; movl %%eax,%0;" : : "m" (__fs__) : "%eax" )
     
    1336413367unsigned short FS_INTERNAL_RESTORE(unsigned);
    1336513368#  pragma aux  FS_INTERNAL_RESTORE = "mov fs, ax" parm [ax]
    13366 #  define FS_VAR()           volatile short __fs__;
    13367 #  define FS_VAR_SAVE_LOAD() volatile short __fs__ = FS_INTERNAL_SAVE();
     13369#  define FS_VAR()           volatile short __fs__
     13370#  define FS_VAR_SAVE_LOAD() volatile short __fs__ = FS_INTERNAL_SAVE()
    1336813371#  define FS_SAVE()          do { __fs__ = FS_INTERNAL_SAVE(); } while (0)
    1336913372extern void DosTIB(void);
    13370 #  define FS_SAVE_LOAD()     do { __fs__ = FS_INTERNAL_SAVE(); FS_INTERNAL_RESTORE((uintptr_t)&DosTIB) } while (0)
     13373#  define FS_SAVE_LOAD()     do { __fs__ = FS_INTERNAL_SAVE(); FS_INTERNAL_RESTORE((uintptr_t)&DosTIB); } while (0)
    1337113374#  define FS_RESTORE()       FS_INTERNAL_RESTORE(__fs__)
    1337213375
  • trunk/libc/src/kNIX/filehandles.c

    r3631 r3860  
    14491449#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    14501450
    1451 _FORK_PARENT1(0xfffff000, fhForkParent1)
     1451_FORK_PARENT1(0xfffff000, fhForkParent1);
    14521452
    14531453/**
     
    15841584
    15851585
    1586 _FORK_CHILD1(0xffffff00, fhForkChild1)
     1586_FORK_CHILD1(0xffffff00, fhForkChild1);
    15871587
    15881588/**
  • trunk/libc/src/kNIX/os2/DosEx.c

    r3804 r3860  
    682682#undef  __LIBC_LOG_GROUP
    683683#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    684 _FORK_PARENT1(0xffffffff, dosexForkParent)
     684_FORK_PARENT1(0xffffffff, dosexForkParent);
    685685
    686686/**
     
    12991299
    13001300
    1301 _FORK_CHILD1(0xffffffff, dosexForkChild)
     1301_FORK_CHILD1(0xffffffff, dosexForkChild);
    13021302
    13031303/**
  • trunk/libc/src/kNIX/os2/__initdll.c

    r2929 r3860  
    246246#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    247247
    248 _FORK_PARENT1(0xffffffff, initdllForkParent1)
     248_FORK_PARENT1(0xffffffff, initdllForkParent1);
    249249
    250250/**
     
    280280
    281281
    282 _FORK_CHILD1(0xffffffff, initdllForkChild1)
     282_FORK_CHILD1(0xffffffff, initdllForkChild1);
    283283
    284284/**
  • trunk/libc/src/kNIX/os2/b_initterm-os2.c

    r3770 r3860  
    171171#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    172172
    173 _FORK_PARENT1(0xffffffff, initdllForkParent1)
     173_FORK_PARENT1(0xffffffff, initdllForkParent1);
    174174
    175175/**
     
    205205
    206206
    207 _FORK_CHILD1(0xffffffff, initdllForkChild1)
     207_FORK_CHILD1(0xffffffff, initdllForkChild1);
    208208
    209209/**
  • trunk/libc/src/kNIX/os2/b_processWait.c

    r3804 r3860  
    10241024
    10251025
    1026 _FORK_CHILD1(0xf0010000, processWaitForkChildHook)
     1026_FORK_CHILD1(0xf0010000, processWaitForkChildHook);
    10271027
    10281028/**
  • trunk/libc/src/kNIX/os2/logstrict.c

    r3371 r3860  
    24052405}
    24062406
    2407 _FORK_PARENT1(0xfffffff0, __libc_logForkParent)
    2408 
     2407_FORK_PARENT1(0xfffffff0, __libc_logForkParent);
     2408
  • trunk/libc/src/kNIX/os2/sharedpm.c

    r3852 r3860  
    20472047
    20482048
    2049 _FORK_CHILD1(0xfffffff0, spmForkChild1)
     2049_FORK_CHILD1(0xfffffff0, spmForkChild1);
     2050
    20502051/**
    20512052 * Fork child callback.
  • trunk/libc/src/kNIX/os2/signals.c

    r3796 r3860  
    30423042
    30433043
    3044 _FORK_CHILD1(0x0000000f, signalForkChild)
     3044_FORK_CHILD1(0x0000000f, signalForkChild);
    30453045
    30463046/**
  • trunk/libc/src/kNIX/os2/sysv_shm.c

    r2929 r3860  
    765765
    766766
    767 _FORK_CHILD1(0xf0010000, shmfork_myhook)
     767_FORK_CHILD1(0xf0010000, shmfork_myhook);
    768768
    769769/**
  • trunk/libc/src/libc/locale/os2/iconv.c

    r3760 r3860  
    293293#undef  __LIBC_LOG_GROUP
    294294#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    295 _FORK_CHILD1(0xffff0000, iconvForkChild1)
     295_FORK_CHILD1(0xffff0000, iconvForkChild1);
    296296
    297297/**
  • trunk/libc/src/libc/locale/os2/setlocale.c

    r3788 r3860  
    19141914
    19151915
    1916 _FORK_CHILD1(0xffffff00, setlocalForkChild1)
     1916_FORK_CHILD1(0xffffff00, setlocalForkChild1);
    19171917
    19181918/**
  • trunk/libc/src/libc/malloc/initr.c

    r2254 r3860  
    106106#define __LIBC_LOG_GROUP    __LIBC_LOG_GRP_FORK
    107107
    108 _FORK_PARENT1(0xffffff01, umForkParent1)
     108_FORK_PARENT1(0xffffff01, umForkParent1);
    109109
    110110/**
  • trunk/libc/src/libc/process/thread_internals.c

    r2799 r3860  
    591591
    592592
    593 _FORK_PARENT1(0xffffff02, threadForkParent1)
    594 
     593_FORK_PARENT1(0xffffff02, threadForkParent1);
     594
Note: See TracChangeset for help on using the changeset viewer.