the changes to syscall_ret are mostly no-ops in the generated code, just cleanup of type issues and removal of some implementation-defined behavior. the one exception is the change in the comparison value, which is fixed so that 0xf...f000 (which in principle could be a valid return value for mmap, although probably never in reality) is not treated as an error return.
9 lines
203 B
C
9 lines
203 B
C
#include <stdint.h>
|
|
#include "syscall.h"
|
|
|
|
void *sbrk(intptr_t inc)
|
|
{
|
|
unsigned long cur = syscall(SYS_brk, 0);
|
|
if (inc && syscall(SYS_brk, cur+inc) != cur+inc) return (void *)-1;
|
|
return (void *)cur;
|
|
}
|