diff options
author | David McCullough <davidm@snapgear.com> | 2001-01-29 15:02:05 +0000 |
---|---|---|
committer | David McCullough <davidm@snapgear.com> | 2001-01-29 15:02:05 +0000 |
commit | e9e69bd628e4495c975bb82dc3aabc536ae97329 (patch) | |
tree | 87766426bc73ba3c5388c18fe8acaf57b4d8a633 /libc/sysdeps/linux/m68k/bits/vfork.h | |
parent | 5a2610fbeb4667ffac25551f5484b629707b996e (diff) |
uClibc working with 2.0.x and 2.4.x m68k uClinux kernels, the PIC
stuff in crt0.S may not be quite right yet.
Diffstat (limited to 'libc/sysdeps/linux/m68k/bits/vfork.h')
-rw-r--r-- | libc/sysdeps/linux/m68k/bits/vfork.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/m68k/bits/vfork.h b/libc/sysdeps/linux/m68k/bits/vfork.h index 0b6ffa2c0..ceb9af8a6 100644 --- a/libc/sysdeps/linux/m68k/bits/vfork.h +++ b/libc/sysdeps/linux/m68k/bits/vfork.h @@ -5,11 +5,17 @@ extern int _clone __P ((int (*fn)(void *arg), void *child_stack, int flags, void *arg)); +#ifndef __NR_vfork +#define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */ +#endif + #define vfork() ({ \ -register unsigned long __res __asm__ ("%d0") = __NR_fork; \ -__asm__ __volatile__ ("trap #0" \ - : "=g" (__res) \ - : "0" (__res) \ +unsigned long __res; \ +__asm__ __volatile__ ("movel %1,%%d0;" \ + "trap #0;" \ + "movel %%d0,%0" \ + : "=d" (__res) \ + : "0" (__NR_vfork) \ : "%d0"); \ if (__res >= (unsigned long)-4096) { \ errno = -__res; \ |