summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-05-29 11:57:39 -0400
committerWill Newton <will.newton@linaro.org>2014-07-03 15:25:30 +0100
commit289c2dc3764625068bf11332f482266a334f2c9f (patch)
treef3f8bccc80a73aed0d2c64b18193293edc9d2831
parenta0a2dbe4c4544629799caf38706eac80d029124b (diff)
aarch64: Fix error return from __ioctl
Forgotten in ca3cfa40c16ef34c74951a07a57cfcbcd58898b1 where the error branch was moved from PSEUDO_RET.
-rw-r--r--libc/ports/ChangeLog.aarch64.linaro5
-rw-r--r--libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S13
2 files changed, 12 insertions, 6 deletions
diff --git a/libc/ports/ChangeLog.aarch64.linaro b/libc/ports/ChangeLog.aarch64.linaro
index 75f73bbdb..f7c952c64 100644
--- a/libc/ports/ChangeLog.aarch64.linaro
+++ b/libc/ports/ChangeLog.aarch64.linaro
@@ -1,3 +1,8 @@
+2014-05-30 Richard Henderson <rth@twiddle.net>
+
+ * sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl): Remove the
+ use of PSEUDO_RET; perform the error check directly.
+
2014-05-29 Richard Henderson <rth@twiddle.net>
* sysdeps/unix/sysv/linux/aarch64/sysdep.h (INTERNAL_VSYSCALL_NCS):
diff --git a/libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
index 4443f5a4a..8920a202a 100644
--- a/libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
+++ b/libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
@@ -20,11 +20,12 @@
.text
ENTRY(__ioctl)
- movz x8, #__NR_ioctl
- sxtw x0, w0
- svc #0x0
- cmn x0, #0x1, lsl #12
- PSEUDO_RET
- PSEUDO_END (__ioctl)
+ mov x8, #__NR_ioctl
+ sxtw x0, w0
+ svc #0x0
+ cmn x0, #4095
+ b.cs .Lsyscall_error
+ ret
+PSEUDO_END (__ioctl)
weak_alias (__ioctl, ioctl)