diff options
| author | Elliott Hughes <enh@google.com> | 2012-09-11 16:47:25 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-09-11 16:47:25 -0700 |
| commit | cc0f225365d7103baaba80517850489a5ff17d89 (patch) | |
| tree | 0a657c6afc8437cb32d45c702390e954b28fc1f7 | |
| parent | f50b99f471a9af07b2dec6ac3fe1abca5ba9a20b (diff) | |
| parent | 7f798147980798718ac893229ae20dba9e3a26c7 (diff) | |
| download | bionic-cc0f225365d7103baaba80517850489a5ff17d89.zip bionic-cc0f225365d7103baaba80517850489a5ff17d89.tar.gz bionic-cc0f225365d7103baaba80517850489a5ff17d89.tar.bz2 | |
am 7f798147: am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit '7f798147980798718ac893229ae20dba9e3a26c7':
[MIPS] Check error status from pipe system call
| -rw-r--r-- | libc/arch-mips/bionic/pipe.S | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/libc/arch-mips/bionic/pipe.S b/libc/arch-mips/bionic/pipe.S index 8556569..0baf246 100644 --- a/libc/arch-mips/bionic/pipe.S +++ b/libc/arch-mips/bionic/pipe.S @@ -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 |
