home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / GCC / GERLIB_DEV08B.LHA / gerlib / gnulib / normal / ger_calloc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-12  |  665 b   |  27 lines

  1. #define MEMF_CLEAR   (1L<<16)    /* AllocMem: NULL out area before return */
  2.  
  3. extern struct ExecBase * SysBase;
  4.  
  5. static __inline void*
  6. AllocVec (unsigned long byteSize,unsigned long requirements)
  7. {
  8.   register void *_res  __asm("d0");
  9.   register struct ExecBase *a6 __asm("a6") = SysBase;
  10.   register unsigned long d0 __asm("d0") = byteSize;
  11.   register unsigned long d1 __asm("d1") = requirements;
  12.   __asm __volatile ("jsr a6@(-0x2ac)"
  13.   : "=r" (_res)
  14.   : "r" (a6), "r" (d0), "r" (d1)
  15.   : "a0","a1","d0","d1", "memory");
  16.   return _res;
  17. }
  18.  
  19. void *calloc(unsigned long Anz)
  20. {
  21.     register unsigned long *p=0;
  22.     if(!Anz)Anz=1;
  23.  
  24.     p=AllocVec(Anz,MEMF_CLEAR);
  25.     return (void *)p;
  26. }
  27.