summaryrefslogtreecommitdiffstats
path: root/libc/sysdeps/linux/arm/brk.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/arm/brk.c')
-rw-r--r--libc/sysdeps/linux/arm/brk.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/libc/sysdeps/linux/arm/brk.c b/libc/sysdeps/linux/arm/brk.c
index fa0326a0e..82b9835ae 100644
--- a/libc/sysdeps/linux/arm/brk.c
+++ b/libc/sysdeps/linux/arm/brk.c
@@ -26,22 +26,14 @@ void *__curbrk = 0;
int brk (void *addr)
{
- void *newbrk;
+ void *newbrk = (void*)INTERNAL_SYSCALL(brk, , 1, addr);
- asm ("mov a1, %1\n" /* save the argment in r0 */
- "swi %2\n" /* do the system call */
- "mov %0, a1;" /* keep the return value */
- : "=r"(newbrk)
- : "r"(addr), "i" (__NR_brk)
- : "a1");
+ __curbrk = newbrk;
- __curbrk = newbrk;
+ if (newbrk < addr) {
+ __set_errno (ENOMEM);
+ return -1;
+ }
- if (newbrk < addr)
- {
- __set_errno (ENOMEM);
- return -1;
- }
-
- return 0;
+ return 0;
}