am cc8668f2
: Merge "[MIPS] Check error status from pipe system call"
* commit 'cc8668f261ae5d0ed38961f357e33c026502ed0d': [MIPS] Check error status from pipe system call
This commit is contained in:
commit
7f79814798
1 changed files with 16 additions and 5 deletions
|
@ -26,6 +26,12 @@
|
|||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The MIPS pipe syscall returns results in two registers, which
|
||||
* we have to copy into the supplied array. This prevents us from
|
||||
* using an auto-generated stub.
|
||||
*/
|
||||
|
||||
#include <asm/unistd.h>
|
||||
|
||||
.text
|
||||
|
@ -38,12 +44,17 @@
|
|||
.ent pipe
|
||||
pipe:
|
||||
.set noreorder
|
||||
|
||||
.cpload $t9
|
||||
li $v0,__NR_pipe
|
||||
syscall /* syscall returns results in v0,v1 */
|
||||
|
||||
sw $v0,0($a0)
|
||||
sw $v1,4($a0)
|
||||
bnez $a3, 1f /* check errno */
|
||||
nop
|
||||
sw $v0, 0($a0)
|
||||
sw $v1, 4($a0)
|
||||
j $ra
|
||||
move $v0,$zero
|
||||
move $v0, $zero
|
||||
1:
|
||||
la $t9, __set_errno
|
||||
j $t9
|
||||
move $a0, $v0 /* delay slot, prepare args for __set_errno */
|
||||
.end pipe
|
||||
|
|
Loading…
Reference in a new issue