From f980a783a335d83330e832ed92c0aa8f1abb93b8 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 2 Jan 2003 16:48:42 +0000 Subject: Rework sparc architecture support so it will compile and run. Seems to be working... -Erik --- libc/sysdeps/linux/sparc/fork.S | 51 +++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 25 deletions(-) (limited to 'libc/sysdeps/linux/sparc/fork.S') diff --git a/libc/sysdeps/linux/sparc/fork.S b/libc/sysdeps/linux/sparc/fork.S index 6bab58c81..c66856bef 100644 --- a/libc/sysdeps/linux/sparc/fork.S +++ b/libc/sysdeps/linux/sparc/fork.S @@ -1,5 +1,6 @@ -/* Copyright (C) 1991, 92, 94, 95, 97, 99 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. + Contributed by Miguel de Icaza , 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -16,31 +17,31 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include +/* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */ + +#include .text; -.global fork; -.align 4; -fork: ; -.type fork ,@function; ; - - mov 2, %g1 ; - ta 0x10; - bcc,a 9000f; - nop; - save %sp,-96,%sp; - call __errno_location; - nop; - st %i0,[%o0]; - jmpl %i7+8,%g0; - restore %g0,-1,%o0; ; - 9000:; - - /* %o1 is now 0 for the parent and 1 for the child. Decrement it to - make it -1 (all bits set) for the parent, and 0 (no bits set) - for the child. Then AND it with %o0, so the parent gets - %o0&-1==pid, and the child gets %o0&0==0. */ - sub %o1, 1, %o1 +.global fork; +.align 4; +.type fork,@function; + +fork: + mov __NR_fork, %g1 + ta 0x10 + bcc,a 9000f + nop + save %sp,-96,%sp + call __errno_location + nop + st %i0,[%o0] + jmpl %i7+8,%g0 + restore %g0,-1,%o0 + +9000: + sub %o1, 1, %o1 retl - and %o0, %o1, %o0 + and %o0, %o1, %o0 + +.size fork,.-fork; -- cgit v1.2.3