summaryrefslogtreecommitdiffstats
path: root/libc/sysdeps/linux/arm/brk.c
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2005-08-17 14:48:11 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2005-08-17 14:48:11 +0000
commit54a7d559374ef72fa59bbe3a56d27ff5ec34d3aa (patch)
tree1fe7209313f2728c550d3eb75929b4af051fb349 /libc/sysdeps/linux/arm/brk.c
parentb46868ff8b3d2fb592e3fca4a516695533eae9e5 (diff)
downloaduClibc-alpine-54a7d559374ef72fa59bbe3a56d27ff5ec34d3aa.tar.bz2
uClibc-alpine-54a7d559374ef72fa59bbe3a56d27ff5ec34d3aa.tar.xz
Merge/sync with trunk.
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;
}