From c5bf703c4cfa2ca4f35a83c9afaf4ee123cb617c Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 2 Jan 2014 15:41:33 -0800 Subject: [PATCH] Remove as many hard-coded constants from the MIPS vfork.S as possible. We could do better, but not without MIPS cleaning up their kernel headers. Change-Id: Ib4d4ce5d720ce8ca27a3f9a1ae07a9a277675af9 --- libc/arch-mips/bionic/vfork.S | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/libc/arch-mips/bionic/vfork.S b/libc/arch-mips/bionic/vfork.S index 2e2e4ff83..414caaf4e 100644 --- a/libc/arch-mips/bionic/vfork.S +++ b/libc/arch-mips/bionic/vfork.S @@ -27,11 +27,14 @@ */ #include +#include + +// TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__. +// #include +#define SIGCHLD 18 .text -/* int vfork() implemented using clone() */ - .type vfork, @function .global vfork .align 4 @@ -40,17 +43,22 @@ vfork: .set noreorder .cpload $t9 - li $a0, 0x4112 /* CLONE_VM | CLONE_VFORK | SIGCHLD */ - move $a1, $sp + li $a0, (CLONE_VM | CLONE_VFORK | SIGCHLD) + li $a1, 0 + li $a2, 0 + li $a3, 0 + subu $sp, 8 + sw $0, 16($sp) li $v0, __NR_clone syscall - bnez $a3,1f - nop + addu $sp, 8 + bnez $a3, 1f + move $a0, $v0 j $ra nop 1: - la $t9,__set_errno + la $t9, __set_errno j $t9 - move $a0,$v0 + nop .end vfork