-#include <stddef.h>
+#include <stdint.h>
#include "syscall.h"
-void *sbrk(ptrdiff_t inc)
+void *sbrk(intptr_t inc)
{
- return (void *)syscall1(__NR_brk, syscall1(__NR_brk, 0)+inc);
+ unsigned long cur = syscall(SYS_brk, 0);
+ if (inc && syscall(SYS_brk, cur+inc) != cur+inc) return (void *)-1;
+ return (void *)cur;
}