diff options
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/bfin/Makefile.arch | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/brk.c (renamed from libc/sysdeps/linux/bfin/brk.c) | 28 |
2 files changed, 13 insertions, 17 deletions
diff --git a/libc/sysdeps/linux/bfin/Makefile.arch b/libc/sysdeps/linux/bfin/Makefile.arch index cdb588a36..81fca3295 100644 --- a/libc/sysdeps/linux/bfin/Makefile.arch +++ b/libc/sysdeps/linux/bfin/Makefile.arch @@ -5,7 +5,7 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC := brk.c bsdsetjmp.c clone.c syscall.c \ +CSRC := bsdsetjmp.c clone.c syscall.c \ sram-alloc.c sram-free.c dma-memcpy.c SSRC := __longjmp.S setjmp.S bsd-_setjmp.S vfork.S diff --git a/libc/sysdeps/linux/bfin/brk.c b/libc/sysdeps/linux/common/brk.c index 88b82cf64..18836ba59 100644 --- a/libc/sysdeps/linux/bfin/brk.c +++ b/libc/sysdeps/linux/common/brk.c @@ -8,29 +8,25 @@ #include <unistd.h> #include <sys/syscall.h> -/* libc_hidden_proto(brk) */ +libc_hidden_proto(brk) + +#define __NR___syscall_brk __NR_brk +static inline _syscall1(void *, __syscall_brk, void *, end) /* This must be initialized data because commons can't have aliases. */ void * __curbrk attribute_hidden = 0; -int brk (void *addr) +int brk(void *addr) { - void *newbrk; - - __asm__ __volatile__( - "P0 = %2;\n\t" - "excpt 0;\n\t" - : "=q0" (newbrk) - : "q0" (addr), "i" (__NR_brk): "P0" ); + void *newbrk = __syscall_brk(addr); - __curbrk = newbrk; + __curbrk = newbrk; - if (newbrk < addr) - { - __set_errno (ENOMEM); - return -1; - } + if (newbrk < addr) { + __set_errno (ENOMEM); + return -1; + } - return 0; + return 0; } libc_hidden_def(brk) |