home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / LIBC / LIBC-4.6 / LIBC-4 / libc-linux / sysdeps / linux / m68k / __sbrk.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-19  |  412 b   |  21 lines

  1. #include <unistd.h>
  2. #include <sys/syscall.h>
  3. #include <errno.h>
  4.  
  5. extern void * ___brk_addr;
  6.  
  7. void *
  8. __sbrk(ptrdiff_t increment)
  9. {
  10.     register void * tmp asm ("d1") = ___brk_addr+increment;
  11.     __asm__ volatile ("movel %1,d0\n\t"
  12.               "trap  #0\n\t"
  13.               "movel d0,%0"
  14.         :"=g" (___brk_addr)
  15.         :"i" (SYS_brk),"g" (tmp) : "d0");
  16.     if (___brk_addr == tmp)
  17.         return tmp-increment;
  18.     errno = ENOMEM;
  19.     return ((void *) -1);
  20. }
  21.