From e9e69bd628e4495c975bb82dc3aabc536ae97329 Mon Sep 17 00:00:00 2001 From: David McCullough Date: Mon, 29 Jan 2001 15:02:05 +0000 Subject: 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. --- libc/sysdeps/linux/m68k/bits/vfork.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'libc/sysdeps/linux/m68k/bits/vfork.h') 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; \ -- cgit v1.2.3